From 8efeb169afb1b449c40262c4fa035319d17ebd8c Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 9 Jan 2021 21:10:58 +0800
Subject: [PATCH 001/132] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=AD=8C=E6=9B=B2?=
=?UTF-8?q?=E5=8C=B9=E9=85=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/utils/music/index.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/renderer/utils/music/index.js b/src/renderer/utils/music/index.js
index 81240ab8..2444eb1a 100644
--- a/src/renderer/utils/music/index.js
+++ b/src/renderer/utils/music/index.js
@@ -62,7 +62,7 @@ export default {
for (const source of sources.sources) {
if (!sources[source.id].musicSearch || source.id === musicInfo.source || source.id === 'xm') continue
- tasks.push(sources[source.id].musicSearch.search(`${musicInfo.name} ${musicInfo.singer || ''} ${musicInfo.albumName || ''}`.trim(), 1, { limit: 5 }).then(res => {
+ tasks.push(sources[source.id].musicSearch.search(`${musicInfo.name} ${musicInfo.singer || ''}`.trim(), 1, { limit: 10 }).then(res => {
for (const item of res.list) {
if (
(
@@ -80,7 +80,7 @@ export default {
return null
}).catch(_ => null))
}
- const result = (await Promise.all(tasks)).filter(s => s)
+ const result = (await Promise.all(tasks)).filter(s => s).reverse()
const newResult = []
if (result.length) {
for (let i = result.length - 1; i > -1; i--) {
From cfe84fc2dddcbe24d9637f09f629a2824546d26f Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sun, 10 Jan 2021 12:52:45 +0800
Subject: [PATCH 002/132] =?UTF-8?q?=E5=8F=91=E5=B8=83v1.6.0=E7=89=88?=
=?UTF-8?q?=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 23 +++++++++++++++++++++++
package.json | 2 +-
publish/version.json | 2 +-
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1b4a58e6..d4bad09b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,29 @@ Project versioning adheres to [Semantic Versioning](http://semver.org/).
Commit convention is based on [Conventional Commits](http://conventionalcommits.org).
Change log format is based on [Keep a Changelog](http://keepachangelog.com/).
+## [1.6.0](https://github.com/lyswhut/lx-music-desktop/compare/v1.5.0...v1.6.0) - 2021-01-10
+
+### 新增
+
+- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
+- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
+- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
+- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
+- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
+- 我的列表右键菜单添加搜索当前歌曲功能
+- 新增`-dha`参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加`-dt`参数启动
+- 新增播放自动换源功能~
+
+### 变更
+
+- `-nt`参数更名为`-dt`(Disable Transparent),目前原来的`-nt`参数仍然可用,但将在后续的版本中移除
+
+### 修复
+
+- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
+- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
+- 修复`-dt`(原来的`-nt`)启动参数不真正生效的问题
+
## [1.5.0](https://github.com/lyswhut/lx-music-desktop/compare/v1.4.1...v1.5.0) - 2020-12-13
### 新增
diff --git a/package.json b/package.json
index 375da9fe..35ea8bc0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lx-music-desktop",
- "version": "1.6.0-beta",
+ "version": "1.6.0",
"description": "一个免费的音乐下载助手",
"main": "./dist/electron/main.js",
"productName": "lx-music-desktop",
diff --git a/publish/version.json b/publish/version.json
index 4b8fc7f2..4e233792 100644
--- a/publish/version.json
+++ b/publish/version.json
@@ -1 +1 @@
-{"version":"1.5.0","desc":"新增
\n\n- 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
\n
\n优化
\n\n- 优化软件启动时恢复上一次播放的歌曲进度功能
\n
\n修复
\n\n- 修复MAC平台上下载歌曲封面嵌入无法显示的问题
\n- 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
\n- 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
\n- 修复某些酷狗源歌单链接无法打开的问题
\n
\n","history":[{"version":"1.4.1","desc":"修复
\n\n- 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
\n- 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
\n- 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
\n
\n"},{"version":"1.4.0","desc":"新增
\n\n- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
\n- 新增播放进度信息保存
\n
\n优化
\n\n修复
\n\n- 修复专辑图片无法嵌入的问题
\n- 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
\n- 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
\n- 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
\n
\n"},{"version":"1.3.0","desc":"新增
\n\n- 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
\n
\n优化
\n\n修复
\n\n- 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
\n
\n"},{"version":"1.2.2","desc":"修复
\n\n- 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
\n
\n"},{"version":"1.2.1","desc":"优化
\n\n- Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加
-nt参数启动 \n
\n修复
\n\n- 修复聚合搜索的分页问题
\n- 修复代理输入框输入的内容不生效的问题
\n
\n"},{"version":"1.2.0","desc":"提前祝大家中秋&国庆快乐~
\n新增
\n\n- 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
\n
\n优化
\n\n- 优化我的列表滚动条位置的保存逻辑
\n- 更新设置-备份与恢复功能的描述
\n- 优化软件内鼠标悬停的提示界面
\n
\n修复
\n\n- 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
\n- 修复网易云KTV嗨榜无法加载的问题
\n- 修复初始化搜索历史列表功能
\n- 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
\n- 修复歌曲封面无法嵌入的Bug
\n- 修复酷狗歌词格式问题
\n- 修复关闭切换动画时从搜索候选列表点击内容无效的问题
\n
\n其他
\n\n- 更新 Electron 到 v10.1.3
\n
\n"},{"version":"1.1.1","desc":"修复
\n\n"},{"version":"1.1.0","desc":"新增
\n\n- 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
\n- 新增
不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置 \n- 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
\n- 新增
显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译 \n- 新增
显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画 \n- 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
\n
\n修复
\n\n- 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
\n- 修复我的列表搜索对最后一个字符的匹配问题
\n- 修复窗口在
较小模式下最小化/关闭按钮不居中的问题 \n
\n优化
\n\n- 桌面歌词当前播放行改为上下居中
\n- 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
\n- 优化随机播放机制,现在通过
下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲 \n- 当下载目录没有写入权限时将显示没有写入权限的提示
\n
\n移除
\n\n- 移除默认的全局声音媒体快捷键接管
\n- 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
\n
\n其他
\n\n"},{"version":"1.0.1","desc":"优化
\n\n修复
\n\n- 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
\n
\n"},{"version":"1.0.0","desc":"新增
\n\n- 新增
rpm、pacman包的构建(未测试可用性) \n- 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
\n- 新增歌曲列表右击菜单
\n- 新增自定义列表,创建列表的按钮在表头
#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑 \n- 改变排行榜布局,新增更多排行榜
\n- 新增我的列表右键菜单复制歌曲名选项
\n- 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
\n- 新增“清热板蓝”皮肤
\n- 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
\n- 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
\n- 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
\n- 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
\n- 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
\n- 新增我的列表内歌曲搜索,在我的列表按
ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框) \n- 新增托盘图标样式设置,可到设置-其他切换
\n- 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
\n- 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
\n- 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开
%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储 \n- 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
\n
\n优化
\n\n- 改进歌曲切换时的歌词滚动效果
\n- 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
\n- 改进歌单列表展示
\n- 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
\n- 压缩备份数据文件大小
\n
\n修复
\n\n- 修复按住
Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题 \n- 修复Linux版开启托盘无法退出的问题
\n- 修复某些情况下可能导致的音源输出问题
\n- 修复某些情况下无法开始下载任务的问题
\n- 修复 tab 组件边框溢出问题
\n- 修复错误更新试听列表外的歌曲时间的问题
\n- 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
\n- 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
\n- 修复无法检测最新版本时弹窗提示的显示
\n- 修复某些情况下从托盘还原窗口后无法操作的问题
\n- 修复Linux下无法
ctrl+a全选的问题 \n- 修复主题背景图片覆盖不全的问题
\n- 修复聚合搜索音源标签的皮肤配色问题
\n
\n更变
\n\n- 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
\n- 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
\n- 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
\n- 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
\n
\n其他
\n\n"},{"version":"0.18.2","desc":"修复
\n\n- 修复开启托盘时,可能导致无法自动更新的问题
\n
\n"},{"version":"0.18.1","desc":"优化
\n\n- win下的托盘图标使用更大的图片
\n- 加长软件协议的强制停留时间
\n
\n修复
\n\n"},{"version":"0.18.0","desc":"新增
\n\n- 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
\n- 添加软件启动时是否自动聚焦搜索框的设置
\n- 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
\n- 新增打开酷狗源用户歌单
\n- 新增使用协议
\n- 新增虾米音源
\n- 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
\n- 新增“超大”、“巨大”窗口尺寸
\n- 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次)
\n
\n优化
\n\n- 略微加深音量条底色
\n- 优化其他界面细节
\n- 优化英语翻译,感谢 @CPCer
\n- 优化程序的流畅度
\n
\n更变
\n\n- 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
\n- 移除列表多选框,现在多选需要键盘配合,想要多选前需按下
Shift或Ctrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用Shift或Ctrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按Shift或Alt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键) \n- 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
\n
\n修复
\n\n- 修复网易源某些歌曲提示没有可播放的音质的问题
\n- 修复下载管理刷新URL失败时不标记任务下载失败的问题
\n- 修复列表导出的文字描述,感谢 @CPCer
\n- 修复歌曲切换方式无法取消勾选的问题
\n- 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
\n- 修正播放列表浮动按钮错误的文字提示
\n
\n移除
\n\n- 因128k以外的音质失效,So 禁止所有128k外的音质下载
\n
\n其他
\n更新 Electron 到 8.2.5
\n"},{"version":"0.17.0","desc":"新增
\n\n- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
\n- 新增无法打开外部歌单FAQ
\n- 新增启动参数
search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰" \n- 新增音频输出设置
\n- 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
\n- 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
\n- 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
\n- 新增热搜词,默认关闭,可到设置开启
\n- 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
\n
\n优化
\n\n- 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
\n- 优化播放进度条的动画效果
\n- 现在添加下载任务时,后面添加的任务会在列表顶部插入
\n- 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
\n- 优化右上角最小化/关闭按钮布局
\n
\n修复
\n\n- 修复歌单详情处于加载状态时无法返回的问题
\n- 修复鼠标右击复制列表内容时会复制音质标签的问题
\n- 修复
0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题 \n- 修复下载列表在某些情况下无法取消全选的问题
\n
\n其他
\n\n"},{"version":"0.16.0","desc":"新增
\n\n- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
\n- 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
\n- 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
\n- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
\n
\n优化
\n\n- 优化木叶之村主题翻页器背景颜色
\n- 优化各个主题音质标签颜色
\n- 优化其他一些界面细节及用户交互效果
\n
\n修复
\n\n- 修复启用透明窗口鼠标不穿透的bug
\n- 修复大窗口时设置的音乐来源选项不换行的问题
\n- 修复某些情况下暂停任务会自动开始任务的问题
\n- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
\n- 修复酷狗源歌单热门标签歌单列表无法加载问题
\n- 修复QQ源歌单热门标签歌单列表无法加载问题
\n
\n其他
\n\n"},{"version":"0.15.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复歌曲下载列表无法加载的问题
\n- 修复歌曲下载任务数大于最大下载任务数的问题
\n- 修复某些情况下歌曲下载错误的问题
\n- 修复下载列表数据没有被迁移直接被丢弃的问题
\n
\n"},{"version":"0.14.1","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
\n
\n"},{"version":"0.14.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n新增
\n\n- 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
\n- 恢复QQ音乐源128k音质试听
\n- 新增不强制win7开启透明效果即可使用,但要配置运行参数
-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数” \n- 新增“新年快乐”主题,可自行切换体验
\n
\n优化
\n\n- 减淡各个主题的歌曲列表分隔线颜色
\n- 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
\n- 更新改进的歌词播放插件,现在歌词的播放显示将更准确
\n
\n修复
\n\n- 修复咪咕源无法搜索的问题
\n- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
\n- 修复导入设置窗口大小、代理设置不立即生效的问题
\n- 修复在线音乐列表获取失败时无限循环请求的问题
\n
\n其他
\n\n- 将软件设置与播放列表分离存储成两个文件
\n- 更新 Electron 到 7.1.9
\n
\n"},{"version":"0.13.1","desc":"修复
\n\n其他
\n\n- 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
\n
\n"},{"version":"0.13.0","desc":"新增
\n\n- 新增搜索框搜索建议键盘上下方向键选择功能
\n- 聚合搜索新增音源显示
\n- 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
\n
\n优化
\n\n修复
\n\n- 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
\n- 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
\n
\n移除
\n\n其他
\n\n- 更新electron到7.1.5
\n- 更新vue到2.6.11
\n
\n"},{"version":"0.12.1","desc":"优化
\n\n- 优化定位歌曲时的列表滚动机制
\n- 优化链接点击效果
\n
\n修复
\n\n- 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
\n- 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
\n- 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
\n
\n其他
\n\n"},{"version":"0.12.0","desc":"由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
\n新增
\n\n- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
\n
\n优化
\n\n- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
\n- 注意:目前仍然无法暂停处于链接获取状态中的任务
\n
\n修复
\n\n- 修复Linux deb版本
.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈! \n- 修复下载列表歌曲状态分类列表操作Bug
\n- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
\n- 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
\n
\n"},{"version":"0.11.0","desc":"新增
\n\n- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
\n- 新增下载管理的任务状态分类
\n- 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
\n
\n优化
\n\n- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
\n
\n"},{"version":"0.10.0","desc":"优化
\n\n- 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
\n
\n修复
\n\n- 修复酷我源搜索提示、排行榜无法获取的问题
\n- 修复咪咕源无法播放的问题
\n
\n"},{"version":"0.9.1","desc":"修复
\n\n"},{"version":"0.9.0","desc":"新增
\n\n- 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
\n- 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
\n
\n修复
\n\n- 修复搜索提示失效的问题
\n- 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
\n
\n"},{"version":"0.8.2","desc":"修复
\n\n- 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
\n
\n"},{"version":"0.8.1","desc":"修复
\n\n- 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
\n
\n"},{"version":"0.8.0","desc":"新增
\n\n- 新增网易云源歌曲搜索
\n- 新增网易云源歌单
\n- 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
\n- 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
\n
\n优化
\n\n- 优化搜索框搜索体验
\n- 优化音量条交互视觉效果
\n- 缓存歌单详情列表数据
\n
\n修复
\n\n- 修复QQ源歌单无法翻页Bug
\n- 修复默认列表没有创建时无法显示收藏列表的Bug
\n- 修复网易云128k直接试听
\n- 修复歌曲音质不存在时仍然播放或下载的Bug
\n- 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
\n
\n"},{"version":"0.7.0","desc":"新增
\n\n- 新增“我的收藏”本地播放列表
\n- 新增缓存清理功能,可到设置-其他查看与清理软件缓存
\n- 新增QQ音乐源搜索
\n- 新增咪咕源搜索
\n- 新增咪咕源歌单
\n- 新增咪咕源排行榜
\n- 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
\n
\n优化
\n\n- 优化选择框动画效果
\n- 尝试优化选我的音乐列表内容很多时多选的卡顿问题
\n
\n修复
\n\n- 修复列表延迟显示的Bug
\n- 修复QQ音源128k音质试听
\n
\n"},{"version":"0.6.2","desc":"祝贺祖国成立70周年~!
\n新增
\n\n修复
\n\n- 修正火影皮肤名字
\n- 修复当试听列表为空时,无法切到其他界面的Bug
\n- 修复百度源搜索结果为空时的接口处理Bug
\n- 恢复酷狗其他音质播放
\n
\n"},{"version":"0.6.1","desc":"新增
\n\n- 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
\n- 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
\n
\n优化
\n\n- 新增DNS解析缓存,加快请求速度
\n- 优化代码逻辑,减少软件对系统资源的占用
\n- 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
\n- 优化下拉列表动画效果
\n
\n修复
\n\n- 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
\n- 修复其他一些小Bug
\n
\n移除
\n\n- 移除
192k 音质 \n- 移除酷我音源
ape 音质,无损推荐 flac 格式 \n
\n"},{"version":"0.6.0","desc":"新增
\n\n- 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
\n- 新增代理功能
\n
\n优化
\n\n- 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
\n
\n修复
\n\n- 修复试听列表没有歌曲时会显示列表加载中的Bug
\n- 修复切换歌单列表详情时的UI Bug
\n
\n"},{"version":"0.5.5","desc":"新增
\n\n- 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
\n- 新增 MAC 版本退出快捷键支持
\n- 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
\n
\n修复
\n\n- 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
\n- 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
\n- 修复 MAC 版本不能复制粘贴的问题
\n
\n"},{"version":"0.5.4","desc":"移除
\n\n- 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
\n- 为了稳妥起见,暂时移除FLAC格式的meta信息修改
\n- MP3格式无此问题
\n
\n"},{"version":"0.5.3","desc":"优化
\n\n修复
\n\n- 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
\n
\n"},{"version":"0.5.2","desc":"新增
\n\n- 新增强迫症设置-离开搜索界面时是否清空搜索框
\n- 设置-关于板块新增常见问题链接
\n- 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
\n
\n优化
\n\n- 略微优化最小化按钮字符
\n- 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
\n
\n修复
\n\n移除
\n\n- 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
\n
\n"},{"version":"0.5.1","desc":"新增
\n\n- 新增右上角最小化/关闭按钮鼠标滑过符号
\n- 新增下载列表定位文件按钮
\n
\n修复
\n\n- 修复百度源歌单全部分类无法加载的问题
\n- 修复更新弹窗无法弹出的问题
\n
\n"},{"version":"0.5.0","desc":"新增
\n\n- 新增封面嵌入(默认开启,可到设置-下载设置关闭)
\n- 新增歌词下载(默认关闭,可到设置-下载设置开启)
\n- 新增单例应用功能(实现软件单开功能,禁止软件多开)
\n
\n优化
\n\n修复
\n\n- 修复歌单无法翻页的问题
\n- 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
\n- 修复版本更新弹窗Bug
\n- 修复酷狗歌单推荐歌单出现在其他分类中的Bug
\n
\n"},{"version":"0.4.0","desc":"新增
\n\n- 新增歌单功能,目前支持酷我、酷狗、百度源歌单
\n- 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址与打赏地址
\n- 新增酷狗 电音热歌榜、DJ热歌榜
\n- 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
\n
\n移除
\n\n- 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
\n
\n"},{"version":"0.3.5","desc":"新增
\n\n- 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
\n
\n优化
\n\n- 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
\n
\n修复
\n\n- 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
\n- 修复歌词加载Bug
\n
\n"},{"version":"0.3.4","desc":"优化
\n\n- 减少接口不稳定带来的影响,适当增加请求等待时间
\n
\n修复
\n\n- 修复播放过程中URL过期不会刷新URL的问题
\n
\n"},{"version":"0.3.3","desc":"修复
\n\n- messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
\n- 修复设置界面更新出错时仍然显示更新下载中的问题
\n- 修复手动定位播放进度条时存在偏差的问题
\n- 屏蔽播放器中没有歌曲时对进度条的点击
\n
\n"},{"version":"0.3.2","desc":"新增
\n\n"},{"version":"0.3.1","desc":"修复
\n\n"},{"version":"0.3.0","desc":"新增
\n\n- 新增MAC及Linux版本(需要的可自行下载)
\n- 新增音量调整
\n- 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
\n- 新增更新出错时的弹窗提示
\n- 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
\n
\n修复
\n\n- 强制把临时接口设置回
messoer 接口 \n
\n"},{"version":"0.2.3","desc":"新增
\n\n- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
\n
\n修复
\n\n- 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
\n- 修复某些情况下歌曲链接未能缓存的问题
\n
\n移除
\n\n- 移除临时接口(因服务器被攻击,本接口已关闭)
\n- 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
\n
\n"},{"version":"0.2.2","desc":"修复
\n\n- 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
\n- 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
\n
\n"},{"version":"0.2.1","desc":"优化
\n\n- 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
\n
\n修复
\n\n- 修复歌曲加载无法加载时自动切换混乱的Bug
\n- 修复移除列表最后一首歌曲时播放器不停止播放的问题
\n
\n"},{"version":"0.2.0","desc":"新增
\n\n- 新增百度音乐排行榜及其音乐直接试听与下载
\n- 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
\n- 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
\n
\n修复
\n\n- 修复更新弹窗历史版本描述多余的换行问题
\n- 修复歌曲无法播放的情况下歌词仍会播放的问题
\n
\n"},{"version":"0.1.6","desc":"修复
\n\n"},{"version":"0.1.5","desc":"新增
\n\n- 新增搜索列表批量试听与下载功能
\n- 新增排行榜列表批量试听与下载功能
\n- 新增试听列表批量移除与下载功能
\n- 新增下载列表批量开始、暂停与移除功能
\n
\n优化
\n\n"},{"version":"0.1.4","desc":"新增
\n\n- 新增音乐来源切换,可到设置页面-基本设置 look look !
\n- 为搜索结果列表添加多选功能。
\nP.S:暂时没想好多选后的操作按钮放哪… \n
\n优化
\n\n- 重构与改进checkbox组件,使其支持不定选中状态
\n- 完善上一个版本的http请求封装并切换部分请求到该方法上
\n- 优化其他一些细节
\n
\n"},{"version":"0.1.3","desc":"新增
\n\n修复
\n\n- 修复安装包许可协议乱码问题
\n- messoer 提供的接口已挂,暂时切换到临时接口!
\n
\n移除
\n\n- 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
\n
\n"},{"version":"0.1.2","desc":"修复
\n\n"},{"version":"0.1.1","desc":"新增
\n\n- QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
\n
\n优化
\n\n- 优化http请求机制
\n- 更新关于本软件说明
\n
\n修复
\n\n- 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
\n- 修复切换歌曲时仍然播放上一首歌曲的问题
\n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}
+{"version":"1.6.0","desc":"新增
\n\n- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
\n- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
\n- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
\n- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
\n- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
\n- 我的列表右键菜单添加搜索当前歌曲功能
\n- 新增
-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动 \n- 新增播放自动换源功能~
\n
\n变更
\n\n-nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除 \n
\n修复
\n\n- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
\n- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
\n- 修复
-dt(原来的-nt)启动参数不真正生效的问题 \n
\n","history":[{"version":"1.5.0","desc":"新增
\n\n- 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
\n
\n优化
\n\n- 优化软件启动时恢复上一次播放的歌曲进度功能
\n
\n修复
\n\n- 修复MAC平台上下载歌曲封面嵌入无法显示的问题
\n- 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
\n- 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
\n- 修复某些酷狗源歌单链接无法打开的问题
\n
\n"},{"version":"1.4.1","desc":"修复
\n\n- 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
\n- 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
\n- 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
\n
\n"},{"version":"1.4.0","desc":"新增
\n\n- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
\n- 新增播放进度信息保存
\n
\n优化
\n\n修复
\n\n- 修复专辑图片无法嵌入的问题
\n- 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
\n- 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
\n- 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
\n
\n"},{"version":"1.3.0","desc":"新增
\n\n- 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
\n
\n优化
\n\n修复
\n\n- 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
\n
\n"},{"version":"1.2.2","desc":"修复
\n\n- 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
\n
\n"},{"version":"1.2.1","desc":"优化
\n\n- Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加
-nt参数启动 \n
\n修复
\n\n- 修复聚合搜索的分页问题
\n- 修复代理输入框输入的内容不生效的问题
\n
\n"},{"version":"1.2.0","desc":"提前祝大家中秋&国庆快乐~
\n新增
\n\n- 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
\n
\n优化
\n\n- 优化我的列表滚动条位置的保存逻辑
\n- 更新设置-备份与恢复功能的描述
\n- 优化软件内鼠标悬停的提示界面
\n
\n修复
\n\n- 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
\n- 修复网易云KTV嗨榜无法加载的问题
\n- 修复初始化搜索历史列表功能
\n- 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
\n- 修复歌曲封面无法嵌入的Bug
\n- 修复酷狗歌词格式问题
\n- 修复关闭切换动画时从搜索候选列表点击内容无效的问题
\n
\n其他
\n\n- 更新 Electron 到 v10.1.3
\n
\n"},{"version":"1.1.1","desc":"修复
\n\n"},{"version":"1.1.0","desc":"新增
\n\n- 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
\n- 新增
不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置 \n- 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
\n- 新增
显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译 \n- 新增
显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画 \n- 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
\n
\n修复
\n\n- 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
\n- 修复我的列表搜索对最后一个字符的匹配问题
\n- 修复窗口在
较小模式下最小化/关闭按钮不居中的问题 \n
\n优化
\n\n- 桌面歌词当前播放行改为上下居中
\n- 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
\n- 优化随机播放机制,现在通过
下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲 \n- 当下载目录没有写入权限时将显示没有写入权限的提示
\n
\n移除
\n\n- 移除默认的全局声音媒体快捷键接管
\n- 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
\n
\n其他
\n\n"},{"version":"1.0.1","desc":"优化
\n\n修复
\n\n- 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
\n
\n"},{"version":"1.0.0","desc":"新增
\n\n- 新增
rpm、pacman包的构建(未测试可用性) \n- 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
\n- 新增歌曲列表右击菜单
\n- 新增自定义列表,创建列表的按钮在表头
#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑 \n- 改变排行榜布局,新增更多排行榜
\n- 新增我的列表右键菜单复制歌曲名选项
\n- 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
\n- 新增“清热板蓝”皮肤
\n- 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
\n- 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
\n- 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
\n- 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
\n- 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
\n- 新增我的列表内歌曲搜索,在我的列表按
ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框) \n- 新增托盘图标样式设置,可到设置-其他切换
\n- 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
\n- 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
\n- 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开
%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储 \n- 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
\n
\n优化
\n\n- 改进歌曲切换时的歌词滚动效果
\n- 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
\n- 改进歌单列表展示
\n- 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
\n- 压缩备份数据文件大小
\n
\n修复
\n\n- 修复按住
Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题 \n- 修复Linux版开启托盘无法退出的问题
\n- 修复某些情况下可能导致的音源输出问题
\n- 修复某些情况下无法开始下载任务的问题
\n- 修复 tab 组件边框溢出问题
\n- 修复错误更新试听列表外的歌曲时间的问题
\n- 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
\n- 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
\n- 修复无法检测最新版本时弹窗提示的显示
\n- 修复某些情况下从托盘还原窗口后无法操作的问题
\n- 修复Linux下无法
ctrl+a全选的问题 \n- 修复主题背景图片覆盖不全的问题
\n- 修复聚合搜索音源标签的皮肤配色问题
\n
\n更变
\n\n- 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
\n- 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
\n- 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
\n- 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
\n
\n其他
\n\n"},{"version":"0.18.2","desc":"修复
\n\n- 修复开启托盘时,可能导致无法自动更新的问题
\n
\n"},{"version":"0.18.1","desc":"优化
\n\n- win下的托盘图标使用更大的图片
\n- 加长软件协议的强制停留时间
\n
\n修复
\n\n"},{"version":"0.18.0","desc":"新增
\n\n- 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
\n- 添加软件启动时是否自动聚焦搜索框的设置
\n- 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
\n- 新增打开酷狗源用户歌单
\n- 新增使用协议
\n- 新增虾米音源
\n- 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
\n- 新增“超大”、“巨大”窗口尺寸
\n- 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次)
\n
\n优化
\n\n- 略微加深音量条底色
\n- 优化其他界面细节
\n- 优化英语翻译,感谢 @CPCer
\n- 优化程序的流畅度
\n
\n更变
\n\n- 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
\n- 移除列表多选框,现在多选需要键盘配合,想要多选前需按下
Shift或Ctrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用Shift或Ctrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按Shift或Alt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键) \n- 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
\n
\n修复
\n\n- 修复网易源某些歌曲提示没有可播放的音质的问题
\n- 修复下载管理刷新URL失败时不标记任务下载失败的问题
\n- 修复列表导出的文字描述,感谢 @CPCer
\n- 修复歌曲切换方式无法取消勾选的问题
\n- 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
\n- 修正播放列表浮动按钮错误的文字提示
\n
\n移除
\n\n- 因128k以外的音质失效,So 禁止所有128k外的音质下载
\n
\n其他
\n更新 Electron 到 8.2.5
\n"},{"version":"0.17.0","desc":"新增
\n\n- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
\n- 新增无法打开外部歌单FAQ
\n- 新增启动参数
search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰" \n- 新增音频输出设置
\n- 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
\n- 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
\n- 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
\n- 新增热搜词,默认关闭,可到设置开启
\n- 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
\n
\n优化
\n\n- 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
\n- 优化播放进度条的动画效果
\n- 现在添加下载任务时,后面添加的任务会在列表顶部插入
\n- 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
\n- 优化右上角最小化/关闭按钮布局
\n
\n修复
\n\n- 修复歌单详情处于加载状态时无法返回的问题
\n- 修复鼠标右击复制列表内容时会复制音质标签的问题
\n- 修复
0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题 \n- 修复下载列表在某些情况下无法取消全选的问题
\n
\n其他
\n\n"},{"version":"0.16.0","desc":"新增
\n\n- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
\n- 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
\n- 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
\n- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
\n
\n优化
\n\n- 优化木叶之村主题翻页器背景颜色
\n- 优化各个主题音质标签颜色
\n- 优化其他一些界面细节及用户交互效果
\n
\n修复
\n\n- 修复启用透明窗口鼠标不穿透的bug
\n- 修复大窗口时设置的音乐来源选项不换行的问题
\n- 修复某些情况下暂停任务会自动开始任务的问题
\n- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
\n- 修复酷狗源歌单热门标签歌单列表无法加载问题
\n- 修复QQ源歌单热门标签歌单列表无法加载问题
\n
\n其他
\n\n"},{"version":"0.15.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复歌曲下载列表无法加载的问题
\n- 修复歌曲下载任务数大于最大下载任务数的问题
\n- 修复某些情况下歌曲下载错误的问题
\n- 修复下载列表数据没有被迁移直接被丢弃的问题
\n
\n"},{"version":"0.14.1","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
\n
\n"},{"version":"0.14.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n新增
\n\n- 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
\n- 恢复QQ音乐源128k音质试听
\n- 新增不强制win7开启透明效果即可使用,但要配置运行参数
-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数” \n- 新增“新年快乐”主题,可自行切换体验
\n
\n优化
\n\n- 减淡各个主题的歌曲列表分隔线颜色
\n- 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
\n- 更新改进的歌词播放插件,现在歌词的播放显示将更准确
\n
\n修复
\n\n- 修复咪咕源无法搜索的问题
\n- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
\n- 修复导入设置窗口大小、代理设置不立即生效的问题
\n- 修复在线音乐列表获取失败时无限循环请求的问题
\n
\n其他
\n\n- 将软件设置与播放列表分离存储成两个文件
\n- 更新 Electron 到 7.1.9
\n
\n"},{"version":"0.13.1","desc":"修复
\n\n其他
\n\n- 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
\n
\n"},{"version":"0.13.0","desc":"新增
\n\n- 新增搜索框搜索建议键盘上下方向键选择功能
\n- 聚合搜索新增音源显示
\n- 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
\n
\n优化
\n\n修复
\n\n- 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
\n- 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
\n
\n移除
\n\n其他
\n\n- 更新electron到7.1.5
\n- 更新vue到2.6.11
\n
\n"},{"version":"0.12.1","desc":"优化
\n\n- 优化定位歌曲时的列表滚动机制
\n- 优化链接点击效果
\n
\n修复
\n\n- 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
\n- 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
\n- 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
\n
\n其他
\n\n"},{"version":"0.12.0","desc":"由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
\n新增
\n\n- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
\n
\n优化
\n\n- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
\n- 注意:目前仍然无法暂停处于链接获取状态中的任务
\n
\n修复
\n\n- 修复Linux deb版本
.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈! \n- 修复下载列表歌曲状态分类列表操作Bug
\n- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
\n- 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
\n
\n"},{"version":"0.11.0","desc":"新增
\n\n- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
\n- 新增下载管理的任务状态分类
\n- 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
\n
\n优化
\n\n- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
\n
\n"},{"version":"0.10.0","desc":"优化
\n\n- 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
\n
\n修复
\n\n- 修复酷我源搜索提示、排行榜无法获取的问题
\n- 修复咪咕源无法播放的问题
\n
\n"},{"version":"0.9.1","desc":"修复
\n\n"},{"version":"0.9.0","desc":"新增
\n\n- 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
\n- 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
\n
\n修复
\n\n- 修复搜索提示失效的问题
\n- 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
\n
\n"},{"version":"0.8.2","desc":"修复
\n\n- 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
\n
\n"},{"version":"0.8.1","desc":"修复
\n\n- 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
\n
\n"},{"version":"0.8.0","desc":"新增
\n\n- 新增网易云源歌曲搜索
\n- 新增网易云源歌单
\n- 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
\n- 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
\n
\n优化
\n\n- 优化搜索框搜索体验
\n- 优化音量条交互视觉效果
\n- 缓存歌单详情列表数据
\n
\n修复
\n\n- 修复QQ源歌单无法翻页Bug
\n- 修复默认列表没有创建时无法显示收藏列表的Bug
\n- 修复网易云128k直接试听
\n- 修复歌曲音质不存在时仍然播放或下载的Bug
\n- 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
\n
\n"},{"version":"0.7.0","desc":"新增
\n\n- 新增“我的收藏”本地播放列表
\n- 新增缓存清理功能,可到设置-其他查看与清理软件缓存
\n- 新增QQ音乐源搜索
\n- 新增咪咕源搜索
\n- 新增咪咕源歌单
\n- 新增咪咕源排行榜
\n- 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
\n
\n优化
\n\n- 优化选择框动画效果
\n- 尝试优化选我的音乐列表内容很多时多选的卡顿问题
\n
\n修复
\n\n- 修复列表延迟显示的Bug
\n- 修复QQ音源128k音质试听
\n
\n"},{"version":"0.6.2","desc":"祝贺祖国成立70周年~!
\n新增
\n\n修复
\n\n- 修正火影皮肤名字
\n- 修复当试听列表为空时,无法切到其他界面的Bug
\n- 修复百度源搜索结果为空时的接口处理Bug
\n- 恢复酷狗其他音质播放
\n
\n"},{"version":"0.6.1","desc":"新增
\n\n- 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
\n- 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
\n
\n优化
\n\n- 新增DNS解析缓存,加快请求速度
\n- 优化代码逻辑,减少软件对系统资源的占用
\n- 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
\n- 优化下拉列表动画效果
\n
\n修复
\n\n- 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
\n- 修复其他一些小Bug
\n
\n移除
\n\n- 移除
192k 音质 \n- 移除酷我音源
ape 音质,无损推荐 flac 格式 \n
\n"},{"version":"0.6.0","desc":"新增
\n\n- 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
\n- 新增代理功能
\n
\n优化
\n\n- 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
\n
\n修复
\n\n- 修复试听列表没有歌曲时会显示列表加载中的Bug
\n- 修复切换歌单列表详情时的UI Bug
\n
\n"},{"version":"0.5.5","desc":"新增
\n\n- 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
\n- 新增 MAC 版本退出快捷键支持
\n- 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
\n
\n修复
\n\n- 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
\n- 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
\n- 修复 MAC 版本不能复制粘贴的问题
\n
\n"},{"version":"0.5.4","desc":"移除
\n\n- 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
\n- 为了稳妥起见,暂时移除FLAC格式的meta信息修改
\n- MP3格式无此问题
\n
\n"},{"version":"0.5.3","desc":"优化
\n\n修复
\n\n- 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
\n
\n"},{"version":"0.5.2","desc":"新增
\n\n- 新增强迫症设置-离开搜索界面时是否清空搜索框
\n- 设置-关于板块新增常见问题链接
\n- 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
\n
\n优化
\n\n- 略微优化最小化按钮字符
\n- 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
\n
\n修复
\n\n移除
\n\n- 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
\n
\n"},{"version":"0.5.1","desc":"新增
\n\n- 新增右上角最小化/关闭按钮鼠标滑过符号
\n- 新增下载列表定位文件按钮
\n
\n修复
\n\n- 修复百度源歌单全部分类无法加载的问题
\n- 修复更新弹窗无法弹出的问题
\n
\n"},{"version":"0.5.0","desc":"新增
\n\n- 新增封面嵌入(默认开启,可到设置-下载设置关闭)
\n- 新增歌词下载(默认关闭,可到设置-下载设置开启)
\n- 新增单例应用功能(实现软件单开功能,禁止软件多开)
\n
\n优化
\n\n修复
\n\n- 修复歌单无法翻页的问题
\n- 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
\n- 修复版本更新弹窗Bug
\n- 修复酷狗歌单推荐歌单出现在其他分类中的Bug
\n
\n"},{"version":"0.4.0","desc":"新增
\n\n- 新增歌单功能,目前支持酷我、酷狗、百度源歌单
\n- 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址与打赏地址
\n- 新增酷狗 电音热歌榜、DJ热歌榜
\n- 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
\n
\n移除
\n\n- 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
\n
\n"},{"version":"0.3.5","desc":"新增
\n\n- 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
\n
\n优化
\n\n- 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
\n
\n修复
\n\n- 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
\n- 修复歌词加载Bug
\n
\n"},{"version":"0.3.4","desc":"优化
\n\n- 减少接口不稳定带来的影响,适当增加请求等待时间
\n
\n修复
\n\n- 修复播放过程中URL过期不会刷新URL的问题
\n
\n"},{"version":"0.3.3","desc":"修复
\n\n- messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
\n- 修复设置界面更新出错时仍然显示更新下载中的问题
\n- 修复手动定位播放进度条时存在偏差的问题
\n- 屏蔽播放器中没有歌曲时对进度条的点击
\n
\n"},{"version":"0.3.2","desc":"新增
\n\n"},{"version":"0.3.1","desc":"修复
\n\n"},{"version":"0.3.0","desc":"新增
\n\n- 新增MAC及Linux版本(需要的可自行下载)
\n- 新增音量调整
\n- 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
\n- 新增更新出错时的弹窗提示
\n- 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
\n
\n修复
\n\n- 强制把临时接口设置回
messoer 接口 \n
\n"},{"version":"0.2.3","desc":"新增
\n\n- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
\n
\n修复
\n\n- 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
\n- 修复某些情况下歌曲链接未能缓存的问题
\n
\n移除
\n\n- 移除临时接口(因服务器被攻击,本接口已关闭)
\n- 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
\n
\n"},{"version":"0.2.2","desc":"修复
\n\n- 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
\n- 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
\n
\n"},{"version":"0.2.1","desc":"优化
\n\n- 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
\n
\n修复
\n\n- 修复歌曲加载无法加载时自动切换混乱的Bug
\n- 修复移除列表最后一首歌曲时播放器不停止播放的问题
\n
\n"},{"version":"0.2.0","desc":"新增
\n\n- 新增百度音乐排行榜及其音乐直接试听与下载
\n- 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
\n- 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
\n
\n修复
\n\n- 修复更新弹窗历史版本描述多余的换行问题
\n- 修复歌曲无法播放的情况下歌词仍会播放的问题
\n
\n"},{"version":"0.1.6","desc":"修复
\n\n"},{"version":"0.1.5","desc":"新增
\n\n- 新增搜索列表批量试听与下载功能
\n- 新增排行榜列表批量试听与下载功能
\n- 新增试听列表批量移除与下载功能
\n- 新增下载列表批量开始、暂停与移除功能
\n
\n优化
\n\n"},{"version":"0.1.4","desc":"新增
\n\n- 新增音乐来源切换,可到设置页面-基本设置 look look !
\n- 为搜索结果列表添加多选功能。
\nP.S:暂时没想好多选后的操作按钮放哪… \n
\n优化
\n\n- 重构与改进checkbox组件,使其支持不定选中状态
\n- 完善上一个版本的http请求封装并切换部分请求到该方法上
\n- 优化其他一些细节
\n
\n"},{"version":"0.1.3","desc":"新增
\n\n修复
\n\n- 修复安装包许可协议乱码问题
\n- messoer 提供的接口已挂,暂时切换到临时接口!
\n
\n移除
\n\n- 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
\n
\n"},{"version":"0.1.2","desc":"修复
\n\n"},{"version":"0.1.1","desc":"新增
\n\n- QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
\n
\n优化
\n\n- 优化http请求机制
\n- 更新关于本软件说明
\n
\n修复
\n\n- 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
\n- 修复切换歌曲时仍然播放上一首歌曲的问题
\n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}
From f832d70701bf7d490c42b8700e2c1263d9b915ea Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sun, 10 Jan 2021 13:14:50 +0800
Subject: [PATCH 003/132] =?UTF-8?q?=E6=9B=B4=E6=96=B0-dha=E5=8F=82?=
=?UTF-8?q?=E6=95=B0=E7=9A=84=E6=8F=8F=E8=BF=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FAQ.md | 6 ++++--
README.md | 2 +-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index a4cf5271..993c6d68 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -62,6 +62,8 @@
根据Electron里issue的[解决方案](https://github.com/electron/electron/issues/2170#issuecomment-736223269),
若你遇到透明问题可尝试添加启动参数 `-dha` 来禁用硬件加速,例如:`.\lx-music-desktop.exe -dha`。
+注:v1.6.0及之后的版本才支持`-dha`参数
+
## 软件启动后,界面无法显示
对于软件启动后,可以在任务栏看到软件,但软件界面在桌面上无任何显示,或者整个界面偶尔闪烁的情况。
@@ -109,13 +111,13 @@ Windows 7 未开启 Aero 效果时桌面歌词会有问题,详情看下面的
`v1.2.1`以前的版本在 Ubuntu 18.10 下第一次开启桌面歌词时歌词窗口会变白,需要关闭后再开启,
`v1.2.1`及之后的版本已修复该问题。
-其他 Linux 系统未测试,如有异常也是意料之中,目前不打算去处理 Linux 平台的桌面歌词问题。
+其他 Linux 系统未测试,如有异常也是意料之中,目前不打算去处理 Linux 平台的桌面歌词问题,但你可以尝试按照`Linux 下界面异常`的解决方案去解决。
## 歌曲下载失败
### 提示 `ENOENT: no such file or directory, mkdir`
-更换下载歌曲目录即可解决(一般是设置的歌曲下载目录没有读写入权限导致的)。
+更换下载歌曲目录即可解决(一般是设置的歌曲下载目录没有读写权限导致的)。
### 提示 `请求异常` 或 `Fail`
diff --git a/README.md b/README.md
index 305491e3..c6e95f7e 100644
--- a/README.md
+++ b/README.md
@@ -81,7 +81,7 @@ npm run pack:linux
目前软件已支持的启动参数如下:
- `-search` 启动软件时自动在搜索框搜索指定的内容,例如:`-search="突然的自我 - 伍佰"`
-- `-dha` 禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动
+- `-dha` 禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动(v1.6.0起新增)
- `-dt` 以非透明模式启动(Disable Transparent),对于未开启AERO效果的win7系统可加此参数启动以确保界面正常显示,原来的`-nt`参数已重命名为`-dt`
### 常见问题
From 74ce094d79ae724251f810d860facc3fc954268a Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 11 Jan 2021 14:12:58 +0800
Subject: [PATCH 004/132] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A0=E6=B3=95?=
=?UTF-8?q?=E8=AF=95=E5=90=AC=E8=A7=A3=E5=86=B3=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FAQ.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/FAQ.md b/FAQ.md
index 993c6d68..5f303791 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -13,7 +13,7 @@
1. 尝试更新到最新版本
2. 尝试切换其他歌曲(或直接搜索该歌曲),若全部歌曲都无法试听与下载则进行下一步
3. 尝试到 设置-音乐来源 切换到其他接口
-4. 尝试切换网络,比如用手机开热点(目前存在某些网络无法访问接口服务器的情况)
+4. 尝试切换网络,比如用手机开热点(所有歌曲都提示请求异常时可通过此方法解决,或等一两天后再试)
5. 若还不行请到这个链接查看详情:
6. 若没有在第5条链接中的第一条评论中看到接口无法使用的说明,则应该是你网络无法访问接口服务器的问题,如果接口有问题我会在那里说明。
From f1561ddc219203d98d132cec18e70ee7030da0d2 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 11 Jan 2021 16:21:08 +0800
Subject: [PATCH 005/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=90=E4=BA=9B?=
=?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8B=E8=87=AA=E5=8A=A8=E6=8D=A2=E6=BA=90?=
=?UTF-8?q?=E7=9A=84=E6=97=B6=E9=97=B4=E8=BF=87=E9=95=BF=E6=97=B6=E4=BC=9A?=
=?UTF-8?q?=E7=BB=88=E6=AD=A2=E6=8D=A2=E6=BA=90=E8=87=AA=E5=8A=A8=E5=88=87?=
=?UTF-8?q?=E6=AD=8C=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 19 +------------------
src/renderer/components/core/Player.vue | 1 +
2 files changed, 2 insertions(+), 18 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index aca1681f..7984eb5f 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -1,20 +1,3 @@
-### 新增
-
-- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
-- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
-- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
-- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
-- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
-- 我的列表右键菜单添加搜索当前歌曲功能
-- 新增`-dha`参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加`-dt`参数启动
-- 新增播放自动换源功能~
-
-### 变更
-
-- `-nt`参数更名为`-dt`(Disable Transparent),目前原来的`-nt`参数仍然可用,但将在后续的版本中移除
-
### 修复
-- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
-- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
-- 修复`-dt`(原来的`-nt`)启动参数不真正生效的问题
+- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
diff --git a/src/renderer/components/core/Player.vue b/src/renderer/components/core/Player.vue
index 7a57a807..6843c5de 100644
--- a/src/renderer/components/core/Player.vue
+++ b/src/renderer/components/core/Player.vue
@@ -384,6 +384,7 @@ export default {
if (!this.musicInfo.songmid) return
console.log('出错')
this.stopPlay()
+ this.clearLoadingTimeout()
if (this.listId != 'download' && audio.error.code !== 1 && this.retryNum < 2) { // 若音频URL无效则尝试刷新2次URL
// console.log(this.retryNum)
if (!this.restorePlayTime) this.restorePlayTime = audio.currentTime // 记录出错的播放时间
From a5fce15661b9668f9bd4a26e56c416b4ebd5de67 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Tue, 12 Jan 2021 11:09:27 +0800
Subject: [PATCH 006/132] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E8=87=AA=E5=8A=A8?=
=?UTF-8?q?=E6=8D=A2=E6=BA=90=E6=97=B6=E7=9A=84=E6=AD=8C=E6=9B=B2=E5=8C=B9?=
=?UTF-8?q?=E9=85=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 4 ++++
src/main/events/index.js | 2 +-
src/renderer/utils/music/index.js | 9 ++++++++-
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 7984eb5f..e98d237b 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -1,3 +1,7 @@
+### 优化
+
+- 改进自动换源时的歌曲匹配
+
### 修复
- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
diff --git a/src/main/events/index.js b/src/main/events/index.js
index 301630ce..f72756e6 100644
--- a/src/main/events/index.js
+++ b/src/main/events/index.js
@@ -1,4 +1,4 @@
-global.lx_event = {}
+if (!global.lx_event) global.lx_event = {}
const Common = require('./Common')
const MainWindow = require('./MainWindow')
diff --git a/src/renderer/utils/music/index.js b/src/renderer/utils/music/index.js
index 2444eb1a..9653e637 100644
--- a/src/renderer/utils/music/index.js
+++ b/src/renderer/utils/music/index.js
@@ -61,6 +61,7 @@ export default {
const tasks = []
for (const source of sources.sources) {
if (!sources[source.id].musicSearch || source.id === musicInfo.source || source.id === 'xm') continue
+ const sortedSinger = musicInfo.singer.includes('、') ? musicInfo.singer.split('、').sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0)).join('、') : null
tasks.push(sources[source.id].musicSearch.search(`${musicInfo.name} ${musicInfo.singer || ''}`.trim(), 1, { limit: 10 }).then(res => {
for (const item of res.list) {
@@ -72,6 +73,11 @@ export default {
(
item.interval === musicInfo.interval && item.name === musicInfo.name &&
(item.singer.includes(musicInfo.singer) || musicInfo.singer.includes(item.singer))
+ ) ||
+ (
+ sortedSinger &&
+ item.singer.includes('、') &&
+ item.singer.split('、').sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0)).join('、') === sortedSinger
)
) {
return item
@@ -80,7 +86,7 @@ export default {
return null
}).catch(_ => null))
}
- const result = (await Promise.all(tasks)).filter(s => s).reverse()
+ const result = (await Promise.all(tasks)).filter(s => s)
const newResult = []
if (result.length) {
for (let i = result.length - 1; i > -1; i--) {
@@ -111,6 +117,7 @@ export default {
result.splice(i, 1)
}
}
+ newResult.reverse()
newResult.push(...result)
}
// console.log(newResult)
From 2fd7e4503a4defa6bcafcf22a4b8fe76c0d1b724 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Tue, 12 Jan 2021 11:42:56 +0800
Subject: [PATCH 007/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=8A=A8?=
=?UTF-8?q?=E6=8D=A2=E6=BA=90=E5=AF=BC=E8=87=B4=E7=9A=84=E6=90=9C=E7=B4=A2?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E6=AF=8F=E9=A1=B5=E5=8F=98=E6=88=9010?=
=?UTF-8?q?=E6=9D=A1=E6=95=B0=E6=8D=AE=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 1 +
src/renderer/utils/music/bd/musicSearch.js | 12 ++++++------
src/renderer/utils/music/kg/musicSearch.js | 12 ++++++------
src/renderer/utils/music/kw/musicSearch.js | 12 ++++++------
src/renderer/utils/music/mg/musicSearch.js | 14 +++++++-------
src/renderer/utils/music/tx/musicSearch.js | 14 +++++++-------
src/renderer/utils/music/wy/musicSearch.js | 14 +++++++-------
src/renderer/utils/music/xm/musicSearch.js | 12 ++++++------
8 files changed, 46 insertions(+), 45 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index e98d237b..4fca36d7 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -5,3 +5,4 @@
### 修复
- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
+- 修复自动换源导致的搜索列表每页变成10条数据的问题
diff --git a/src/renderer/utils/music/bd/musicSearch.js b/src/renderer/utils/music/bd/musicSearch.js
index d1b00903..c7574b81 100644
--- a/src/renderer/utils/music/bd/musicSearch.js
+++ b/src/renderer/utils/music/bd/musicSearch.js
@@ -11,9 +11,9 @@ export default {
total: 0,
page: 0,
allPage: 1,
- musicSearch(str, page) {
+ musicSearch(str, page, limit) {
if (searchRequest && searchRequest.cancelHttp) searchRequest.cancelHttp()
- searchRequest = httpFetch(`http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.search.merge&format=json&query=${encodeURIComponent(str)}&page_no=${page}&page_size=${this.limit}&type=0&data_source=0&use_cluster=1`)
+ searchRequest = httpFetch(`http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.search.merge&format=json&query=${encodeURIComponent(str)}&page_no=${page}&page_size=${limit}&type=0&data_source=0&use_cluster=1`)
return searchRequest.promise.then(({ body }) => body)
},
handleResult(rawData) {
@@ -66,9 +66,9 @@ export default {
},
search(str, page = 1, { limit } = {}, retryNum = 0) {
if (++retryNum > 3) return Promise.reject(new Error('try max num'))
- if (limit != null) this.limit = limit
+ if (limit == null) limit = this.limit
- return this.musicSearch(str, page).then(result => {
+ return this.musicSearch(str, page, limit).then(result => {
if (!result || result.error_code !== 22000) return this.search(str, page, { limit }, retryNum)
let list = this.handleResult(result.result.song_info.song_list)
@@ -76,12 +76,12 @@ export default {
this.total = result.result.song_info.total
this.page = page
- this.allPage = Math.ceil(this.total / this.limit)
+ this.allPage = Math.ceil(this.total / limit)
return Promise.resolve({
list,
allPage: this.allPage,
- limit: this.limit,
+ limit: limit,
total: this.total,
source: 'bd',
})
diff --git a/src/renderer/utils/music/kg/musicSearch.js b/src/renderer/utils/music/kg/musicSearch.js
index 364229f1..13cb9f0b 100644
--- a/src/renderer/utils/music/kg/musicSearch.js
+++ b/src/renderer/utils/music/kg/musicSearch.js
@@ -11,9 +11,9 @@ export default {
total: 0,
page: 0,
allPage: 1,
- musicSearch(str, page) {
+ musicSearch(str, page, limit) {
if (searchRequest && searchRequest.cancelHttp) searchRequest.cancelHttp()
- searchRequest = httpFetch(`http://ioscdn.kugou.com/api/v3/search/song?keyword=${encodeURIComponent(str)}&page=${page}&pagesize=${this.limit}&showtype=10&plat=2&version=7910&tag=1&correct=1&privilege=1&sver=5`)
+ searchRequest = httpFetch(`http://ioscdn.kugou.com/api/v3/search/song?keyword=${encodeURIComponent(str)}&page=${page}&pagesize=${limit}&showtype=10&plat=2&version=7910&tag=1&correct=1&privilege=1&sver=5`)
return searchRequest.promise.then(({ body }) => body)
},
handleResult(rawData) {
@@ -71,9 +71,9 @@ export default {
},
search(str, page = 1, { limit } = {}, retryNum = 0) {
if (++retryNum > 3) return Promise.reject(new Error('try max num'))
- if (limit != null) this.limit = limit
+ if (limit == null) limit = this.limit
// http://newlyric.kuwo.cn/newlyric.lrc?62355680
- return this.musicSearch(str, page).then(result => {
+ return this.musicSearch(str, page, limit).then(result => {
if (!result || result.errcode !== 0) return this.search(str, page, { limit }, retryNum)
let list = this.handleResult(result.data.info)
@@ -81,12 +81,12 @@ export default {
this.total = result.data.total
this.page = page
- this.allPage = Math.ceil(this.total / this.limit)
+ this.allPage = Math.ceil(this.total / limit)
return Promise.resolve({
list,
allPage: this.allPage,
- limit: this.limit,
+ limit,
total: this.total,
source: 'kg',
})
diff --git a/src/renderer/utils/music/kw/musicSearch.js b/src/renderer/utils/music/kw/musicSearch.js
index 4f201de9..8931d338 100644
--- a/src/renderer/utils/music/kw/musicSearch.js
+++ b/src/renderer/utils/music/kw/musicSearch.js
@@ -16,14 +16,14 @@ export default {
page: 0,
allPage: 1,
// cancelFn: null,
- musicSearch(str, page) {
+ musicSearch(str, page, limit) {
if (this._musicSearchRequestObj != null) {
cancelHttp(this._musicSearchRequestObj)
this._musicSearchPromiseCancelFn(new Error('取消http请求'))
}
return new Promise((resolve, reject) => {
this._musicSearchPromiseCancelFn = reject
- this._musicSearchRequestObj = httpGet(`http://search.kuwo.cn/r.s?client=kt&all=${encodeURIComponent(str)}&pn=${page - 1}&rn=${this.limit}&uid=794762570&ver=kwplayer_ar_9.2.2.1&vipver=1&show_copyright_off=1&newver=1&ft=music&cluster=0&strategy=2012&encoding=utf8&rformat=json&vermerge=1&mobi=1&issubtitle=1`, (err, resp, body) => {
+ this._musicSearchRequestObj = httpGet(`http://search.kuwo.cn/r.s?client=kt&all=${encodeURIComponent(str)}&pn=${page - 1}&rn=${limit}&uid=794762570&ver=kwplayer_ar_9.2.2.1&vipver=1&show_copyright_off=1&newver=1&ft=music&cluster=0&strategy=2012&encoding=utf8&rformat=json&vermerge=1&mobi=1&issubtitle=1`, (err, resp, body) => {
this._musicSearchRequestObj = null
this._musicSearchPromiseCancelFn = null
if (err) {
@@ -125,9 +125,9 @@ export default {
},
search(str, page = 1, { limit } = {}, retryNum = 0) {
if (retryNum > 2) return Promise.reject(new Error('try max num'))
- if (limit != null) this.limit = limit
+ if (limit == null) limit = this.limit
// http://newlyric.kuwo.cn/newlyric.lrc?62355680
- return this.musicSearch(str, page).then(result => {
+ return this.musicSearch(str, page, limit).then(result => {
// console.log(result)
if (!result || (result.TOTAL !== '0' && result.SHOW === '0')) return this.search(str, page, { limit }, ++retryNum)
let list = this.handleResult(result.abslist)
@@ -136,13 +136,13 @@ export default {
this.total = parseInt(result.TOTAL)
this.page = page
- this.allPage = Math.ceil(this.total / this.limit)
+ this.allPage = Math.ceil(this.total / limit)
return Promise.resolve({
list,
allPage: this.allPage,
total: this.total,
- limit: this.limit,
+ limit,
source: 'kw',
})
})
diff --git a/src/renderer/utils/music/mg/musicSearch.js b/src/renderer/utils/music/mg/musicSearch.js
index 8ed3d238..183a3d56 100644
--- a/src/renderer/utils/music/mg/musicSearch.js
+++ b/src/renderer/utils/music/mg/musicSearch.js
@@ -11,9 +11,9 @@ export default {
total: 0,
page: 0,
allPage: 1,
- musicSearch(str, page) {
+ musicSearch(str, page, limit) {
if (searchRequest && searchRequest.cancelHttp) searchRequest.cancelHttp()
- searchRequest = httpFetch(`http://jadeite.migu.cn:7090/music_search/v2/search/searchAll?sid=4f87090d01c84984a11976b828e2b02c18946be88a6b4c47bcdc92fbd40762db&isCorrect=1&isCopyright=1&searchSwitch=%7B%22song%22%3A1%2C%22album%22%3A0%2C%22singer%22%3A0%2C%22tagSong%22%3A1%2C%22mvSong%22%3A0%2C%22bestShow%22%3A1%2C%22songlist%22%3A0%2C%22lyricSong%22%3A0%7D&pageSize=${this.limit}&text=${encodeURIComponent(str)}&pageNo=${page}&sort=0`, {
+ searchRequest = httpFetch(`http://jadeite.migu.cn:7090/music_search/v2/search/searchAll?sid=4f87090d01c84984a11976b828e2b02c18946be88a6b4c47bcdc92fbd40762db&isCorrect=1&isCopyright=1&searchSwitch=%7B%22song%22%3A1%2C%22album%22%3A0%2C%22singer%22%3A0%2C%22tagSong%22%3A1%2C%22mvSong%22%3A0%2C%22bestShow%22%3A1%2C%22songlist%22%3A0%2C%22lyricSong%22%3A0%7D&pageSize=${limit}&text=${encodeURIComponent(str)}&pageNo=${page}&sort=0`, {
headers: {
sign: 'c3b7ae985e2206e97f1b2de8f88691e2',
timestamp: 1578225871982,
@@ -25,7 +25,7 @@ export default {
'User-Agent': 'okhttp/3.9.1',
},
})
- // searchRequest = httpFetch(`https://app.c.nf.migu.cn/MIGUM2.0/v1.0/content/search_all.do?isCopyright=1&isCorrect=1&pageNo=${page}&pageSize=${this.limit}&searchSwitch={%22song%22:1,%22album%22:0,%22singer%22:0,%22tagSong%22:0,%22mvSong%22:0,%22songlist%22:0,%22bestShow%22:0}&sort=0&text=${encodeURIComponent(str)}`)
+ // searchRequest = httpFetch(`https://app.c.nf.migu.cn/MIGUM2.0/v1.0/content/search_all.do?isCopyright=1&isCorrect=1&pageNo=${page}&pageSize=${limit}&searchSwitch={%22song%22:1,%22album%22:0,%22singer%22:0,%22tagSong%22:0,%22mvSong%22:0,%22songlist%22:0,%22bestShow%22:0}&sort=0&text=${encodeURIComponent(str)}`)
return searchRequest.promise.then(({ body }) => body)
},
getSinger(singers) {
@@ -99,9 +99,9 @@ export default {
},
search(str, page = 1, { limit } = {}, retryNum = 0) {
if (++retryNum > 3) return Promise.reject(new Error('try max num'))
- if (limit != null) this.limit = limit
+ if (limit == null) limit = this.limit
// http://newlyric.kuwo.cn/newlyric.lrc?62355680
- return this.musicSearch(str, page).then(result => {
+ return this.musicSearch(str, page, limit).then(result => {
// console.log(result)
if (!result || result.code !== '000000') return Promise.reject(new Error(result ? result.info : '搜索失败'))
const songResultData = result.songResultData || { resultList: [], totalCount: 0 }
@@ -111,12 +111,12 @@ export default {
this.total = parseInt(songResultData.totalCount)
this.page = page
- this.allPage = Math.ceil(this.total / this.limit)
+ this.allPage = Math.ceil(this.total / limit)
return Promise.resolve({
list,
allPage: this.allPage,
- limit: this.limit,
+ limit,
total: this.total,
source: 'mg',
})
diff --git a/src/renderer/utils/music/tx/musicSearch.js b/src/renderer/utils/music/tx/musicSearch.js
index c2d21f92..db638542 100644
--- a/src/renderer/utils/music/tx/musicSearch.js
+++ b/src/renderer/utils/music/tx/musicSearch.js
@@ -12,13 +12,13 @@ export default {
page: 0,
allPage: 1,
successCode: 0,
- musicSearch(str, page, retryNum = 0) {
+ musicSearch(str, page, limit, retryNum = 0) {
if (searchRequest && searchRequest.cancelHttp) searchRequest.cancelHttp()
if (retryNum > 5) return Promise.reject(new Error('搜索失败'))
- searchRequest = httpFetch(`https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=sizer.yqq.song_next&searchid=49252838123499591&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=${page}&n=${this.limit}&w=${encodeURIComponent(str)}&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0`)
+ searchRequest = httpFetch(`https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=sizer.yqq.song_next&searchid=49252838123499591&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=${page}&n=${limit}&w=${encodeURIComponent(str)}&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0`)
// searchRequest = httpFetch(`http://ioscdn.kugou.com/api/v3/search/song?keyword=${encodeURIComponent(str)}&page=${page}&pagesize=${this.limit}&showtype=10&plat=2&version=7910&tag=1&correct=1&privilege=1&sver=5`)
return searchRequest.promise.then(({ body }) => {
- if (body.code !== this.successCode) return this.musicSearch(str, page, ++retryNum)
+ if (body.code !== this.successCode) return this.musicSearch(str, page, limit, ++retryNum)
return body.data
})
},
@@ -86,19 +86,19 @@ export default {
})
},
search(str, page = 1, { limit } = {}) {
- if (limit != null) this.limit = limit
+ if (limit == null) limit = this.limit
// http://newlyric.kuwo.cn/newlyric.lrc?62355680
- return this.musicSearch(str, page).then(({ song }) => {
+ return this.musicSearch(str, page, limit).then(({ song }) => {
let list = this.handleResult(song.list)
this.total = song.totalnum
this.page = page
- this.allPage = Math.ceil(this.total / this.limit)
+ this.allPage = Math.ceil(this.total / limit)
return Promise.resolve({
list,
allPage: this.allPage,
- limit: this.limit,
+ limit,
total: this.total,
source: 'tx',
})
diff --git a/src/renderer/utils/music/wy/musicSearch.js b/src/renderer/utils/music/wy/musicSearch.js
index d7a40fd9..4fdf8558 100644
--- a/src/renderer/utils/music/wy/musicSearch.js
+++ b/src/renderer/utils/music/wy/musicSearch.js
@@ -9,7 +9,7 @@ export default {
total: 0,
page: 0,
allPage: 1,
- musicSearch(str, page) {
+ musicSearch(str, page, limit) {
if (searchRequest && searchRequest.cancelHttp) searchRequest.cancelHttp()
searchRequest = httpFetch('https://music.163.com/weapi/search/get', {
method: 'post',
@@ -20,8 +20,8 @@ export default {
form: weapi({
s: str,
type: 1, // 1: 单曲, 10: 专辑, 100: 歌手, 1000: 歌单, 1002: 用户, 1004: MV, 1006: 歌词, 1009: 电台, 1014: 视频
- limit: this.limit,
- offset: this.limit * (page - 1),
+ limit,
+ offset: limit * (page - 1),
}),
})
return searchRequest.promise.then(({ body }) =>
@@ -29,13 +29,13 @@ export default {
? musicDetailApi.getList(body.result.songs.map(s => s.id)).then(({ list }) => {
this.total = body.result.songCount || 0
this.page = page
- this.allPage = Math.ceil(this.total / this.limit)
+ this.allPage = Math.ceil(this.total / limit)
return {
code: 200,
data: {
list,
allPage: this.allPage,
- limit: this.limit,
+ limit,
total: this.total,
source: 'wy',
},
@@ -103,8 +103,8 @@ export default {
}, */
search(str, page = 1, { limit } = {}, retryNum = 0) {
if (++retryNum > 3) return Promise.reject(new Error('try max num'))
- if (limit != null) this.limit = limit
- return this.musicSearch(str, page).then(result => {
+ if (limit == null) limit = this.limit
+ return this.musicSearch(str, page, limit).then(result => {
// console.log(result)
if (!result || result.code !== 200) return this.search(str, page, { limit }, retryNum)
// let list = this.handleResult(result.result.songs || [])
diff --git a/src/renderer/utils/music/xm/musicSearch.js b/src/renderer/utils/music/xm/musicSearch.js
index b4a7ff6c..1971c190 100644
--- a/src/renderer/utils/music/xm/musicSearch.js
+++ b/src/renderer/utils/music/xm/musicSearch.js
@@ -11,13 +11,13 @@ export default {
total: 0,
page: 0,
allPage: 1,
- musicSearch(str, page) {
+ musicSearch(str, page, limit) {
if (searchRequest && searchRequest.cancelHttp) searchRequest.cancelHttp()
searchRequest = xmRequest('/api/search/searchSongs', {
key: str,
pagingVO: {
page: page,
- pageSize: this.limit,
+ pageSize: limit,
},
})
return searchRequest.promise.then(({ body }) => body)
@@ -89,9 +89,9 @@ export default {
},
search(str, page = 1, { limit } = {}, retryNum = 0) {
if (++retryNum > 3) return Promise.reject(new Error('try max num'))
- if (limit != null) this.limit = limit
+ if (limit == null) limit = this.limit
// http://newlyric.kuwo.cn/newlyric.lrc?62355680
- return this.musicSearch(str, page).then(result => {
+ return this.musicSearch(str, page, limit).then(result => {
if (!result) return this.search(str, page, { limit }, retryNum)
if (result.code !== 'SUCCESS') return this.search(str, page, { limit }, retryNum)
// const songResultData = result.data || { songs: [], total: 0 }
@@ -101,12 +101,12 @@ export default {
this.total = parseInt(result.result.data.pagingVO.count)
this.page = page
- this.allPage = Math.ceil(this.total / this.limit)
+ this.allPage = Math.ceil(this.total / limit)
return Promise.resolve({
list,
allPage: this.allPage,
- limit: this.limit,
+ limit,
total: this.total,
source: 'xm',
})
From 947011103cf84c98f19ca21a2a33b7877ac19662 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Wed, 13 Jan 2021 11:14:53 +0800
Subject: [PATCH 008/132] =?UTF-8?q?=E9=99=8D=E7=BA=A7electron=E5=88=B09.3.?=
=?UTF-8?q?3=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86=E7=B3=BB=E7=BB=9F?=
=?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=A3=B0=E9=9F=B3=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 22 +++++++++++-----------
package.json | 2 +-
publish/changeLog.md | 1 +
3 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index ec673875..f385ca2f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "lx-music-desktop",
- "version": "1.6.0-beta",
+ "version": "1.6.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -7258,9 +7258,9 @@
}
},
"electron": {
- "version": "9.4.0",
- "resolved": "https://registry.npm.taobao.org/electron/download/electron-9.4.0.tgz?cache=0&sync_timestamp=1608583696623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron%2Fdownload%2Felectron-9.4.0.tgz",
- "integrity": "sha1-w8YH41mCJt26r/i6vN/6i7IhCTY=",
+ "version": "9.3.3",
+ "resolved": "https://registry.npm.taobao.org/electron/download/electron-9.3.3.tgz?cache=0&sync_timestamp=1610496986855&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron%2Fdownload%2Felectron-9.3.3.tgz",
+ "integrity": "sha1-maZhnV32j5dpel0dgu86imP83zY=",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@@ -7269,9 +7269,9 @@
},
"dependencies": {
"@types/node": {
- "version": "12.19.9",
- "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.19.9.tgz?cache=0&sync_timestamp=1608047797419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.19.9.tgz",
- "integrity": "sha1-mQrWh62LJu9tzDSk9pwz1AyVtnk=",
+ "version": "12.19.13",
+ "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.19.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.19.13.tgz",
+ "integrity": "sha1-iI4rNBWfuRSWWJSE7BaWGCErUbc=",
"dev": true
}
}
@@ -8697,7 +8697,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1600502894812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
"dev": true,
"requires": {
@@ -8706,7 +8706,7 @@
},
"ms": {
"version": "2.0.0",
- "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
}
@@ -14658,7 +14658,7 @@
},
"roarr": {
"version": "2.15.4",
- "resolved": "https://registry.npm.taobao.org/roarr/download/roarr-2.15.4.tgz?cache=0&sync_timestamp=1600094609360&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Froarr%2Fdownload%2Froarr-2.15.4.tgz",
+ "resolved": "https://registry.npm.taobao.org/roarr/download/roarr-2.15.4.tgz?cache=0&sync_timestamp=1610472352033&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Froarr%2Fdownload%2Froarr-2.15.4.tgz",
"integrity": "sha1-9f55W3uDjM/jXcYI4Cgrnrouev0=",
"dev": true,
"optional": true,
@@ -14833,7 +14833,7 @@
"dependencies": {
"type-fest": {
"version": "0.13.1",
- "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.13.1.tgz?cache=0&sync_timestamp=1602623859603&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.13.1.tgz",
+ "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.13.1.tgz?cache=0&sync_timestamp=1606468844109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.13.1.tgz",
"integrity": "sha1-AXLLW86AsL1ULqNI21DH4hg02TQ=",
"dev": true,
"optional": true
diff --git a/package.json b/package.json
index 35ea8bc0..71e1f28e 100644
--- a/package.json
+++ b/package.json
@@ -178,7 +178,7 @@
"cross-env": "^7.0.3",
"css-loader": "^4.3.0",
"del": "^6.0.0",
- "electron": "^9.4.0",
+ "electron": "^9.3.3",
"electron-builder": "^22.9.1",
"electron-debug": "^3.2.0",
"electron-devtools-installer": "^3.1.1",
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 4fca36d7..cabaca8f 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -6,3 +6,4 @@
- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
- 修复自动换源导致的搜索列表每页变成10条数据的问题
+- 降级electron到9.3.3修复部分系统没有声音的问题
From b69ecca252dc6027fecbbf1ae8c2c8c0e56eefa3 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Wed, 13 Jan 2021 11:16:16 +0800
Subject: [PATCH 009/132] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9B=AE=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/views/Setting.vue | 32 ++++++++++++++++++++------------
1 file changed, 20 insertions(+), 12 deletions(-)
diff --git a/src/renderer/views/Setting.vue b/src/renderer/views/Setting.vue
index da8bc60e..9ad50929 100644
--- a/src/renderer/views/Setting.vue
+++ b/src/renderer/views/Setting.vue
@@ -1,14 +1,14 @@
//- div(:class="$style.main")
- div.scroll(:class="$style.toc")
- ul(:class="$style.tocList")
- li(:class="$style.tocListItem" v-for="h2 in toc" :key="h2.id")
- h2(:class="$style.tocH2" :tips="h2.title")
- a(:href="'#' + h2.id") {{h2.title}}
- ul(:class="$style.tocList" v-if="h2.children.length")
- li(:class="$style.tocSubListItem" v-for="h3 in h2.children" :key="h3.id")
- h3(:class="$style.tocH3" :tips="h3.title")
- a(:href="'#' + h3.id") {{h3.title}}
+ //- div.scroll(:class="$style.toc")
+ //- ul(:class="$style.tocList")
+ //- li(:class="$style.tocListItem" v-for="h2 in toc.list" :key="h2.id")
+ //- h2(:class="[$style.tocH2, toc.activeId == h2.id ? $style.active : null]" :tips="h2.title")
+ //- a(:href="'#' + h2.id" @click="toc.activeId = h2.id") {{h2.title}}
+ //- ul(:class="$style.tocList" v-if="h2.children.length")
+ //- li(:class="$style.tocSubListItem" v-for="h3 in h2.children" :key="h3.id")
+ //- h3(:class="[$style.tocH3, toc.activeId == h3.id ? $style.active : null]" :tips="h3.title")
+ //- a(:href="'#' + h3.id" @click="toc.activeId = h3.id") {{h3.title}}
div.scroll(:class="$style.setting" ref="dom_setting")
dl(ref="dom_setting_list")
dt#basic {{$t('view.setting.basic')}}
@@ -592,7 +592,10 @@ export default {
},
isEditHotKey: false,
- toc: [],
+ toc: {
+ list: [],
+ activeId: '',
+ },
}
},
watch: {
@@ -652,7 +655,7 @@ export default {
init() {
this.current_setting = JSON.parse(JSON.stringify(this.setting))
if (!window.currentWindowSizeId) window.currentWindowSizeId = this.setting.windowSizeId
- // this.initTOC()
+ this.initTOC()
this.getCacheSize()
this.getMediaDevice()
this.current_hot_key = window.appHotKeyConfig
@@ -684,7 +687,7 @@ export default {
// }
// }
// console.log(toc)
- // this.toc = toc
+ // this.toc.list = toc
// },
// handleListScroll(event) {
// // console.log(event.target.scrollTop)
@@ -1113,6 +1116,11 @@ export default {
// a {
// color: @color-theme;
// }
+// &.active {
+// a {
+// color: @color-theme;
+// }
+// }
// }
// .tocH3 {
// font-size: 13px;
From 93c76d4ba0b54e24b77591d4131d9d103f6b5520 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Wed, 13 Jan 2021 14:05:47 +0800
Subject: [PATCH 010/132] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=82=E6=95=B0?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=B4=E6=98=8E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c6e95f7e..1905434b 100644
--- a/README.md
+++ b/README.md
@@ -82,7 +82,7 @@ npm run pack:linux
- `-search` 启动软件时自动在搜索框搜索指定的内容,例如:`-search="突然的自我 - 伍佰"`
- `-dha` 禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动(v1.6.0起新增)
-- `-dt` 以非透明模式启动(Disable Transparent),对于未开启AERO效果的win7系统可加此参数启动以确保界面正常显示,原来的`-nt`参数已重命名为`-dt`
+- `-dt` 以非透明模式启动(Disable Transparent),对于未开启AERO效果的win7系统可加此参数启动以确保界面正常显示,原来的`-nt`参数已重命名为`-dt`(v1.6.0起重命名)
### 常见问题
From 4e2b525c99c55096a62253bfaa8eaf964f34d6b5 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Wed, 13 Jan 2021 14:06:59 +0800
Subject: [PATCH 011/132] =?UTF-8?q?=E7=A7=BB=E9=99=A4initTOC=E8=B0=83?=
=?UTF-8?q?=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/views/Setting.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/views/Setting.vue b/src/renderer/views/Setting.vue
index 9ad50929..0deda88d 100644
--- a/src/renderer/views/Setting.vue
+++ b/src/renderer/views/Setting.vue
@@ -655,7 +655,7 @@ export default {
init() {
this.current_setting = JSON.parse(JSON.stringify(this.setting))
if (!window.currentWindowSizeId) window.currentWindowSizeId = this.setting.windowSizeId
- this.initTOC()
+ // this.initTOC()
this.getCacheSize()
this.getMediaDevice()
this.current_hot_key = window.appHotKeyConfig
From 2c242c66e536b63a54842c965c8d791b5d563e6c Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Wed, 13 Jan 2021 21:34:28 +0800
Subject: [PATCH 012/132] =?UTF-8?q?=E5=8F=91=E5=B8=83v1.6.1=E7=89=88?=
=?UTF-8?q?=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 12 ++++++++++++
package.json | 2 +-
publish/version.json | 2 +-
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d4bad09b..9ba211cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,18 @@ Project versioning adheres to [Semantic Versioning](http://semver.org/).
Commit convention is based on [Conventional Commits](http://conventionalcommits.org).
Change log format is based on [Keep a Changelog](http://keepachangelog.com/).
+## [1.6.1](https://github.com/lyswhut/lx-music-desktop/compare/v1.6.0...v1.6.1) - 2021-01-13
+
+### 优化
+
+- 改进自动换源时的歌曲匹配
+
+### 修复
+
+- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
+- 修复自动换源导致的搜索列表每页变成10条数据的问题
+- 降级electron到9.3.3修复部分系统没有声音的问题
+
## [1.6.0](https://github.com/lyswhut/lx-music-desktop/compare/v1.5.0...v1.6.0) - 2021-01-10
### 新增
diff --git a/package.json b/package.json
index 71e1f28e..16240e49 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lx-music-desktop",
- "version": "1.6.0",
+ "version": "1.6.1",
"description": "一个免费的音乐下载助手",
"main": "./dist/electron/main.js",
"productName": "lx-music-desktop",
diff --git a/publish/version.json b/publish/version.json
index 4e233792..95fc9c38 100644
--- a/publish/version.json
+++ b/publish/version.json
@@ -1 +1 @@
-{"version":"1.6.0","desc":"新增
\n\n- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
\n- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
\n- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
\n- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
\n- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
\n- 我的列表右键菜单添加搜索当前歌曲功能
\n- 新增
-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动 \n- 新增播放自动换源功能~
\n
\n变更
\n\n-nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除 \n
\n修复
\n\n- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
\n- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
\n- 修复
-dt(原来的-nt)启动参数不真正生效的问题 \n
\n","history":[{"version":"1.5.0","desc":"新增
\n\n- 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
\n
\n优化
\n\n- 优化软件启动时恢复上一次播放的歌曲进度功能
\n
\n修复
\n\n- 修复MAC平台上下载歌曲封面嵌入无法显示的问题
\n- 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
\n- 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
\n- 修复某些酷狗源歌单链接无法打开的问题
\n
\n"},{"version":"1.4.1","desc":"修复
\n\n- 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
\n- 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
\n- 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
\n
\n"},{"version":"1.4.0","desc":"新增
\n\n- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
\n- 新增播放进度信息保存
\n
\n优化
\n\n修复
\n\n- 修复专辑图片无法嵌入的问题
\n- 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
\n- 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
\n- 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
\n
\n"},{"version":"1.3.0","desc":"新增
\n\n- 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
\n
\n优化
\n\n修复
\n\n- 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
\n
\n"},{"version":"1.2.2","desc":"修复
\n\n- 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
\n
\n"},{"version":"1.2.1","desc":"优化
\n\n- Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加
-nt参数启动 \n
\n修复
\n\n- 修复聚合搜索的分页问题
\n- 修复代理输入框输入的内容不生效的问题
\n
\n"},{"version":"1.2.0","desc":"提前祝大家中秋&国庆快乐~
\n新增
\n\n- 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
\n
\n优化
\n\n- 优化我的列表滚动条位置的保存逻辑
\n- 更新设置-备份与恢复功能的描述
\n- 优化软件内鼠标悬停的提示界面
\n
\n修复
\n\n- 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
\n- 修复网易云KTV嗨榜无法加载的问题
\n- 修复初始化搜索历史列表功能
\n- 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
\n- 修复歌曲封面无法嵌入的Bug
\n- 修复酷狗歌词格式问题
\n- 修复关闭切换动画时从搜索候选列表点击内容无效的问题
\n
\n其他
\n\n- 更新 Electron 到 v10.1.3
\n
\n"},{"version":"1.1.1","desc":"修复
\n\n"},{"version":"1.1.0","desc":"新增
\n\n- 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
\n- 新增
不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置 \n- 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
\n- 新增
显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译 \n- 新增
显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画 \n- 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
\n
\n修复
\n\n- 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
\n- 修复我的列表搜索对最后一个字符的匹配问题
\n- 修复窗口在
较小模式下最小化/关闭按钮不居中的问题 \n
\n优化
\n\n- 桌面歌词当前播放行改为上下居中
\n- 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
\n- 优化随机播放机制,现在通过
下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲 \n- 当下载目录没有写入权限时将显示没有写入权限的提示
\n
\n移除
\n\n- 移除默认的全局声音媒体快捷键接管
\n- 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
\n
\n其他
\n\n"},{"version":"1.0.1","desc":"优化
\n\n修复
\n\n- 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
\n
\n"},{"version":"1.0.0","desc":"新增
\n\n- 新增
rpm、pacman包的构建(未测试可用性) \n- 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
\n- 新增歌曲列表右击菜单
\n- 新增自定义列表,创建列表的按钮在表头
#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑 \n- 改变排行榜布局,新增更多排行榜
\n- 新增我的列表右键菜单复制歌曲名选项
\n- 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
\n- 新增“清热板蓝”皮肤
\n- 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
\n- 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
\n- 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
\n- 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
\n- 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
\n- 新增我的列表内歌曲搜索,在我的列表按
ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框) \n- 新增托盘图标样式设置,可到设置-其他切换
\n- 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
\n- 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
\n- 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开
%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储 \n- 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
\n
\n优化
\n\n- 改进歌曲切换时的歌词滚动效果
\n- 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
\n- 改进歌单列表展示
\n- 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
\n- 压缩备份数据文件大小
\n
\n修复
\n\n- 修复按住
Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题 \n- 修复Linux版开启托盘无法退出的问题
\n- 修复某些情况下可能导致的音源输出问题
\n- 修复某些情况下无法开始下载任务的问题
\n- 修复 tab 组件边框溢出问题
\n- 修复错误更新试听列表外的歌曲时间的问题
\n- 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
\n- 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
\n- 修复无法检测最新版本时弹窗提示的显示
\n- 修复某些情况下从托盘还原窗口后无法操作的问题
\n- 修复Linux下无法
ctrl+a全选的问题 \n- 修复主题背景图片覆盖不全的问题
\n- 修复聚合搜索音源标签的皮肤配色问题
\n
\n更变
\n\n- 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
\n- 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
\n- 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
\n- 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
\n
\n其他
\n\n"},{"version":"0.18.2","desc":"修复
\n\n- 修复开启托盘时,可能导致无法自动更新的问题
\n
\n"},{"version":"0.18.1","desc":"优化
\n\n- win下的托盘图标使用更大的图片
\n- 加长软件协议的强制停留时间
\n
\n修复
\n\n"},{"version":"0.18.0","desc":"新增
\n\n- 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
\n- 添加软件启动时是否自动聚焦搜索框的设置
\n- 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
\n- 新增打开酷狗源用户歌单
\n- 新增使用协议
\n- 新增虾米音源
\n- 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
\n- 新增“超大”、“巨大”窗口尺寸
\n- 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次)
\n
\n优化
\n\n- 略微加深音量条底色
\n- 优化其他界面细节
\n- 优化英语翻译,感谢 @CPCer
\n- 优化程序的流畅度
\n
\n更变
\n\n- 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
\n- 移除列表多选框,现在多选需要键盘配合,想要多选前需按下
Shift或Ctrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用Shift或Ctrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按Shift或Alt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键) \n- 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
\n
\n修复
\n\n- 修复网易源某些歌曲提示没有可播放的音质的问题
\n- 修复下载管理刷新URL失败时不标记任务下载失败的问题
\n- 修复列表导出的文字描述,感谢 @CPCer
\n- 修复歌曲切换方式无法取消勾选的问题
\n- 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
\n- 修正播放列表浮动按钮错误的文字提示
\n
\n移除
\n\n- 因128k以外的音质失效,So 禁止所有128k外的音质下载
\n
\n其他
\n更新 Electron 到 8.2.5
\n"},{"version":"0.17.0","desc":"新增
\n\n- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
\n- 新增无法打开外部歌单FAQ
\n- 新增启动参数
search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰" \n- 新增音频输出设置
\n- 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
\n- 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
\n- 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
\n- 新增热搜词,默认关闭,可到设置开启
\n- 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
\n
\n优化
\n\n- 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
\n- 优化播放进度条的动画效果
\n- 现在添加下载任务时,后面添加的任务会在列表顶部插入
\n- 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
\n- 优化右上角最小化/关闭按钮布局
\n
\n修复
\n\n- 修复歌单详情处于加载状态时无法返回的问题
\n- 修复鼠标右击复制列表内容时会复制音质标签的问题
\n- 修复
0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题 \n- 修复下载列表在某些情况下无法取消全选的问题
\n
\n其他
\n\n"},{"version":"0.16.0","desc":"新增
\n\n- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
\n- 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
\n- 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
\n- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
\n
\n优化
\n\n- 优化木叶之村主题翻页器背景颜色
\n- 优化各个主题音质标签颜色
\n- 优化其他一些界面细节及用户交互效果
\n
\n修复
\n\n- 修复启用透明窗口鼠标不穿透的bug
\n- 修复大窗口时设置的音乐来源选项不换行的问题
\n- 修复某些情况下暂停任务会自动开始任务的问题
\n- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
\n- 修复酷狗源歌单热门标签歌单列表无法加载问题
\n- 修复QQ源歌单热门标签歌单列表无法加载问题
\n
\n其他
\n\n"},{"version":"0.15.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复歌曲下载列表无法加载的问题
\n- 修复歌曲下载任务数大于最大下载任务数的问题
\n- 修复某些情况下歌曲下载错误的问题
\n- 修复下载列表数据没有被迁移直接被丢弃的问题
\n
\n"},{"version":"0.14.1","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
\n
\n"},{"version":"0.14.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n新增
\n\n- 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
\n- 恢复QQ音乐源128k音质试听
\n- 新增不强制win7开启透明效果即可使用,但要配置运行参数
-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数” \n- 新增“新年快乐”主题,可自行切换体验
\n
\n优化
\n\n- 减淡各个主题的歌曲列表分隔线颜色
\n- 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
\n- 更新改进的歌词播放插件,现在歌词的播放显示将更准确
\n
\n修复
\n\n- 修复咪咕源无法搜索的问题
\n- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
\n- 修复导入设置窗口大小、代理设置不立即生效的问题
\n- 修复在线音乐列表获取失败时无限循环请求的问题
\n
\n其他
\n\n- 将软件设置与播放列表分离存储成两个文件
\n- 更新 Electron 到 7.1.9
\n
\n"},{"version":"0.13.1","desc":"修复
\n\n其他
\n\n- 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
\n
\n"},{"version":"0.13.0","desc":"新增
\n\n- 新增搜索框搜索建议键盘上下方向键选择功能
\n- 聚合搜索新增音源显示
\n- 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
\n
\n优化
\n\n修复
\n\n- 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
\n- 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
\n
\n移除
\n\n其他
\n\n- 更新electron到7.1.5
\n- 更新vue到2.6.11
\n
\n"},{"version":"0.12.1","desc":"优化
\n\n- 优化定位歌曲时的列表滚动机制
\n- 优化链接点击效果
\n
\n修复
\n\n- 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
\n- 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
\n- 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
\n
\n其他
\n\n"},{"version":"0.12.0","desc":"由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
\n新增
\n\n- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
\n
\n优化
\n\n- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
\n- 注意:目前仍然无法暂停处于链接获取状态中的任务
\n
\n修复
\n\n- 修复Linux deb版本
.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈! \n- 修复下载列表歌曲状态分类列表操作Bug
\n- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
\n- 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
\n
\n"},{"version":"0.11.0","desc":"新增
\n\n- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
\n- 新增下载管理的任务状态分类
\n- 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
\n
\n优化
\n\n- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
\n
\n"},{"version":"0.10.0","desc":"优化
\n\n- 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
\n
\n修复
\n\n- 修复酷我源搜索提示、排行榜无法获取的问题
\n- 修复咪咕源无法播放的问题
\n
\n"},{"version":"0.9.1","desc":"修复
\n\n"},{"version":"0.9.0","desc":"新增
\n\n- 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
\n- 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
\n
\n修复
\n\n- 修复搜索提示失效的问题
\n- 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
\n
\n"},{"version":"0.8.2","desc":"修复
\n\n- 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
\n
\n"},{"version":"0.8.1","desc":"修复
\n\n- 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
\n
\n"},{"version":"0.8.0","desc":"新增
\n\n- 新增网易云源歌曲搜索
\n- 新增网易云源歌单
\n- 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
\n- 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
\n
\n优化
\n\n- 优化搜索框搜索体验
\n- 优化音量条交互视觉效果
\n- 缓存歌单详情列表数据
\n
\n修复
\n\n- 修复QQ源歌单无法翻页Bug
\n- 修复默认列表没有创建时无法显示收藏列表的Bug
\n- 修复网易云128k直接试听
\n- 修复歌曲音质不存在时仍然播放或下载的Bug
\n- 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
\n
\n"},{"version":"0.7.0","desc":"新增
\n\n- 新增“我的收藏”本地播放列表
\n- 新增缓存清理功能,可到设置-其他查看与清理软件缓存
\n- 新增QQ音乐源搜索
\n- 新增咪咕源搜索
\n- 新增咪咕源歌单
\n- 新增咪咕源排行榜
\n- 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
\n
\n优化
\n\n- 优化选择框动画效果
\n- 尝试优化选我的音乐列表内容很多时多选的卡顿问题
\n
\n修复
\n\n- 修复列表延迟显示的Bug
\n- 修复QQ音源128k音质试听
\n
\n"},{"version":"0.6.2","desc":"祝贺祖国成立70周年~!
\n新增
\n\n修复
\n\n- 修正火影皮肤名字
\n- 修复当试听列表为空时,无法切到其他界面的Bug
\n- 修复百度源搜索结果为空时的接口处理Bug
\n- 恢复酷狗其他音质播放
\n
\n"},{"version":"0.6.1","desc":"新增
\n\n- 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
\n- 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
\n
\n优化
\n\n- 新增DNS解析缓存,加快请求速度
\n- 优化代码逻辑,减少软件对系统资源的占用
\n- 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
\n- 优化下拉列表动画效果
\n
\n修复
\n\n- 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
\n- 修复其他一些小Bug
\n
\n移除
\n\n- 移除
192k 音质 \n- 移除酷我音源
ape 音质,无损推荐 flac 格式 \n
\n"},{"version":"0.6.0","desc":"新增
\n\n- 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
\n- 新增代理功能
\n
\n优化
\n\n- 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
\n
\n修复
\n\n- 修复试听列表没有歌曲时会显示列表加载中的Bug
\n- 修复切换歌单列表详情时的UI Bug
\n
\n"},{"version":"0.5.5","desc":"新增
\n\n- 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
\n- 新增 MAC 版本退出快捷键支持
\n- 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
\n
\n修复
\n\n- 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
\n- 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
\n- 修复 MAC 版本不能复制粘贴的问题
\n
\n"},{"version":"0.5.4","desc":"移除
\n\n- 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
\n- 为了稳妥起见,暂时移除FLAC格式的meta信息修改
\n- MP3格式无此问题
\n
\n"},{"version":"0.5.3","desc":"优化
\n\n修复
\n\n- 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
\n
\n"},{"version":"0.5.2","desc":"新增
\n\n- 新增强迫症设置-离开搜索界面时是否清空搜索框
\n- 设置-关于板块新增常见问题链接
\n- 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
\n
\n优化
\n\n- 略微优化最小化按钮字符
\n- 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
\n
\n修复
\n\n移除
\n\n- 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
\n
\n"},{"version":"0.5.1","desc":"新增
\n\n- 新增右上角最小化/关闭按钮鼠标滑过符号
\n- 新增下载列表定位文件按钮
\n
\n修复
\n\n- 修复百度源歌单全部分类无法加载的问题
\n- 修复更新弹窗无法弹出的问题
\n
\n"},{"version":"0.5.0","desc":"新增
\n\n- 新增封面嵌入(默认开启,可到设置-下载设置关闭)
\n- 新增歌词下载(默认关闭,可到设置-下载设置开启)
\n- 新增单例应用功能(实现软件单开功能,禁止软件多开)
\n
\n优化
\n\n修复
\n\n- 修复歌单无法翻页的问题
\n- 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
\n- 修复版本更新弹窗Bug
\n- 修复酷狗歌单推荐歌单出现在其他分类中的Bug
\n
\n"},{"version":"0.4.0","desc":"新增
\n\n- 新增歌单功能,目前支持酷我、酷狗、百度源歌单
\n- 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址与打赏地址
\n- 新增酷狗 电音热歌榜、DJ热歌榜
\n- 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
\n
\n移除
\n\n- 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
\n
\n"},{"version":"0.3.5","desc":"新增
\n\n- 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
\n
\n优化
\n\n- 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
\n
\n修复
\n\n- 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
\n- 修复歌词加载Bug
\n
\n"},{"version":"0.3.4","desc":"优化
\n\n- 减少接口不稳定带来的影响,适当增加请求等待时间
\n
\n修复
\n\n- 修复播放过程中URL过期不会刷新URL的问题
\n
\n"},{"version":"0.3.3","desc":"修复
\n\n- messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
\n- 修复设置界面更新出错时仍然显示更新下载中的问题
\n- 修复手动定位播放进度条时存在偏差的问题
\n- 屏蔽播放器中没有歌曲时对进度条的点击
\n
\n"},{"version":"0.3.2","desc":"新增
\n\n"},{"version":"0.3.1","desc":"修复
\n\n"},{"version":"0.3.0","desc":"新增
\n\n- 新增MAC及Linux版本(需要的可自行下载)
\n- 新增音量调整
\n- 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
\n- 新增更新出错时的弹窗提示
\n- 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
\n
\n修复
\n\n- 强制把临时接口设置回
messoer 接口 \n
\n"},{"version":"0.2.3","desc":"新增
\n\n- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
\n
\n修复
\n\n- 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
\n- 修复某些情况下歌曲链接未能缓存的问题
\n
\n移除
\n\n- 移除临时接口(因服务器被攻击,本接口已关闭)
\n- 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
\n
\n"},{"version":"0.2.2","desc":"修复
\n\n- 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
\n- 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
\n
\n"},{"version":"0.2.1","desc":"优化
\n\n- 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
\n
\n修复
\n\n- 修复歌曲加载无法加载时自动切换混乱的Bug
\n- 修复移除列表最后一首歌曲时播放器不停止播放的问题
\n
\n"},{"version":"0.2.0","desc":"新增
\n\n- 新增百度音乐排行榜及其音乐直接试听与下载
\n- 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
\n- 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
\n
\n修复
\n\n- 修复更新弹窗历史版本描述多余的换行问题
\n- 修复歌曲无法播放的情况下歌词仍会播放的问题
\n
\n"},{"version":"0.1.6","desc":"修复
\n\n"},{"version":"0.1.5","desc":"新增
\n\n- 新增搜索列表批量试听与下载功能
\n- 新增排行榜列表批量试听与下载功能
\n- 新增试听列表批量移除与下载功能
\n- 新增下载列表批量开始、暂停与移除功能
\n
\n优化
\n\n"},{"version":"0.1.4","desc":"新增
\n\n- 新增音乐来源切换,可到设置页面-基本设置 look look !
\n- 为搜索结果列表添加多选功能。
\nP.S:暂时没想好多选后的操作按钮放哪… \n
\n优化
\n\n- 重构与改进checkbox组件,使其支持不定选中状态
\n- 完善上一个版本的http请求封装并切换部分请求到该方法上
\n- 优化其他一些细节
\n
\n"},{"version":"0.1.3","desc":"新增
\n\n修复
\n\n- 修复安装包许可协议乱码问题
\n- messoer 提供的接口已挂,暂时切换到临时接口!
\n
\n移除
\n\n- 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
\n
\n"},{"version":"0.1.2","desc":"修复
\n\n"},{"version":"0.1.1","desc":"新增
\n\n- QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
\n
\n优化
\n\n- 优化http请求机制
\n- 更新关于本软件说明
\n
\n修复
\n\n- 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
\n- 修复切换歌曲时仍然播放上一首歌曲的问题
\n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}
+{"version":"1.6.1","desc":"优化
\n\n修复
\n\n- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
\n- 修复自动换源导致的搜索列表每页变成10条数据的问题
\n- 降级electron到9.3.3修复部分系统没有声音的问题
\n
\n","history":[{"version":"1.6.0","desc":"新增
\n\n- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
\n- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
\n- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
\n- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
\n- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
\n- 我的列表右键菜单添加搜索当前歌曲功能
\n- 新增
-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动 \n- 新增播放自动换源功能~
\n
\n变更
\n\n-nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除 \n
\n修复
\n\n- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
\n- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
\n- 修复
-dt(原来的-nt)启动参数不真正生效的问题 \n
\n"},{"version":"1.5.0","desc":"新增
\n\n- 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
\n
\n优化
\n\n- 优化软件启动时恢复上一次播放的歌曲进度功能
\n
\n修复
\n\n- 修复MAC平台上下载歌曲封面嵌入无法显示的问题
\n- 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
\n- 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
\n- 修复某些酷狗源歌单链接无法打开的问题
\n
\n"},{"version":"1.4.1","desc":"修复
\n\n- 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
\n- 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
\n- 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
\n
\n"},{"version":"1.4.0","desc":"新增
\n\n- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
\n- 新增播放进度信息保存
\n
\n优化
\n\n修复
\n\n- 修复专辑图片无法嵌入的问题
\n- 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
\n- 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
\n- 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
\n
\n"},{"version":"1.3.0","desc":"新增
\n\n- 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
\n
\n优化
\n\n修复
\n\n- 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
\n
\n"},{"version":"1.2.2","desc":"修复
\n\n- 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
\n
\n"},{"version":"1.2.1","desc":"优化
\n\n- Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加
-nt参数启动 \n
\n修复
\n\n- 修复聚合搜索的分页问题
\n- 修复代理输入框输入的内容不生效的问题
\n
\n"},{"version":"1.2.0","desc":"提前祝大家中秋&国庆快乐~
\n新增
\n\n- 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
\n
\n优化
\n\n- 优化我的列表滚动条位置的保存逻辑
\n- 更新设置-备份与恢复功能的描述
\n- 优化软件内鼠标悬停的提示界面
\n
\n修复
\n\n- 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
\n- 修复网易云KTV嗨榜无法加载的问题
\n- 修复初始化搜索历史列表功能
\n- 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
\n- 修复歌曲封面无法嵌入的Bug
\n- 修复酷狗歌词格式问题
\n- 修复关闭切换动画时从搜索候选列表点击内容无效的问题
\n
\n其他
\n\n- 更新 Electron 到 v10.1.3
\n
\n"},{"version":"1.1.1","desc":"修复
\n\n"},{"version":"1.1.0","desc":"新增
\n\n- 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
\n- 新增
不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置 \n- 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
\n- 新增
显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译 \n- 新增
显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画 \n- 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
\n
\n修复
\n\n- 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
\n- 修复我的列表搜索对最后一个字符的匹配问题
\n- 修复窗口在
较小模式下最小化/关闭按钮不居中的问题 \n
\n优化
\n\n- 桌面歌词当前播放行改为上下居中
\n- 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
\n- 优化随机播放机制,现在通过
下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲 \n- 当下载目录没有写入权限时将显示没有写入权限的提示
\n
\n移除
\n\n- 移除默认的全局声音媒体快捷键接管
\n- 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
\n
\n其他
\n\n"},{"version":"1.0.1","desc":"优化
\n\n修复
\n\n- 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
\n
\n"},{"version":"1.0.0","desc":"新增
\n\n- 新增
rpm、pacman包的构建(未测试可用性) \n- 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
\n- 新增歌曲列表右击菜单
\n- 新增自定义列表,创建列表的按钮在表头
#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑 \n- 改变排行榜布局,新增更多排行榜
\n- 新增我的列表右键菜单复制歌曲名选项
\n- 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
\n- 新增“清热板蓝”皮肤
\n- 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
\n- 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
\n- 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
\n- 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
\n- 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
\n- 新增我的列表内歌曲搜索,在我的列表按
ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框) \n- 新增托盘图标样式设置,可到设置-其他切换
\n- 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
\n- 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
\n- 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开
%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储 \n- 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
\n
\n优化
\n\n- 改进歌曲切换时的歌词滚动效果
\n- 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
\n- 改进歌单列表展示
\n- 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
\n- 压缩备份数据文件大小
\n
\n修复
\n\n- 修复按住
Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题 \n- 修复Linux版开启托盘无法退出的问题
\n- 修复某些情况下可能导致的音源输出问题
\n- 修复某些情况下无法开始下载任务的问题
\n- 修复 tab 组件边框溢出问题
\n- 修复错误更新试听列表外的歌曲时间的问题
\n- 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
\n- 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
\n- 修复无法检测最新版本时弹窗提示的显示
\n- 修复某些情况下从托盘还原窗口后无法操作的问题
\n- 修复Linux下无法
ctrl+a全选的问题 \n- 修复主题背景图片覆盖不全的问题
\n- 修复聚合搜索音源标签的皮肤配色问题
\n
\n更变
\n\n- 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
\n- 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
\n- 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
\n- 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
\n
\n其他
\n\n"},{"version":"0.18.2","desc":"修复
\n\n- 修复开启托盘时,可能导致无法自动更新的问题
\n
\n"},{"version":"0.18.1","desc":"优化
\n\n- win下的托盘图标使用更大的图片
\n- 加长软件协议的强制停留时间
\n
\n修复
\n\n"},{"version":"0.18.0","desc":"新增
\n\n- 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
\n- 添加软件启动时是否自动聚焦搜索框的设置
\n- 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
\n- 新增打开酷狗源用户歌单
\n- 新增使用协议
\n- 新增虾米音源
\n- 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
\n- 新增“超大”、“巨大”窗口尺寸
\n- 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次)
\n
\n优化
\n\n- 略微加深音量条底色
\n- 优化其他界面细节
\n- 优化英语翻译,感谢 @CPCer
\n- 优化程序的流畅度
\n
\n更变
\n\n- 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
\n- 移除列表多选框,现在多选需要键盘配合,想要多选前需按下
Shift或Ctrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用Shift或Ctrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按Shift或Alt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键) \n- 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
\n
\n修复
\n\n- 修复网易源某些歌曲提示没有可播放的音质的问题
\n- 修复下载管理刷新URL失败时不标记任务下载失败的问题
\n- 修复列表导出的文字描述,感谢 @CPCer
\n- 修复歌曲切换方式无法取消勾选的问题
\n- 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
\n- 修正播放列表浮动按钮错误的文字提示
\n
\n移除
\n\n- 因128k以外的音质失效,So 禁止所有128k外的音质下载
\n
\n其他
\n更新 Electron 到 8.2.5
\n"},{"version":"0.17.0","desc":"新增
\n\n- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
\n- 新增无法打开外部歌单FAQ
\n- 新增启动参数
search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰" \n- 新增音频输出设置
\n- 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
\n- 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
\n- 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
\n- 新增热搜词,默认关闭,可到设置开启
\n- 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
\n
\n优化
\n\n- 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
\n- 优化播放进度条的动画效果
\n- 现在添加下载任务时,后面添加的任务会在列表顶部插入
\n- 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
\n- 优化右上角最小化/关闭按钮布局
\n
\n修复
\n\n- 修复歌单详情处于加载状态时无法返回的问题
\n- 修复鼠标右击复制列表内容时会复制音质标签的问题
\n- 修复
0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题 \n- 修复下载列表在某些情况下无法取消全选的问题
\n
\n其他
\n\n"},{"version":"0.16.0","desc":"新增
\n\n- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
\n- 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
\n- 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
\n- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
\n
\n优化
\n\n- 优化木叶之村主题翻页器背景颜色
\n- 优化各个主题音质标签颜色
\n- 优化其他一些界面细节及用户交互效果
\n
\n修复
\n\n- 修复启用透明窗口鼠标不穿透的bug
\n- 修复大窗口时设置的音乐来源选项不换行的问题
\n- 修复某些情况下暂停任务会自动开始任务的问题
\n- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
\n- 修复酷狗源歌单热门标签歌单列表无法加载问题
\n- 修复QQ源歌单热门标签歌单列表无法加载问题
\n
\n其他
\n\n"},{"version":"0.15.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复歌曲下载列表无法加载的问题
\n- 修复歌曲下载任务数大于最大下载任务数的问题
\n- 修复某些情况下歌曲下载错误的问题
\n- 修复下载列表数据没有被迁移直接被丢弃的问题
\n
\n"},{"version":"0.14.1","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
\n
\n"},{"version":"0.14.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n新增
\n\n- 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
\n- 恢复QQ音乐源128k音质试听
\n- 新增不强制win7开启透明效果即可使用,但要配置运行参数
-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数” \n- 新增“新年快乐”主题,可自行切换体验
\n
\n优化
\n\n- 减淡各个主题的歌曲列表分隔线颜色
\n- 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
\n- 更新改进的歌词播放插件,现在歌词的播放显示将更准确
\n
\n修复
\n\n- 修复咪咕源无法搜索的问题
\n- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
\n- 修复导入设置窗口大小、代理设置不立即生效的问题
\n- 修复在线音乐列表获取失败时无限循环请求的问题
\n
\n其他
\n\n- 将软件设置与播放列表分离存储成两个文件
\n- 更新 Electron 到 7.1.9
\n
\n"},{"version":"0.13.1","desc":"修复
\n\n其他
\n\n- 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
\n
\n"},{"version":"0.13.0","desc":"新增
\n\n- 新增搜索框搜索建议键盘上下方向键选择功能
\n- 聚合搜索新增音源显示
\n- 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
\n
\n优化
\n\n修复
\n\n- 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
\n- 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
\n
\n移除
\n\n其他
\n\n- 更新electron到7.1.5
\n- 更新vue到2.6.11
\n
\n"},{"version":"0.12.1","desc":"优化
\n\n- 优化定位歌曲时的列表滚动机制
\n- 优化链接点击效果
\n
\n修复
\n\n- 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
\n- 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
\n- 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
\n
\n其他
\n\n"},{"version":"0.12.0","desc":"由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
\n新增
\n\n- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
\n
\n优化
\n\n- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
\n- 注意:目前仍然无法暂停处于链接获取状态中的任务
\n
\n修复
\n\n- 修复Linux deb版本
.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈! \n- 修复下载列表歌曲状态分类列表操作Bug
\n- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
\n- 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
\n
\n"},{"version":"0.11.0","desc":"新增
\n\n- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
\n- 新增下载管理的任务状态分类
\n- 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
\n
\n优化
\n\n- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
\n
\n"},{"version":"0.10.0","desc":"优化
\n\n- 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
\n
\n修复
\n\n- 修复酷我源搜索提示、排行榜无法获取的问题
\n- 修复咪咕源无法播放的问题
\n
\n"},{"version":"0.9.1","desc":"修复
\n\n"},{"version":"0.9.0","desc":"新增
\n\n- 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
\n- 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
\n
\n修复
\n\n- 修复搜索提示失效的问题
\n- 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
\n
\n"},{"version":"0.8.2","desc":"修复
\n\n- 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
\n
\n"},{"version":"0.8.1","desc":"修复
\n\n- 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
\n
\n"},{"version":"0.8.0","desc":"新增
\n\n- 新增网易云源歌曲搜索
\n- 新增网易云源歌单
\n- 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
\n- 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
\n
\n优化
\n\n- 优化搜索框搜索体验
\n- 优化音量条交互视觉效果
\n- 缓存歌单详情列表数据
\n
\n修复
\n\n- 修复QQ源歌单无法翻页Bug
\n- 修复默认列表没有创建时无法显示收藏列表的Bug
\n- 修复网易云128k直接试听
\n- 修复歌曲音质不存在时仍然播放或下载的Bug
\n- 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
\n
\n"},{"version":"0.7.0","desc":"新增
\n\n- 新增“我的收藏”本地播放列表
\n- 新增缓存清理功能,可到设置-其他查看与清理软件缓存
\n- 新增QQ音乐源搜索
\n- 新增咪咕源搜索
\n- 新增咪咕源歌单
\n- 新增咪咕源排行榜
\n- 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
\n
\n优化
\n\n- 优化选择框动画效果
\n- 尝试优化选我的音乐列表内容很多时多选的卡顿问题
\n
\n修复
\n\n- 修复列表延迟显示的Bug
\n- 修复QQ音源128k音质试听
\n
\n"},{"version":"0.6.2","desc":"祝贺祖国成立70周年~!
\n新增
\n\n修复
\n\n- 修正火影皮肤名字
\n- 修复当试听列表为空时,无法切到其他界面的Bug
\n- 修复百度源搜索结果为空时的接口处理Bug
\n- 恢复酷狗其他音质播放
\n
\n"},{"version":"0.6.1","desc":"新增
\n\n- 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
\n- 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
\n
\n优化
\n\n- 新增DNS解析缓存,加快请求速度
\n- 优化代码逻辑,减少软件对系统资源的占用
\n- 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
\n- 优化下拉列表动画效果
\n
\n修复
\n\n- 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
\n- 修复其他一些小Bug
\n
\n移除
\n\n- 移除
192k 音质 \n- 移除酷我音源
ape 音质,无损推荐 flac 格式 \n
\n"},{"version":"0.6.0","desc":"新增
\n\n- 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
\n- 新增代理功能
\n
\n优化
\n\n- 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
\n
\n修复
\n\n- 修复试听列表没有歌曲时会显示列表加载中的Bug
\n- 修复切换歌单列表详情时的UI Bug
\n
\n"},{"version":"0.5.5","desc":"新增
\n\n- 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
\n- 新增 MAC 版本退出快捷键支持
\n- 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
\n
\n修复
\n\n- 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
\n- 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
\n- 修复 MAC 版本不能复制粘贴的问题
\n
\n"},{"version":"0.5.4","desc":"移除
\n\n- 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
\n- 为了稳妥起见,暂时移除FLAC格式的meta信息修改
\n- MP3格式无此问题
\n
\n"},{"version":"0.5.3","desc":"优化
\n\n修复
\n\n- 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
\n
\n"},{"version":"0.5.2","desc":"新增
\n\n- 新增强迫症设置-离开搜索界面时是否清空搜索框
\n- 设置-关于板块新增常见问题链接
\n- 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
\n
\n优化
\n\n- 略微优化最小化按钮字符
\n- 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
\n
\n修复
\n\n移除
\n\n- 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
\n
\n"},{"version":"0.5.1","desc":"新增
\n\n- 新增右上角最小化/关闭按钮鼠标滑过符号
\n- 新增下载列表定位文件按钮
\n
\n修复
\n\n- 修复百度源歌单全部分类无法加载的问题
\n- 修复更新弹窗无法弹出的问题
\n
\n"},{"version":"0.5.0","desc":"新增
\n\n- 新增封面嵌入(默认开启,可到设置-下载设置关闭)
\n- 新增歌词下载(默认关闭,可到设置-下载设置开启)
\n- 新增单例应用功能(实现软件单开功能,禁止软件多开)
\n
\n优化
\n\n修复
\n\n- 修复歌单无法翻页的问题
\n- 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
\n- 修复版本更新弹窗Bug
\n- 修复酷狗歌单推荐歌单出现在其他分类中的Bug
\n
\n"},{"version":"0.4.0","desc":"新增
\n\n- 新增歌单功能,目前支持酷我、酷狗、百度源歌单
\n- 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址与打赏地址
\n- 新增酷狗 电音热歌榜、DJ热歌榜
\n- 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
\n
\n移除
\n\n- 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
\n
\n"},{"version":"0.3.5","desc":"新增
\n\n- 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
\n
\n优化
\n\n- 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
\n
\n修复
\n\n- 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
\n- 修复歌词加载Bug
\n
\n"},{"version":"0.3.4","desc":"优化
\n\n- 减少接口不稳定带来的影响,适当增加请求等待时间
\n
\n修复
\n\n- 修复播放过程中URL过期不会刷新URL的问题
\n
\n"},{"version":"0.3.3","desc":"修复
\n\n- messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
\n- 修复设置界面更新出错时仍然显示更新下载中的问题
\n- 修复手动定位播放进度条时存在偏差的问题
\n- 屏蔽播放器中没有歌曲时对进度条的点击
\n
\n"},{"version":"0.3.2","desc":"新增
\n\n"},{"version":"0.3.1","desc":"修复
\n\n"},{"version":"0.3.0","desc":"新增
\n\n- 新增MAC及Linux版本(需要的可自行下载)
\n- 新增音量调整
\n- 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
\n- 新增更新出错时的弹窗提示
\n- 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
\n
\n修复
\n\n- 强制把临时接口设置回
messoer 接口 \n
\n"},{"version":"0.2.3","desc":"新增
\n\n- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
\n
\n修复
\n\n- 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
\n- 修复某些情况下歌曲链接未能缓存的问题
\n
\n移除
\n\n- 移除临时接口(因服务器被攻击,本接口已关闭)
\n- 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
\n
\n"},{"version":"0.2.2","desc":"修复
\n\n- 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
\n- 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
\n
\n"},{"version":"0.2.1","desc":"优化
\n\n- 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
\n
\n修复
\n\n- 修复歌曲加载无法加载时自动切换混乱的Bug
\n- 修复移除列表最后一首歌曲时播放器不停止播放的问题
\n
\n"},{"version":"0.2.0","desc":"新增
\n\n- 新增百度音乐排行榜及其音乐直接试听与下载
\n- 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
\n- 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
\n
\n修复
\n\n- 修复更新弹窗历史版本描述多余的换行问题
\n- 修复歌曲无法播放的情况下歌词仍会播放的问题
\n
\n"},{"version":"0.1.6","desc":"修复
\n\n"},{"version":"0.1.5","desc":"新增
\n\n- 新增搜索列表批量试听与下载功能
\n- 新增排行榜列表批量试听与下载功能
\n- 新增试听列表批量移除与下载功能
\n- 新增下载列表批量开始、暂停与移除功能
\n
\n优化
\n\n"},{"version":"0.1.4","desc":"新增
\n\n- 新增音乐来源切换,可到设置页面-基本设置 look look !
\n- 为搜索结果列表添加多选功能。
\nP.S:暂时没想好多选后的操作按钮放哪… \n
\n优化
\n\n- 重构与改进checkbox组件,使其支持不定选中状态
\n- 完善上一个版本的http请求封装并切换部分请求到该方法上
\n- 优化其他一些细节
\n
\n"},{"version":"0.1.3","desc":"新增
\n\n修复
\n\n- 修复安装包许可协议乱码问题
\n- messoer 提供的接口已挂,暂时切换到临时接口!
\n
\n移除
\n\n- 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
\n
\n"},{"version":"0.1.2","desc":"修复
\n\n"},{"version":"0.1.1","desc":"新增
\n\n- QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
\n
\n优化
\n\n- 优化http请求机制
\n- 更新关于本软件说明
\n
\n修复
\n\n- 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
\n- 修复切换歌曲时仍然播放上一首歌曲的问题
\n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}
From 3e343a80fd00ae1d5df96cf7b7e0139b51ad3931 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 16 Jan 2021 01:11:17 +0800
Subject: [PATCH 013/132] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E7=95=8C=E9=9D=A2?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=90=9C=E7=B4=A2=E7=8A=B6=E6=80=81=E7=9A=84?=
=?UTF-8?q?=E6=8F=90=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 10 +-
src/renderer/lang/en-us/view/search.json | 1 +
src/renderer/lang/zh-cn/view/search.json | 1 +
src/renderer/lang/zh-tw/view/search.json | 1 +
src/renderer/store/modules/search.js | 2 +-
src/renderer/views/Search.vue | 142 ++++++++++++++---------
6 files changed, 96 insertions(+), 61 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index cabaca8f..71ac33d3 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -1,9 +1,3 @@
-### 优化
+### 新增
-- 改进自动换源时的歌曲匹配
-
-### 修复
-
-- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
-- 修复自动换源导致的搜索列表每页变成10条数据的问题
-- 降级electron到9.3.3修复部分系统没有声音的问题
+- 搜索界面新增搜索状态的提示
diff --git a/src/renderer/lang/en-us/view/search.json b/src/renderer/lang/en-us/view/search.json
index a265f2cf..6b4e7b3b 100644
--- a/src/renderer/lang/en-us/view/search.json
+++ b/src/renderer/lang/en-us/view/search.json
@@ -10,6 +10,7 @@
"time": "Length",
"lossless": "SQ",
"high_quality": "HQ",
+ "loding_list": "Loading...",
"no_item": "Search what I want to 😉",
"hot_search": "Top Searches",
"history_search": "History Searches",
diff --git a/src/renderer/lang/zh-cn/view/search.json b/src/renderer/lang/zh-cn/view/search.json
index b981c68f..c22bbb02 100644
--- a/src/renderer/lang/zh-cn/view/search.json
+++ b/src/renderer/lang/zh-cn/view/search.json
@@ -10,6 +10,7 @@
"time": "时长",
"lossless": "无损",
"high_quality": "高品质",
+ "loding_list": "加载中...",
"no_item": "搜我所想~~😉",
"hot_search": "热门搜索",
"history_search": "历史搜索",
diff --git a/src/renderer/lang/zh-tw/view/search.json b/src/renderer/lang/zh-tw/view/search.json
index ac9d7a36..e6e07452 100644
--- a/src/renderer/lang/zh-tw/view/search.json
+++ b/src/renderer/lang/zh-tw/view/search.json
@@ -10,6 +10,7 @@
"time": "時長",
"lossless": "無損",
"high_quality": "高品質",
+ "loding_list": "加載中...",
"no_item": "搜我所想~~😉",
"hot_search": "熱門搜索",
"history_search": "歷史搜索",
diff --git a/src/renderer/store/modules/search.js b/src/renderer/store/modules/search.js
index ff3a3e2b..1daa10a8 100644
--- a/src/renderer/store/modules/search.js
+++ b/src/renderer/store/modules/search.js
@@ -127,7 +127,7 @@ const actions = {
}
}))
}
- Promise.all(task).then(results => commit('setLists', { results, page }))
+ return Promise.all(task).then(results => commit('setLists', { results, page }))
} else {
return music[rootState.setting.search.searchSource].musicSearch.search(text, page, limit).catch(error => {
console.log(error)
diff --git a/src/renderer/views/Search.vue b/src/renderer/views/Search.vue
index f7ed67a4..3ffd0f50 100644
--- a/src/renderer/views/Search.vue
+++ b/src/renderer/views/Search.vue
@@ -3,60 +3,65 @@
//- transition
div(:class="$style.header")
material-tab(:class="$style.tab" :list="sources" align="left" item-key="id" item-name="name" v-model="searchSourceId")
- div(v-if="listInfo.list.length" :class="$style.list")
- div(:class="$style.thead")
- table
- thead
- tr
- th.nobreak.center(style="width: 5%;") #
- th.nobreak {{$t('view.search.name')}}
- th.nobreak(style="width: 22%;") {{$t('view.search.singer')}}
- th.nobreak(style="width: 22%;") {{$t('view.search.album')}}
- th.nobreak(style="width: 8%;") {{$t('view.search.time')}}
- th.nobreak(style="width: 13%;") {{$t('view.search.action')}}
- div.scroll(:class="$style.tbody" ref="dom_scrollContent")
- table
- tbody(@contextmenu.capture="handleContextMenu" ref="dom_tbody")
- tr(v-for='(item, index) in listInfo.list' :key='item.songmid' @contextmenu="handleListItemRigthClick($event, index)" @click="handleDoubleClick($event, index)")
- td.nobreak.center(style="width: 5%; padding-left: 3px; padding-right: 3px;" :class="$style.noSelect" @click.stop) {{index + 1}}
- td.break
- span.select {{item.name}}
- span.badge.badge-theme-success(:class="[$style.labelQuality, $style.noSelect]" v-if="item._types.ape || item._types.flac || item._types.wav") {{$t('material.song_list.lossless')}}
- span.badge.badge-theme-info(:class="[$style.labelQuality, $style.noSelect]" v-else-if="item._types['320k']") {{$t('material.song_list.high_quality')}}
- span(:class="[$style.labelSource, $style.noSelect]" v-if="searchSourceId == 'all'") {{item.source}}
- td.break(style="width: 22%;")
- span.select {{item.singer}}
- td.break(style="width: 22%;")
- span.select {{item.albumName}}
- td(style="width: 8%;")
- span(:class="[$style.time, $style.noSelect]") {{item.interval || '--/--'}}
- td(style="width: 13%; padding-left: 0; padding-right: 0;")
- material-list-buttons(:index="index" :remove-btn="false" :class="$style.listBtn"
- :play-btn="assertApiSupport(item.source)"
- :download-btn="assertApiSupport(item.source)"
- @btn-click="handleListBtnClick")
- div(:class="$style.pagination")
- material-pagination(:max-page="listInfo.allPage" :limit="listInfo.limit" :page="page" @btn-click="handleTogglePage")
- div(v-else :class="$style.noitem")
- div.scroll(:class="$style.noitemListContainer" v-if="setting.search.isShowHotSearch || setting.search.isShowHistorySearch")
- dl(:class="[$style.noitemList, $style.noitemHotSearchList]" v-if="setting.search.isShowHotSearch")
- dt(:class="$style.noitemListTitle") {{$t('view.search.hot_search')}}
- dd(:class="$style.noitemListItem" @click="handleNoitemSearch(item)" v-for="item in hotSearchList") {{item}}
- dl(:class="$style.noitemList" v-if="setting.search.isShowHistorySearch && historyList.length")
- dt(:class="$style.noitemListTitle")
- span {{$t('view.search.history_search')}}
- span(:class="$style.historyClearBtn" @click="clearHistory" :tips="$t('view.search.history_clear')")
- svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 512 512' space='preserve')
- use(xlink:href='#icon-eraser')
- dd(:class="$style.noitemListItem" v-for="(item, index) in historyList" @contextmenu="removeHistory(index)" :key="index + item" @click="handleNoitemSearch(item)" :tips="$t('view.search.history_remove')") {{item}}
- div(v-else :class="$style.noitem_list")
- p {{$t('view.search.no_item')}}
+ div(:class="$style.main")
+ div(:class="$style.list" v-show="isLoading || listInfo.list.length")
+ div(:class="$style.thead")
+ table
+ thead
+ tr
+ th.nobreak.center(style="width: 5%;") #
+ th.nobreak {{$t('view.search.name')}}
+ th.nobreak(style="width: 22%;") {{$t('view.search.singer')}}
+ th.nobreak(style="width: 22%;") {{$t('view.search.album')}}
+ th.nobreak(style="width: 8%;") {{$t('view.search.time')}}
+ th.nobreak(style="width: 13%;") {{$t('view.search.action')}}
+ div.scroll(:class="$style.tbody" ref="dom_scrollContent")
+ table
+ tbody(@contextmenu.capture="handleContextMenu" ref="dom_tbody")
+ tr(v-for='(item, index) in listInfo.list' :key='item.songmid' @contextmenu="handleListItemRigthClick($event, index)" @click="handleDoubleClick($event, index)")
+ td.nobreak.center(style="width: 5%; padding-left: 3px; padding-right: 3px;" :class="$style.noSelect" @click.stop) {{index + 1}}
+ td.break
+ span.select {{item.name}}
+ span.badge.badge-theme-success(:class="[$style.labelQuality, $style.noSelect]" v-if="item._types.ape || item._types.flac || item._types.wav") {{$t('material.song_list.lossless')}}
+ span.badge.badge-theme-info(:class="[$style.labelQuality, $style.noSelect]" v-else-if="item._types['320k']") {{$t('material.song_list.high_quality')}}
+ span(:class="[$style.labelSource, $style.noSelect]" v-if="searchSourceId == 'all'") {{item.source}}
+ td.break(style="width: 22%;")
+ span.select {{item.singer}}
+ td.break(style="width: 22%;")
+ span.select {{item.albumName}}
+ td(style="width: 8%;")
+ span(:class="[$style.time, $style.noSelect]") {{item.interval || '--/--'}}
+ td(style="width: 13%; padding-left: 0; padding-right: 0;")
+ material-list-buttons(:index="index" :remove-btn="false" :class="$style.listBtn"
+ :play-btn="assertApiSupport(item.source)"
+ :download-btn="assertApiSupport(item.source)"
+ @btn-click="handleListBtnClick")
+ div(:class="$style.pagination")
+ material-pagination(:max-page="listInfo.allPage" :limit="listInfo.limit" :page="page" @btn-click="handleTogglePage")
+ transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
+ div(v-show="isLoading" :class="$style.loading")
+ p {{$t('view.search.loding_list')}}
+ transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
+ div(v-show="!isLoading && !listInfo.list.length" :class="$style.noitem")
+ div.scroll(:class="$style.noitemListContainer" v-if="setting.search.isShowHotSearch || setting.search.isShowHistorySearch")
+ dl(:class="[$style.noitemList, $style.noitemHotSearchList]" v-if="setting.search.isShowHotSearch")
+ dt(:class="$style.noitemListTitle") {{$t('view.search.hot_search')}}
+ dd(:class="$style.noitemListItem" @click="handleNoitemSearch(item)" v-for="item in hotSearchList") {{item}}
+ dl(:class="$style.noitemList" v-if="setting.search.isShowHistorySearch && historyList.length")
+ dt(:class="$style.noitemListTitle")
+ span {{$t('view.search.history_search')}}
+ span(:class="$style.historyClearBtn" @click="clearHistory" :tips="$t('view.search.history_clear')")
+ svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 512 512' space='preserve')
+ use(xlink:href='#icon-eraser')
+ dd(:class="$style.noitemListItem" v-for="(item, index) in historyList" @contextmenu="removeHistory(index)" :key="index + item" @click="handleNoitemSearch(item)" :tips="$t('view.search.history_remove')") {{item}}
+ div(v-else :class="$style.noitem_list")
+ p {{$t('view.search.no_item')}}
+ material-menu(:menus="listItemMenu" :location="listMenu.menuLocation" item-name="name" :isShow="listMenu.isShowItemMenu" @menu-click="handleListItemMenuClick")
material-download-modal(:show="isShowDownload" :musicInfo="musicInfo" @select="handleAddDownload" @close="isShowDownload = false")
material-download-multiple-modal(:show="isShowDownloadMultiple" :list="selectedData" @select="handleAddDownloadMultiple" @close="isShowDownloadMultiple = false")
//- material-flow-btn(:show="isShowEditBtn && (searchSourceId == 'all' || assertApiSupport(searchSourceId))" :remove-btn="false" @btn-click="handleFlowBtnClick")
material-list-add-modal(:show="isShowListAdd" :musicInfo="musicInfo" @close="handleListAddModalClose")
material-list-add-multiple-modal(:show="isShowListAddMultiple" :musicList="selectedData" @close="handleListAddMultipleModalClose")
- material-menu(:menus="listItemMenu" :location="listMenu.menuLocation" item-name="name" :isShow="listMenu.isShowItemMenu" @menu-click="handleListItemMenuClick")
diff --git a/src/renderer/components/material/SongList.vue b/src/renderer/components/material/SongList.vue
index 3b83508e..67c3c46a 100644
--- a/src/renderer/components/material/SongList.vue
+++ b/src/renderer/components/material/SongList.vue
@@ -114,6 +114,11 @@ export default {
action: 'download',
disabled: !this.listMenu.itemMenuControl.download,
},
+ {
+ name: this.$t('material.song_list.list_play_later'),
+ action: 'playLater',
+ disabled: !this.listMenu.itemMenuControl.playLater,
+ },
{
name: this.$t('material.song_list.list_search'),
action: 'search',
@@ -173,6 +178,7 @@ export default {
itemMenuControl: {
play: true,
addTo: true,
+ playLater: true,
download: true,
search: true,
sourceDetail: true,
@@ -335,6 +341,7 @@ export default {
handleListItemRigthClick(event, index) {
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.list[index].source].getMusicDetailPageUrl
this.listMenu.itemMenuControl.play =
+ this.listMenu.itemMenuControl.playLater =
this.listMenu.itemMenuControl.download =
this.assertApiSupport(this.list[index].source)
let dom_selected = this.$refs.dom_tbody.querySelector('tr.selected')
diff --git a/src/renderer/lang/en-us/material/song_list.json b/src/renderer/lang/en-us/material/song_list.json
index 8782cd51..d0b3ba23 100644
--- a/src/renderer/lang/en-us/material/song_list.json
+++ b/src/renderer/lang/en-us/material/song_list.json
@@ -1,5 +1,6 @@
{
"list_play": "Play",
+ "list_play_later": "Play later",
"list_add_to": "Add to ...",
"list_download": "Download",
"list_search": "Search",
diff --git a/src/renderer/lang/en-us/view/download.json b/src/renderer/lang/en-us/view/download.json
index 57f45632..1fd22e42 100644
--- a/src/renderer/lang/en-us/view/download.json
+++ b/src/renderer/lang/en-us/view/download.json
@@ -1,5 +1,6 @@
{
"menu_play": "Play",
+ "menu_play_later": "Play later",
"menu_start": "Start task",
"menu_pause": "Pause Task",
"menu_file": "Locate File",
diff --git a/src/renderer/lang/en-us/view/list.json b/src/renderer/lang/en-us/view/list.json
index 0bb795de..ba66d08e 100644
--- a/src/renderer/lang/en-us/view/list.json
+++ b/src/renderer/lang/en-us/view/list.json
@@ -7,6 +7,7 @@
"lists_sync": "Sync",
"lists_remove": "Remove",
"list_play": "Play",
+ "list_play_later": "Play later",
"list_copy_name": "Copy name",
"list_add_to": "Add to ...",
"list_move_to": "Move to ...",
diff --git a/src/renderer/lang/en-us/view/search.json b/src/renderer/lang/en-us/view/search.json
index 6b4e7b3b..655d1d4c 100644
--- a/src/renderer/lang/en-us/view/search.json
+++ b/src/renderer/lang/en-us/view/search.json
@@ -1,5 +1,6 @@
{
"list_play": "Play",
+ "list_play_later": "Play later",
"list_add_to": "Add to ...",
"list_download": "Download",
"list_source_detail": "Song Page",
diff --git a/src/renderer/lang/en-us/view/song_list.json b/src/renderer/lang/en-us/view/song_list.json
index 8c600d5b..55512767 100644
--- a/src/renderer/lang/en-us/view/song_list.json
+++ b/src/renderer/lang/en-us/view/song_list.json
@@ -8,5 +8,6 @@
"tip_2": "If you encounter a link to a playlist that cannot be opened, welcome feedback",
"tip_3": "Kugou source does not support opening with playlist ID, but supports Kugou code opening",
"play_all": "Play",
+ "play_later": "Play later",
"add_all": "Collect"
}
diff --git a/src/renderer/lang/zh-cn/material/song_list.json b/src/renderer/lang/zh-cn/material/song_list.json
index a0eb76f1..8735c6d9 100644
--- a/src/renderer/lang/zh-cn/material/song_list.json
+++ b/src/renderer/lang/zh-cn/material/song_list.json
@@ -1,5 +1,6 @@
{
"list_play": "播放",
+ "list_play_later": "稍后播放",
"list_add_to": "添加到...",
"list_download": "下载",
"list_source_detail": "歌曲详情页",
diff --git a/src/renderer/lang/zh-cn/view/download.json b/src/renderer/lang/zh-cn/view/download.json
index 89af68b3..846f3de1 100644
--- a/src/renderer/lang/zh-cn/view/download.json
+++ b/src/renderer/lang/zh-cn/view/download.json
@@ -1,5 +1,6 @@
{
"menu_play": "播放",
+ "menu_play_later": "稍后播放",
"menu_start": "开始任务",
"menu_pause": "暂停任务",
"menu_file": "定位文件",
diff --git a/src/renderer/lang/zh-cn/view/list.json b/src/renderer/lang/zh-cn/view/list.json
index ae8507eb..bd619951 100644
--- a/src/renderer/lang/zh-cn/view/list.json
+++ b/src/renderer/lang/zh-cn/view/list.json
@@ -7,6 +7,7 @@
"lists_sync": "同步",
"lists_remove": "删除",
"list_play": "播放",
+ "list_play_later": "稍后播放",
"list_copy_name": "复制歌曲名",
"list_source_detail": "歌曲详情页",
"list_add_to": "添加到...",
diff --git a/src/renderer/lang/zh-cn/view/search.json b/src/renderer/lang/zh-cn/view/search.json
index c22bbb02..bc418cb6 100644
--- a/src/renderer/lang/zh-cn/view/search.json
+++ b/src/renderer/lang/zh-cn/view/search.json
@@ -1,5 +1,6 @@
{
"list_play": "播放",
+ "list_play_later": "稍后播放",
"list_add_to": "添加到...",
"list_download": "下载",
"list_source_detail": "歌曲详情页",
diff --git a/src/renderer/lang/zh-cn/view/song_list.json b/src/renderer/lang/zh-cn/view/song_list.json
index bbbadf6b..f0b6f1fb 100644
--- a/src/renderer/lang/zh-cn/view/song_list.json
+++ b/src/renderer/lang/zh-cn/view/song_list.json
@@ -8,5 +8,6 @@
"tip_2": "若遇到无法打开的歌单链接,欢迎反馈",
"tip_3": "酷狗源不支持用歌单ID打开,但支持酷狗码打开",
"play_all": "播放",
+ "play_later": "稍后播放",
"add_all": "收藏"
}
diff --git a/src/renderer/lang/zh-tw/material/song_list.json b/src/renderer/lang/zh-tw/material/song_list.json
index ed5a4460..c91c8ca4 100644
--- a/src/renderer/lang/zh-tw/material/song_list.json
+++ b/src/renderer/lang/zh-tw/material/song_list.json
@@ -1,5 +1,6 @@
{
"list_play": "播放",
+ "list_play_later": "稍後播放",
"list_add_to": "添加到...",
"list_download": "下載",
"list_search": "搜索",
diff --git a/src/renderer/lang/zh-tw/view/download.json b/src/renderer/lang/zh-tw/view/download.json
index 025f5b98..6264abae 100644
--- a/src/renderer/lang/zh-tw/view/download.json
+++ b/src/renderer/lang/zh-tw/view/download.json
@@ -1,5 +1,6 @@
{
"menu_play": "播放",
+ "menu_play_later": "稍後播放",
"menu_start": "開始任務",
"menu_pause": "暫停任務",
"menu_file": "定位文件",
diff --git a/src/renderer/lang/zh-tw/view/list.json b/src/renderer/lang/zh-tw/view/list.json
index fbdf37f9..6f2d1731 100644
--- a/src/renderer/lang/zh-tw/view/list.json
+++ b/src/renderer/lang/zh-tw/view/list.json
@@ -7,6 +7,7 @@
"lists_sync": "同步",
"lists_remove": "刪除",
"list_play": "播放",
+ "list_play_later": "稍後播放",
"list_copy_name": "複製歌曲名",
"list_add_to": "添加到...",
"list_move_to": "移動到...",
diff --git a/src/renderer/lang/zh-tw/view/search.json b/src/renderer/lang/zh-tw/view/search.json
index e6e07452..9a1c2168 100644
--- a/src/renderer/lang/zh-tw/view/search.json
+++ b/src/renderer/lang/zh-tw/view/search.json
@@ -1,5 +1,6 @@
{
"list_play": "播放",
+ "list_play_later": "稍後播放",
"list_add_to": "添加到...",
"list_download": "下載",
"list_source_detail": "歌曲詳情頁",
diff --git a/src/renderer/lang/zh-tw/view/song_list.json b/src/renderer/lang/zh-tw/view/song_list.json
index a52e8aa9..b4f484b5 100644
--- a/src/renderer/lang/zh-tw/view/song_list.json
+++ b/src/renderer/lang/zh-tw/view/song_list.json
@@ -8,5 +8,6 @@
"tip_2": "若遇到無法打開的歌單鏈接,歡迎反饋",
"tip_3": "酷狗源不支持用歌單ID打開,但支持酷狗碼打開",
"play_all": "播放",
+ "play_later": "稍後播放",
"add_all": "收藏"
}
diff --git a/src/renderer/store/modules/list.js b/src/renderer/store/modules/list.js
index 209eacdc..fceb4056 100644
--- a/src/renderer/store/modules/list.js
+++ b/src/renderer/store/modules/list.js
@@ -156,9 +156,9 @@ const mutations = {
if (!targetList) return
targetList.list.splice(0, targetList.list.length)
},
- updateMusicInfo(state, { id, index, data }) {
+ updateMusicInfo(state, { id, index, data, musicInfo = {} }) {
let targetList = allList[id]
- if (!targetList) return
+ if (!targetList) return Object.assign(musicInfo, data)
Object.assign(targetList.list[index], data)
},
createUserList(state, { name, id = `userlist_${Date.now()}`, list = [], source, sourceListId }) {
diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js
index 62c12804..e3822b12 100644
--- a/src/renderer/store/modules/player.js
+++ b/src/renderer/store/modules/player.js
@@ -1,4 +1,6 @@
+import path from 'path'
import music from '../../utils/music'
+import { getRandom, checkPath, assertApiSupport } from '../../utils'
// state
const state = {
@@ -10,20 +12,101 @@ const state = {
changePlay: false,
isShowPlayerDetail: false,
playedList: [],
+
+ playMusicInfo: null,
+ tempPlayList: [],
}
let urlRequest
let picRequest
let lrcRequest
+const filterList = async({ playedList, listInfo, savePath, commit }) => {
+ // if (this.list.listName === null) return
+ let list
+ let canPlayList = []
+ const filteredPlayedList = playedList.filter(({ listId, isTempPlay }) => listInfo.id === listId && !isTempPlay).map(({ musicInfo }) => musicInfo)
+ if (listInfo.id == 'download') {
+ list = []
+ for (const item of listInfo.list) {
+ const filePath = path.join(savePath, item.fileName)
+ if (!await checkPath(filePath) || !item.isComplate || /\.ape$/.test(filePath)) continue
+
+ canPlayList.push(item)
+
+ // 排除已播放音乐
+ let index = filteredPlayedList.indexOf(item)
+ if (index > -1) {
+ filteredPlayedList.splice(index, 1)
+ continue
+ }
+ list.push(item)
+ }
+ } else {
+ list = listInfo.list.filter(s => {
+ if (!assertApiSupport(s.source)) return false
+ canPlayList.push(s)
+
+ let index = filteredPlayedList.indexOf(s)
+ if (index > -1) {
+ filteredPlayedList.splice(index, 1)
+ return false
+ }
+ return true
+ })
+ }
+ if (!list.length && playedList.length) {
+ commit('clearPlayedList')
+ return canPlayList
+ }
+ return list
+}
+
// getters
const getters = {
list: state => state.listInfo.list,
- listId: state => state.listInfo.id,
changePlay: satte => satte.changePlay,
- playIndex: state => state.playIndex,
+ playInfo(state) {
+ if (state.playMusicInfo == null) return { listId: null, playIndex: -1, playListId: null, listPlayIndex: -1, isPlayList: false, musicInfo: null }
+ const playListId = state.listInfo.id
+ let listId = state.playMusicInfo.listId
+ const isTempPlay = !!state.playMusicInfo.isTempPlay
+ const isPlayList = listId === playListId
+ let playIndex = -1
+ let listPlayIndex = state.playIndex
+
+ if (listId != '__temp__') {
+ if (isPlayList) {
+ playIndex = state.listInfo.list.indexOf(state.playMusicInfo.musicInfo)
+ if (!isTempPlay) listPlayIndex = playIndex
+ } else {
+ let list = window.allList[listId]
+ if (list) playIndex = list.list.indexOf(state.playMusicInfo.musicInfo)
+ }
+ }
+ // console.log({
+ // listId,
+ // playIndex,
+ // playListId,
+ // listPlayIndex,
+ // isPlayList,
+ // isTempPlay,
+ // musicInfo: state.playMusicInfo.musicInfo,
+ // })
+ return {
+ listId,
+ playIndex,
+ playListId,
+ listPlayIndex,
+ isPlayList,
+ isTempPlay,
+ musicInfo: state.playMusicInfo.musicInfo,
+ }
+ },
isShowPlayerDetail: state => state.isShowPlayerDetail,
+ playMusicInfo: state => state.playMusicInfo,
playedList: state => state.playedList,
+ tempPlayList: state => state.tempPlayList,
}
// actions
@@ -78,6 +161,123 @@ const actions = {
return Promise.reject(err)
})
},
+
+ async playPrev({ state, rootState, commit, getters }) {
+ const currentListId = state.listInfo.id
+ const currentList = state.listInfo.list
+ if (state.playedList.length) {
+ // 从已播放列表移除播放列表已删除的歌曲
+ let index
+ for (index = state.playedList.indexOf(state.playMusicInfo) - 1; index > -1; index--) {
+ const playMusicInfo = state.playedList[index]
+ if (playMusicInfo.listId == currentListId && !currentList.includes(playMusicInfo.musicInfo)) {
+ commit('removePlayedList', index)
+ continue
+ }
+ break
+ }
+
+ if (index > -1) {
+ commit('setPlayMusicInfo', state.playedList[index])
+ return
+ }
+ }
+
+ let list = await filterList({
+ listInfo: state.listInfo,
+ playedList: state.playedList,
+ savePath: rootState.setting.download.savePath,
+ commit,
+ })
+ if (!list.length) return commit('setPlayMusicInfo', null)
+ const playInfo = getters.playInfo
+ const currentIndex = playInfo.listPlayIndex
+ let nextIndex = currentIndex
+ if (!playInfo.isTempPlay) {
+ switch (rootState.setting.player.togglePlayMethod) {
+ case 'random':
+ nextIndex = getRandom(0, list.length)
+ break
+ case 'listLoop':
+ case 'list':
+ nextIndex = currentIndex === 0 ? list.length - 1 : currentIndex - 1
+ break
+ case 'singleLoop':
+ break
+ default:
+ nextIndex = -1
+ return
+ }
+ if (nextIndex < 0) return
+ }
+
+ commit('setPlayMusicInfo', {
+ musicInfo: list[nextIndex],
+ listId: currentListId,
+ })
+ },
+ async playNext({ state, rootState, commit, getters }) {
+ if (state.tempPlayList.length) {
+ const playMusicInfo = state.tempPlayList[0]
+ commit('removeTempPlayList', 0)
+ commit('setPlayMusicInfo', playMusicInfo)
+ return
+ }
+ const currentListId = state.listInfo.id
+ const currentList = state.listInfo.list
+ if (state.playedList.length) {
+ // 从已播放列表移除播放列表已删除的歌曲
+ let index
+ for (index = state.playedList.indexOf(state.playMusicInfo) + 1; index < state.playedList.length; index++) {
+ const playMusicInfo = state.playedList[index]
+ if (playMusicInfo.listId == currentListId && !currentList.includes(playMusicInfo.musicInfo)) {
+ commit('removePlayedList', index)
+ continue
+ }
+ break
+ }
+
+ if (index < state.playedList.length) {
+ commit('setPlayMusicInfo', state.playedList[index])
+ return
+ }
+ }
+ let list = await filterList({
+ listInfo: state.listInfo,
+ playedList: state.playedList,
+ savePath: rootState.setting.download.savePath,
+ commit,
+ })
+
+ if (!list.length) return commit('setPlayMusicInfo', null)
+ const playInfo = getters.playInfo
+ const currentIndex = playInfo.listPlayIndex
+ let nextIndex = currentIndex
+ // if (!playInfo.isTempPlay) {
+ switch (rootState.setting.player.togglePlayMethod) {
+ case 'listLoop':
+ nextIndex = currentIndex === list.length - 1 ? 0 : currentIndex + 1
+ break
+ case 'random':
+ nextIndex = getRandom(0, list.length)
+ break
+ case 'list':
+ nextIndex = currentIndex === list.length - 1 ? -1 : currentIndex + 1
+ break
+ case 'singleLoop':
+ break
+ default:
+ nextIndex = -1
+ return
+ }
+ if (nextIndex < 0) return
+ // }
+
+ commit('setPlayMusicInfo', {
+ musicInfo: list[nextIndex],
+ listId: currentListId,
+ })
+ },
}
@@ -94,23 +294,28 @@ const mutations = {
datas.musicInfo.tlrc = datas.tlyric
},
setList(state, { list, index }) {
+ state.playMusicInfo = {
+ musicInfo: list.list[index],
+ listId: list.id,
+ }
state.listInfo = list
state.playIndex = index
state.changePlay = true
+ // console.log(state.playMusicInfo)
if (state.playedList.length) this.commit('player/clearPlayedList')
+ if (state.playedList.length) this.commit('player/clearTempPlayeList')
},
setPlayIndex(state, index) {
state.playIndex = index
- state.changePlay = true
- // console.log(state.changePlay)
},
- fixPlayIndex(state, index) {
- state.playIndex = index
+ setChangePlay(state) {
+ state.changePlay = true
},
resetChangePlay(state) {
state.changePlay = false
},
setPlayedList(state, item) {
+ // console.log(item)
if (state.playedList.includes(item)) return
state.playedList.push(item)
},
@@ -118,11 +323,35 @@ const mutations = {
state.playedList.splice(index, 1)
},
clearPlayedList(state) {
- state.playedList = []
+ state.playedList.splice(0, state.playedList.length)
},
visiblePlayerDetail(state, visible) {
state.isShowPlayerDetail = visible
},
+ setTempPlayList(state, list) {
+ state.tempPlayList.push(...list.map(({ musicInfo, listId }) => ({ musicInfo, listId, isTempPlay: true })))
+ if (!state.playMusicInfo) this.commit('player/playNext')
+ },
+ removeTempPlayList(state, index) {
+ state.tempPlayList.splice(index, 1)
+ },
+ clearTempPlayeList(state) {
+ state.tempPlayList.splice(0, state.tempPlayList.length)
+ },
+
+ setPlayMusicInfo(state, playMusicInfo) {
+ let playIndex = state.playIndex
+ if (playMusicInfo == null) {
+ playIndex = -1
+ } else {
+ let listId = playMusicInfo.listId
+ if (listId != '__temp__' && listId === state.listInfo.id) playIndex = state.listInfo.list.indexOf(state.playMusicInfo.musicInfo)
+ }
+
+ state.playMusicInfo = playMusicInfo
+ state.playIndex = playIndex
+ state.changePlay = true
+ },
}
export default {
diff --git a/src/renderer/views/Download.vue b/src/renderer/views/Download.vue
index 77a327df..8e265de7 100644
--- a/src/renderer/views/Download.vue
+++ b/src/renderer/views/Download.vue
@@ -45,7 +45,7 @@ export default {
return {
clickTime: window.performance.now(),
clickIndex: -1,
- selectdData: [],
+ selectedData: [],
isShowDownloadMultiple: false,
tabId: 'all',
keyEvent: {
@@ -59,6 +59,7 @@ export default {
play: true,
start: true,
pause: true,
+ playLater: true,
file: true,
search: true,
remove: true,
@@ -74,13 +75,13 @@ export default {
computed: {
...mapGetters(['setting']),
...mapGetters('download', ['list', 'downloadStatus']),
- ...mapGetters('player', ['listId', 'playIndex']),
+ ...mapGetters('player', ['playInfo']),
isPlayList() {
- return this.listId == 'download'
+ return this.playInfo.listId == 'download'
},
playListIndex() {
- if (this.listId != 'download' || !this.list.length) return
- let info = this.list[this.playIndex]
+ if (this.playInfo.listId != 'download' || !this.list.length) return
+ let info = this.list[this.playInfo.playIndex]
if (!info) return -1
let key = info.key
return this.showList.findIndex(i => i.key == key)
@@ -140,6 +141,11 @@ export default {
action: 'pause',
hide: !this.listMenu.itemMenuControl.pause,
},
+ {
+ name: this.$t('view.download.menu_play_later'),
+ action: 'playLater',
+ hide: !this.listMenu.itemMenuControl.playLater,
+ },
{
name: this.$t('view.download.menu_file'),
action: 'file',
@@ -229,7 +235,7 @@ export default {
},
handleSelectData(event, clickIndex) {
if (this.keyEvent.isShiftDown) {
- if (this.selectdData.length) {
+ if (this.selectedData.length) {
let lastSelectIndex = this.lastSelectIndex
this.removeAllSelect()
if (lastSelectIndex != clickIndex) {
@@ -240,8 +246,8 @@ export default {
clickIndex = temp
isNeedReverse = true
}
- this.selectdData = this.showList.slice(lastSelectIndex, clickIndex + 1)
- if (isNeedReverse) this.selectdData.reverse()
+ this.selectedData = this.showList.slice(lastSelectIndex, clickIndex + 1)
+ if (isNeedReverse) this.selectedData.reverse()
let nodes = this.$refs.dom_tbody.childNodes
do {
nodes[lastSelectIndex].classList.add('active')
@@ -250,24 +256,24 @@ export default {
}
} else {
event.currentTarget.classList.add('active')
- this.selectdData.push(this.showList[clickIndex])
+ this.selectedData.push(this.showList[clickIndex])
this.lastSelectIndex = clickIndex
}
} else if (this.keyEvent.isModDown) {
this.lastSelectIndex = clickIndex
let item = this.showList[clickIndex]
- let index = this.selectdData.indexOf(item)
+ let index = this.selectedData.indexOf(item)
if (index < 0) {
- this.selectdData.push(item)
+ this.selectedData.push(item)
event.currentTarget.classList.add('active')
} else {
- this.selectdData.splice(index, 1)
+ this.selectedData.splice(index, 1)
event.currentTarget.classList.remove('active')
}
- } else if (this.selectdData.length) this.removeAllSelect()
+ } else if (this.selectedData.length) this.removeAllSelect()
},
removeAllSelect() {
- this.selectdData = []
+ this.selectedData = []
let dom_tbody = this.$refs.dom_tbody
if (!dom_tbody) return
let nodes = dom_tbody.querySelectorAll('.active')
@@ -306,6 +312,14 @@ export default {
case 'remove':
this.removeTask(item)
break
+ case 'playLater':
+ if (this.selectedData.length) {
+ this.setTempPlayList(this.selectedData.map(s => ({ listId: 'download', musicInfo: s })))
+ this.removeAllSelect()
+ } else {
+ this.setTempPlayList([{ listId: 'download', musicInfo: item }])
+ }
+ break
case 'file':
this.handleOpenFolder(item.filePath)
break
@@ -316,7 +330,7 @@ export default {
},
handleSelectAllData() {
this.removeAllSelect()
- this.selectdData = [...this.showList]
+ this.selectedData = [...this.showList]
let nodes = this.$refs.dom_tbody.childNodes
for (const node of nodes) {
@@ -324,19 +338,19 @@ export default {
}
},
// async handleFlowBtnClick(action) {
- // let selectdData = [...this.selectdData]
+ // let selectedData = [...this.selectedData]
// this.removeAllSelect()
// await this.$nextTick()
// switch (action) {
// case 'start':
- // this.startTasks(selectdData)
+ // this.startTasks(selectedData)
// break
// case 'pause':
- // this.pauseTasks(selectdData)
+ // this.pauseTasks(selectedData)
// break
// case 'remove':
- // this.removeTasks(selectdData)
+ // this.removeTasks(selectedData)
// break
// }
// },
@@ -353,7 +367,7 @@ export default {
})
},
handleTabChange() {
- this.selectdData = []
+ this.selectedData = []
},
handleListItemRigthClick(event, index) {
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.showList[index].musicInfo.source].getMusicDetailPageUrl
@@ -368,16 +382,19 @@ export default {
let item = this.showList[index]
if (item.isComplate) {
this.listMenu.itemMenuControl.play =
+ this.listMenu.itemMenuControl.playLater =
this.listMenu.itemMenuControl.file = true
this.listMenu.itemMenuControl.start =
this.listMenu.itemMenuControl.pause = false
- } else if (item.status === this.downloadStatus.ERROR || item.status === this.downloadStatus.PAUSE) {
- this.listMenu.itemMenuControl.play =
- this.listMenu.itemMenuControl.pause =
- this.listMenu.itemMenuControl.file = false
- this.listMenu.itemMenuControl.start = true
+ // } else if (item.status === this.downloadStatus.ERROR || item.status === this.downloadStatus.PAUSE) {
+ // this.listMenu.itemMenuControl.play =
+ // this.listMenu.itemMenuControl.playLater =
+ // this.listMenu.itemMenuControl.pause =
+ // this.listMenu.itemMenuControl.file = false
+ // this.listMenu.itemMenuControl.start = true
} else {
this.listMenu.itemMenuControl.play =
+ this.listMenu.itemMenuControl.playLater =
this.listMenu.itemMenuControl.start =
this.listMenu.itemMenuControl.file = false
this.listMenu.itemMenuControl.pause = true
@@ -407,10 +424,10 @@ export default {
if (item) this.handlePlay(item)
break
case 'start':
- if (this.selectdData.length) {
- let selectdData = [...this.selectdData]
+ if (this.selectedData.length) {
+ let selectedData = [...this.selectedData]
this.removeAllSelect()
- this.startTasks(selectdData)
+ this.startTasks(selectedData)
} else {
item = this.showList[index]
if (item) this.startTask(item)
@@ -420,10 +437,10 @@ export default {
}
break
case 'pause':
- if (this.selectdData.length) {
- let selectdData = [...this.selectdData]
+ if (this.selectedData.length) {
+ let selectedData = [...this.selectedData]
this.removeAllSelect()
- this.pauseTasks(selectdData)
+ this.pauseTasks(selectedData)
} else {
item = this.showList[index]
if (item) this.pauseTask(item)
@@ -443,10 +460,10 @@ export default {
if (item) this.handleSearch(item.musicInfo)
break
case 'remove':
- if (this.selectdData.length) {
- let selectdData = [...this.selectdData]
+ if (this.selectedData.length) {
+ let selectedData = [...this.selectedData]
this.removeAllSelect()
- this.removeTasks(selectdData)
+ this.removeTasks(selectedData)
} else {
item = this.showList[index]
if (item) this.removeTask(item)
diff --git a/src/renderer/views/Leaderboard.vue b/src/renderer/views/Leaderboard.vue
index 7d90705f..317b1b3c 100644
--- a/src/renderer/views/Leaderboard.vue
+++ b/src/renderer/views/Leaderboard.vue
@@ -77,7 +77,7 @@ export default {
...mapActions('leaderboard', ['getBoardsList', 'getList']),
...mapActions('download', ['createDownload', 'createDownloadMultiple']),
...mapMutations('list', ['listAdd', 'listAddMultiple']),
- ...mapMutations('player', ['setList']),
+ ...mapMutations('player', ['setList', 'setTempPlayList']),
handleListBtnClick(info) {
switch (info.action) {
case 'download':
@@ -121,6 +121,14 @@ export default {
}
this.testPlay(info.index)
break
+ case 'playLater':
+ if (this.selectedData.length) {
+ this.setTempPlayList(this.selectedData.map(s => ({ listId: '__temp__', musicInfo: s })))
+ this.resetSelect()
+ } else {
+ this.setTempPlayList([{ listId: '__temp__', musicInfo: this.list[info.index] }])
+ }
+ break
case 'search':
this.handleSearch(info.index)
break
diff --git a/src/renderer/views/List.vue b/src/renderer/views/List.vue
index b875cbaf..8703fd19 100644
--- a/src/renderer/views/List.vue
+++ b/src/renderer/views/List.vue
@@ -37,7 +37,7 @@
table
tbody(@contextmenu.capture="handleContextMenu" ref="dom_tbody")
tr(v-for='(item, index) in list' :key='item.songmid' :id="'mid_' + item.songmid" @contextmenu="handleListItemRigthClick($event, index)"
- @click="handleDoubleClick($event, index)" :class="[isPlayList && playIndex === index ? $style.active : '', assertApiSupport(item.source) ? null : $style.disabled]")
+ @click="handleDoubleClick($event, index)" :class="[isPlayList && playInfo.playIndex === index ? $style.active : '', assertApiSupport(item.source) ? null : $style.disabled]")
td.nobreak.center(style="width: 5%; padding-left: 3px; padding-right: 3px;" :class="$style.noSelect" @click.stop) {{index + 1}}
td.break
span.select {{item.name}}
@@ -122,6 +122,7 @@ export default {
isShowItemMenu: false,
itemMenuControl: {
play: true,
+ playLater: true,
copyName: true,
addTo: true,
moveTo: true,
@@ -145,12 +146,12 @@ export default {
computed: {
...mapGetters(['userInfo', 'setting']),
...mapGetters('list', ['isInitedList', 'defaultList', 'loveList', 'userList']),
- ...mapGetters('player', {
- playerListId: 'listId',
- playIndex: 'playIndex',
- }),
+ ...mapGetters('player', ['playInfo']),
+ playerListId() {
+ return this.playInfo.listId
+ },
isPlayList() {
- return this.playerListId == this.listId
+ return this.playInfo.listId == this.listId
},
list() {
return this.listData.list
@@ -223,6 +224,11 @@ export default {
action: 'download',
disabled: !this.listMenu.itemMenuControl.download,
},
+ {
+ name: this.$t('view.list.list_play_later'),
+ action: 'playLater',
+ disabled: !this.listMenu.itemMenuControl.playLater,
+ },
{
name: this.$t('view.list.list_add_to'),
action: 'addTo',
@@ -355,6 +361,7 @@ export default {
...mapActions('download', ['createDownload', 'createDownloadMultiple']),
...mapMutations('player', {
setPlayList: 'setList',
+ setTempPlayList: 'setTempPlayList',
}),
listenEvent() {
window.eventHub.$on('key_shift_down', this.handle_key_shift_down)
@@ -726,6 +733,7 @@ export default {
handleListItemRigthClick(event, index) {
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.list[index].source].getMusicDetailPageUrl
this.listMenu.itemMenuControl.play =
+ this.listMenu.itemMenuControl.playLater =
this.listMenu.itemMenuControl.download =
this.assertApiSupport(this.list[index].source)
let dom_selected = this.$refs.dom_tbody.querySelector('tr.selected')
@@ -789,6 +797,14 @@ export default {
case 'play':
this.testPlay(index)
break
+ case 'playLater':
+ if (this.selectdListDetailData.length) {
+ this.setTempPlayList(this.selectdListDetailData.map(s => ({ listId: this.listId, musicInfo: s })))
+ this.removeAllSelectListDetail()
+ } else {
+ this.setTempPlayList([{ listId: this.listId, musicInfo: this.list[index] }])
+ }
+ break
case 'copyName':
minfo = this.list[index]
clipboardWriteText(this.setting.download.fileName.replace('歌名', minfo.name).replace('歌手', minfo.singer))
diff --git a/src/renderer/views/Search.vue b/src/renderer/views/Search.vue
index 3ffd0f50..43c10d42 100644
--- a/src/renderer/views/Search.vue
+++ b/src/renderer/views/Search.vue
@@ -93,6 +93,7 @@ export default {
isShowItemMenu: false,
itemMenuControl: {
play: true,
+ playLater: true,
addTo: true,
download: true,
sourceDetail: true,
@@ -181,6 +182,11 @@ export default {
action: 'download',
disabled: !this.listMenu.itemMenuControl.download,
},
+ {
+ name: this.$t('view.search.list_play_later'),
+ action: 'playLater',
+ disabled: !this.listMenu.itemMenuControl.playLater,
+ },
{
name: this.$t('view.search.list_add_to'),
action: 'addTo',
@@ -206,7 +212,7 @@ export default {
...mapActions('download', ['createDownload', 'createDownloadMultiple']),
...mapMutations('search', ['clearList', 'setPage', 'removeHistory', 'clearHistory']),
...mapMutations('list', ['listAdd', 'listAddMultiple']),
- ...mapMutations('player', ['setList']),
+ ...mapMutations('player', ['setList', 'setTempPlayList']),
...mapActions('hotSearch', {
getHotSearch: 'getList',
}),
@@ -283,6 +289,14 @@ export default {
case 'play':
this.testPlay(info.index)
break
+ case 'playLater':
+ if (this.selectedData.length) {
+ this.setTempPlayList(this.selectedData.map(s => ({ listId: '__temp__', musicInfo: s })))
+ this.resetSelect()
+ } else {
+ this.setTempPlayList([{ listId: '__temp__', musicInfo: this.list[info.index] }])
+ }
+ break
case 'listAdd':
this.musicInfo = this.listInfo.list[info.index]
this.$nextTick(() => {
@@ -432,6 +446,7 @@ export default {
handleListItemRigthClick(event, index) {
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.listInfo.list[index].source].getMusicDetailPageUrl
this.listMenu.itemMenuControl.play =
+ this.listMenu.itemMenuControl.playLater =
this.listMenu.itemMenuControl.download =
this.assertApiSupport(this.listInfo.list[index].source)
let dom_selected = this.$refs.dom_tbody.querySelector('tr.selected')
diff --git a/src/renderer/views/SongList.vue b/src/renderer/views/SongList.vue
index d99241dc..e0dbac2f 100644
--- a/src/renderer/views/SongList.vue
+++ b/src/renderer/views/SongList.vue
@@ -183,6 +183,7 @@ export default {
...mapMutations('list', ['listAdd', 'listAddMultiple', 'createUserList']),
...mapMutations('player', {
setPlayList: 'setList',
+ setTempPlayList: 'setTempPlayList',
}),
listenEvent() {
window.eventHub.$on('key_backspace_down', this.handle_key_backspace_down)
@@ -243,6 +244,14 @@ export default {
}
this.testPlay(info.index)
break
+ case 'playLater':
+ if (this.selectedData.length) {
+ this.setTempPlayList(this.selectedData.map(s => ({ listId: '__temp__', musicInfo: s })))
+ this.resetSelect()
+ } else {
+ this.setTempPlayList([{ listId: '__temp__', musicInfo: this.listDetail.list[info.index] }])
+ }
+ break
case 'search':
this.handleSearch(info.index)
break
From ef36517a2653dde77b87e70c9cdc1c352b1146ab Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Thu, 21 Jan 2021 15:16:46 +0800
Subject: [PATCH 019/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=81=A2=E5=A4=8D?=
=?UTF-8?q?=E6=92=AD=E6=94=BE=E4=BC=9A=E5=AF=BC=E8=87=B4=E9=87=8D=E5=A4=8D?=
=?UTF-8?q?=E6=92=AD=E6=94=BE=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/components/core/Player.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/renderer/components/core/Player.vue b/src/renderer/components/core/Player.vue
index df33643e..64459c61 100644
--- a/src/renderer/components/core/Player.vue
+++ b/src/renderer/components/core/Player.vue
@@ -145,7 +145,7 @@ export default {
},
computed: {
...mapGetters(['setting']),
- ...mapGetters('player', ['list', 'changePlay', 'playMusicInfo', 'fixPlayIndex', 'isShowPlayerDetail', 'playInfo', 'playedList']),
+ ...mapGetters('player', ['list', 'changePlay', 'playMusicInfo', 'isShowPlayerDetail', 'playInfo', 'playedList']),
// pic() {
// return this.musicInfo.img ? this.musicInfo.img : ''
// },
@@ -870,7 +870,7 @@ export default {
this.sendProgressEvent(this.progress, 'paused')
})
- if (this.setting.player.togglePlayMethod == 'random') this.setPlayedList({ listId: restorePlayInfo.listId, musicInfo: musicInfo })
+ if (this.setting.player.togglePlayMethod == 'random') this.setPlayedList(this.playMusicInfo)
},
},
}
From fad13f517bef501721c43e84089f79a99faf9c24 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Thu, 21 Jan 2021 16:26:46 +0800
Subject: [PATCH 020/132] =?UTF-8?q?=E6=9B=B4=E6=96=B0electron=E5=88=B09.4.?=
=?UTF-8?q?1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 1887 ++++++++++++++++--------------------------
package.json | 18 +-
publish/changeLog.md | 4 +
3 files changed, 722 insertions(+), 1187 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index f385ca2f..c7e48e0e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "lx-music-desktop",
- "version": "1.6.0",
+ "version": "1.6.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -2758,26 +2758,27 @@
}
},
"@electron/get": {
- "version": "1.12.2",
- "resolved": "https://registry.npm.taobao.org/@electron/get/download/@electron/get-1.12.2.tgz",
- "integrity": "sha1-ZEIGavuZvgjO+5ooHktGkrM3ZPM=",
+ "version": "1.12.3",
+ "resolved": "https://registry.npm.taobao.org/@electron/get/download/@electron/get-1.12.3.tgz",
+ "integrity": "sha1-+icjOFxLVlo0xMgvRgh6oqX79tA=",
"dev": true,
"requires": {
"debug": "^4.1.1",
"env-paths": "^2.2.0",
+ "filenamify": "^4.1.0",
"fs-extra": "^8.1.0",
"global-agent": "^2.0.2",
"global-tunnel-ng": "^2.7.1",
"got": "^9.6.0",
"progress": "^2.0.3",
- "sanitize-filename": "^1.6.2",
+ "semver": "^6.2.0",
"sumchecker": "^3.0.1"
}
},
"@eslint/eslintrc": {
- "version": "0.2.2",
- "resolved": "https://registry.npm.taobao.org/@eslint/eslintrc/download/@eslint/eslintrc-0.2.2.tgz?cache=0&sync_timestamp=1607145629875&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40eslint%2Feslintrc%2Fdownload%2F%40eslint%2Feslintrc-0.2.2.tgz",
- "integrity": "sha1-0B/HkeL8M+iKKdbz3H6T0M14S3Y=",
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/@eslint/eslintrc/download/@eslint/eslintrc-0.3.0.tgz?cache=0&sync_timestamp=1610747269837&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40eslint%2Feslintrc%2Fdownload%2F%40eslint%2Feslintrc-0.3.0.tgz",
+ "integrity": "sha1-1zbWlj1wA7ZRTmMkvsnGAqw0Axg=",
"dev": true,
"requires": {
"ajv": "^6.12.4",
@@ -2787,7 +2788,7 @@
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
"js-yaml": "^3.13.1",
- "lodash": "^4.17.19",
+ "lodash": "^4.17.20",
"minimatch": "^3.0.4",
"strip-json-comments": "^3.1.1"
},
@@ -2819,6 +2820,12 @@
"integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
"dev": true
},
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336125847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz",
+ "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=",
+ "dev": true
+ },
"strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594567555399&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz",
@@ -3414,117 +3421,14 @@
}
},
"anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz",
+ "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=",
"dev": true,
+ "optional": true,
"requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- },
- "dependencies": {
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
}
},
"app-builder-bin": {
@@ -3786,8 +3690,8 @@
},
"async-each": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
- "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+ "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz",
+ "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=",
"dev": true
},
"async-exit-hook": {
@@ -4672,9 +4576,9 @@
}
},
"base64-js": {
- "version": "1.3.1",
- "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz",
- "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=",
+ "version": "1.5.1",
+ "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz?cache=0&sync_timestamp=1605123440207&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbase64-js%2Fdownload%2Fbase64-js-1.5.1.tgz",
+ "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=",
"dev": true
},
"batch": {
@@ -4698,15 +4602,16 @@
"dev": true
},
"binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.2.0.tgz?cache=0&sync_timestamp=1610299308660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.2.0.tgz",
+ "integrity": "sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=",
+ "dev": true,
+ "optional": true
},
"bindings": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz",
+ "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=",
"dev": true,
"optional": true,
"requires": {
@@ -4953,21 +4858,13 @@
}
},
"browserify-rsa": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
- "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha1-sv0Gtbda4pf3zi3GUfkY9b4VjI0=",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
+ "bn.js": "^5.0.0",
"randombytes": "^2.0.1"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.11.9",
- "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz",
- "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=",
- "dev": true
- }
}
},
"browserify-sign": {
@@ -5271,9 +5168,9 @@
}
},
"call-bind": {
- "version": "1.0.1",
- "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.1.tgz?cache=0&sync_timestamp=1610168991908&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.1.tgz",
- "integrity": "sha1-KaypFR+N3P1bm3homPAF9CXohWc=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz",
+ "integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=",
"dev": true,
"requires": {
"function-bind": "^1.1.1",
@@ -5441,74 +5338,20 @@
}
},
"chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.5.1.tgz?cache=0&sync_timestamp=1610719430924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.5.1.tgz",
+ "integrity": "sha1-7pznu+vSt59J8wR5nVRo4x4U5oo=",
"dev": true,
+ "optional": true,
"requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- },
- "dependencies": {
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.1",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.5.0"
}
},
"chownr": {
@@ -6050,6 +5893,15 @@
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
"dev": true
},
+ "copy-anything": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/copy-anything/download/copy-anything-2.0.1.tgz",
+ "integrity": "sha1-KvvObaaEvfy+yTdS+nYoGctIDZo=",
+ "dev": true,
+ "requires": {
+ "is-what": "^3.7.1"
+ }
+ },
"copy-concurrently": {
"version": "1.0.5",
"resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz",
@@ -6082,9 +5934,9 @@
"dev": true
},
"copy-webpack-plugin": {
- "version": "6.4.0",
- "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-6.4.0.tgz?cache=0&sync_timestamp=1607603370481&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-webpack-plugin%2Fdownload%2Fcopy-webpack-plugin-6.4.0.tgz",
- "integrity": "sha1-f9OXr3jg0xDb9lddGg8v4Q79TVk=",
+ "version": "6.4.1",
+ "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-6.4.1.tgz",
+ "integrity": "sha1-E4zZtDbbygptBxcg1UFISJkuxH4=",
"dev": true,
"requires": {
"cacache": "^15.0.5",
@@ -6119,9 +5971,9 @@
"dev": true
},
"fast-glob": {
- "version": "3.2.4",
- "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-3.2.4.tgz?cache=0&sync_timestamp=1592290276588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-3.2.4.tgz",
- "integrity": "sha1-0grvv5lXk4Pn88xmUpFYybmFVNM=",
+ "version": "3.2.5",
+ "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-3.2.5.tgz?cache=0&sync_timestamp=1610876605854&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-3.2.5.tgz",
+ "integrity": "sha1-eTmvKmVt55pPGQGQPuityqfLlmE=",
"dev": true,
"requires": {
"@nodelib/fs.stat": "^2.0.2",
@@ -6132,36 +5984,6 @@
"picomatch": "^2.2.1"
}
},
- "find-cache-dir": {
- "version": "3.3.1",
- "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz",
- "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz",
- "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.1",
- "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz",
- "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
@@ -6173,15 +5995,6 @@
"json5": "^2.1.2"
}
},
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz",
- "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
"p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-3.1.0.tgz?cache=0&sync_timestamp=1606290276843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-3.1.0.tgz",
@@ -6191,41 +6004,6 @@
"yocto-queue": "^0.1.0"
}
},
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz?cache=0&sync_timestamp=1597081605529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-4.1.0.tgz",
- "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- },
- "dependencies": {
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1594559733720&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz",
- "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- }
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz",
- "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz?cache=0&sync_timestamp=1602859045787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-4.2.0.tgz",
- "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
"schema-utils": {
"version": "3.0.0",
"resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-3.0.0.tgz",
@@ -6236,22 +6014,13 @@
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
}
- },
- "serialize-javascript": {
- "version": "5.0.1",
- "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-5.0.1.tgz?cache=0&sync_timestamp=1599741180858&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-5.0.1.tgz",
- "integrity": "sha1-eIbshIBJpGJGepfT2Rjrsqr5NPQ=",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
}
}
},
"core-js": {
- "version": "3.8.2",
- "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.8.2.tgz",
- "integrity": "sha1-Ch/WcJJG2pyo7/W7DL0V+6mscEQ=",
+ "version": "3.8.3",
+ "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.8.3.tgz?cache=0&sync_timestamp=1611040749668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.8.3.tgz",
+ "integrity": "sha1-whkG4fFPNon5OrzG4miDVQ3ZLdA=",
"dev": true
},
"core-js-compat": {
@@ -7258,9 +7027,9 @@
}
},
"electron": {
- "version": "9.3.3",
- "resolved": "https://registry.npm.taobao.org/electron/download/electron-9.3.3.tgz?cache=0&sync_timestamp=1610496986855&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron%2Fdownload%2Felectron-9.3.3.tgz",
- "integrity": "sha1-maZhnV32j5dpel0dgu86imP83zY=",
+ "version": "9.4.1",
+ "resolved": "https://registry.npm.taobao.org/electron/download/electron-9.4.1.tgz",
+ "integrity": "sha1-YqKq5M2T8bVteUpHVBUFpxZUF3o=",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@@ -7269,9 +7038,9 @@
},
"dependencies": {
"@types/node": {
- "version": "12.19.13",
- "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.19.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.19.13.tgz",
- "integrity": "sha1-iI4rNBWfuRSWWJSE7BaWGCErUbc=",
+ "version": "12.19.15",
+ "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.19.15.tgz",
+ "integrity": "sha1-DefpePtD22LaNp2xjqCIpjZzwYI=",
"dev": true
}
}
@@ -7690,13 +7459,13 @@
"dev": true
},
"eslint": {
- "version": "7.17.0",
- "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-7.17.0.tgz?cache=0&sync_timestamp=1609552954781&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-7.17.0.tgz",
- "integrity": "sha1-TM2lvxJXKtO/dg5vGViG9QVprbA=",
+ "version": "7.18.0",
+ "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-7.18.0.tgz?cache=0&sync_timestamp=1610751984223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-7.18.0.tgz",
+ "integrity": "sha1-f9zS83FaQf5ilaFiNL1prtLHXmc=",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@eslint/eslintrc": "^0.2.2",
+ "@eslint/eslintrc": "^0.3.0",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -7720,7 +7489,7 @@
"js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
- "lodash": "^4.17.19",
+ "lodash": "^4.17.20",
"minimatch": "^3.0.4",
"natural-compare": "^1.4.0",
"optionator": "^0.9.1",
@@ -7746,15 +7515,6 @@
"integrity": "sha1-If3I+82ceVzAMh8FY3AglXUVEag=",
"dev": true
},
- "glob-parent": {
- "version": "5.1.1",
- "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz",
- "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
"globals": {
"version": "12.4.0",
"resolved": "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1596709342600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz",
@@ -7770,6 +7530,12 @@
"integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
"dev": true
},
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336125847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz",
+ "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=",
+ "dev": true
+ },
"semver": {
"version": "7.3.4",
"resolved": "https://registry.npm.taobao.org/semver/download/semver-7.3.4.tgz?cache=0&sync_timestamp=1606852064928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.4.tgz",
@@ -8854,8 +8620,8 @@
},
"file-uri-to-path": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=",
"dev": true,
"optional": true
},
@@ -8868,6 +8634,23 @@
"minimatch": "^3.0.4"
}
},
+ "filename-reserved-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/filename-reserved-regex/download/filename-reserved-regex-2.0.0.tgz",
+ "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
+ "dev": true
+ },
+ "filenamify": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npm.taobao.org/filenamify/download/filenamify-4.2.0.tgz?cache=0&sync_timestamp=1600940508592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffilenamify%2Fdownload%2Ffilenamify-4.2.0.tgz",
+ "integrity": "sha1-yZcW1naGlYWztdMos/BlkNAy6J8=",
+ "dev": true,
+ "requires": {
+ "filename-reserved-regex": "^2.0.0",
+ "strip-outer": "^1.0.1",
+ "trim-repeated": "^1.0.0"
+ }
+ },
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -8910,37 +8693,58 @@
}
},
"find-cache-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz",
+ "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=",
"dev": true,
"requires": {
"commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
},
"dependencies": {
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz",
+ "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=",
"dev": true,
"requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
}
},
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz",
+ "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz?cache=0&sync_timestamp=1597081605529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-4.1.0.tgz",
+ "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz",
+ "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=",
"dev": true
},
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz?cache=0&sync_timestamp=1602859045787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-4.2.0.tgz",
+ "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
}
}
},
@@ -9070,9 +8874,9 @@
}
},
"flatted": {
- "version": "3.1.0",
- "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-3.1.0.tgz",
- "integrity": "sha1-pdBrSosB46Y3cdqly3oZA+LlcGc=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-3.1.1.tgz?cache=0&sync_timestamp=1611061309017&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-3.1.1.tgz",
+ "integrity": "sha1-xLSJ6ACW2d8d/JfHmHGup8YXxGk=",
"dev": true
},
"flush-write-stream": {
@@ -9247,555 +9051,11 @@
"dev": true
},
"fsevents": {
- "version": "1.2.12",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
- "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.3.1.tgz",
+ "integrity": "sha1-sgmrFMYQEmNsiGNQft9/tozFTp8=",
"dev": true,
- "optional": true,
- "requires": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1",
- "node-pre-gyp": "*"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "aproba": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chownr": {
- "version": "1.1.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "debug": {
- "version": "3.2.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "fs-minipass": {
- "version": "1.2.7",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "gauge": {
- "version": "2.7.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "glob": {
- "version": "7.1.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "iconv-lite": {
- "version": "0.4.24",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore-walk": {
- "version": "3.0.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ini": {
- "version": "1.3.5",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minipass": {
- "version": "2.9.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mkdirp": {
- "version": "0.5.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "ms": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "needle": {
- "version": "2.3.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-pre-gyp": {
- "version": "0.14.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4.4.2"
- }
- },
- "nopt": {
- "version": "4.0.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "npm-bundled": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-normalize-package-bin": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "npm-packlist": {
- "version": "1.4.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "osenv": {
- "version": "0.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "rc": {
- "version": "1.2.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "sax": {
- "version": "1.2.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "semver": {
- "version": "5.7.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "tar": {
- "version": "4.4.13",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.8.6",
- "minizlib": "^1.2.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.3"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "wide-align": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "yallist": {
- "version": "3.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
+ "optional": true
},
"function-bind": {
"version": "1.1.1",
@@ -9870,24 +9130,12 @@
}
},
"glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "version": "5.1.1",
+ "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz",
+ "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=",
"dev": true,
"requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
+ "is-glob": "^4.0.1"
}
},
"global-agent": {
@@ -10536,9 +9784,9 @@
}
},
"ieee754": {
- "version": "1.1.13",
- "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz",
- "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=",
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.2.1.tgz?cache=0&sync_timestamp=1603838208740&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fieee754%2Fdownload%2Fieee754-1.2.1.tgz",
+ "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=",
"dev": true
},
"iferr": {
@@ -10712,12 +9960,13 @@
"dev": true
},
"is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz",
+ "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=",
"dev": true,
+ "optional": true,
"requires": {
- "binary-extensions": "^1.0.0"
+ "binary-extensions": "^2.0.0"
}
},
"is-buffer": {
@@ -10974,6 +10223,12 @@
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
+ "is-what": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npm.taobao.org/is-what/download/is-what-3.12.0.tgz",
+ "integrity": "sha1-9EBc5L1t1CDTztUaAm+5DgNwXlU=",
+ "dev": true
+ },
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -11283,11 +10538,12 @@
"integrity": "sha1-iCY2pyRcLP5uCk47psXWihN+XGU="
},
"less": {
- "version": "3.12.2",
- "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz",
- "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==",
+ "version": "3.13.1",
+ "resolved": "https://registry.npm.taobao.org/less/download/less-3.13.1.tgz?cache=0&sync_timestamp=1610244863145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless%2Fdownload%2Fless-3.13.1.tgz",
+ "integrity": "sha1-DryR0qDpwMZzW4PUlrCrBYMHeQk=",
"dev": true,
"requires": {
+ "copy-anything": "^2.0.1",
"errno": "^0.1.1",
"graceful-fs": "^4.1.2",
"image-size": "~0.5.0",
@@ -11307,8 +10563,8 @@
},
"make-dir": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz",
+ "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
"dev": true,
"optional": true,
"requires": {
@@ -11316,31 +10572,24 @@
"semver": "^5.6.0"
}
},
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true,
- "optional": true
- },
"pify": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
+ "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
"dev": true,
"optional": true
},
"semver": {
"version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1606852064928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+ "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
"dev": true,
"optional": true
},
"source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
"dev": true,
"optional": true
}
@@ -11841,8 +11090,8 @@
},
"minimalistic-assert": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "resolved": "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=",
"dev": true
},
"minimalistic-crypto-utils": {
@@ -12023,9 +11272,9 @@
"dev": true
},
"nan": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
- "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+ "version": "2.14.2",
+ "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591684976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz",
+ "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=",
"dev": true,
"optional": true
},
@@ -12061,9 +11310,9 @@
}
},
"native-request": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.7.tgz",
- "integrity": "sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npm.taobao.org/native-request/download/native-request-1.0.8.tgz",
+ "integrity": "sha1-j2a/YG4PfqJ8DlmV6y9dA+M65vs=",
"dev": true,
"optional": true
},
@@ -12224,8 +11473,8 @@
},
"normalize-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz",
+ "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=",
"dev": true
},
"normalize-url": {
@@ -14200,109 +13449,13 @@
}
},
"readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.5.0.tgz?cache=0&sync_timestamp=1602584331621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-3.5.0.tgz",
+ "integrity": "sha1-m6dMAZsV02UnjS6Ru4xI17TULJ4=",
"dev": true,
+ "optional": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- },
- "dependencies": {
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
+ "picomatch": "^2.2.1"
}
},
"regenerate": {
@@ -14346,13 +13499,13 @@
}
},
"regexp.prototype.flags": {
- "version": "1.3.0",
- "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz",
- "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=",
+ "version": "1.3.1",
+ "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz?cache=0&sync_timestamp=1610725785919&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.1.tgz",
+ "integrity": "sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
}
},
"regexpp": {
@@ -14841,9 +13994,9 @@
}
},
"serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-5.0.1.tgz?cache=0&sync_timestamp=1599741180858&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-5.0.1.tgz",
+ "integrity": "sha1-eIbshIBJpGJGepfT2Rjrsqr5NPQ=",
"dev": true,
"requires": {
"randombytes": "^2.1.0"
@@ -15717,6 +14870,15 @@
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true
},
+ "strip-outer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/strip-outer/download/strip-outer-1.0.1.tgz",
+ "integrity": "sha1-sv0qv2YEudHmATBXGV34Nrip1jE=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.2"
+ }
+ },
"stylehacks": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
@@ -15787,9 +14949,9 @@
}
},
"stylus-loader": {
- "version": "4.3.1",
- "resolved": "https://registry.npm.taobao.org/stylus-loader/download/stylus-loader-4.3.1.tgz",
- "integrity": "sha1-i050kpTZ/gcpwuXh8Ey/h+HJQao=",
+ "version": "4.3.3",
+ "resolved": "https://registry.npm.taobao.org/stylus-loader/download/stylus-loader-4.3.3.tgz?cache=0&sync_timestamp=1610721092232&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstylus-loader%2Fdownload%2Fstylus-loader-4.3.3.tgz",
+ "integrity": "sha1-OBu2NBJyrFC839C4d3B+rJm2t1c=",
"dev": true,
"requires": {
"fast-glob": "^3.2.4",
@@ -15818,9 +14980,9 @@
"dev": true
},
"fast-glob": {
- "version": "3.2.4",
- "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-3.2.4.tgz?cache=0&sync_timestamp=1592290276588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-3.2.4.tgz",
- "integrity": "sha1-0grvv5lXk4Pn88xmUpFYybmFVNM=",
+ "version": "3.2.5",
+ "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-3.2.5.tgz?cache=0&sync_timestamp=1610876605854&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-3.2.5.tgz",
+ "integrity": "sha1-eTmvKmVt55pPGQGQPuityqfLlmE=",
"dev": true,
"requires": {
"@nodelib/fs.stat": "^2.0.2",
@@ -15831,15 +14993,6 @@
"picomatch": "^2.2.1"
}
},
- "glob-parent": {
- "version": "5.1.1",
- "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz",
- "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
@@ -16268,9 +15421,9 @@
"dev": true
},
"timers-browserify": {
- "version": "2.0.11",
- "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz",
- "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=",
+ "version": "2.0.12",
+ "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.12.tgz?cache=0&sync_timestamp=1603793741116&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftimers-browserify%2Fdownload%2Ftimers-browserify-2.0.12.tgz",
+ "integrity": "sha1-RKRcEfv0B/NPl7zNFXfGUjYbAO4=",
"dev": true,
"requires": {
"setimmediate": "^1.0.4"
@@ -16382,6 +15535,15 @@
"punycode": "^2.1.1"
}
},
+ "trim-repeated": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/trim-repeated/download/trim-repeated-1.0.0.tgz",
+ "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.2"
+ }
+ },
"trim-right": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
@@ -16421,9 +15583,9 @@
}
},
"tslib": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
- "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1609887539329&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz",
+ "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=",
"dev": true
},
"tty-browserify": {
@@ -16647,8 +15809,8 @@
},
"upath": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz",
+ "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=",
"dev": true
},
"update-notifier": {
@@ -16966,9 +16128,9 @@
"dev": true
},
"vue-i18n": {
- "version": "8.22.3",
- "resolved": "https://registry.npm.taobao.org/vue-i18n/download/vue-i18n-8.22.3.tgz?cache=0&sync_timestamp=1610077297812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-i18n%2Fdownload%2Fvue-i18n-8.22.3.tgz",
- "integrity": "sha1-SsD9w+cdT+GIk4xAqf/KMs3mBzI="
+ "version": "8.22.4",
+ "resolved": "https://registry.npm.taobao.org/vue-i18n/download/vue-i18n-8.22.4.tgz?cache=0&sync_timestamp=1611071344508&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-i18n%2Fdownload%2Fvue-i18n-8.22.4.tgz",
+ "integrity": "sha1-JVy9q0/6czfFgZuC3RcSCK9044U="
},
"vue-loader": {
"version": "15.9.6",
@@ -17025,99 +16187,234 @@
"integrity": "sha512-Mry2sO4kiAG64714X1CFpTA/shUH1DmkZ26DFDtwoM/yyx6OtMrc+MxrU+7vvbNLO9LSpgwkiJ8W+rlmRtsM+w=="
},
"watchpack": {
- "version": "1.7.4",
- "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.4.tgz?cache=0&sync_timestamp=1600385568268&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.4.tgz",
- "integrity": "sha1-bp2lOzyAuy1lCBiPWyAEEIZs0ws=",
+ "version": "1.7.5",
+ "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.5.tgz?cache=0&sync_timestamp=1607687456328&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.5.tgz",
+ "integrity": "sha1-EmfmxV4Lm1vkTCAjrtVDeiwmxFM=",
"dev": true,
"requires": {
"chokidar": "^3.4.1",
"graceful-fs": "^4.1.2",
"neo-async": "^2.5.0",
- "watchpack-chokidar2": "^2.0.0"
- },
- "dependencies": {
- "anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz",
- "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=",
- "dev": true,
- "optional": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "binary-extensions": {
- "version": "2.1.0",
- "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.1.0.tgz?cache=0&sync_timestamp=1593261419324&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.1.0.tgz",
- "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=",
- "dev": true,
- "optional": true
- },
- "chokidar": {
- "version": "3.4.2",
- "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.4.2.tgz?cache=0&sync_timestamp=1596729075254&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.4.2.tgz",
- "integrity": "sha1-ONyOZY3sOAl0HrPve7Ckf+QkIy0=",
- "dev": true,
- "optional": true,
- "requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.1.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.4.0"
- }
- },
- "fsevents": {
- "version": "2.1.3",
- "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.3.tgz",
- "integrity": "sha1-+3OHA66NL5/pAMM4Nt3r7ouX8j4=",
- "dev": true,
- "optional": true
- },
- "glob-parent": {
- "version": "5.1.1",
- "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz",
- "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=",
- "dev": true,
- "optional": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz",
- "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=",
- "dev": true,
- "optional": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "readdirp": {
- "version": "3.4.0",
- "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.4.0.tgz",
- "integrity": "sha1-n9zN+ekVWAVEkiGsZF6DA6tbmto=",
- "dev": true,
- "optional": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- }
+ "watchpack-chokidar2": "^2.0.1"
}
},
"watchpack-chokidar2": {
- "version": "2.0.0",
- "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.0.tgz",
- "integrity": "sha1-mUihhmy71suCTeoTp+1pH2yN3/A=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.1.tgz",
+ "integrity": "sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc=",
"dev": true,
"optional": true,
"requires": {
"chokidar": "^2.1.8"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz",
+ "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299308660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz",
+ "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+ "dev": true,
+ "optional": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+ "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1610719430924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz",
+ "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz",
+ "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+ "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz",
+ "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&sync_timestamp=1602584331621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz",
+ "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
}
},
"wbuf": {
@@ -17130,9 +16427,9 @@
}
},
"webpack": {
- "version": "4.44.2",
- "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.44.2.tgz?cache=0&sync_timestamp=1600384574931&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack%2Fdownload%2Fwebpack-4.44.2.tgz",
- "integrity": "sha1-a/4rCvBVyLLR6Q7SzZNj+EEma3I=",
+ "version": "4.46.0",
+ "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.46.0.tgz",
+ "integrity": "sha1-v5tEBOogoHNgXgoBHRiNd8tq1UI=",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
@@ -17143,7 +16440,7 @@
"ajv": "^6.10.2",
"ajv-keywords": "^3.4.1",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^4.3.0",
+ "enhanced-resolve": "^4.5.0",
"eslint-scope": "^4.0.3",
"json-parse-better-errors": "^1.0.2",
"loader-runner": "^2.4.0",
@@ -17161,9 +16458,9 @@
},
"dependencies": {
"acorn": {
- "version": "6.4.1",
- "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1597235774928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz",
- "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=",
+ "version": "6.4.2",
+ "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.2.tgz",
+ "integrity": "sha1-NYZv1xBSjpLeEM8GAWSY5H454eY=",
"dev": true
},
"braces": {
@@ -17235,9 +16532,9 @@
}
},
"enhanced-resolve": {
- "version": "4.3.0",
- "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.3.0.tgz?cache=0&sync_timestamp=1600385222087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.3.0.tgz",
- "integrity": "sha1-O4BvO/r8HsfeaVUe+TzKRsFwQSY=",
+ "version": "4.5.0",
+ "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.5.0.tgz?cache=0&sync_timestamp=1610568494923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.5.0.tgz",
+ "integrity": "sha1-Lzz9hNvjtIfxjy2y7x4GSlccpew=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -17290,6 +16587,17 @@
}
}
},
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz?cache=0&sync_timestamp=1594427567713&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-5.1.1.tgz",
@@ -17299,6 +16607,16 @@
"yallist": "^3.0.2"
}
},
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz",
+ "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz",
@@ -17320,6 +16638,12 @@
"to-regex": "^3.0.2"
}
},
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
+ "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
+ "dev": true
+ },
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz?cache=0&sync_timestamp=1591175021598&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.7.1.tgz",
@@ -17340,6 +16664,21 @@
"ajv-keywords": "^3.1.0"
}
},
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1606852064928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
+ "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "dev": true
+ },
+ "serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-4.0.0.tgz?cache=0&sync_timestamp=1599741180858&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-4.0.0.tgz",
+ "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
@@ -17581,17 +16920,17 @@
},
"dependencies": {
"mime": {
- "version": "2.4.7",
- "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.7.tgz?cache=0&sync_timestamp=1608083973342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.4.7.tgz",
- "integrity": "sha1-lirtm+DtGckf19wuzl1/TompDXQ=",
+ "version": "2.5.0",
+ "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.5.0.tgz?cache=0&sync_timestamp=1610756358369&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.5.0.tgz",
+ "integrity": "sha1-K0r5NEAXeYBu6YAmu0Lowa4YdrE=",
"dev": true
}
}
},
"webpack-dev-server": {
- "version": "3.11.1",
- "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.11.1.tgz?cache=0&sync_timestamp=1609247125134&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.11.1.tgz",
- "integrity": "sha1-x0Aov1uoiFqvIw5Iog6JNquFEfA=",
+ "version": "3.11.2",
+ "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.11.2.tgz?cache=0&sync_timestamp=1610549989125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.11.2.tgz",
+ "integrity": "sha1-aV687Xakkp8NXef9c/r+GF/jNwg=",
"dev": true,
"requires": {
"ansi-html": "0.0.7",
@@ -17635,6 +16974,82 @@
"integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
"dev": true
},
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz",
+ "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299308660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz",
+ "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+ "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1610719430924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz",
+ "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
"cliui": {
"version": "5.0.0",
"resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz?cache=0&sync_timestamp=1604880033053&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-5.0.0.tgz",
@@ -17657,6 +17072,16 @@
}
}
},
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz",
+ "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ }
+ },
"del": {
"version": "4.1.1",
"resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz?cache=0&sync_timestamp=1601076882347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdel%2Fdownload%2Fdel-4.1.1.tgz",
@@ -17672,6 +17097,61 @@
"rimraf": "^2.6.3"
}
},
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+ "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
"globby": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
@@ -17705,6 +17185,36 @@
"integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=",
"dev": true
},
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz",
+ "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
"p-map": {
"version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz",
@@ -17717,6 +17227,17 @@
"integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
"dev": true
},
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&sync_timestamp=1602584331621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz",
+ "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz?cache=0&sync_timestamp=1591175021598&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.7.1.tgz",
@@ -17768,6 +17289,16 @@
"has-flag": "^3.0.0"
}
},
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
"wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz",
diff --git a/package.json b/package.json
index 70e07932..de713948 100644
--- a/package.json
+++ b/package.json
@@ -173,16 +173,16 @@
"cfonts": "^2.9.1",
"chalk": "^4.1.0",
"changelog-parser": "^2.8.0",
- "copy-webpack-plugin": "^6.4.0",
- "core-js": "^3.8.2",
+ "copy-webpack-plugin": "^6.4.1",
+ "core-js": "^3.8.3",
"cross-env": "^7.0.3",
"css-loader": "^4.3.0",
"del": "^6.0.0",
- "electron": "^9.3.3",
+ "electron": "^9.4.1",
"electron-builder": "^22.9.1",
"electron-debug": "^3.2.0",
"electron-devtools-installer": "^3.1.1",
- "eslint": "^7.17.0",
+ "eslint": "^7.18.0",
"eslint-config-standard": "^14.1.1",
"eslint-formatter-friendly": "^7.0.0",
"eslint-loader": "^4.0.2",
@@ -194,7 +194,7 @@
"file-loader": "^6.2.0",
"friendly-errors-webpack-plugin": "^1.7.0",
"html-webpack-plugin": "^4.5.1",
- "less": "^3.12.2",
+ "less": "^3.13.1",
"less-loader": "^7.2.1",
"markdown-it": "^12.0.4",
"mini-css-extract-plugin": "^0.12.0",
@@ -208,14 +208,14 @@
"rimraf": "^3.0.2",
"spinnies": "^0.5.1",
"stylus": "^0.54.8",
- "stylus-loader": "^4.3.1",
+ "stylus-loader": "^4.3.3",
"terser-webpack-plugin": "^4.2.3",
"url-loader": "^4.1.1",
"vue-loader": "^15.9.6",
"vue-template-compiler": "^2.6.12",
- "webpack": "^4.44.2",
+ "webpack": "^4.46.0",
"webpack-cli": "^3.3.12",
- "webpack-dev-server": "^3.11.1",
+ "webpack-dev-server": "^3.11.2",
"webpack-hot-middleware": "^2.25.0",
"webpack-merge": "^5.7.3"
},
@@ -233,7 +233,7 @@
"node-id3": "^0.2.2",
"request": "^2.88.2",
"vue": "^2.6.12",
- "vue-i18n": "^8.22.3",
+ "vue-i18n": "^8.22.4",
"vue-router": "^3.4.9",
"vuex": "^3.6.0",
"vuex-router-sync": "^5.0.0"
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 7fd304f3..5d80a4af 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -6,3 +6,7 @@
### 优化
- 优化播放歌曲换源匹配
+
+### 其他
+
+- 更新electron到9.4.1
From a31d6bc5aee1775ac25254c54a284f554adf4a87 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 23 Jan 2021 14:42:01 +0800
Subject: [PATCH 021/132] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?=E5=A4=A7=E5=B0=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/components/material/Menu.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/components/material/Menu.vue b/src/renderer/components/material/Menu.vue
index a48afd6e..ad4df157 100644
--- a/src/renderer/components/material/Menu.vue
+++ b/src/renderer/components/material/Menu.vue
@@ -138,7 +138,7 @@ export default {
// will-change: transform;
li {
cursor: pointer;
- min-width: 90px;
+ min-width: 96px;
line-height: 34px;
// color: @color-btn;
padding: 0 10px;
From f66077f012163677776b676637059feb5d8f293e Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 23 Jan 2021 14:56:57 +0800
Subject: [PATCH 022/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=8B=E5=8A=A8?=
=?UTF-8?q?=E5=88=87=E6=AD=8C=E4=B8=8D=E6=B8=85=E9=99=A4=E7=A8=8D=E5=90=8E?=
=?UTF-8?q?=E6=92=AD=E6=94=BE=E5=88=97=E8=A1=A8=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/store/modules/player.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js
index e3822b12..86ea430f 100644
--- a/src/renderer/store/modules/player.js
+++ b/src/renderer/store/modules/player.js
@@ -303,7 +303,7 @@ const mutations = {
state.changePlay = true
// console.log(state.playMusicInfo)
if (state.playedList.length) this.commit('player/clearPlayedList')
- if (state.playedList.length) this.commit('player/clearTempPlayeList')
+ if (state.tempPlayList.length) this.commit('player/clearTempPlayeList')
},
setPlayIndex(state, index) {
state.playIndex = index
From c4ae0dddb0a5e90a78a21b059517a9185b9b3534 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 23 Jan 2021 15:43:14 +0800
Subject: [PATCH 023/132] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=87=AA=E5=8A=A8?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=98=B6=E6=AE=B5=E7=9A=84=E6=8F=8F=E8=BF=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/components/material/VersionModal.vue | 2 +-
src/renderer/lang/en-us/view/setting.json | 2 +-
src/renderer/lang/zh-cn/view/setting.json | 2 +-
src/renderer/lang/zh-tw/view/setting.json | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/renderer/components/material/VersionModal.vue b/src/renderer/components/material/VersionModal.vue
index 9439d57e..ddc89780 100644
--- a/src/renderer/components/material/VersionModal.vue
+++ b/src/renderer/components/material/VersionModal.vue
@@ -146,7 +146,7 @@ export default {
progress() {
return this.version.downloadProgress
? `${this.version.downloadProgress.percent.toFixed(2)}% - ${sizeFormate(this.version.downloadProgress.transferred)}/${sizeFormate(this.version.downloadProgress.total)} - ${sizeFormate(this.version.downloadProgress.bytesPerSecond)}/s`
- : '初始化中...'
+ : '处理更新中...'
},
isIgnored() {
return this.setting.ignoreVersion == this.version.newVersion.version
diff --git a/src/renderer/lang/en-us/view/setting.json b/src/renderer/lang/en-us/view/setting.json
index 8c94a881..94b0bd17 100644
--- a/src/renderer/lang/en-us/view/setting.json
+++ b/src/renderer/lang/en-us/view/setting.json
@@ -150,7 +150,7 @@
"update_latest": "The software is up-to-date, enjoy yourself!🥂",
"update_open_version_modal_btn": "Open the update window🚀",
"update_checking": "Checking for updates...",
- "update_init": "Initializing update...",
+ "update_init": "Processing update...",
"about": "About lx-music-desktop",
diff --git a/src/renderer/lang/zh-cn/view/setting.json b/src/renderer/lang/zh-cn/view/setting.json
index 86472ccd..8dc8da08 100644
--- a/src/renderer/lang/zh-cn/view/setting.json
+++ b/src/renderer/lang/zh-cn/view/setting.json
@@ -150,7 +150,7 @@
"update_latest": "软件已是最新,尽情地体验吧~🥂",
"update_open_version_modal_btn": "打开更新窗口 🚀",
"update_checking": "检查更新中...",
- "update_init": "更新初始化中...",
+ "update_init": "处理更新中...",
"about": "关于洛雪音乐",
diff --git a/src/renderer/lang/zh-tw/view/setting.json b/src/renderer/lang/zh-tw/view/setting.json
index 0ced2518..3fc2e3bb 100644
--- a/src/renderer/lang/zh-tw/view/setting.json
+++ b/src/renderer/lang/zh-tw/view/setting.json
@@ -139,7 +139,7 @@
"update_latest": "軟件已是最新,盡情地體驗吧~🥂",
"update_open_version_modal_btn": "打開更新窗口 🚀",
"update_checking": "檢查更新中...",
- "update_init": "更新初始化中...",
+ "update_init": "處理更新中...",
"about": "關於洛雪音樂",
"is_enable": "是否啟用",
"is_show": "是否顯示",
From f2fb37df4cb2476c26d67c95c2c1f40147e2cbab Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 23 Jan 2021 16:33:12 +0800
Subject: [PATCH 024/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BF=AB=E9=80=9F?=
=?UTF-8?q?=E5=88=87=E6=8D=A2=E6=AD=8C=E6=9B=B2=E6=97=B6,=20=E4=BC=9A?=
=?UTF-8?q?=E5=87=BA=E7=8E=B0=E6=92=AD=E6=94=BE=E7=9A=84=E6=AD=8C=E6=9B=B2?=
=?UTF-8?q?=E5=92=8C=E7=95=8C=E9=9D=A2=E5=B1=95=E7=A4=BA=E7=9A=84=E6=AD=8C?=
=?UTF-8?q?=E6=9B=B2=E4=B8=8D=E4=B8=80=E8=87=B4=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 4 ++++
src/renderer/components/core/Player.vue | 5 +++--
src/renderer/store/modules/player.js | 9 +++++----
3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 5d80a4af..0e10af2c 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -7,6 +7,10 @@
- 优化播放歌曲换源匹配
+### 修复
+
+- 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
+
### 其他
- 更新electron到9.4.1
diff --git a/src/renderer/components/core/Player.vue b/src/renderer/components/core/Player.vue
index 64459c61..88c3d6c9 100644
--- a/src/renderer/components/core/Player.vue
+++ b/src/renderer/components/core/Player.vue
@@ -581,8 +581,9 @@ export default {
this.musicInfo.url = targetSong.typeUrl[type]
this.status = this.statusText = this.$t('core.player.geting_url')
- return this.getUrl({ musicInfo: targetSong, originMusic, type, isRefresh }).then(() => {
- audio.src = this.musicInfo.url = targetSong.typeUrl[type]
+ return this.getUrl({ musicInfo: targetSong, originMusic, type, isRefresh }).then(url => {
+ if ((targetSong !== this.targetSong && originMusic !== this.targetSong) || this.isPlay) return
+ audio.src = this.musicInfo.url = url
}).catch(err => {
// console.log('err', err.message)
if (err.message == requestMsg.cancelRequest) return
diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js
index 86ea430f..9d23766d 100644
--- a/src/renderer/store/modules/player.js
+++ b/src/renderer/store/modules/player.js
@@ -119,12 +119,13 @@ const actions = {
// return Promise.reject(new Error('该歌曲没有可播放的音频'))
}
if (urlRequest && urlRequest.cancelHttp) urlRequest.cancelHttp()
- if (musicInfo.typeUrl[type] && !isRefresh) return Promise.resolve()
+ if (musicInfo.typeUrl[type] && !isRefresh) return Promise.resolve(musicInfo.typeUrl[type])
urlRequest = music[musicInfo.source].getMusicUrl(musicInfo, type)
- return urlRequest.promise.then(result => {
- if (originMusic) commit('setUrl', { musicInfo: originMusic, url: result.url, type })
- commit('setUrl', { musicInfo, url: result.url, type })
+ return urlRequest.promise.then(({ url }) => {
+ if (originMusic) commit('setUrl', { musicInfo: originMusic, url, type })
+ commit('setUrl', { musicInfo, url, type })
urlRequest = null
+ return url
}).catch(err => {
urlRequest = null
return Promise.reject(err)
From 023cd15cd0abc8cd81abb80c51e602a1082b98bd Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 23 Jan 2021 16:45:01 +0800
Subject: [PATCH 025/132] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=8A=A0=E8=BD=BD?=
=?UTF-8?q?=E5=8A=A8=E7=94=BB=E9=80=9F=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/views/Search.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/views/Search.vue b/src/renderer/views/Search.vue
index 43c10d42..9fb8f0a8 100644
--- a/src/renderer/views/Search.vue
+++ b/src/renderer/views/Search.vue
@@ -38,7 +38,7 @@
@btn-click="handleListBtnClick")
div(:class="$style.pagination")
material-pagination(:max-page="listInfo.allPage" :limit="listInfo.limit" :page="page" @btn-click="handleTogglePage")
- transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
+ transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated fadeOut")
div(v-show="isLoading" :class="$style.loading")
p {{$t('view.search.loding_list')}}
transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
From 041bfdaf3c2c35e9d4459e8c4815fecd6270aa86 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 23 Jan 2021 19:36:29 +0800
Subject: [PATCH 026/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=87=E6=8D=A2?=
=?UTF-8?q?=E9=9F=B3=E4=B9=90=E6=9D=A5=E6=BA=90=E5=8F=AF=E8=83=BD=E6=97=A0?=
=?UTF-8?q?=E6=B3=95=E5=88=87=E6=AD=8C=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 2 +-
src/renderer/store/modules/player.js | 29 ++++++++++++++--------------
2 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/package.json b/package.json
index de713948..81c7fbe9 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"main": "./dist/electron/main.js",
"productName": "lx-music-desktop",
"scripts": {
- "pack": "npm run pack:win",
+ "pack": "node build-config/pack.js && npm run pack:win:setup:x64",
"pack:win": "node build-config/pack.js && npm run pack:win:setup:x86_64 && npm run pack:win:7z",
"pack:win:setup:x86_64": "cross-env TARGET=win_安装版 ARCH=x86_64 electron-builder -w=nsis --x64 --ia32",
"pack:win:setup:x64": "cross-env TARGET=win_安装版 ARCH=x64 electron-builder -w=nsis --x64",
diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js
index 9d23766d..a6a27bfc 100644
--- a/src/renderer/store/modules/player.js
+++ b/src/renderer/store/modules/player.js
@@ -184,24 +184,25 @@ const actions = {
}
}
- let list = await filterList({
+ let filteredList = await filterList({
listInfo: state.listInfo,
playedList: state.playedList,
savePath: rootState.setting.download.savePath,
commit,
})
- if (!list.length) return commit('setPlayMusicInfo', null)
+ if (!filteredList.length) return commit('setPlayMusicInfo', null)
const playInfo = getters.playInfo
- const currentIndex = playInfo.listPlayIndex
+ let currentIndex = filteredList.indexOf(currentList[playInfo.listPlayIndex])
+ if (currentIndex == -1) currentIndex = 0
let nextIndex = currentIndex
if (!playInfo.isTempPlay) {
switch (rootState.setting.player.togglePlayMethod) {
case 'random':
- nextIndex = getRandom(0, list.length)
+ nextIndex = getRandom(0, filteredList.length)
break
case 'listLoop':
case 'list':
- nextIndex = currentIndex === 0 ? list.length - 1 : currentIndex - 1
+ nextIndex = currentIndex === 0 ? filteredList.length - 1 : currentIndex - 1
break
case 'singleLoop':
break
@@ -213,7 +214,7 @@ const actions = {
}
commit('setPlayMusicInfo', {
- musicInfo: list[nextIndex],
+ musicInfo: filteredList[nextIndex],
listId: currentListId,
})
},
@@ -243,27 +244,26 @@ const actions = {
return
}
}
- let list = await filterList({
+ let filteredList = await filterList({
listInfo: state.listInfo,
playedList: state.playedList,
savePath: rootState.setting.download.savePath,
commit,
})
- if (!list.length) return commit('setPlayMusicInfo', null)
+ if (!filteredList.length) return commit('setPlayMusicInfo', null)
const playInfo = getters.playInfo
- const currentIndex = playInfo.listPlayIndex
+ const currentIndex = filteredList.indexOf(currentList[playInfo.listPlayIndex])
let nextIndex = currentIndex
- // if (!playInfo.isTempPlay) {
switch (rootState.setting.player.togglePlayMethod) {
case 'listLoop':
- nextIndex = currentIndex === list.length - 1 ? 0 : currentIndex + 1
+ nextIndex = currentIndex === filteredList.length - 1 ? 0 : currentIndex + 1
break
case 'random':
- nextIndex = getRandom(0, list.length)
+ nextIndex = getRandom(0, filteredList.length)
break
case 'list':
- nextIndex = currentIndex === list.length - 1 ? -1 : currentIndex + 1
+ nextIndex = currentIndex === filteredList.length - 1 ? -1 : currentIndex + 1
break
case 'singleLoop':
break
@@ -272,10 +272,9 @@ const actions = {
return
}
if (nextIndex < 0) return
- // }
commit('setPlayMusicInfo', {
- musicInfo: list[nextIndex],
+ musicInfo: filteredList[nextIndex],
listId: currentListId,
})
},
From 331afc37df1529e9d5d3300d308b6b84e5a668b4 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 25 Jan 2021 10:44:03 +0800
Subject: [PATCH 027/132] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E2=80=9C=E8=AE=B0?=
=?UTF-8?q?=E4=BD=8F=E6=92=AD=E6=94=BE=E8=BF=9B=E5=BA=A6=E2=80=9D=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E7=9A=84=E6=8E=A7=E5=88=B6=EF=BC=8C=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=A1=B9=E5=B1=95=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 2 +
src/common/defaultSetting.js | 3 +-
src/renderer/components/core/Player.vue | 37 +++++++--
src/renderer/lang/en-us/view/setting.json | 31 ++------
src/renderer/lang/zh-cn/view/setting.json | 35 +++------
src/renderer/lang/zh-tw/view/setting.json | 51 ++++++------
src/renderer/views/Setting.vue | 96 +++++++++--------------
7 files changed, 113 insertions(+), 142 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 0e10af2c..e4e1f890 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -2,10 +2,12 @@
- 搜索界面新增搜索状态的提示
- 新增“稍后播放”功能,可在歌曲列表右键菜单使用
+- 新增“记住播放进度”功能的控制,该功能默认不再开启,可到播放设置-记住播放进度开启
### 优化
- 优化播放歌曲换源匹配
+- 优化设置界面设置项的展示
### 修复
diff --git a/src/common/defaultSetting.js b/src/common/defaultSetting.js
index efc8341a..22e08246 100644
--- a/src/common/defaultSetting.js
+++ b/src/common/defaultSetting.js
@@ -2,7 +2,7 @@ const path = require('path')
const os = require('os')
const defaultSetting = {
- version: '1.0.38',
+ version: '1.0.39',
player: {
togglePlayMethod: 'listLoop',
highQuality: false,
@@ -12,6 +12,7 @@ const defaultSetting = {
mediaDeviceId: 'default',
isMediaDeviceRemovedStopPlay: false,
isShowLyricTransition: true,
+ isSavePlayTime: false,
},
desktopLyric: {
enable: false,
diff --git a/src/renderer/components/core/Player.vue b/src/renderer/components/core/Player.vue
index 88c3d6c9..ac73b076 100644
--- a/src/renderer/components/core/Player.vue
+++ b/src/renderer/components/core/Player.vue
@@ -303,14 +303,26 @@ export default {
},
nowPlayTime(n, o) {
if (Math.abs(n - o) > 2) this.isActiveTransition = true
- if (this.playInfo.isTempPlay) return
- this.savePlayInfo({
- time: n,
- maxTime: this.maxPlayTime,
- listId: this.listId,
- list: this.listId == null ? this.list : null,
- index: this.playIndex,
- })
+ if (this.setting.player.isSavePlayTime && !this.playInfo.isTempPlay) {
+ this.savePlayInfo({
+ time: n,
+ maxTime: this.maxPlayTime,
+ listId: this.listId,
+ list: this.listId == null ? this.list : null,
+ index: this.playIndex,
+ })
+ }
+ },
+ maxPlayTime(maxPlayTime) {
+ if (!this.playInfo.isTempPlay) {
+ this.savePlayInfo({
+ time: this.nowPlayTime,
+ maxTime: maxPlayTime,
+ listId: this.listId,
+ list: this.listId == null ? this.list : null,
+ index: this.playIndex,
+ })
+ }
},
},
methods: {
@@ -495,6 +507,15 @@ export default {
name: this.musicInfo.name,
album: this.musicInfo.album,
})
+ if (!this.playInfo.isTempPlay) {
+ this.savePlayInfo({
+ time: this.nowPlayTime,
+ maxTime: this.maxPlayTime,
+ listId: this.listId,
+ list: this.listId == null ? this.list : null,
+ index: this.playIndex,
+ })
+ }
},
clearDelayNextTimeout() {
// console.log(this.delayNextTimeout)
diff --git a/src/renderer/lang/en-us/view/setting.json b/src/renderer/lang/en-us/view/setting.json
index 94b0bd17..2eaa537a 100644
--- a/src/renderer/lang/en-us/view/setting.json
+++ b/src/renderer/lang/en-us/view/setting.json
@@ -2,7 +2,6 @@
"basic": "General",
"basic_theme": "Theme",
"basic_show_animation": "Show switching animation",
- "basic_animation_title": "Animation effect of the pop-up layer",
"basic_animation": "Random pop-up animation",
"basic_source_title": "Choose a music source",
"basic_source_test": "Test API (Available for most software features)",
@@ -21,8 +20,7 @@
"basic_window_size_larger": "Larger",
"basic_window_size_oversized": "Oversized",
"basic_window_size_huge": "Huge",
- "basic_to_tray_title": "Minimize it to the system tray without closing the software when closing",
- "basic_to_tray": "Minimize to system tray when closing",
+ "basic_to_tray": "Do not exit the software when closing the software and minimize it to the system tray",
"basic_lang_title": "The language displayed in the software",
"basic_lang": "Language",
"basic_control_btn_position": "Control Button Position",
@@ -30,21 +28,13 @@
"basic_control_btn_position_right": "Right",
"play": "Play",
- "play_toggle_title": "If none selected, it stopped when the music playing is done.",
- "play_toggle": "Playback mode",
- "play_toggle_list_loop": "Playlist repeat",
- "play_toggle_random": "Playlist shuffle",
- "play_toggle_list": "Play in order",
- "play_toggle_single_loop": "Single repeat",
+ "play_save_play_time": "Remember playback progress",
"play_lyric_transition": "Show lyrics translation",
- "play_quality_title": "The 320k quality is preferred for playing",
- "play_quality": "Prefer High Quality 320k",
- "play_task_bar_title": "Show playing progress on the taskbar",
- "play_task_bar": "Taskbar play progress bar",
+ "play_quality": "Play 320K quality songs first (if supported)",
+ "play_task_bar": "Show playing progress on the taskbar",
"play_mediaDevice_title": "Select a media device for audio output",
"play_mediaDevice": "Audio output",
- "play_mediaDevice_remove_stop_play": "Whether to pause playback when the audio output device is changed",
- "play_mediaDevice_remove_stop_play_title": "Whether to pause the song when the current sound output device is changed",
+ "play_mediaDevice_remove_stop_play": "Pause the song when the current sound output device is changed",
"desktop_lyric": "Desktop Lyric Settings",
"desktop_lyric_enable": "Display lyrics",
@@ -53,18 +43,13 @@
"desktop_lyric_lock_screen": "It is not allowed to drag the lyrics window out of the main screen",
"search": "Search",
- "search_hot_title": "Select whether to show popular searches",
"search_hot": "Top Searches",
- "search_history_title": "Select whether to show search history",
"search_history": "Search history",
- "search_focus_search_box_title": "Whether the search box is automatically focused on startup",
- "search_focus_search_box": "Whether the search box is focused on startup",
+ "search_focus_search_box": "Automatically focus the search box on startup",
"list": "List",
- "list_source_title": "Select whether to show music source",
- "list_source": "Select whether to show music source (for Your Library only)",
- "list_scroll_title": "Select whether to remember the playlist scrollbar position",
- "list_scroll": "Remember playlist scrolling position (for Your library only)",
+ "list_source": "Show song source (only valid for my music category)",
+ "list_scroll": "Remember the position of the scroll bar of the playlist (only valid for my music classification)",
"download": "Download",
"download_enable": "Whether to enable download function",
diff --git a/src/renderer/lang/zh-cn/view/setting.json b/src/renderer/lang/zh-cn/view/setting.json
index 8dc8da08..00e1dcdd 100644
--- a/src/renderer/lang/zh-cn/view/setting.json
+++ b/src/renderer/lang/zh-cn/view/setting.json
@@ -1,7 +1,6 @@
{
"basic": "基本设置",
"basic_theme": "主题颜色",
- "basic_animation_title": "弹出层的动画效果",
"basic_animation": "弹出层随机动画",
"basic_show_animation": "显示切换动画",
"basic_source_title": "选择音乐来源",
@@ -21,8 +20,7 @@
"basic_window_size_larger": "较大",
"basic_window_size_oversized": "超大",
"basic_window_size_huge": "巨大",
- "basic_to_tray_title": "关闭时不退出软件将其最小化到系统托盘",
- "basic_to_tray": "关闭时最小化到系统托盘",
+ "basic_to_tray": "关闭软件时不退出软件将其最小化到系统托盘",
"basic_lang_title": "软件显示的语言",
"basic_lang": "语言",
"basic_control_btn_position": "控制按钮位置",
@@ -30,21 +28,13 @@
"basic_control_btn_position_right": "右边",
"play": "播放设置",
- "play_toggle_title": "都不选时播放完当前歌曲就停止播放",
- "play_toggle": "歌曲切换方式",
- "play_toggle_list_loop": "列表循环",
- "play_toggle_random": "列表随机",
- "play_toggle_list": "顺序播放",
- "play_toggle_single_loop": "单曲循环",
+ "play_save_play_time": "记住播放进度",
"play_lyric_transition": "显示歌词翻译",
- "play_quality_title": "启用时将优先播放320K品质的歌曲",
- "play_quality": "优先播放高品质音乐",
- "play_task_bar_title": "在任务栏上显示当前歌曲播放进度",
- "play_task_bar": "任务栏播放进度条",
+ "play_quality": "优先播放320K品质的歌曲(如果支持)",
+ "play_task_bar": "在任务栏上显示当前歌曲播放进度",
"play_mediaDevice_title": "选择声音输出的媒体设备",
"play_mediaDevice": "音频输出",
- "play_mediaDevice_remove_stop_play": "音频输出设备被改变时是否暂停播放",
- "play_mediaDevice_remove_stop_play_title": "当前的声音输出设备被改变时是否暂停播放歌曲",
+ "play_mediaDevice_remove_stop_play": "当前的声音输出设备被改变时暂停播放歌曲",
"desktop_lyric": "桌面歌词设置",
"desktop_lyric_enable": "显示歌词",
@@ -53,18 +43,13 @@
"desktop_lyric_lock_screen": "不允许歌词窗口拖出主屏幕之外",
"search": "搜索设置",
- "search_hot_title": "是否显示热门搜索",
- "search_hot": "热门搜索",
- "search_history_title": "是否显示历史搜索记录",
- "search_history": "搜索历史",
- "search_focus_search_box_title": "启动时是否自动聚焦搜索框",
- "search_focus_search_box": "启动时是否聚焦搜索框",
+ "search_hot": "显示热门搜索",
+ "search_history": "显示历史搜索记录",
+ "search_focus_search_box": "启动时自动聚焦搜索框",
"list": "列表设置",
- "list_source_title": "是否显示歌曲源",
- "list_source": "是否显示歌曲源(仅对我的音乐分类有效)",
- "list_scroll_title": "是否记住播放列表滚动条位置",
- "list_scroll": "记住列表滚动位置(仅对我的音乐分类有效)",
+ "list_source": "显示歌曲源(仅对我的音乐分类有效)",
+ "list_scroll": "记住播放列表滚动条位置(仅对我的音乐分类有效)",
"download": "下载设置",
"download_enable": "是否启用下载功能",
diff --git a/src/renderer/lang/zh-tw/view/setting.json b/src/renderer/lang/zh-tw/view/setting.json
index 3fc2e3bb..0ba303c2 100644
--- a/src/renderer/lang/zh-tw/view/setting.json
+++ b/src/renderer/lang/zh-tw/view/setting.json
@@ -1,7 +1,6 @@
{
"basic": "基本設置",
"basic_theme": "主題顏色",
- "basic_animation_title": "彈出層的動畫效果",
"basic_animation": "彈出層隨機動畫",
"basic_show_animation": "顯示切換動畫",
"basic_source_title": "選擇音樂來源",
@@ -21,46 +20,37 @@
"basic_window_size_larger": "較大",
"basic_window_size_oversized": "超大",
"basic_window_size_huge": "巨大",
- "basic_to_tray_title": "關閉時不退出軟件將其最小化到系統托盤",
- "basic_to_tray": "關閉時最小化到系統托盤",
+ "basic_to_tray": "關閉軟件時不退出軟件將其最小化到系統托盤",
"basic_lang_title": "軟件顯示的語言",
"basic_lang": "語言",
"basic_control_btn_position": "控制按鈕位置",
"basic_control_btn_position_left": "左邊",
"basic_control_btn_position_right": "右邊",
+
"play": "播放設置",
- "play_toggle_title": "都不選時播放完當前歌曲就停止播放",
- "play_toggle": "歌曲切換方式",
- "play_toggle_list_loop": "列表循環",
- "play_toggle_random": "列表隨機",
- "play_toggle_list": "順序播放",
- "play_toggle_single_loop": "單曲循環",
+ "play_save_play_time": "記住播放進度",
"play_lyric_transition": "顯示歌詞翻譯",
- "play_quality_title": "啟用時將優先播放320K品質的歌曲",
- "play_quality": "優先播放高品質音樂",
- "play_task_bar_title": "在任務欄上顯示當前歌曲播放進度",
- "play_task_bar": "任務欄播放進度條",
+ "play_quality": "優先播放320K品質的歌曲(如果支持)",
+ "play_task_bar": "在任務欄上顯示當前歌曲播放進度",
"play_mediaDevice_title": "選擇聲音輸出的媒體設備",
"play_mediaDevice": "音頻輸出",
- "play_mediaDevice_remove_stop_play": "音頻輸出設備被改變時是否暫停播放",
- "play_mediaDevice_remove_stop_play_title": "當前的聲音輸出設備被改變時是否暫停播放歌曲",
+ "play_mediaDevice_remove_stop_play": "當前的聲音輸出設備被改變時暫停播放歌曲",
+
"desktop_lyric": "桌面歌詞設置",
"desktop_lyric_enable": "顯示歌詞",
"desktop_lyric_lock": "鎖定歌詞",
"desktop_lyric_always_on_top": "使歌詞總是在其他窗口之上",
"desktop_lyric_lock_screen": "不允許歌詞窗口拖出主屏幕之外",
+
"search": "搜索設置",
- "search_hot_title": "是否顯示熱門搜索",
- "search_hot": "熱門搜索",
- "search_history_title": "是否顯示歷史搜索記錄",
- "search_history": "搜索歷史",
- "search_focus_search_box_title": "啟動時是否自動聚焦搜索框",
- "search_focus_search_box": "啟動時是否聚焦搜索框",
+ "search_hot": "顯示熱門搜索",
+ "search_history": "顯示歷史搜索記錄",
+ "search_focus_search_box": "啟動時自動聚焦搜索框",
+
"list": "列表設置",
- "list_source_title": "是否顯示歌曲源",
- "list_source": "是否顯示歌曲源(僅對我的音樂分類有效)",
- "list_scroll_title": "是否記住播放列表滾動條位置",
- "list_scroll": "記住列表滾動位置(僅對我的音樂分類有效)",
+ "list_source": "顯示歌曲源(僅對我的音樂分類有效)",
+ "list_scroll": "記住播放列表滾動條位置(僅對我的音樂分類有效)",
+
"download": "下載設置",
"download_enable": "是否啟用下載功能",
"download_path_title": "下載歌曲保存的路徑",
@@ -79,6 +69,7 @@
"download_name2": "歌手 - 歌名",
"download_name3": "歌名",
"download_select_save_path": "選擇歌曲保存路徑",
+
"hot_key": "快捷鍵設置",
"hot_key_local_title": "軟件內快捷鍵",
"hot_key_global_title": "全局快捷鍵",
@@ -98,15 +89,18 @@
"hot_key_desktop_lyric_toggle_visible": "開/關桌面歌詞",
"hot_key_desktop_lyric_toggle_lock": "桌面歌詞鎖定切換",
"hot_key_desktop_lyric_toggle_always_top": "桌面歌詞置頂切換",
+
"network": "網絡設置",
"network_proxy_title": "HTTP代理設置(亂設置軟件將無法聯網)",
"network_proxy_host": "主機",
"network_proxy_port": "端口",
"network_proxy_username": "用戶名",
"network_proxy_password": "密碼",
+
"odc": "強迫症設置",
"odc_clear_search_input": "離開搜索界面時清空搜索框",
"odc_clear_search_list": "離開搜索界面時清空搜索列表",
+
"backup": "備份與恢復",
"backup_part": "部分數據(列表數據包括試聽列表、收藏列表、用戶自定義列表,設置數據不包括快捷鍵設置)",
"backup_part_import_list": "導入列表",
@@ -121,7 +115,8 @@
"backup_part_import_setting_desc": "選擇配置文件",
"backup_part_export_setting_desc": "選擇設置保存位置",
"backup_part_import_list_desc": "選擇列表文件",
- "backup_part_export_list_desc": "選擇列表保存位置",
+ "backup_part_export_list_desc": "選擇歌單保存位置",
+
"other": "其他",
"other_tray_theme": "托盤圖標樣式",
"other_tray_theme_native": "純色",
@@ -130,6 +125,7 @@
"other_cache_label": "軟件已使用緩存大小:",
"other_cache_label_title": "當前已用緩存",
"other_cache_clear_btn": "清理緩存",
+
"update": "軟件更新",
"update_latest_label": "最新版本:",
"update_unknown": "未知",
@@ -140,7 +136,10 @@
"update_open_version_modal_btn": "打開更新窗口 🚀",
"update_checking": "檢查更新中...",
"update_init": "處理更新中...",
+
"about": "關於洛雪音樂",
+
+
"is_enable": "是否啟用",
"is_show": "是否顯示",
"click_open": "點擊打開",
diff --git a/src/renderer/views/Setting.vue b/src/renderer/views/Setting.vue
index 0deda88d..c8830bfb 100644
--- a/src/renderer/views/Setting.vue
+++ b/src/renderer/views/Setting.vue
@@ -21,14 +21,13 @@ div.scroll(:class="$style.setting" ref="dom_setting")
label {{$t('store.state.theme_' + theme.class)}}
dd
- h3#basic_show_animation {{$t('view.setting.basic_show_animation')}}
- div
- material-checkbox(id="setting_show_animate" v-model="current_setting.isShowAnimation" :label="$t('view.setting.is_show')")
+ div(:class="[$style.gapTop, $style.top]")
+ material-checkbox(id="setting_show_animate" v-model="current_setting.isShowAnimation" :label="$t('view.setting.basic_show_animation')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_animate" v-model="current_setting.randomAnimate" :label="$t('view.setting.basic_animation')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_to_tray" v-model="current_setting.tray.isShow" @change="handleTrayShowChange" :label="$t('view.setting.basic_to_tray')")
- dd(:tips="$t('view.setting.basic_animation_title')")
- h3#basic_animation {{$t('view.setting.basic_animation')}}
- div
- material-checkbox(id="setting_animate" v-model="current_setting.randomAnimate" :label="$t('view.setting.is_enable')")
dd(:tips="$t('view.setting.basic_source_title')")
h3#basic_source {{$t('view.setting.basic_source')}}
@@ -37,11 +36,6 @@ div.scroll(:class="$style.setting" ref="dom_setting")
material-checkbox(:id="`setting_api_source_${item.id}`" name="setting_api_source" @change="handleAPISourceChange(item.id)"
need v-model="current_setting.apiSource" :disabled="item.disabled" :value="item.id" :label="item.label")
- dd(:tips="$t('view.setting.basic_to_tray_title')")
- h3#basic_to_tray {{$t('view.setting.basic_to_tray')}}
- div
- material-checkbox(id="setting_to_tray" v-model="current_setting.tray.isShow" @change="handleTrayShowChange" :label="$t('view.setting.is_enable')")
-
dd(:tips="$t('view.setting.basic_window_size_title')")
h3#basic_window_size {{$t('view.setting.basic_window_size')}}
div
@@ -68,27 +62,17 @@ div.scroll(:class="$style.setting" ref="dom_setting")
name="setting_basic_control_btn_position" need v-model="current_setting.controlBtnPosition" :value="item.id" :label="item.name")
dt#play {{$t('view.setting.play')}}
- dd(:tips="$t('view.setting.play_toggle_title')")
- h3#play_toggle {{$t('view.setting.play_toggle')}}
- div
- material-checkbox(:id="`setting_player_togglePlay_${item.value}`" :class="$style.gapLeft" :value="item.value" :key="item.value"
- v-model="current_setting.player.togglePlayMethod" v-for="item in togglePlayMethods" :label="item.name")
dd
- h3#play_lyric_transition {{$t('view.setting.play_lyric_transition')}}
- div
- material-checkbox(id="setting_player_lyric_transition" v-model="current_setting.player.isShowLyricTransition" :label="$t('view.setting.is_show')")
- dd(:tips="$t('view.setting.play_quality_title')")
- h3#play_quality {{$t('view.setting.play_quality')}}
- div
- material-checkbox(id="setting_player_highQuality" v-model="current_setting.player.highQuality" :label="$t('view.setting.is_enable')")
- dd(:tips="$t('view.setting.play_task_bar_title')")
- h3#play_task_bar {{$t('view.setting.play_task_bar')}}
- div
- material-checkbox(id="setting_player_showTaskProgess" v-model="current_setting.player.isShowTaskProgess" :label="$t('view.setting.is_enable')")
- dd(:tips="$t('view.setting.play_mediaDevice_remove_stop_play_title')")
- h3#play_mediaDevice_remove_stop_play {{$t('view.setting.play_mediaDevice_remove_stop_play')}}
- div
- material-checkbox(id="setting_player_isMediaDeviceRemovedStopPlay" v-model="current_setting.player.isMediaDeviceRemovedStopPlay" :label="$t('view.setting.is_enable')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_player_save_play_time" v-model="current_setting.player.isSavePlayTime" :label="$t('view.setting.play_save_play_time')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_player_lyric_transition" v-model="current_setting.player.isShowLyricTransition" :label="$t('view.setting.play_lyric_transition')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_player_highQuality" v-model="current_setting.player.highQuality" :label="$t('view.setting.play_quality')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_player_showTaskProgess" v-model="current_setting.player.isShowTaskProgess" :label="$t('view.setting.play_task_bar')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_player_isMediaDeviceRemovedStopPlay" v-model="current_setting.player.isMediaDeviceRemovedStopPlay" :label="$t('view.setting.play_mediaDevice_remove_stop_play')")
dd(:tips="$t('view.setting.play_mediaDevice_title')")
h3#play_mediaDevice {{$t('view.setting.play_mediaDevice')}}
div
@@ -103,29 +87,22 @@ div.scroll(:class="$style.setting" ref="dom_setting")
material-checkbox(id="setting_desktop_lyric_alwaysOnTop" v-model="current_setting.desktopLyric.isAlwaysOnTop" :label="$t('view.setting.desktop_lyric_always_on_top')")
div(:class="$style.gapTop")
material-checkbox(id="setting_desktop_lyric_lockScreen" v-model="current_setting.desktopLyric.isLockScreen" :label="$t('view.setting.desktop_lyric_lock_screen')")
+
dt#search {{$t('view.setting.search')}}
- dd(:tips="$t('view.setting.search_hot_title')")
- h3#search_hot {{$t('view.setting.search_hot')}}
- div
- material-checkbox(id="setting_search_showHot_enable" v-model="current_setting.search.isShowHotSearch" :label="$t('view.setting.is_show')")
- dd(:tips="$t('view.setting.search_history_title')")
- h3#search_history {{$t('view.setting.search_history')}}
- div
- material-checkbox(id="setting_search_showHistory_enable" v-model="current_setting.search.isShowHistorySearch" :label="$t('view.setting.is_show')")
- dd(:tips="$t('view.setting.search_focus_search_box_title')")
- h3#search_focus_search_box {{$t('view.setting.search_focus_search_box')}}
- div
- material-checkbox(id="setting_search_focusSearchBox_enable" v-model="current_setting.search.isFocusSearchBox" :label="$t('view.setting.is_enable')")
+ dd
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_search_showHot_enable" v-model="current_setting.search.isShowHotSearch" :label="$t('view.setting.search_hot')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_search_showHistory_enable" v-model="current_setting.search.isShowHistorySearch" :label="$t('view.setting.search_history')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_search_focusSearchBox_enable" v-model="current_setting.search.isFocusSearchBox" :label="$t('view.setting.search_focus_search_box')")
dt#list {{$t('view.setting.list')}}
- dd(:tips="$t('view.setting.list_source_title')")
- h3#list_source {{$t('view.setting.list_source')}}
- div
- material-checkbox(id="setting_list_showSource_enable" v-model="current_setting.list.isShowSource" :label="$t('view.setting.is_show')")
- dd(:tips="$t('view.setting.list_scroll_title')")
- h3#list_scroll {{$t('view.setting.list_scroll')}}
- div
- material-checkbox(id="setting_list_scroll_enable" v-model="current_setting.list.isSaveScrollLocation" :label="$t('view.setting.is_enable')")
+ dd
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_list_showSource_enable" v-model="current_setting.list.isShowSource" :label="$t('view.setting.list_source')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_list_scroll_enable" v-model="current_setting.list.isSaveScrollLocation" :label="$t('view.setting.list_scroll')")
//- dd(:tips="播放列表是否显示专辑栏")
h3 专辑栏
div
@@ -195,13 +172,10 @@ div.scroll(:class="$style.setting" ref="dom_setting")
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.password" @change="handleProxyChange('password')" type="password" :placeholder="$t('view.setting.network_proxy_password')")
dt#odc {{$t('view.setting.odc')}}
dd
- h3#odc_clear_search_input {{$t('view.setting.odc_clear_search_input')}}
- div
- material-checkbox(id="setting_odc_isAutoClearSearchInput" v-model="current_setting.odc.isAutoClearSearchInput" :label="$t('view.setting.is_enable')")
- dd
- h3#odc_clear_search_list {{$t('view.setting.odc_clear_search_list')}}
- div
- material-checkbox(id="setting_odc_isAutoClearSearchList" v-model="current_setting.odc.isAutoClearSearchList" :label="$t('view.setting.is_enable')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_odc_isAutoClearSearchInput" v-model="current_setting.odc.isAutoClearSearchInput" :label="$t('view.setting.odc_clear_search_input')")
+ div(:class="$style.gapTop")
+ material-checkbox(id="setting_odc_isAutoClearSearchList" v-model="current_setting.odc.isAutoClearSearchList" :label="$t('view.setting.odc_clear_search_list')")
dt#backup {{$t('view.setting.backup')}}
dd
h3#backup_part {{$t('view.setting.backup_part')}}
@@ -1202,6 +1176,10 @@ export default {
}
}
.gap-top {
+ &.top {
+ margin-top: 25px;
+ }
+
+ .gap-top {
margin-top: 10px;
}
From d6d6fae2ca172880d878e9458489c339c7e17a10 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Tue, 26 Jan 2021 08:43:07 +0800
Subject: [PATCH 028/132] =?UTF-8?q?=E7=A6=81=E6=AD=A2=E6=89=93=E5=BC=80?=
=?UTF-8?q?=E9=9D=9Ehttp=E5=8D=8F=E8=AE=AE=E9=93=BE=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/index.js | 1 +
src/renderer/utils/index.js | 1 +
2 files changed, 2 insertions(+)
diff --git a/src/main/index.js b/src/main/index.js
index 9f0d24d0..e4544b34 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -54,6 +54,7 @@ app.on('web-contents-created', (event, contents) => {
event.preventDefault()
if (/^devtools/.test(navigationUrl)) return
console.log(navigationUrl)
+ if (!/^https?:\/\//.test(navigationUrl)) return
await shell.openExternal(navigationUrl)
})
contents.on('will-attach-webview', (event, webPreferences, params) => {
diff --git a/src/renderer/utils/index.js b/src/renderer/utils/index.js
index 51fd5b3a..1e642b57 100644
--- a/src/renderer/utils/index.js
+++ b/src/renderer/utils/index.js
@@ -232,6 +232,7 @@ export const objectDeepMerge = (target, source, mergedObj) => {
* @param {*} url
*/
export const openUrl = url => {
+ if (!/^https?:\/\//.test(url)) return
shell.openExternal(url)
}
From 269b14394ddc96f4fd40702828cba958e5033c1d Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Wed, 27 Jan 2021 19:20:29 +0800
Subject: [PATCH 029/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E4=B8=AA=E7=94=B1=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0=E6=97=A5?=
=?UTF-8?q?=E5=BF=97=E6=98=BE=E7=A4=BA=E5=AF=BC=E8=87=B4=E7=9A=84=E6=BD=9C?=
=?UTF-8?q?=E5=9C=A8=E8=BF=9C=E7=A8=8B=E4=BB=A3=E7=A0=81=E6=89=A7=E8=A1=8C?=
=?UTF-8?q?=E6=94=BB=E5=87=BB=E6=BC=8F=E6=B4=9E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 1 +
publish/utils/updateChangeLog.js | 2 +-
.../components/material/VersionModal.vue | 27 +++++++++++--------
src/renderer/store/actions.js | 19 +++++++++++--
4 files changed, 35 insertions(+), 14 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index e4e1f890..baaeb038 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -12,6 +12,7 @@
### 修复
- 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
+- 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
### 其他
diff --git a/publish/utils/updateChangeLog.js b/publish/utils/updateChangeLog.js
index 81a11a82..a966a0ca 100644
--- a/publish/utils/updateChangeLog.js
+++ b/publish/utils/updateChangeLog.js
@@ -44,7 +44,7 @@ module.exports = async newVerNum => {
desc: version.desc,
})
version.version = newVerNum
- version.desc = newChangeLog
+ version.desc = newMDChangeLog.replace(/(?:^|(\n))#{1,6} (.+)\n/g, '$1$2').trim()
pkg.version = newVerNum
console.log(chalk.blue('new version: ') + chalk.green(newVerNum))
diff --git a/src/renderer/components/material/VersionModal.vue b/src/renderer/components/material/VersionModal.vue
index ddc89780..2d398110 100644
--- a/src/renderer/components/material/VersionModal.vue
+++ b/src/renderer/components/material/VersionModal.vue
@@ -3,17 +3,17 @@ material-modal(:show="version.showModal" @close="handleClose" v-if="version.newV
main(:class="$style.main" v-if="version.isDownloaded")
h2 🚀程序更新🚀
- div.scroll(:class="$style.info")
+ div.scroll.select(:class="$style.info")
div(:class="$style.current")
h3 最新版本:{{version.newVersion.version}}
h3 当前版本:{{version.version}}
h3 版本变化:
- p(:class="$style.desc" v-html="version.newVersion.desc")
+ pre(:class="$style.desc" v-text="version.newVersion.desc")
div(:class="[$style.history, $style.desc]" v-if="history.length")
h3 历史版本:
div(:class="$style.item" v-for="ver in history")
h4 v{{ver.version}}
- p(v-html="ver.desc")
+ pre(v-text="ver.desc")
div(:class="$style.footer")
div(:class="$style.desc")
p 新版本已下载完毕,
@@ -27,17 +27,17 @@ material-modal(:show="version.showModal" @close="handleClose" v-if="version.newV
main(:class="$style.main" v-else-if="version.isError && !version.isUnknow && version.newVersion.version != version.version")
h2 ❌ 版本更新出错 ❌
- div.scroll(:class="$style.info")
+ div.scroll.select(:class="$style.info")
div(:class="$style.current")
h3 最新版本:{{version.newVersion.version}}
h3 当前版本:{{version.version}}
h3 版本变化:
- p(:class="$style.desc" v-html="version.newVersion.desc")
+ pre(:class="$style.desc" v-text="version.newVersion.desc")
div(:class="[$style.history, $style.desc]" v-if="history.length")
h3 历史版本:
div(:class="$style.item" v-for="ver in history")
h4 v{{ver.version}}
- p(v-html="ver.desc")
+ pre(v-text="ver.desc")
div(:class="$style.footer")
div(:class="$style.desc")
@@ -58,7 +58,7 @@ material-modal(:show="version.showModal" @close="handleClose" v-if="version.newV
main(:class="$style.main" v-else-if="version.isDownloading && version.isTimeOut && !version.isUnknow")
h2 ❗️ 新版本下载超时 ❗️
div(:class="$style.desc")
- p 你当前所在网络访问GitHub较慢,导致新版本下载超时(已经下了半个钟了😳),建议手动更新版本!
+ p 你当前所在网络访问GitHub较慢,导致新版本下载超时(已经下了半个钟了😳),你仍可选择继续等,但墙裂建议手动更新版本!
p
| 你可以去
material-btn(min @click="handleOpenUrl('https://github.com/lyswhut/lx-music-desktop/releases')" tips="点击打开") 软件发布页
@@ -75,7 +75,7 @@ material-modal(:show="version.showModal" @close="handleClose" v-if="version.newV
main(:class="$style.main" v-else-if="version.isUnknow")
h2 ❓ 获取最新版本信息失败 ❓
- div.scroll(:class="$style.info")
+ div.scroll.select(:class="$style.info")
div(:class="$style.current")
h3 当前版本:{{version.version}}
div(:class="$style.desc")
@@ -94,17 +94,17 @@ material-modal(:show="version.showModal" @close="handleClose" v-if="version.newV
main(:class="$style.main" v-else)
h2 🌟发现新版本🌟
- div.scroll(:class="$style.info")
+ div.scroll.select(:class="$style.info")
div(:class="$style.current")
h3 最新版本:{{version.newVersion.version}}
h3 当前版本:{{version.version}}
h3 版本变化:
- p(:class="$style.desc" v-html="version.newVersion.desc")
+ pre(:class="$style.desc" v-text="version.newVersion.desc")
div(:class="[$style.history, $style.desc]" v-if="history.length")
h3 历史版本:
div(:class="$style.item" v-for="ver in history")
h4 v{{ver.version}}
- p(v-html="ver.desc")
+ pre(v-text="ver.desc")
div(:class="$style.footer")
div(:class="$style.desc")
@@ -207,6 +207,11 @@ export default {
font-size: 14px;
line-height: 1.3;
}
+ pre {
+ white-space: pre-wrap;
+ text-align: justify;
+ margin-top: 10px;
+ }
}
.info {
diff --git a/src/renderer/store/actions.js b/src/renderer/store/actions.js
index ed8b8ec1..266dd7d5 100644
--- a/src/renderer/store/actions.js
+++ b/src/renderer/store/actions.js
@@ -19,16 +19,31 @@ export default {
},
getVersionInfo2(state, retryNum = 0) {
return new Promise((resolve, reject) => {
- httpGet('https://cdn.stsky.cn/lx-music/desktop/version.json', {
+ httpGet('https://gitee.com/lyswhut/lx-music-desktop-versions/raw/master/version.json', {
timeout: 20000,
}, (err, resp, body) => {
+ if (!err && !body.version) err = new Error(JSON.stringify(body))
if (err) {
return ++retryNum > 3
- ? reject(err)
+ ? this.dispatch('getVersionInfo3').then(resolve).catch(reject)
: this.dispatch('getVersionInfo2', retryNum).then(resolve).catch(reject)
}
resolve(body)
})
})
},
+ getVersionInfo3(state, retryNum = 0) {
+ return new Promise((resolve, reject) => {
+ httpGet('https://cdn.stsky.cn/lx-music/desktop/version.json', {
+ timeout: 20000,
+ }, (err, resp, body) => {
+ if (err) {
+ return ++retryNum > 3
+ ? reject(err)
+ : this.dispatch('getVersionInfo3', retryNum).then(resolve).catch(reject)
+ }
+ resolve(body)
+ })
+ })
+ },
}
From 2a74abdef432b53df3bc9b25d677c89720c2b031 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Thu, 28 Jan 2021 10:22:26 +0800
Subject: [PATCH 030/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dxm=E6=BA=90=E9=AA=8C?=
=?UTF-8?q?=E8=AF=81=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 1 +
.../xm_verify/xm_verify_view.js | 41 ++++++++++++-------
src/renderer/utils/music/xm/util.js | 2 +-
3 files changed, 29 insertions(+), 15 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index baaeb038..36bc704a 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -13,6 +13,7 @@
- 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
- 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
+- 修复xm搜索源验证问题
### 其他
diff --git a/src/main/rendererEvents/xm_verify/xm_verify_view.js b/src/main/rendererEvents/xm_verify/xm_verify_view.js
index c9ce121f..22df05ef 100644
--- a/src/main/rendererEvents/xm_verify/xm_verify_view.js
+++ b/src/main/rendererEvents/xm_verify/xm_verify_view.js
@@ -32,22 +32,35 @@ mainHandle(ipcMainWindowNames.handle_xm_verify_open, (event, url) => new Promise
disableHtmlFullscreenWindowResize: true,
},
})
- view.webContents.on('did-finish-load', () => {
- if (/punish\?/.test(view.webContents.getURL())) return
- let ses = view.webContents.session
- ses.cookies.get({ name: 'x5sec' })
- .then(async([x5sec]) => {
+ // view.webContents.on('did-finish-load', () => {
+ // if (/punish\?/.test(view.webContents.getURL())) return
+ // let ses = view.webContents.session
+ // ses.cookies.get({ name: 'x5sec' })
+ // .then(async([x5sec]) => {
+ // isActioned = true
+ // await closeView()
+ // if (!x5sec) return reject(new Error('get x5sec failed'))
+ // resolve(x5sec.value)
+ // }).catch(async err => {
+ // isActioned = true
+ // await closeView()
+ // reject(err)
+ // })
+ // })
+ view.webContents.session.webRequest.onCompleted({ urls: ['*://www.xiami.com/*'] }, details => {
+ if (/\/_____tmd_____\/slide\?/.test(details.url)) {
+ for (const item of details.responseHeaders['set-cookie']) {
+ if (!/^x5sec=/.test(item)) continue
+ const x5sec = /x5sec=(\w+);.+$/.exec(item)
isActioned = true
- await closeView()
- if (!x5sec) return reject(new Error('get x5sec failed'))
- resolve(x5sec.value)
- }).catch(async err => {
- isActioned = true
- await closeView()
- reject(err)
- })
+ closeView().finally(() => {
+ if (!x5sec) return reject(new Error('get x5sec failed'))
+ resolve(x5sec[1])
+ })
+ }
+ }
})
-
+ // console.log(url)
global.modules.mainWindow.setBrowserView(view)
const windowSizeInfo = getWindowSizeInfo(global.appSetting)
view.setBounds({ x: (windowSizeInfo.width - 380) / 2, y: ((windowSizeInfo.height - 320 + 52) / 2), width: 380, height: 320 })
diff --git a/src/renderer/utils/music/xm/util.js b/src/renderer/utils/music/xm/util.js
index de8fa799..d8b30f08 100644
--- a/src/renderer/utils/music/xm/util.js
+++ b/src/renderer/utils/music/xm/util.js
@@ -96,7 +96,7 @@ export const xmRequest = (path, params = '') => {
if (resp.body.code !== 'SUCCESS' && resp.body.rgv587_flag == 'sm') {
window.globalObj.xm.isShowVerify = true
return wait(300).then(() => {
- return rendererInvoke(NAMES.mainWindow.handle_xm_verify_open, 'https:' + resp.body.url).then(x5sec => {
+ return rendererInvoke(NAMES.mainWindow.handle_xm_verify_open, /^https:/.test(resp.body.url) ? resp.body.url : 'https:' + resp.body.url).then(x5sec => {
handleSaveToken({ cookies: { x5sec } })
// console.log(x5sec)
window.globalObj.xm.isShowVerify = false
From 006da66028bbae652fbacf3caf9a5bd121fbcbc3 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Thu, 28 Jan 2021 14:09:22 +0800
Subject: [PATCH 031/132] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=AD=8C=E5=8D=95?=
=?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=8D=A2=E6=BA=90=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/views/Setting.vue | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/renderer/views/Setting.vue b/src/renderer/views/Setting.vue
index c8830bfb..27c9ad8b 100644
--- a/src/renderer/views/Setting.vue
+++ b/src/renderer/views/Setting.vue
@@ -719,13 +719,18 @@ export default {
}
},
exportPlayList(path) {
- const data = {
+ const data = JSON.parse(JSON.stringify({
type: 'playList',
data: [
this.defaultList,
this.loveList,
...this.userList,
],
+ }))
+ for (const list of data.data) {
+ for (const item of list.list) {
+ if (item.otherSource) delete item.otherSource
+ }
}
this.handleSaveFile(path, JSON.stringify(data))
},
@@ -750,7 +755,7 @@ export default {
}
},
async exportAllData(path) {
- let allData = {
+ let allData = JSON.parse(JSON.stringify({
type: 'allData',
setting: Object.assign({ version: this.settingVersion }, this.setting),
playList: [
@@ -758,6 +763,11 @@ export default {
this.loveList,
...this.userList,
],
+ }))
+ for (const list of allData.playList) {
+ for (const item of list.list) {
+ if (item.otherSource) delete item.otherSource
+ }
}
this.handleSaveFile(path, JSON.stringify(allData))
},
From 2cc8af71d05edfdfc6e395e8008a0f26518bd327 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Fri, 29 Jan 2021 10:18:48 +0800
Subject: [PATCH 032/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=8A=A8?=
=?UTF-8?q?=E6=8D=A2=E6=BA=90=E9=81=87=E5=88=B0=E4=B8=8D=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E7=9A=84=E6=BA=90=E6=97=B6=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE?=
=?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/components/core/Player.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/components/core/Player.vue b/src/renderer/components/core/Player.vue
index ac73b076..2fb13e46 100644
--- a/src/renderer/components/core/Player.vue
+++ b/src/renderer/components/core/Player.vue
@@ -620,7 +620,7 @@ export default {
console.log('find otherSource', otherSource)
if (otherSource.length) {
for (const item of otherSource) {
- if (retryedSource.includes(item.source)) continue
+ if (retryedSource.includes(item.source) || !this.assertApiSupport(item.source)) continue
console.log('try toggle to: ', item.source, item.name, item.singer, item.interval)
return this.setUrl(item, isRefresh, false, retryedSource, originMusic)
}
From f53fb071f0217e1ff4cd49a17f24dc539bc066f6 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Fri, 29 Jan 2021 22:24:37 +0800
Subject: [PATCH 033/132] =?UTF-8?q?=E6=9B=B4=E6=96=B0electron=E5=88=B09.4.?=
=?UTF-8?q?2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 8 ++++----
package.json | 2 +-
publish/changeLog.md | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c7e48e0e..54903caf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7027,9 +7027,9 @@
}
},
"electron": {
- "version": "9.4.1",
- "resolved": "https://registry.npm.taobao.org/electron/download/electron-9.4.1.tgz",
- "integrity": "sha1-YqKq5M2T8bVteUpHVBUFpxZUF3o=",
+ "version": "9.4.2",
+ "resolved": "https://registry.npm.taobao.org/electron/download/electron-9.4.2.tgz",
+ "integrity": "sha1-DHbfw9MXEIraxmhEuGip4uV9SPU=",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@@ -13976,7 +13976,7 @@
},
"serialize-error": {
"version": "7.0.1",
- "resolved": "https://registry.npm.taobao.org/serialize-error/download/serialize-error-7.0.1.tgz",
+ "resolved": "https://registry.npm.taobao.org/serialize-error/download/serialize-error-7.0.1.tgz?cache=0&sync_timestamp=1611483289576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-error%2Fdownload%2Fserialize-error-7.0.1.tgz",
"integrity": "sha1-8TYLBEf2H/tIPsQVfHN/q313jhg=",
"dev": true,
"optional": true,
diff --git a/package.json b/package.json
index 81c7fbe9..9166701b 100644
--- a/package.json
+++ b/package.json
@@ -178,7 +178,7 @@
"cross-env": "^7.0.3",
"css-loader": "^4.3.0",
"del": "^6.0.0",
- "electron": "^9.4.1",
+ "electron": "^9.4.2",
"electron-builder": "^22.9.1",
"electron-debug": "^3.2.0",
"electron-devtools-installer": "^3.1.1",
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 36bc704a..49be17dc 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -17,4 +17,4 @@
### 其他
-- 更新electron到9.4.1
+- 更新electron到9.4.2
From c6f49984a7152af88680cc38c77cba1881199f06 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 30 Jan 2021 12:53:39 +0800
Subject: [PATCH 034/132] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4?=
=?UTF-8?q?=E5=BC=B9=E5=87=BA=E5=B1=82=E5=8A=A8=E7=94=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/assets/styles/animate.less | 35 ++++++++++++++++++++++
src/renderer/components/material/Modal.vue | 4 +--
2 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/src/renderer/assets/styles/animate.less b/src/renderer/assets/styles/animate.less
index 2258ad96..96081c80 100644
--- a/src/renderer/assets/styles/animate.less
+++ b/src/renderer/assets/styles/animate.less
@@ -871,6 +871,41 @@
transform: scale(1);
}
}
+@keyframes hinge {
+ 0% {
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 20%,
+ 60% {
+ -webkit-transform: rotate3d(0, 0, 1, 80deg);
+ transform: rotate3d(0, 0, 1, 80deg);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 40%,
+ 80% {
+ -webkit-transform: rotate3d(0, 0, 1, 60deg);
+ transform: rotate3d(0, 0, 1, 60deg);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 700px, 0);
+ transform: translate3d(0, 700px, 0);
+ opacity: 0;
+ }
+}
.flipInX {
backface-visibility: visible !important;
diff --git a/src/renderer/components/material/Modal.vue b/src/renderer/components/material/Modal.vue
index 83a4f4fa..d9981428 100644
--- a/src/renderer/components/material/Modal.vue
+++ b/src/renderer/components/material/Modal.vue
@@ -74,9 +74,9 @@ export default {
'slideOutLeft',
'slideOutRight',
'slideOutUp',
- 'hinge',
+ // 'hinge',
],
- inClass: 'animated flipInX',
+ inClass: 'animated jackInTheBox',
outClass: 'animated flipOutX',
unwatchFn: null,
}
From d0328f17e150ab269cf850dafb8f7adf61ec6ddd Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 30 Jan 2021 13:14:33 +0800
Subject: [PATCH 035/132] =?UTF-8?q?=E5=8F=91=E5=B8=83v1.7.0=E7=89=88?=
=?UTF-8?q?=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 23 +++++++++++++++++++++++
package.json | 4 ++--
publish/utils/updateChangeLog.js | 3 ++-
publish/version.json | 2 +-
4 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9ba211cf..15e9e162 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,29 @@ Project versioning adheres to [Semantic Versioning](http://semver.org/).
Commit convention is based on [Conventional Commits](http://conventionalcommits.org).
Change log format is based on [Keep a Changelog](http://keepachangelog.com/).
+## [1.7.0](https://github.com/lyswhut/lx-music-desktop/compare/v1.6.1...v1.7.0) - 2021-01-30
+
+### 新增
+
+- 搜索界面新增搜索状态的提示
+- 新增“稍后播放”功能,可在歌曲列表右键菜单使用
+- 新增“记住播放进度”功能的控制,该功能默认不再开启,可到播放设置-记住播放进度开启
+
+### 优化
+
+- 优化播放歌曲换源匹配
+- 优化设置界面设置项的展示
+
+### 修复
+
+- 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
+- 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
+- 修复xm搜索源验证问题
+
+### 其他
+
+- 更新electron到9.4.2
+
## [1.6.1](https://github.com/lyswhut/lx-music-desktop/compare/v1.6.0...v1.6.1) - 2021-01-13
### 优化
diff --git a/package.json b/package.json
index 9166701b..e487010e 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "lx-music-desktop",
- "version": "1.6.1",
- "description": "一个免费的音乐下载助手",
+ "version": "1.7.0",
+ "description": "一个免费的音乐查找助手",
"main": "./dist/electron/main.js",
"productName": "lx-music-desktop",
"scripts": {
diff --git a/publish/utils/updateChangeLog.js b/publish/utils/updateChangeLog.js
index a966a0ca..91a755d0 100644
--- a/publish/utils/updateChangeLog.js
+++ b/publish/utils/updateChangeLog.js
@@ -44,7 +44,8 @@ module.exports = async newVerNum => {
desc: version.desc,
})
version.version = newVerNum
- version.desc = newMDChangeLog.replace(/(?:^|(\n))#{1,6} (.+)\n/g, '$1$2').trim()
+ version.desc = newChangeLog
+ // version.desc = newMDChangeLog.replace(/(?:^|(\n))#{1,6} (.+)\n/g, '$1$2').trim()
pkg.version = newVerNum
console.log(chalk.blue('new version: ') + chalk.green(newVerNum))
diff --git a/publish/version.json b/publish/version.json
index 95fc9c38..ca4bd10c 100644
--- a/publish/version.json
+++ b/publish/version.json
@@ -1 +1 @@
-{"version":"1.6.1","desc":"优化
\n\n修复
\n\n- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
\n- 修复自动换源导致的搜索列表每页变成10条数据的问题
\n- 降级electron到9.3.3修复部分系统没有声音的问题
\n
\n","history":[{"version":"1.6.0","desc":"新增
\n\n- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
\n- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
\n- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
\n- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
\n- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
\n- 我的列表右键菜单添加搜索当前歌曲功能
\n- 新增
-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动 \n- 新增播放自动换源功能~
\n
\n变更
\n\n-nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除 \n
\n修复
\n\n- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
\n- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
\n- 修复
-dt(原来的-nt)启动参数不真正生效的问题 \n
\n"},{"version":"1.5.0","desc":"新增
\n\n- 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
\n
\n优化
\n\n- 优化软件启动时恢复上一次播放的歌曲进度功能
\n
\n修复
\n\n- 修复MAC平台上下载歌曲封面嵌入无法显示的问题
\n- 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
\n- 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
\n- 修复某些酷狗源歌单链接无法打开的问题
\n
\n"},{"version":"1.4.1","desc":"修复
\n\n- 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
\n- 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
\n- 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
\n
\n"},{"version":"1.4.0","desc":"新增
\n\n- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
\n- 新增播放进度信息保存
\n
\n优化
\n\n修复
\n\n- 修复专辑图片无法嵌入的问题
\n- 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
\n- 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
\n- 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
\n
\n"},{"version":"1.3.0","desc":"新增
\n\n- 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
\n
\n优化
\n\n修复
\n\n- 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
\n
\n"},{"version":"1.2.2","desc":"修复
\n\n- 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
\n
\n"},{"version":"1.2.1","desc":"优化
\n\n- Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加
-nt参数启动 \n
\n修复
\n\n- 修复聚合搜索的分页问题
\n- 修复代理输入框输入的内容不生效的问题
\n
\n"},{"version":"1.2.0","desc":"提前祝大家中秋&国庆快乐~
\n新增
\n\n- 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
\n
\n优化
\n\n- 优化我的列表滚动条位置的保存逻辑
\n- 更新设置-备份与恢复功能的描述
\n- 优化软件内鼠标悬停的提示界面
\n
\n修复
\n\n- 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
\n- 修复网易云KTV嗨榜无法加载的问题
\n- 修复初始化搜索历史列表功能
\n- 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
\n- 修复歌曲封面无法嵌入的Bug
\n- 修复酷狗歌词格式问题
\n- 修复关闭切换动画时从搜索候选列表点击内容无效的问题
\n
\n其他
\n\n- 更新 Electron 到 v10.1.3
\n
\n"},{"version":"1.1.1","desc":"修复
\n\n"},{"version":"1.1.0","desc":"新增
\n\n- 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
\n- 新增
不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置 \n- 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
\n- 新增
显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译 \n- 新增
显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画 \n- 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
\n
\n修复
\n\n- 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
\n- 修复我的列表搜索对最后一个字符的匹配问题
\n- 修复窗口在
较小模式下最小化/关闭按钮不居中的问题 \n
\n优化
\n\n- 桌面歌词当前播放行改为上下居中
\n- 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
\n- 优化随机播放机制,现在通过
下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲 \n- 当下载目录没有写入权限时将显示没有写入权限的提示
\n
\n移除
\n\n- 移除默认的全局声音媒体快捷键接管
\n- 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
\n
\n其他
\n\n"},{"version":"1.0.1","desc":"优化
\n\n修复
\n\n- 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
\n
\n"},{"version":"1.0.0","desc":"新增
\n\n- 新增
rpm、pacman包的构建(未测试可用性) \n- 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
\n- 新增歌曲列表右击菜单
\n- 新增自定义列表,创建列表的按钮在表头
#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑 \n- 改变排行榜布局,新增更多排行榜
\n- 新增我的列表右键菜单复制歌曲名选项
\n- 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
\n- 新增“清热板蓝”皮肤
\n- 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
\n- 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
\n- 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
\n- 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
\n- 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
\n- 新增我的列表内歌曲搜索,在我的列表按
ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框) \n- 新增托盘图标样式设置,可到设置-其他切换
\n- 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
\n- 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
\n- 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开
%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储 \n- 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
\n
\n优化
\n\n- 改进歌曲切换时的歌词滚动效果
\n- 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
\n- 改进歌单列表展示
\n- 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
\n- 压缩备份数据文件大小
\n
\n修复
\n\n- 修复按住
Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题 \n- 修复Linux版开启托盘无法退出的问题
\n- 修复某些情况下可能导致的音源输出问题
\n- 修复某些情况下无法开始下载任务的问题
\n- 修复 tab 组件边框溢出问题
\n- 修复错误更新试听列表外的歌曲时间的问题
\n- 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
\n- 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
\n- 修复无法检测最新版本时弹窗提示的显示
\n- 修复某些情况下从托盘还原窗口后无法操作的问题
\n- 修复Linux下无法
ctrl+a全选的问题 \n- 修复主题背景图片覆盖不全的问题
\n- 修复聚合搜索音源标签的皮肤配色问题
\n
\n更变
\n\n- 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
\n- 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
\n- 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
\n- 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
\n
\n其他
\n\n"},{"version":"0.18.2","desc":"修复
\n\n- 修复开启托盘时,可能导致无法自动更新的问题
\n
\n"},{"version":"0.18.1","desc":"优化
\n\n- win下的托盘图标使用更大的图片
\n- 加长软件协议的强制停留时间
\n
\n修复
\n\n"},{"version":"0.18.0","desc":"新增
\n\n- 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
\n- 添加软件启动时是否自动聚焦搜索框的设置
\n- 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
\n- 新增打开酷狗源用户歌单
\n- 新增使用协议
\n- 新增虾米音源
\n- 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
\n- 新增“超大”、“巨大”窗口尺寸
\n- 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次)
\n
\n优化
\n\n- 略微加深音量条底色
\n- 优化其他界面细节
\n- 优化英语翻译,感谢 @CPCer
\n- 优化程序的流畅度
\n
\n更变
\n\n- 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
\n- 移除列表多选框,现在多选需要键盘配合,想要多选前需按下
Shift或Ctrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用Shift或Ctrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按Shift或Alt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键) \n- 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
\n
\n修复
\n\n- 修复网易源某些歌曲提示没有可播放的音质的问题
\n- 修复下载管理刷新URL失败时不标记任务下载失败的问题
\n- 修复列表导出的文字描述,感谢 @CPCer
\n- 修复歌曲切换方式无法取消勾选的问题
\n- 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
\n- 修正播放列表浮动按钮错误的文字提示
\n
\n移除
\n\n- 因128k以外的音质失效,So 禁止所有128k外的音质下载
\n
\n其他
\n更新 Electron 到 8.2.5
\n"},{"version":"0.17.0","desc":"新增
\n\n- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
\n- 新增无法打开外部歌单FAQ
\n- 新增启动参数
search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰" \n- 新增音频输出设置
\n- 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
\n- 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
\n- 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
\n- 新增热搜词,默认关闭,可到设置开启
\n- 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
\n
\n优化
\n\n- 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
\n- 优化播放进度条的动画效果
\n- 现在添加下载任务时,后面添加的任务会在列表顶部插入
\n- 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
\n- 优化右上角最小化/关闭按钮布局
\n
\n修复
\n\n- 修复歌单详情处于加载状态时无法返回的问题
\n- 修复鼠标右击复制列表内容时会复制音质标签的问题
\n- 修复
0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题 \n- 修复下载列表在某些情况下无法取消全选的问题
\n
\n其他
\n\n"},{"version":"0.16.0","desc":"新增
\n\n- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
\n- 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
\n- 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
\n- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
\n
\n优化
\n\n- 优化木叶之村主题翻页器背景颜色
\n- 优化各个主题音质标签颜色
\n- 优化其他一些界面细节及用户交互效果
\n
\n修复
\n\n- 修复启用透明窗口鼠标不穿透的bug
\n- 修复大窗口时设置的音乐来源选项不换行的问题
\n- 修复某些情况下暂停任务会自动开始任务的问题
\n- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
\n- 修复酷狗源歌单热门标签歌单列表无法加载问题
\n- 修复QQ源歌单热门标签歌单列表无法加载问题
\n
\n其他
\n\n"},{"version":"0.15.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复歌曲下载列表无法加载的问题
\n- 修复歌曲下载任务数大于最大下载任务数的问题
\n- 修复某些情况下歌曲下载错误的问题
\n- 修复下载列表数据没有被迁移直接被丢弃的问题
\n
\n"},{"version":"0.14.1","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
\n
\n"},{"version":"0.14.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n新增
\n\n- 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
\n- 恢复QQ音乐源128k音质试听
\n- 新增不强制win7开启透明效果即可使用,但要配置运行参数
-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数” \n- 新增“新年快乐”主题,可自行切换体验
\n
\n优化
\n\n- 减淡各个主题的歌曲列表分隔线颜色
\n- 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
\n- 更新改进的歌词播放插件,现在歌词的播放显示将更准确
\n
\n修复
\n\n- 修复咪咕源无法搜索的问题
\n- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
\n- 修复导入设置窗口大小、代理设置不立即生效的问题
\n- 修复在线音乐列表获取失败时无限循环请求的问题
\n
\n其他
\n\n- 将软件设置与播放列表分离存储成两个文件
\n- 更新 Electron 到 7.1.9
\n
\n"},{"version":"0.13.1","desc":"修复
\n\n其他
\n\n- 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
\n
\n"},{"version":"0.13.0","desc":"新增
\n\n- 新增搜索框搜索建议键盘上下方向键选择功能
\n- 聚合搜索新增音源显示
\n- 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
\n
\n优化
\n\n修复
\n\n- 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
\n- 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
\n
\n移除
\n\n其他
\n\n- 更新electron到7.1.5
\n- 更新vue到2.6.11
\n
\n"},{"version":"0.12.1","desc":"优化
\n\n- 优化定位歌曲时的列表滚动机制
\n- 优化链接点击效果
\n
\n修复
\n\n- 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
\n- 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
\n- 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
\n
\n其他
\n\n"},{"version":"0.12.0","desc":"由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
\n新增
\n\n- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
\n
\n优化
\n\n- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
\n- 注意:目前仍然无法暂停处于链接获取状态中的任务
\n
\n修复
\n\n- 修复Linux deb版本
.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈! \n- 修复下载列表歌曲状态分类列表操作Bug
\n- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
\n- 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
\n
\n"},{"version":"0.11.0","desc":"新增
\n\n- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
\n- 新增下载管理的任务状态分类
\n- 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
\n
\n优化
\n\n- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
\n
\n"},{"version":"0.10.0","desc":"优化
\n\n- 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
\n
\n修复
\n\n- 修复酷我源搜索提示、排行榜无法获取的问题
\n- 修复咪咕源无法播放的问题
\n
\n"},{"version":"0.9.1","desc":"修复
\n\n"},{"version":"0.9.0","desc":"新增
\n\n- 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
\n- 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
\n
\n修复
\n\n- 修复搜索提示失效的问题
\n- 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
\n
\n"},{"version":"0.8.2","desc":"修复
\n\n- 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
\n
\n"},{"version":"0.8.1","desc":"修复
\n\n- 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
\n
\n"},{"version":"0.8.0","desc":"新增
\n\n- 新增网易云源歌曲搜索
\n- 新增网易云源歌单
\n- 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
\n- 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
\n
\n优化
\n\n- 优化搜索框搜索体验
\n- 优化音量条交互视觉效果
\n- 缓存歌单详情列表数据
\n
\n修复
\n\n- 修复QQ源歌单无法翻页Bug
\n- 修复默认列表没有创建时无法显示收藏列表的Bug
\n- 修复网易云128k直接试听
\n- 修复歌曲音质不存在时仍然播放或下载的Bug
\n- 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
\n
\n"},{"version":"0.7.0","desc":"新增
\n\n- 新增“我的收藏”本地播放列表
\n- 新增缓存清理功能,可到设置-其他查看与清理软件缓存
\n- 新增QQ音乐源搜索
\n- 新增咪咕源搜索
\n- 新增咪咕源歌单
\n- 新增咪咕源排行榜
\n- 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
\n
\n优化
\n\n- 优化选择框动画效果
\n- 尝试优化选我的音乐列表内容很多时多选的卡顿问题
\n
\n修复
\n\n- 修复列表延迟显示的Bug
\n- 修复QQ音源128k音质试听
\n
\n"},{"version":"0.6.2","desc":"祝贺祖国成立70周年~!
\n新增
\n\n修复
\n\n- 修正火影皮肤名字
\n- 修复当试听列表为空时,无法切到其他界面的Bug
\n- 修复百度源搜索结果为空时的接口处理Bug
\n- 恢复酷狗其他音质播放
\n
\n"},{"version":"0.6.1","desc":"新增
\n\n- 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
\n- 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
\n
\n优化
\n\n- 新增DNS解析缓存,加快请求速度
\n- 优化代码逻辑,减少软件对系统资源的占用
\n- 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
\n- 优化下拉列表动画效果
\n
\n修复
\n\n- 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
\n- 修复其他一些小Bug
\n
\n移除
\n\n- 移除
192k 音质 \n- 移除酷我音源
ape 音质,无损推荐 flac 格式 \n
\n"},{"version":"0.6.0","desc":"新增
\n\n- 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
\n- 新增代理功能
\n
\n优化
\n\n- 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
\n
\n修复
\n\n- 修复试听列表没有歌曲时会显示列表加载中的Bug
\n- 修复切换歌单列表详情时的UI Bug
\n
\n"},{"version":"0.5.5","desc":"新增
\n\n- 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
\n- 新增 MAC 版本退出快捷键支持
\n- 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
\n
\n修复
\n\n- 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
\n- 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
\n- 修复 MAC 版本不能复制粘贴的问题
\n
\n"},{"version":"0.5.4","desc":"移除
\n\n- 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
\n- 为了稳妥起见,暂时移除FLAC格式的meta信息修改
\n- MP3格式无此问题
\n
\n"},{"version":"0.5.3","desc":"优化
\n\n修复
\n\n- 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
\n
\n"},{"version":"0.5.2","desc":"新增
\n\n- 新增强迫症设置-离开搜索界面时是否清空搜索框
\n- 设置-关于板块新增常见问题链接
\n- 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
\n
\n优化
\n\n- 略微优化最小化按钮字符
\n- 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
\n
\n修复
\n\n移除
\n\n- 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
\n
\n"},{"version":"0.5.1","desc":"新增
\n\n- 新增右上角最小化/关闭按钮鼠标滑过符号
\n- 新增下载列表定位文件按钮
\n
\n修复
\n\n- 修复百度源歌单全部分类无法加载的问题
\n- 修复更新弹窗无法弹出的问题
\n
\n"},{"version":"0.5.0","desc":"新增
\n\n- 新增封面嵌入(默认开启,可到设置-下载设置关闭)
\n- 新增歌词下载(默认关闭,可到设置-下载设置开启)
\n- 新增单例应用功能(实现软件单开功能,禁止软件多开)
\n
\n优化
\n\n修复
\n\n- 修复歌单无法翻页的问题
\n- 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
\n- 修复版本更新弹窗Bug
\n- 修复酷狗歌单推荐歌单出现在其他分类中的Bug
\n
\n"},{"version":"0.4.0","desc":"新增
\n\n- 新增歌单功能,目前支持酷我、酷狗、百度源歌单
\n- 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址与打赏地址
\n- 新增酷狗 电音热歌榜、DJ热歌榜
\n- 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
\n
\n移除
\n\n- 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
\n
\n"},{"version":"0.3.5","desc":"新增
\n\n- 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
\n
\n优化
\n\n- 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
\n
\n修复
\n\n- 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
\n- 修复歌词加载Bug
\n
\n"},{"version":"0.3.4","desc":"优化
\n\n- 减少接口不稳定带来的影响,适当增加请求等待时间
\n
\n修复
\n\n- 修复播放过程中URL过期不会刷新URL的问题
\n
\n"},{"version":"0.3.3","desc":"修复
\n\n- messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
\n- 修复设置界面更新出错时仍然显示更新下载中的问题
\n- 修复手动定位播放进度条时存在偏差的问题
\n- 屏蔽播放器中没有歌曲时对进度条的点击
\n
\n"},{"version":"0.3.2","desc":"新增
\n\n"},{"version":"0.3.1","desc":"修复
\n\n"},{"version":"0.3.0","desc":"新增
\n\n- 新增MAC及Linux版本(需要的可自行下载)
\n- 新增音量调整
\n- 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
\n- 新增更新出错时的弹窗提示
\n- 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
\n
\n修复
\n\n- 强制把临时接口设置回
messoer 接口 \n
\n"},{"version":"0.2.3","desc":"新增
\n\n- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
\n
\n修复
\n\n- 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
\n- 修复某些情况下歌曲链接未能缓存的问题
\n
\n移除
\n\n- 移除临时接口(因服务器被攻击,本接口已关闭)
\n- 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
\n
\n"},{"version":"0.2.2","desc":"修复
\n\n- 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
\n- 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
\n
\n"},{"version":"0.2.1","desc":"优化
\n\n- 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
\n
\n修复
\n\n- 修复歌曲加载无法加载时自动切换混乱的Bug
\n- 修复移除列表最后一首歌曲时播放器不停止播放的问题
\n
\n"},{"version":"0.2.0","desc":"新增
\n\n- 新增百度音乐排行榜及其音乐直接试听与下载
\n- 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
\n- 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
\n
\n修复
\n\n- 修复更新弹窗历史版本描述多余的换行问题
\n- 修复歌曲无法播放的情况下歌词仍会播放的问题
\n
\n"},{"version":"0.1.6","desc":"修复
\n\n"},{"version":"0.1.5","desc":"新增
\n\n- 新增搜索列表批量试听与下载功能
\n- 新增排行榜列表批量试听与下载功能
\n- 新增试听列表批量移除与下载功能
\n- 新增下载列表批量开始、暂停与移除功能
\n
\n优化
\n\n"},{"version":"0.1.4","desc":"新增
\n\n- 新增音乐来源切换,可到设置页面-基本设置 look look !
\n- 为搜索结果列表添加多选功能。
\nP.S:暂时没想好多选后的操作按钮放哪… \n
\n优化
\n\n- 重构与改进checkbox组件,使其支持不定选中状态
\n- 完善上一个版本的http请求封装并切换部分请求到该方法上
\n- 优化其他一些细节
\n
\n"},{"version":"0.1.3","desc":"新增
\n\n修复
\n\n- 修复安装包许可协议乱码问题
\n- messoer 提供的接口已挂,暂时切换到临时接口!
\n
\n移除
\n\n- 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
\n
\n"},{"version":"0.1.2","desc":"修复
\n\n"},{"version":"0.1.1","desc":"新增
\n\n- QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
\n
\n优化
\n\n- 优化http请求机制
\n- 更新关于本软件说明
\n
\n修复
\n\n- 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
\n- 修复切换歌曲时仍然播放上一首歌曲的问题
\n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}
+{"version":"1.7.0","desc":"新增
\n\n- 搜索界面新增搜索状态的提示
\n- 新增“稍后播放”功能,可在歌曲列表右键菜单使用
\n- 新增“记住播放进度”功能的控制,该功能默认不再开启,可到播放设置-记住播放进度开启
\n
\n优化
\n\n- 优化播放歌曲换源匹配
\n- 优化设置界面设置项的展示
\n
\n修复
\n\n- 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
\n- 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
\n- 修复xm搜索源验证问题
\n
\n其他
\n\n","history":[{"version":"1.6.1","desc":"优化
\n\n修复
\n\n- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
\n- 修复自动换源导致的搜索列表每页变成10条数据的问题
\n- 降级electron到9.3.3修复部分系统没有声音的问题
\n
\n"},{"version":"1.6.0","desc":"新增
\n\n- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
\n- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
\n- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
\n- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
\n- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
\n- 我的列表右键菜单添加搜索当前歌曲功能
\n- 新增
-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动 \n- 新增播放自动换源功能~
\n
\n变更
\n\n-nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除 \n
\n修复
\n\n- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
\n- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
\n- 修复
-dt(原来的-nt)启动参数不真正生效的问题 \n
\n"},{"version":"1.5.0","desc":"新增
\n\n- 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
\n
\n优化
\n\n- 优化软件启动时恢复上一次播放的歌曲进度功能
\n
\n修复
\n\n- 修复MAC平台上下载歌曲封面嵌入无法显示的问题
\n- 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
\n- 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
\n- 修复某些酷狗源歌单链接无法打开的问题
\n
\n"},{"version":"1.4.1","desc":"修复
\n\n- 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
\n- 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
\n- 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
\n
\n"},{"version":"1.4.0","desc":"新增
\n\n- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
\n- 新增播放进度信息保存
\n
\n优化
\n\n修复
\n\n- 修复专辑图片无法嵌入的问题
\n- 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
\n- 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
\n- 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
\n
\n"},{"version":"1.3.0","desc":"新增
\n\n- 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
\n
\n优化
\n\n修复
\n\n- 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
\n
\n"},{"version":"1.2.2","desc":"修复
\n\n- 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
\n
\n"},{"version":"1.2.1","desc":"优化
\n\n- Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加
-nt参数启动 \n
\n修复
\n\n- 修复聚合搜索的分页问题
\n- 修复代理输入框输入的内容不生效的问题
\n
\n"},{"version":"1.2.0","desc":"提前祝大家中秋&国庆快乐~
\n新增
\n\n- 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
\n
\n优化
\n\n- 优化我的列表滚动条位置的保存逻辑
\n- 更新设置-备份与恢复功能的描述
\n- 优化软件内鼠标悬停的提示界面
\n
\n修复
\n\n- 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
\n- 修复网易云KTV嗨榜无法加载的问题
\n- 修复初始化搜索历史列表功能
\n- 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
\n- 修复歌曲封面无法嵌入的Bug
\n- 修复酷狗歌词格式问题
\n- 修复关闭切换动画时从搜索候选列表点击内容无效的问题
\n
\n其他
\n\n- 更新 Electron 到 v10.1.3
\n
\n"},{"version":"1.1.1","desc":"修复
\n\n"},{"version":"1.1.0","desc":"新增
\n\n- 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
\n- 新增
不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置 \n- 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
\n- 新增
显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译 \n- 新增
显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画 \n- 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
\n
\n修复
\n\n- 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
\n- 修复我的列表搜索对最后一个字符的匹配问题
\n- 修复窗口在
较小模式下最小化/关闭按钮不居中的问题 \n
\n优化
\n\n- 桌面歌词当前播放行改为上下居中
\n- 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
\n- 优化随机播放机制,现在通过
下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲 \n- 当下载目录没有写入权限时将显示没有写入权限的提示
\n
\n移除
\n\n- 移除默认的全局声音媒体快捷键接管
\n- 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
\n
\n其他
\n\n"},{"version":"1.0.1","desc":"优化
\n\n修复
\n\n- 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
\n
\n"},{"version":"1.0.0","desc":"新增
\n\n- 新增
rpm、pacman包的构建(未测试可用性) \n- 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
\n- 新增歌曲列表右击菜单
\n- 新增自定义列表,创建列表的按钮在表头
#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑 \n- 改变排行榜布局,新增更多排行榜
\n- 新增我的列表右键菜单复制歌曲名选项
\n- 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
\n- 新增“清热板蓝”皮肤
\n- 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
\n- 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
\n- 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
\n- 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
\n- 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
\n- 新增我的列表内歌曲搜索,在我的列表按
ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框) \n- 新增托盘图标样式设置,可到设置-其他切换
\n- 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
\n- 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
\n- 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开
%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储 \n- 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
\n
\n优化
\n\n- 改进歌曲切换时的歌词滚动效果
\n- 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
\n- 改进歌单列表展示
\n- 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
\n- 压缩备份数据文件大小
\n
\n修复
\n\n- 修复按住
Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题 \n- 修复Linux版开启托盘无法退出的问题
\n- 修复某些情况下可能导致的音源输出问题
\n- 修复某些情况下无法开始下载任务的问题
\n- 修复 tab 组件边框溢出问题
\n- 修复错误更新试听列表外的歌曲时间的问题
\n- 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
\n- 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
\n- 修复无法检测最新版本时弹窗提示的显示
\n- 修复某些情况下从托盘还原窗口后无法操作的问题
\n- 修复Linux下无法
ctrl+a全选的问题 \n- 修复主题背景图片覆盖不全的问题
\n- 修复聚合搜索音源标签的皮肤配色问题
\n
\n更变
\n\n- 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
\n- 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
\n- 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
\n- 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
\n
\n其他
\n\n"},{"version":"0.18.2","desc":"修复
\n\n- 修复开启托盘时,可能导致无法自动更新的问题
\n
\n"},{"version":"0.18.1","desc":"优化
\n\n- win下的托盘图标使用更大的图片
\n- 加长软件协议的强制停留时间
\n
\n修复
\n\n"},{"version":"0.18.0","desc":"新增
\n\n- 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
\n- 添加软件启动时是否自动聚焦搜索框的设置
\n- 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
\n- 新增打开酷狗源用户歌单
\n- 新增使用协议
\n- 新增虾米音源
\n- 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
\n- 新增“超大”、“巨大”窗口尺寸
\n- 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次)
\n
\n优化
\n\n- 略微加深音量条底色
\n- 优化其他界面细节
\n- 优化英语翻译,感谢 @CPCer
\n- 优化程序的流畅度
\n
\n更变
\n\n- 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
\n- 移除列表多选框,现在多选需要键盘配合,想要多选前需按下
Shift或Ctrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用Shift或Ctrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按Shift或Alt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键) \n- 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
\n
\n修复
\n\n- 修复网易源某些歌曲提示没有可播放的音质的问题
\n- 修复下载管理刷新URL失败时不标记任务下载失败的问题
\n- 修复列表导出的文字描述,感谢 @CPCer
\n- 修复歌曲切换方式无法取消勾选的问题
\n- 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
\n- 修正播放列表浮动按钮错误的文字提示
\n
\n移除
\n\n- 因128k以外的音质失效,So 禁止所有128k外的音质下载
\n
\n其他
\n更新 Electron 到 8.2.5
\n"},{"version":"0.17.0","desc":"新增
\n\n- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
\n- 新增无法打开外部歌单FAQ
\n- 新增启动参数
search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰" \n- 新增音频输出设置
\n- 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
\n- 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
\n- 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
\n- 新增热搜词,默认关闭,可到设置开启
\n- 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
\n
\n优化
\n\n- 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
\n- 优化播放进度条的动画效果
\n- 现在添加下载任务时,后面添加的任务会在列表顶部插入
\n- 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
\n- 优化右上角最小化/关闭按钮布局
\n
\n修复
\n\n- 修复歌单详情处于加载状态时无法返回的问题
\n- 修复鼠标右击复制列表内容时会复制音质标签的问题
\n- 修复
0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题 \n- 修复下载列表在某些情况下无法取消全选的问题
\n
\n其他
\n\n"},{"version":"0.16.0","desc":"新增
\n\n- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
\n- 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
\n- 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
\n- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
\n
\n优化
\n\n- 优化木叶之村主题翻页器背景颜色
\n- 优化各个主题音质标签颜色
\n- 优化其他一些界面细节及用户交互效果
\n
\n修复
\n\n- 修复启用透明窗口鼠标不穿透的bug
\n- 修复大窗口时设置的音乐来源选项不换行的问题
\n- 修复某些情况下暂停任务会自动开始任务的问题
\n- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
\n- 修复酷狗源歌单热门标签歌单列表无法加载问题
\n- 修复QQ源歌单热门标签歌单列表无法加载问题
\n
\n其他
\n\n"},{"version":"0.15.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复歌曲下载列表无法加载的问题
\n- 修复歌曲下载任务数大于最大下载任务数的问题
\n- 修复某些情况下歌曲下载错误的问题
\n- 修复下载列表数据没有被迁移直接被丢弃的问题
\n
\n"},{"version":"0.14.1","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
\n
\n"},{"version":"0.14.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n新增
\n\n- 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
\n- 恢复QQ音乐源128k音质试听
\n- 新增不强制win7开启透明效果即可使用,但要配置运行参数
-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数” \n- 新增“新年快乐”主题,可自行切换体验
\n
\n优化
\n\n- 减淡各个主题的歌曲列表分隔线颜色
\n- 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
\n- 更新改进的歌词播放插件,现在歌词的播放显示将更准确
\n
\n修复
\n\n- 修复咪咕源无法搜索的问题
\n- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
\n- 修复导入设置窗口大小、代理设置不立即生效的问题
\n- 修复在线音乐列表获取失败时无限循环请求的问题
\n
\n其他
\n\n- 将软件设置与播放列表分离存储成两个文件
\n- 更新 Electron 到 7.1.9
\n
\n"},{"version":"0.13.1","desc":"修复
\n\n其他
\n\n- 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
\n
\n"},{"version":"0.13.0","desc":"新增
\n\n- 新增搜索框搜索建议键盘上下方向键选择功能
\n- 聚合搜索新增音源显示
\n- 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
\n
\n优化
\n\n修复
\n\n- 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
\n- 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
\n
\n移除
\n\n其他
\n\n- 更新electron到7.1.5
\n- 更新vue到2.6.11
\n
\n"},{"version":"0.12.1","desc":"优化
\n\n- 优化定位歌曲时的列表滚动机制
\n- 优化链接点击效果
\n
\n修复
\n\n- 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
\n- 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
\n- 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
\n
\n其他
\n\n"},{"version":"0.12.0","desc":"由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
\n新增
\n\n- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
\n
\n优化
\n\n- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
\n- 注意:目前仍然无法暂停处于链接获取状态中的任务
\n
\n修复
\n\n- 修复Linux deb版本
.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈! \n- 修复下载列表歌曲状态分类列表操作Bug
\n- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
\n- 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
\n
\n"},{"version":"0.11.0","desc":"新增
\n\n- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
\n- 新增下载管理的任务状态分类
\n- 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
\n
\n优化
\n\n- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
\n
\n"},{"version":"0.10.0","desc":"优化
\n\n- 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
\n
\n修复
\n\n- 修复酷我源搜索提示、排行榜无法获取的问题
\n- 修复咪咕源无法播放的问题
\n
\n"},{"version":"0.9.1","desc":"修复
\n\n"},{"version":"0.9.0","desc":"新增
\n\n- 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
\n- 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
\n
\n修复
\n\n- 修复搜索提示失效的问题
\n- 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
\n
\n"},{"version":"0.8.2","desc":"修复
\n\n- 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
\n
\n"},{"version":"0.8.1","desc":"修复
\n\n- 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
\n
\n"},{"version":"0.8.0","desc":"新增
\n\n- 新增网易云源歌曲搜索
\n- 新增网易云源歌单
\n- 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
\n- 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
\n
\n优化
\n\n- 优化搜索框搜索体验
\n- 优化音量条交互视觉效果
\n- 缓存歌单详情列表数据
\n
\n修复
\n\n- 修复QQ源歌单无法翻页Bug
\n- 修复默认列表没有创建时无法显示收藏列表的Bug
\n- 修复网易云128k直接试听
\n- 修复歌曲音质不存在时仍然播放或下载的Bug
\n- 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
\n
\n"},{"version":"0.7.0","desc":"新增
\n\n- 新增“我的收藏”本地播放列表
\n- 新增缓存清理功能,可到设置-其他查看与清理软件缓存
\n- 新增QQ音乐源搜索
\n- 新增咪咕源搜索
\n- 新增咪咕源歌单
\n- 新增咪咕源排行榜
\n- 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
\n
\n优化
\n\n- 优化选择框动画效果
\n- 尝试优化选我的音乐列表内容很多时多选的卡顿问题
\n
\n修复
\n\n- 修复列表延迟显示的Bug
\n- 修复QQ音源128k音质试听
\n
\n"},{"version":"0.6.2","desc":"祝贺祖国成立70周年~!
\n新增
\n\n修复
\n\n- 修正火影皮肤名字
\n- 修复当试听列表为空时,无法切到其他界面的Bug
\n- 修复百度源搜索结果为空时的接口处理Bug
\n- 恢复酷狗其他音质播放
\n
\n"},{"version":"0.6.1","desc":"新增
\n\n- 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
\n- 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
\n
\n优化
\n\n- 新增DNS解析缓存,加快请求速度
\n- 优化代码逻辑,减少软件对系统资源的占用
\n- 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
\n- 优化下拉列表动画效果
\n
\n修复
\n\n- 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
\n- 修复其他一些小Bug
\n
\n移除
\n\n- 移除
192k 音质 \n- 移除酷我音源
ape 音质,无损推荐 flac 格式 \n
\n"},{"version":"0.6.0","desc":"新增
\n\n- 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
\n- 新增代理功能
\n
\n优化
\n\n- 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
\n
\n修复
\n\n- 修复试听列表没有歌曲时会显示列表加载中的Bug
\n- 修复切换歌单列表详情时的UI Bug
\n
\n"},{"version":"0.5.5","desc":"新增
\n\n- 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
\n- 新增 MAC 版本退出快捷键支持
\n- 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
\n
\n修复
\n\n- 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
\n- 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
\n- 修复 MAC 版本不能复制粘贴的问题
\n
\n"},{"version":"0.5.4","desc":"移除
\n\n- 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
\n- 为了稳妥起见,暂时移除FLAC格式的meta信息修改
\n- MP3格式无此问题
\n
\n"},{"version":"0.5.3","desc":"优化
\n\n修复
\n\n- 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
\n
\n"},{"version":"0.5.2","desc":"新增
\n\n- 新增强迫症设置-离开搜索界面时是否清空搜索框
\n- 设置-关于板块新增常见问题链接
\n- 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
\n
\n优化
\n\n- 略微优化最小化按钮字符
\n- 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
\n
\n修复
\n\n移除
\n\n- 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
\n
\n"},{"version":"0.5.1","desc":"新增
\n\n- 新增右上角最小化/关闭按钮鼠标滑过符号
\n- 新增下载列表定位文件按钮
\n
\n修复
\n\n- 修复百度源歌单全部分类无法加载的问题
\n- 修复更新弹窗无法弹出的问题
\n
\n"},{"version":"0.5.0","desc":"新增
\n\n- 新增封面嵌入(默认开启,可到设置-下载设置关闭)
\n- 新增歌词下载(默认关闭,可到设置-下载设置开启)
\n- 新增单例应用功能(实现软件单开功能,禁止软件多开)
\n
\n优化
\n\n修复
\n\n- 修复歌单无法翻页的问题
\n- 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
\n- 修复版本更新弹窗Bug
\n- 修复酷狗歌单推荐歌单出现在其他分类中的Bug
\n
\n"},{"version":"0.4.0","desc":"新增
\n\n- 新增歌单功能,目前支持酷我、酷狗、百度源歌单
\n- 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址与打赏地址
\n- 新增酷狗 电音热歌榜、DJ热歌榜
\n- 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
\n
\n移除
\n\n- 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
\n
\n"},{"version":"0.3.5","desc":"新增
\n\n- 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
\n
\n优化
\n\n- 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
\n
\n修复
\n\n- 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
\n- 修复歌词加载Bug
\n
\n"},{"version":"0.3.4","desc":"优化
\n\n- 减少接口不稳定带来的影响,适当增加请求等待时间
\n
\n修复
\n\n- 修复播放过程中URL过期不会刷新URL的问题
\n
\n"},{"version":"0.3.3","desc":"修复
\n\n- messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
\n- 修复设置界面更新出错时仍然显示更新下载中的问题
\n- 修复手动定位播放进度条时存在偏差的问题
\n- 屏蔽播放器中没有歌曲时对进度条的点击
\n
\n"},{"version":"0.3.2","desc":"新增
\n\n"},{"version":"0.3.1","desc":"修复
\n\n"},{"version":"0.3.0","desc":"新增
\n\n- 新增MAC及Linux版本(需要的可自行下载)
\n- 新增音量调整
\n- 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
\n- 新增更新出错时的弹窗提示
\n- 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
\n
\n修复
\n\n- 强制把临时接口设置回
messoer 接口 \n
\n"},{"version":"0.2.3","desc":"新增
\n\n- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
\n
\n修复
\n\n- 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
\n- 修复某些情况下歌曲链接未能缓存的问题
\n
\n移除
\n\n- 移除临时接口(因服务器被攻击,本接口已关闭)
\n- 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
\n
\n"},{"version":"0.2.2","desc":"修复
\n\n- 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
\n- 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
\n
\n"},{"version":"0.2.1","desc":"优化
\n\n- 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
\n
\n修复
\n\n- 修复歌曲加载无法加载时自动切换混乱的Bug
\n- 修复移除列表最后一首歌曲时播放器不停止播放的问题
\n
\n"},{"version":"0.2.0","desc":"新增
\n\n- 新增百度音乐排行榜及其音乐直接试听与下载
\n- 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
\n- 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
\n
\n修复
\n\n- 修复更新弹窗历史版本描述多余的换行问题
\n- 修复歌曲无法播放的情况下歌词仍会播放的问题
\n
\n"},{"version":"0.1.6","desc":"修复
\n\n"},{"version":"0.1.5","desc":"新增
\n\n- 新增搜索列表批量试听与下载功能
\n- 新增排行榜列表批量试听与下载功能
\n- 新增试听列表批量移除与下载功能
\n- 新增下载列表批量开始、暂停与移除功能
\n
\n优化
\n\n"},{"version":"0.1.4","desc":"新增
\n\n- 新增音乐来源切换,可到设置页面-基本设置 look look !
\n- 为搜索结果列表添加多选功能。
\nP.S:暂时没想好多选后的操作按钮放哪… \n
\n优化
\n\n- 重构与改进checkbox组件,使其支持不定选中状态
\n- 完善上一个版本的http请求封装并切换部分请求到该方法上
\n- 优化其他一些细节
\n
\n"},{"version":"0.1.3","desc":"新增
\n\n修复
\n\n- 修复安装包许可协议乱码问题
\n- messoer 提供的接口已挂,暂时切换到临时接口!
\n
\n移除
\n\n- 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
\n
\n"},{"version":"0.1.2","desc":"修复
\n\n"},{"version":"0.1.1","desc":"新增
\n\n- QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
\n
\n优化
\n\n- 优化http请求机制
\n- 更新关于本软件说明
\n
\n修复
\n\n- 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
\n- 修复切换歌曲时仍然播放上一首歌曲的问题
\n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}
From da0878a7a73aeb9a6c85ee558fe1cedbfffdad5f Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 30 Jan 2021 13:15:32 +0800
Subject: [PATCH 036/132] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?=
=?UTF-8?q?=E5=88=B0=E6=9C=80=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 48 +++++++++++++++++++++++------------------------
package.json | 8 ++++----
2 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 54903caf..6263f319 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "lx-music-desktop",
- "version": "1.6.1",
+ "version": "1.7.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -2967,7 +2967,7 @@
},
"@types/parse-json": {
"version": "4.0.0",
- "resolved": "https://registry.npm.taobao.org/@types/parse-json/download/@types/parse-json-4.0.0.tgz",
+ "resolved": "https://registry.npm.taobao.org/@types/parse-json/download/@types/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1605054896578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fparse-json%2Fdownload%2F%40types%2Fparse-json-4.0.0.tgz",
"integrity": "sha1-L4u0QUNNFjs1+4/9zNcTiSf/uMA=",
"dev": true
},
@@ -10596,9 +10596,9 @@
}
},
"less-loader": {
- "version": "7.2.1",
- "resolved": "https://registry.npm.taobao.org/less-loader/download/less-loader-7.2.1.tgz?cache=0&sync_timestamp=1609160680592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless-loader%2Fdownload%2Fless-loader-7.2.1.tgz",
- "integrity": "sha1-qSPfhWclZ1Gwq04MPuz/EP0KWHY=",
+ "version": "7.3.0",
+ "resolved": "https://registry.npm.taobao.org/less-loader/download/less-loader-7.3.0.tgz",
+ "integrity": "sha1-+dbTbRhznWQgZ6Bftb1wyMYTF+U=",
"dev": true,
"requires": {
"klona": "^2.0.4",
@@ -10608,7 +10608,7 @@
"dependencies": {
"ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1604996837320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
+ "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1609583919173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
"integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
"dev": true,
"requires": {
@@ -10620,7 +10620,7 @@
},
"ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1604565113393&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
+ "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1608059984992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
"integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=",
"dev": true
},
@@ -10675,7 +10675,7 @@
},
"lines-and-columns": {
"version": "1.1.6",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+ "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
"dev": true
},
@@ -12229,21 +12229,21 @@
}
},
"postcss-loader": {
- "version": "4.1.0",
- "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-4.1.0.tgz?cache=0&sync_timestamp=1605790872639&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-loader%2Fdownload%2Fpostcss-loader-4.1.0.tgz",
- "integrity": "sha1-RkemyNrTy2slP7+qIdYiAQhvbjk=",
+ "version": "4.2.0",
+ "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-4.2.0.tgz",
+ "integrity": "sha1-9pk+o+D0ZgD7PuSbvQEESBI6fbQ=",
"dev": true,
"requires": {
"cosmiconfig": "^7.0.0",
"klona": "^2.0.4",
"loader-utils": "^2.0.0",
"schema-utils": "^3.0.0",
- "semver": "^7.3.2"
+ "semver": "^7.3.4"
},
"dependencies": {
"ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1602353715225&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
+ "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1609583919173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
"integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
"dev": true,
"requires": {
@@ -12255,7 +12255,7 @@
},
"ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1595908717940&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
+ "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1608059984992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
"integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=",
"dev": true
},
@@ -12284,9 +12284,9 @@
}
},
"parse-json": {
- "version": "5.1.0",
- "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.1.0.tgz",
- "integrity": "sha1-+WCIzfJKj6qa6poAny2dlCyZlkY=",
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.2.0.tgz?cache=0&sync_timestamp=1610966709037&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-5.2.0.tgz",
+ "integrity": "sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -13976,7 +13976,7 @@
},
"serialize-error": {
"version": "7.0.1",
- "resolved": "https://registry.npm.taobao.org/serialize-error/download/serialize-error-7.0.1.tgz?cache=0&sync_timestamp=1611483289576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-error%2Fdownload%2Fserialize-error-7.0.1.tgz",
+ "resolved": "https://registry.npm.taobao.org/serialize-error/download/serialize-error-7.0.1.tgz",
"integrity": "sha1-8TYLBEf2H/tIPsQVfHN/q313jhg=",
"dev": true,
"optional": true,
@@ -16146,9 +16146,9 @@
}
},
"vue-router": {
- "version": "3.4.9",
- "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.4.9.tgz?cache=0&sync_timestamp=1604611494091&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.4.9.tgz",
- "integrity": "sha1-wBb0IDCuKTLxTkdIs5odmg4lDmY="
+ "version": "3.5.1",
+ "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz",
+ "integrity": "sha1-7fPPSQeVLR4Fg+B5I3Igxf9utsk="
},
"vue-style-loader": {
"version": "4.1.2",
@@ -16177,9 +16177,9 @@
"dev": true
},
"vuex": {
- "version": "3.6.0",
- "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.6.0.tgz?cache=0&sync_timestamp=1606318199388&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.6.0.tgz",
- "integrity": "sha1-le+lalj3YHwTWwUzUIM6CeAaqBM="
+ "version": "3.6.2",
+ "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.6.2.tgz",
+ "integrity": "sha1-I2vAhqhww655lG8QfxbeWdWJXnE="
},
"vuex-router-sync": {
"version": "5.0.0",
diff --git a/package.json b/package.json
index e487010e..3c90be58 100644
--- a/package.json
+++ b/package.json
@@ -195,11 +195,11 @@
"friendly-errors-webpack-plugin": "^1.7.0",
"html-webpack-plugin": "^4.5.1",
"less": "^3.13.1",
- "less-loader": "^7.2.1",
+ "less-loader": "^7.3.0",
"markdown-it": "^12.0.4",
"mini-css-extract-plugin": "^0.12.0",
"optimize-css-assets-webpack-plugin": "^5.0.4",
- "postcss-loader": "^4.1.0",
+ "postcss-loader": "^4.2.0",
"postcss-pxtorem": "^5.1.1",
"pug": "^3.0.0",
"pug-loader": "^2.4.0",
@@ -234,8 +234,8 @@
"request": "^2.88.2",
"vue": "^2.6.12",
"vue-i18n": "^8.22.4",
- "vue-router": "^3.4.9",
- "vuex": "^3.6.0",
+ "vue-router": "^3.5.1",
+ "vuex": "^3.6.2",
"vuex-router-sync": "^5.0.0"
}
}
From 3e0ee374c9950851df8e857bd518f4881f96145d Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 30 Jan 2021 13:46:46 +0800
Subject: [PATCH 037/132] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=AF=B9changelog?=
=?UTF-8?q?=E7=9A=84html=E5=AF=B9version.json=E7=9A=84=E5=86=99=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/utils/updateChangeLog.js | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/publish/utils/updateChangeLog.js b/publish/utils/updateChangeLog.js
index 91a755d0..a966a0ca 100644
--- a/publish/utils/updateChangeLog.js
+++ b/publish/utils/updateChangeLog.js
@@ -44,8 +44,7 @@ module.exports = async newVerNum => {
desc: version.desc,
})
version.version = newVerNum
- version.desc = newChangeLog
- // version.desc = newMDChangeLog.replace(/(?:^|(\n))#{1,6} (.+)\n/g, '$1$2').trim()
+ version.desc = newMDChangeLog.replace(/(?:^|(\n))#{1,6} (.+)\n/g, '$1$2').trim()
pkg.version = newVerNum
console.log(chalk.blue('new version: ') + chalk.green(newVerNum))
From 9e37800426c6d5f4cbfc4ee531a43b79825b027e Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 30 Jan 2021 14:18:12 +0800
Subject: [PATCH 038/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9D=9E=E9=80=8F?=
=?UTF-8?q?=E6=98=8E=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=8F=B3=E4=BE=A7=E6=BB=9A?=
=?UTF-8?q?=E5=8A=A8=E6=9D=A1=E6=97=A0=E6=B3=95=E6=8B=96=E5=8A=A8=E7=9A=84?=
=?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 19 +------------------
src/renderer/App.vue | 4 ++++
2 files changed, 5 insertions(+), 18 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 49be17dc..cb4b4016 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -1,20 +1,3 @@
-### 新增
-
-- 搜索界面新增搜索状态的提示
-- 新增“稍后播放”功能,可在歌曲列表右键菜单使用
-- 新增“记住播放进度”功能的控制,该功能默认不再开启,可到播放设置-记住播放进度开启
-
-### 优化
-
-- 优化播放歌曲换源匹配
-- 优化设置界面设置项的展示
-
### 修复
-- 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
-- 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
-- 修复xm搜索源验证问题
-
-### 其他
-
-- 更新electron到9.4.2
+- 修复非透明模式下右侧滚动条无法拖动的问题
diff --git a/src/renderer/App.vue b/src/renderer/App.vue
index dc48d701..161531cb 100644
--- a/src/renderer/App.vue
+++ b/src/renderer/App.vue
@@ -462,6 +462,10 @@ body {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
+
+ #view { // 偏移5px距离解决非透明模式下右侧滚动条无法拖动的问题
+ margin-right: 5Px;
+ }
}
#container {
From 316f62c3c8e22fd53f6a27057c50dd9e8196b6c4 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 30 Jan 2021 14:29:20 +0800
Subject: [PATCH 039/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8DMAC=E4=B8=8Bxm?=
=?UTF-8?q?=E9=9F=B3=E4=B9=90=E6=BB=91=E5=9D=97=E9=AA=8C=E8=AF=81=E9=97=AE?=
=?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 1 +
.../rendererEvents/xm_verify/xm_verify_win.js | 48 ++++++++++++-------
2 files changed, 32 insertions(+), 17 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index cb4b4016..2460416e 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -1,3 +1,4 @@
### 修复
- 修复非透明模式下右侧滚动条无法拖动的问题
+- 修复MAC下xm音乐滑块验证问题
diff --git a/src/main/rendererEvents/xm_verify/xm_verify_win.js b/src/main/rendererEvents/xm_verify/xm_verify_win.js
index 89bd88e7..611fcaed 100644
--- a/src/main/rendererEvents/xm_verify/xm_verify_win.js
+++ b/src/main/rendererEvents/xm_verify/xm_verify_win.js
@@ -27,12 +27,12 @@ mainHandle(ipcMainWindowNames.handle_xm_verify_open, (event, url) => new Promise
const windowSizeInfo = getWindowSizeInfo(global.appSetting)
win = new BrowserWindow({
parent: global.modules.mainWindow,
- width: 460,
- height: 370,
+ width: 1000,
+ height: 800,
resizable: false,
// transparent: true,
- x: mainWindowSizeInfo.x + (windowSizeInfo.width - 460) / 2,
- y: mainWindowSizeInfo.y + (windowSizeInfo.height - 320 + 52) / 2,
+ x: mainWindowSizeInfo.x + (windowSizeInfo.width - 1000) / 2,
+ y: mainWindowSizeInfo.y + (windowSizeInfo.height - 800 + 52) / 2,
minimizable: false,
maximizable: false,
// movable: false,
@@ -43,20 +43,34 @@ mainHandle(ipcMainWindowNames.handle_xm_verify_open, (event, url) => new Promise
disableHtmlFullscreenWindowResize: true,
},
})
- win.webContents.on('did-finish-load', () => {
- if (/punish\?/.test(win.webContents.getURL())) return
- let ses = win.webContents.session
- ses.cookies.get({ name: 'x5sec' })
- .then(async([x5sec]) => {
+ // win.webContents.on('did-finish-load', () => {
+ // if (/punish\?/.test(win.webContents.getURL())) return
+ // let ses = win.webContents.session
+ // ses.cookies.get({ name: 'x5sec' })
+ // .then(async([x5sec]) => {
+ // isActioned = true
+ // await closeWin()
+ // if (!x5sec) return reject(new Error('get x5sec failed'))
+ // resolve(x5sec.value)
+ // }).catch(async err => {
+ // isActioned = true
+ // await closeWin()
+ // reject(err)
+ // })
+ // })
+
+ win.webContents.session.webRequest.onCompleted({ urls: ['*://www.xiami.com/*'] }, details => {
+ if (/\/_____tmd_____\/slide\?/.test(details.url)) {
+ for (const item of details.responseHeaders['set-cookie']) {
+ if (!/^x5sec=/.test(item)) continue
+ const x5sec = /x5sec=(\w+);.+$/.exec(item)
isActioned = true
- await closeWin()
- if (!x5sec) return reject(new Error('get x5sec failed'))
- resolve(x5sec.value)
- }).catch(async err => {
- isActioned = true
- await closeWin()
- reject(err)
- })
+ closeWin().finally(() => {
+ if (!x5sec) return reject(new Error('get x5sec failed'))
+ resolve(x5sec[1])
+ })
+ }
+ }
})
win.webContents.loadURL(url, {
From 0c63268df1f23a272f3798b995b357b51c278fc1 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 30 Jan 2021 14:30:05 +0800
Subject: [PATCH 040/132] =?UTF-8?q?=E5=8F=91=E5=B8=83v1.7.1=E7=89=88?=
=?UTF-8?q?=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 7 +++++++
package.json | 2 +-
publish/version.json | 2 +-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 15e9e162..0f7c882e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,13 @@ Project versioning adheres to [Semantic Versioning](http://semver.org/).
Commit convention is based on [Conventional Commits](http://conventionalcommits.org).
Change log format is based on [Keep a Changelog](http://keepachangelog.com/).
+## [1.7.1](https://github.com/lyswhut/lx-music-desktop/compare/v1.7.0...v1.7.1) - 2021-01-30
+
+### 修复
+
+- 修复非透明模式下右侧滚动条无法拖动的问题
+- 修复MAC下xm音乐滑块验证问题
+
## [1.7.0](https://github.com/lyswhut/lx-music-desktop/compare/v1.6.1...v1.7.0) - 2021-01-30
### 新增
diff --git a/package.json b/package.json
index 3c90be58..4be9b8a8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lx-music-desktop",
- "version": "1.7.0",
+ "version": "1.7.1",
"description": "一个免费的音乐查找助手",
"main": "./dist/electron/main.js",
"productName": "lx-music-desktop",
diff --git a/publish/version.json b/publish/version.json
index ca4bd10c..30567e44 100644
--- a/publish/version.json
+++ b/publish/version.json
@@ -1 +1 @@
-{"version":"1.7.0","desc":"新增
\n\n- 搜索界面新增搜索状态的提示
\n- 新增“稍后播放”功能,可在歌曲列表右键菜单使用
\n- 新增“记住播放进度”功能的控制,该功能默认不再开启,可到播放设置-记住播放进度开启
\n
\n优化
\n\n- 优化播放歌曲换源匹配
\n- 优化设置界面设置项的展示
\n
\n修复
\n\n- 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
\n- 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
\n- 修复xm搜索源验证问题
\n
\n其他
\n\n","history":[{"version":"1.6.1","desc":"优化
\n\n修复
\n\n- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
\n- 修复自动换源导致的搜索列表每页变成10条数据的问题
\n- 降级electron到9.3.3修复部分系统没有声音的问题
\n
\n"},{"version":"1.6.0","desc":"新增
\n\n- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
\n- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
\n- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
\n- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
\n- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
\n- 我的列表右键菜单添加搜索当前歌曲功能
\n- 新增
-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动 \n- 新增播放自动换源功能~
\n
\n变更
\n\n-nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除 \n
\n修复
\n\n- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
\n- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
\n- 修复
-dt(原来的-nt)启动参数不真正生效的问题 \n
\n"},{"version":"1.5.0","desc":"新增
\n\n- 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
\n
\n优化
\n\n- 优化软件启动时恢复上一次播放的歌曲进度功能
\n
\n修复
\n\n- 修复MAC平台上下载歌曲封面嵌入无法显示的问题
\n- 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
\n- 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
\n- 修复某些酷狗源歌单链接无法打开的问题
\n
\n"},{"version":"1.4.1","desc":"修复
\n\n- 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
\n- 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
\n- 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
\n
\n"},{"version":"1.4.0","desc":"新增
\n\n- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
\n- 新增播放进度信息保存
\n
\n优化
\n\n修复
\n\n- 修复专辑图片无法嵌入的问题
\n- 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
\n- 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
\n- 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
\n
\n"},{"version":"1.3.0","desc":"新增
\n\n- 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
\n
\n优化
\n\n修复
\n\n- 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
\n
\n"},{"version":"1.2.2","desc":"修复
\n\n- 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
\n
\n"},{"version":"1.2.1","desc":"优化
\n\n- Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加
-nt参数启动 \n
\n修复
\n\n- 修复聚合搜索的分页问题
\n- 修复代理输入框输入的内容不生效的问题
\n
\n"},{"version":"1.2.0","desc":"提前祝大家中秋&国庆快乐~
\n新增
\n\n- 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
\n
\n优化
\n\n- 优化我的列表滚动条位置的保存逻辑
\n- 更新设置-备份与恢复功能的描述
\n- 优化软件内鼠标悬停的提示界面
\n
\n修复
\n\n- 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
\n- 修复网易云KTV嗨榜无法加载的问题
\n- 修复初始化搜索历史列表功能
\n- 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
\n- 修复歌曲封面无法嵌入的Bug
\n- 修复酷狗歌词格式问题
\n- 修复关闭切换动画时从搜索候选列表点击内容无效的问题
\n
\n其他
\n\n- 更新 Electron 到 v10.1.3
\n
\n"},{"version":"1.1.1","desc":"修复
\n\n"},{"version":"1.1.0","desc":"新增
\n\n- 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
\n- 新增
不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置 \n- 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
\n- 新增
显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译 \n- 新增
显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画 \n- 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
\n
\n修复
\n\n- 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
\n- 修复我的列表搜索对最后一个字符的匹配问题
\n- 修复窗口在
较小模式下最小化/关闭按钮不居中的问题 \n
\n优化
\n\n- 桌面歌词当前播放行改为上下居中
\n- 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
\n- 优化随机播放机制,现在通过
下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲 \n- 当下载目录没有写入权限时将显示没有写入权限的提示
\n
\n移除
\n\n- 移除默认的全局声音媒体快捷键接管
\n- 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
\n
\n其他
\n\n"},{"version":"1.0.1","desc":"优化
\n\n修复
\n\n- 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
\n
\n"},{"version":"1.0.0","desc":"新增
\n\n- 新增
rpm、pacman包的构建(未测试可用性) \n- 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
\n- 新增歌曲列表右击菜单
\n- 新增自定义列表,创建列表的按钮在表头
#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑 \n- 改变排行榜布局,新增更多排行榜
\n- 新增我的列表右键菜单复制歌曲名选项
\n- 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
\n- 新增“清热板蓝”皮肤
\n- 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
\n- 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
\n- 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
\n- 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
\n- 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
\n- 新增我的列表内歌曲搜索,在我的列表按
ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框) \n- 新增托盘图标样式设置,可到设置-其他切换
\n- 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
\n- 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
\n- 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开
%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储 \n- 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
\n
\n优化
\n\n- 改进歌曲切换时的歌词滚动效果
\n- 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
\n- 改进歌单列表展示
\n- 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
\n- 压缩备份数据文件大小
\n
\n修复
\n\n- 修复按住
Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题 \n- 修复Linux版开启托盘无法退出的问题
\n- 修复某些情况下可能导致的音源输出问题
\n- 修复某些情况下无法开始下载任务的问题
\n- 修复 tab 组件边框溢出问题
\n- 修复错误更新试听列表外的歌曲时间的问题
\n- 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
\n- 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
\n- 修复无法检测最新版本时弹窗提示的显示
\n- 修复某些情况下从托盘还原窗口后无法操作的问题
\n- 修复Linux下无法
ctrl+a全选的问题 \n- 修复主题背景图片覆盖不全的问题
\n- 修复聚合搜索音源标签的皮肤配色问题
\n
\n更变
\n\n- 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
\n- 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
\n- 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
\n- 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
\n
\n其他
\n\n"},{"version":"0.18.2","desc":"修复
\n\n- 修复开启托盘时,可能导致无法自动更新的问题
\n
\n"},{"version":"0.18.1","desc":"优化
\n\n- win下的托盘图标使用更大的图片
\n- 加长软件协议的强制停留时间
\n
\n修复
\n\n"},{"version":"0.18.0","desc":"新增
\n\n- 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
\n- 添加软件启动时是否自动聚焦搜索框的设置
\n- 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
\n- 新增打开酷狗源用户歌单
\n- 新增使用协议
\n- 新增虾米音源
\n- 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
\n- 新增“超大”、“巨大”窗口尺寸
\n- 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次)
\n
\n优化
\n\n- 略微加深音量条底色
\n- 优化其他界面细节
\n- 优化英语翻译,感谢 @CPCer
\n- 优化程序的流畅度
\n
\n更变
\n\n- 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
\n- 移除列表多选框,现在多选需要键盘配合,想要多选前需按下
Shift或Ctrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用Shift或Ctrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按Shift或Alt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键) \n- 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
\n
\n修复
\n\n- 修复网易源某些歌曲提示没有可播放的音质的问题
\n- 修复下载管理刷新URL失败时不标记任务下载失败的问题
\n- 修复列表导出的文字描述,感谢 @CPCer
\n- 修复歌曲切换方式无法取消勾选的问题
\n- 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
\n- 修正播放列表浮动按钮错误的文字提示
\n
\n移除
\n\n- 因128k以外的音质失效,So 禁止所有128k外的音质下载
\n
\n其他
\n更新 Electron 到 8.2.5
\n"},{"version":"0.17.0","desc":"新增
\n\n- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
\n- 新增无法打开外部歌单FAQ
\n- 新增启动参数
search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰" \n- 新增音频输出设置
\n- 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
\n- 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
\n- 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
\n- 新增热搜词,默认关闭,可到设置开启
\n- 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
\n
\n优化
\n\n- 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
\n- 优化播放进度条的动画效果
\n- 现在添加下载任务时,后面添加的任务会在列表顶部插入
\n- 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
\n- 优化右上角最小化/关闭按钮布局
\n
\n修复
\n\n- 修复歌单详情处于加载状态时无法返回的问题
\n- 修复鼠标右击复制列表内容时会复制音质标签的问题
\n- 修复
0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题 \n- 修复下载列表在某些情况下无法取消全选的问题
\n
\n其他
\n\n"},{"version":"0.16.0","desc":"新增
\n\n- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
\n- 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
\n- 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
\n- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
\n
\n优化
\n\n- 优化木叶之村主题翻页器背景颜色
\n- 优化各个主题音质标签颜色
\n- 优化其他一些界面细节及用户交互效果
\n
\n修复
\n\n- 修复启用透明窗口鼠标不穿透的bug
\n- 修复大窗口时设置的音乐来源选项不换行的问题
\n- 修复某些情况下暂停任务会自动开始任务的问题
\n- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
\n- 修复酷狗源歌单热门标签歌单列表无法加载问题
\n- 修复QQ源歌单热门标签歌单列表无法加载问题
\n
\n其他
\n\n"},{"version":"0.15.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复歌曲下载列表无法加载的问题
\n- 修复歌曲下载任务数大于最大下载任务数的问题
\n- 修复某些情况下歌曲下载错误的问题
\n- 修复下载列表数据没有被迁移直接被丢弃的问题
\n
\n"},{"version":"0.14.1","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
\n
\n"},{"version":"0.14.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n新增
\n\n- 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
\n- 恢复QQ音乐源128k音质试听
\n- 新增不强制win7开启透明效果即可使用,但要配置运行参数
-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数” \n- 新增“新年快乐”主题,可自行切换体验
\n
\n优化
\n\n- 减淡各个主题的歌曲列表分隔线颜色
\n- 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
\n- 更新改进的歌词播放插件,现在歌词的播放显示将更准确
\n
\n修复
\n\n- 修复咪咕源无法搜索的问题
\n- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
\n- 修复导入设置窗口大小、代理设置不立即生效的问题
\n- 修复在线音乐列表获取失败时无限循环请求的问题
\n
\n其他
\n\n- 将软件设置与播放列表分离存储成两个文件
\n- 更新 Electron 到 7.1.9
\n
\n"},{"version":"0.13.1","desc":"修复
\n\n其他
\n\n- 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
\n
\n"},{"version":"0.13.0","desc":"新增
\n\n- 新增搜索框搜索建议键盘上下方向键选择功能
\n- 聚合搜索新增音源显示
\n- 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
\n
\n优化
\n\n修复
\n\n- 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
\n- 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
\n
\n移除
\n\n其他
\n\n- 更新electron到7.1.5
\n- 更新vue到2.6.11
\n
\n"},{"version":"0.12.1","desc":"优化
\n\n- 优化定位歌曲时的列表滚动机制
\n- 优化链接点击效果
\n
\n修复
\n\n- 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
\n- 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
\n- 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
\n
\n其他
\n\n"},{"version":"0.12.0","desc":"由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
\n新增
\n\n- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
\n
\n优化
\n\n- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
\n- 注意:目前仍然无法暂停处于链接获取状态中的任务
\n
\n修复
\n\n- 修复Linux deb版本
.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈! \n- 修复下载列表歌曲状态分类列表操作Bug
\n- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
\n- 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
\n
\n"},{"version":"0.11.0","desc":"新增
\n\n- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
\n- 新增下载管理的任务状态分类
\n- 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
\n
\n优化
\n\n- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
\n
\n"},{"version":"0.10.0","desc":"优化
\n\n- 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
\n
\n修复
\n\n- 修复酷我源搜索提示、排行榜无法获取的问题
\n- 修复咪咕源无法播放的问题
\n
\n"},{"version":"0.9.1","desc":"修复
\n\n"},{"version":"0.9.0","desc":"新增
\n\n- 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
\n- 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
\n
\n修复
\n\n- 修复搜索提示失效的问题
\n- 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
\n
\n"},{"version":"0.8.2","desc":"修复
\n\n- 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
\n
\n"},{"version":"0.8.1","desc":"修复
\n\n- 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
\n
\n"},{"version":"0.8.0","desc":"新增
\n\n- 新增网易云源歌曲搜索
\n- 新增网易云源歌单
\n- 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
\n- 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
\n
\n优化
\n\n- 优化搜索框搜索体验
\n- 优化音量条交互视觉效果
\n- 缓存歌单详情列表数据
\n
\n修复
\n\n- 修复QQ源歌单无法翻页Bug
\n- 修复默认列表没有创建时无法显示收藏列表的Bug
\n- 修复网易云128k直接试听
\n- 修复歌曲音质不存在时仍然播放或下载的Bug
\n- 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
\n
\n"},{"version":"0.7.0","desc":"新增
\n\n- 新增“我的收藏”本地播放列表
\n- 新增缓存清理功能,可到设置-其他查看与清理软件缓存
\n- 新增QQ音乐源搜索
\n- 新增咪咕源搜索
\n- 新增咪咕源歌单
\n- 新增咪咕源排行榜
\n- 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
\n
\n优化
\n\n- 优化选择框动画效果
\n- 尝试优化选我的音乐列表内容很多时多选的卡顿问题
\n
\n修复
\n\n- 修复列表延迟显示的Bug
\n- 修复QQ音源128k音质试听
\n
\n"},{"version":"0.6.2","desc":"祝贺祖国成立70周年~!
\n新增
\n\n修复
\n\n- 修正火影皮肤名字
\n- 修复当试听列表为空时,无法切到其他界面的Bug
\n- 修复百度源搜索结果为空时的接口处理Bug
\n- 恢复酷狗其他音质播放
\n
\n"},{"version":"0.6.1","desc":"新增
\n\n- 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
\n- 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
\n
\n优化
\n\n- 新增DNS解析缓存,加快请求速度
\n- 优化代码逻辑,减少软件对系统资源的占用
\n- 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
\n- 优化下拉列表动画效果
\n
\n修复
\n\n- 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
\n- 修复其他一些小Bug
\n
\n移除
\n\n- 移除
192k 音质 \n- 移除酷我音源
ape 音质,无损推荐 flac 格式 \n
\n"},{"version":"0.6.0","desc":"新增
\n\n- 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
\n- 新增代理功能
\n
\n优化
\n\n- 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
\n
\n修复
\n\n- 修复试听列表没有歌曲时会显示列表加载中的Bug
\n- 修复切换歌单列表详情时的UI Bug
\n
\n"},{"version":"0.5.5","desc":"新增
\n\n- 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
\n- 新增 MAC 版本退出快捷键支持
\n- 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
\n
\n修复
\n\n- 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
\n- 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
\n- 修复 MAC 版本不能复制粘贴的问题
\n
\n"},{"version":"0.5.4","desc":"移除
\n\n- 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
\n- 为了稳妥起见,暂时移除FLAC格式的meta信息修改
\n- MP3格式无此问题
\n
\n"},{"version":"0.5.3","desc":"优化
\n\n修复
\n\n- 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
\n
\n"},{"version":"0.5.2","desc":"新增
\n\n- 新增强迫症设置-离开搜索界面时是否清空搜索框
\n- 设置-关于板块新增常见问题链接
\n- 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
\n
\n优化
\n\n- 略微优化最小化按钮字符
\n- 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
\n
\n修复
\n\n移除
\n\n- 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
\n
\n"},{"version":"0.5.1","desc":"新增
\n\n- 新增右上角最小化/关闭按钮鼠标滑过符号
\n- 新增下载列表定位文件按钮
\n
\n修复
\n\n- 修复百度源歌单全部分类无法加载的问题
\n- 修复更新弹窗无法弹出的问题
\n
\n"},{"version":"0.5.0","desc":"新增
\n\n- 新增封面嵌入(默认开启,可到设置-下载设置关闭)
\n- 新增歌词下载(默认关闭,可到设置-下载设置开启)
\n- 新增单例应用功能(实现软件单开功能,禁止软件多开)
\n
\n优化
\n\n修复
\n\n- 修复歌单无法翻页的问题
\n- 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
\n- 修复版本更新弹窗Bug
\n- 修复酷狗歌单推荐歌单出现在其他分类中的Bug
\n
\n"},{"version":"0.4.0","desc":"新增
\n\n- 新增歌单功能,目前支持酷我、酷狗、百度源歌单
\n- 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址与打赏地址
\n- 新增酷狗 电音热歌榜、DJ热歌榜
\n- 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
\n
\n移除
\n\n- 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
\n
\n"},{"version":"0.3.5","desc":"新增
\n\n- 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
\n
\n优化
\n\n- 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
\n
\n修复
\n\n- 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
\n- 修复歌词加载Bug
\n
\n"},{"version":"0.3.4","desc":"优化
\n\n- 减少接口不稳定带来的影响,适当增加请求等待时间
\n
\n修复
\n\n- 修复播放过程中URL过期不会刷新URL的问题
\n
\n"},{"version":"0.3.3","desc":"修复
\n\n- messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
\n- 修复设置界面更新出错时仍然显示更新下载中的问题
\n- 修复手动定位播放进度条时存在偏差的问题
\n- 屏蔽播放器中没有歌曲时对进度条的点击
\n
\n"},{"version":"0.3.2","desc":"新增
\n\n"},{"version":"0.3.1","desc":"修复
\n\n"},{"version":"0.3.0","desc":"新增
\n\n- 新增MAC及Linux版本(需要的可自行下载)
\n- 新增音量调整
\n- 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
\n- 新增更新出错时的弹窗提示
\n- 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
\n
\n修复
\n\n- 强制把临时接口设置回
messoer 接口 \n
\n"},{"version":"0.2.3","desc":"新增
\n\n- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
\n
\n修复
\n\n- 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
\n- 修复某些情况下歌曲链接未能缓存的问题
\n
\n移除
\n\n- 移除临时接口(因服务器被攻击,本接口已关闭)
\n- 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
\n
\n"},{"version":"0.2.2","desc":"修复
\n\n- 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
\n- 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
\n
\n"},{"version":"0.2.1","desc":"优化
\n\n- 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
\n
\n修复
\n\n- 修复歌曲加载无法加载时自动切换混乱的Bug
\n- 修复移除列表最后一首歌曲时播放器不停止播放的问题
\n
\n"},{"version":"0.2.0","desc":"新增
\n\n- 新增百度音乐排行榜及其音乐直接试听与下载
\n- 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
\n- 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
\n
\n修复
\n\n- 修复更新弹窗历史版本描述多余的换行问题
\n- 修复歌曲无法播放的情况下歌词仍会播放的问题
\n
\n"},{"version":"0.1.6","desc":"修复
\n\n"},{"version":"0.1.5","desc":"新增
\n\n- 新增搜索列表批量试听与下载功能
\n- 新增排行榜列表批量试听与下载功能
\n- 新增试听列表批量移除与下载功能
\n- 新增下载列表批量开始、暂停与移除功能
\n
\n优化
\n\n"},{"version":"0.1.4","desc":"新增
\n\n- 新增音乐来源切换,可到设置页面-基本设置 look look !
\n- 为搜索结果列表添加多选功能。
\nP.S:暂时没想好多选后的操作按钮放哪… \n
\n优化
\n\n- 重构与改进checkbox组件,使其支持不定选中状态
\n- 完善上一个版本的http请求封装并切换部分请求到该方法上
\n- 优化其他一些细节
\n
\n"},{"version":"0.1.3","desc":"新增
\n\n修复
\n\n- 修复安装包许可协议乱码问题
\n- messoer 提供的接口已挂,暂时切换到临时接口!
\n
\n移除
\n\n- 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
\n
\n"},{"version":"0.1.2","desc":"修复
\n\n"},{"version":"0.1.1","desc":"新增
\n\n- QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
\n
\n优化
\n\n- 优化http请求机制
\n- 更新关于本软件说明
\n
\n修复
\n\n- 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
\n- 修复切换歌曲时仍然播放上一首歌曲的问题
\n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}
+{"version":"1.7.1","desc":"修复\n- 修复非透明模式下右侧滚动条无法拖动的问题\n- 修复MAC下xm音乐滑块验证问题","history":[{"version":"1.7.0","desc":"新增
\n\n- 搜索界面新增搜索状态的提示
\n- 新增“稍后播放”功能,可在歌曲列表右键菜单使用
\n- 新增“记住播放进度”功能的控制,该功能默认不再开启,可到播放设置-记住播放进度开启
\n
\n优化
\n\n- 优化播放歌曲换源匹配
\n- 优化设置界面设置项的展示
\n
\n修复
\n\n- 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
\n- 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
\n- 修复xm搜索源验证问题
\n
\n其他
\n\n"},{"version":"1.6.1","desc":"优化
\n\n修复
\n\n- 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
\n- 修复自动换源导致的搜索列表每页变成10条数据的问题
\n- 降级electron到9.3.3修复部分系统没有声音的问题
\n
\n"},{"version":"1.6.0","desc":"新增
\n\n- 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
\n- 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
\n- 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
\n- 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
\n- 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
\n- 我的列表右键菜单添加搜索当前歌曲功能
\n- 新增
-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动 \n- 新增播放自动换源功能~
\n
\n变更
\n\n-nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除 \n
\n修复
\n\n- 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
\n- 修复音乐嵌入的封面在 Mac 系统无法显示的问题
\n- 修复
-dt(原来的-nt)启动参数不真正生效的问题 \n
\n"},{"version":"1.5.0","desc":"新增
\n\n- 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
\n
\n优化
\n\n- 优化软件启动时恢复上一次播放的歌曲进度功能
\n
\n修复
\n\n- 修复MAC平台上下载歌曲封面嵌入无法显示的问题
\n- 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
\n- 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
\n- 修复某些酷狗源歌单链接无法打开的问题
\n
\n"},{"version":"1.4.1","desc":"修复
\n\n- 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
\n- 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
\n- 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
\n
\n"},{"version":"1.4.0","desc":"新增
\n\n- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
\n- 新增播放进度信息保存
\n
\n优化
\n\n修复
\n\n- 修复专辑图片无法嵌入的问题
\n- 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
\n- 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
\n- 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
\n
\n"},{"version":"1.3.0","desc":"新增
\n\n- 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
\n
\n优化
\n\n修复
\n\n- 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
\n
\n"},{"version":"1.2.2","desc":"修复
\n\n- 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
\n
\n"},{"version":"1.2.1","desc":"优化
\n\n- Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加
-nt参数启动 \n
\n修复
\n\n- 修复聚合搜索的分页问题
\n- 修复代理输入框输入的内容不生效的问题
\n
\n"},{"version":"1.2.0","desc":"提前祝大家中秋&国庆快乐~
\n新增
\n\n- 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
\n
\n优化
\n\n- 优化我的列表滚动条位置的保存逻辑
\n- 更新设置-备份与恢复功能的描述
\n- 优化软件内鼠标悬停的提示界面
\n
\n修复
\n\n- 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
\n- 修复网易云KTV嗨榜无法加载的问题
\n- 修复初始化搜索历史列表功能
\n- 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
\n- 修复歌曲封面无法嵌入的Bug
\n- 修复酷狗歌词格式问题
\n- 修复关闭切换动画时从搜索候选列表点击内容无效的问题
\n
\n其他
\n\n- 更新 Electron 到 v10.1.3
\n
\n"},{"version":"1.1.1","desc":"修复
\n\n"},{"version":"1.1.0","desc":"新增
\n\n- 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
\n- 新增
不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置 \n- 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
\n- 新增
显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译 \n- 新增
显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画 \n- 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
\n
\n修复
\n\n- 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
\n- 修复我的列表搜索对最后一个字符的匹配问题
\n- 修复窗口在
较小模式下最小化/关闭按钮不居中的问题 \n
\n优化
\n\n- 桌面歌词当前播放行改为上下居中
\n- 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
\n- 优化随机播放机制,现在通过
下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲 \n- 当下载目录没有写入权限时将显示没有写入权限的提示
\n
\n移除
\n\n- 移除默认的全局声音媒体快捷键接管
\n- 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
\n
\n其他
\n\n"},{"version":"1.0.1","desc":"优化
\n\n修复
\n\n- 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
\n
\n"},{"version":"1.0.0","desc":"新增
\n\n- 新增
rpm、pacman包的构建(未测试可用性) \n- 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
\n- 新增歌曲列表右击菜单
\n- 新增自定义列表,创建列表的按钮在表头
#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑 \n- 改变排行榜布局,新增更多排行榜
\n- 新增我的列表右键菜单复制歌曲名选项
\n- 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
\n- 新增“清热板蓝”皮肤
\n- 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
\n- 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
\n- 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
\n- 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
\n- 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
\n- 新增我的列表内歌曲搜索,在我的列表按
ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框) \n- 新增托盘图标样式设置,可到设置-其他切换
\n- 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
\n- 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
\n- 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开
%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储 \n- 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
\n
\n优化
\n\n- 改进歌曲切换时的歌词滚动效果
\n- 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
\n- 改进歌单列表展示
\n- 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
\n- 压缩备份数据文件大小
\n
\n修复
\n\n- 修复按住
Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题 \n- 修复Linux版开启托盘无法退出的问题
\n- 修复某些情况下可能导致的音源输出问题
\n- 修复某些情况下无法开始下载任务的问题
\n- 修复 tab 组件边框溢出问题
\n- 修复错误更新试听列表外的歌曲时间的问题
\n- 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
\n- 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
\n- 修复无法检测最新版本时弹窗提示的显示
\n- 修复某些情况下从托盘还原窗口后无法操作的问题
\n- 修复Linux下无法
ctrl+a全选的问题 \n- 修复主题背景图片覆盖不全的问题
\n- 修复聚合搜索音源标签的皮肤配色问题
\n
\n更变
\n\n- 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
\n- 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
\n- 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
\n- 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
\n
\n其他
\n\n"},{"version":"0.18.2","desc":"修复
\n\n- 修复开启托盘时,可能导致无法自动更新的问题
\n
\n"},{"version":"0.18.1","desc":"优化
\n\n- win下的托盘图标使用更大的图片
\n- 加长软件协议的强制停留时间
\n
\n修复
\n\n"},{"version":"0.18.0","desc":"新增
\n\n- 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
\n- 添加软件启动时是否自动聚焦搜索框的设置
\n- 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
\n- 新增打开酷狗源用户歌单
\n- 新增使用协议
\n- 新增虾米音源
\n- 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
\n- 新增“超大”、“巨大”窗口尺寸
\n- 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次)
\n
\n优化
\n\n- 略微加深音量条底色
\n- 优化其他界面细节
\n- 优化英语翻译,感谢 @CPCer
\n- 优化程序的流畅度
\n
\n更变
\n\n- 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
\n- 移除列表多选框,现在多选需要键盘配合,想要多选前需按下
Shift或Ctrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用Shift或Ctrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按Shift或Alt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键) \n- 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
\n
\n修复
\n\n- 修复网易源某些歌曲提示没有可播放的音质的问题
\n- 修复下载管理刷新URL失败时不标记任务下载失败的问题
\n- 修复列表导出的文字描述,感谢 @CPCer
\n- 修复歌曲切换方式无法取消勾选的问题
\n- 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
\n- 修正播放列表浮动按钮错误的文字提示
\n
\n移除
\n\n- 因128k以外的音质失效,So 禁止所有128k外的音质下载
\n
\n其他
\n更新 Electron 到 8.2.5
\n"},{"version":"0.17.0","desc":"新增
\n\n- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
\n- 新增无法打开外部歌单FAQ
\n- 新增启动参数
search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰" \n- 新增音频输出设置
\n- 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
\n- 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
\n- 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
\n- 新增热搜词,默认关闭,可到设置开启
\n- 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
\n
\n优化
\n\n- 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
\n- 优化播放进度条的动画效果
\n- 现在添加下载任务时,后面添加的任务会在列表顶部插入
\n- 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
\n- 优化右上角最小化/关闭按钮布局
\n
\n修复
\n\n- 修复歌单详情处于加载状态时无法返回的问题
\n- 修复鼠标右击复制列表内容时会复制音质标签的问题
\n- 修复
0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题 \n- 修复下载列表在某些情况下无法取消全选的问题
\n
\n其他
\n\n"},{"version":"0.16.0","desc":"新增
\n\n- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
\n- 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
\n- 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
\n- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
\n
\n优化
\n\n- 优化木叶之村主题翻页器背景颜色
\n- 优化各个主题音质标签颜色
\n- 优化其他一些界面细节及用户交互效果
\n
\n修复
\n\n- 修复启用透明窗口鼠标不穿透的bug
\n- 修复大窗口时设置的音乐来源选项不换行的问题
\n- 修复某些情况下暂停任务会自动开始任务的问题
\n- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
\n- 修复酷狗源歌单热门标签歌单列表无法加载问题
\n- 修复QQ源歌单热门标签歌单列表无法加载问题
\n
\n其他
\n\n"},{"version":"0.15.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复歌曲下载列表无法加载的问题
\n- 修复歌曲下载任务数大于最大下载任务数的问题
\n- 修复某些情况下歌曲下载错误的问题
\n- 修复下载列表数据没有被迁移直接被丢弃的问题
\n
\n"},{"version":"0.14.1","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n修复
\n\n- 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
\n
\n"},{"version":"0.14.0","desc":"洛雪提前祝大家新年快乐、身体健康、阖家幸福!
\n新增
\n\n- 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
\n- 恢复QQ音乐源128k音质试听
\n- 新增不强制win7开启透明效果即可使用,但要配置运行参数
-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数” \n- 新增“新年快乐”主题,可自行切换体验
\n
\n优化
\n\n- 减淡各个主题的歌曲列表分隔线颜色
\n- 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
\n- 更新改进的歌词播放插件,现在歌词的播放显示将更准确
\n
\n修复
\n\n- 修复咪咕源无法搜索的问题
\n- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
\n- 修复导入设置窗口大小、代理设置不立即生效的问题
\n- 修复在线音乐列表获取失败时无限循环请求的问题
\n
\n其他
\n\n- 将软件设置与播放列表分离存储成两个文件
\n- 更新 Electron 到 7.1.9
\n
\n"},{"version":"0.13.1","desc":"修复
\n\n其他
\n\n- 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
\n
\n"},{"version":"0.13.0","desc":"新增
\n\n- 新增搜索框搜索建议键盘上下方向键选择功能
\n- 聚合搜索新增音源显示
\n- 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
\n
\n优化
\n\n修复
\n\n- 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
\n- 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
\n
\n移除
\n\n其他
\n\n- 更新electron到7.1.5
\n- 更新vue到2.6.11
\n
\n"},{"version":"0.12.1","desc":"优化
\n\n- 优化定位歌曲时的列表滚动机制
\n- 优化链接点击效果
\n
\n修复
\n\n- 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
\n- 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
\n- 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
\n
\n其他
\n\n"},{"version":"0.12.0","desc":"由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
\n新增
\n\n- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
\n
\n优化
\n\n- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
\n- 注意:目前仍然无法暂停处于链接获取状态中的任务
\n
\n修复
\n\n- 修复Linux deb版本
.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈! \n- 修复下载列表歌曲状态分类列表操作Bug
\n- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
\n- 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
\n
\n"},{"version":"0.11.0","desc":"新增
\n\n- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
\n- 新增下载管理的任务状态分类
\n- 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
\n
\n优化
\n\n- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
\n
\n"},{"version":"0.10.0","desc":"优化
\n\n- 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
\n
\n修复
\n\n- 修复酷我源搜索提示、排行榜无法获取的问题
\n- 修复咪咕源无法播放的问题
\n
\n"},{"version":"0.9.1","desc":"修复
\n\n"},{"version":"0.9.0","desc":"新增
\n\n- 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
\n- 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
\n
\n修复
\n\n- 修复搜索提示失效的问题
\n- 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
\n
\n"},{"version":"0.8.2","desc":"修复
\n\n- 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
\n
\n"},{"version":"0.8.1","desc":"修复
\n\n- 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
\n
\n"},{"version":"0.8.0","desc":"新增
\n\n- 新增网易云源歌曲搜索
\n- 新增网易云源歌单
\n- 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
\n- 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
\n
\n优化
\n\n- 优化搜索框搜索体验
\n- 优化音量条交互视觉效果
\n- 缓存歌单详情列表数据
\n
\n修复
\n\n- 修复QQ源歌单无法翻页Bug
\n- 修复默认列表没有创建时无法显示收藏列表的Bug
\n- 修复网易云128k直接试听
\n- 修复歌曲音质不存在时仍然播放或下载的Bug
\n- 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
\n
\n"},{"version":"0.7.0","desc":"新增
\n\n- 新增“我的收藏”本地播放列表
\n- 新增缓存清理功能,可到设置-其他查看与清理软件缓存
\n- 新增QQ音乐源搜索
\n- 新增咪咕源搜索
\n- 新增咪咕源歌单
\n- 新增咪咕源排行榜
\n- 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
\n
\n优化
\n\n- 优化选择框动画效果
\n- 尝试优化选我的音乐列表内容很多时多选的卡顿问题
\n
\n修复
\n\n- 修复列表延迟显示的Bug
\n- 修复QQ音源128k音质试听
\n
\n"},{"version":"0.6.2","desc":"祝贺祖国成立70周年~!
\n新增
\n\n修复
\n\n- 修正火影皮肤名字
\n- 修复当试听列表为空时,无法切到其他界面的Bug
\n- 修复百度源搜索结果为空时的接口处理Bug
\n- 恢复酷狗其他音质播放
\n
\n"},{"version":"0.6.1","desc":"新增
\n\n- 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
\n- 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
\n
\n优化
\n\n- 新增DNS解析缓存,加快请求速度
\n- 优化代码逻辑,减少软件对系统资源的占用
\n- 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
\n- 优化下拉列表动画效果
\n
\n修复
\n\n- 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
\n- 修复其他一些小Bug
\n
\n移除
\n\n- 移除
192k 音质 \n- 移除酷我音源
ape 音质,无损推荐 flac 格式 \n
\n"},{"version":"0.6.0","desc":"新增
\n\n- 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
\n- 新增代理功能
\n
\n优化
\n\n- 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
\n
\n修复
\n\n- 修复试听列表没有歌曲时会显示列表加载中的Bug
\n- 修复切换歌单列表详情时的UI Bug
\n
\n"},{"version":"0.5.5","desc":"新增
\n\n- 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
\n- 新增 MAC 版本退出快捷键支持
\n- 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
\n
\n修复
\n\n- 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
\n- 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
\n- 修复 MAC 版本不能复制粘贴的问题
\n
\n"},{"version":"0.5.4","desc":"移除
\n\n- 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
\n- 为了稳妥起见,暂时移除FLAC格式的meta信息修改
\n- MP3格式无此问题
\n
\n"},{"version":"0.5.3","desc":"优化
\n\n修复
\n\n- 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
\n
\n"},{"version":"0.5.2","desc":"新增
\n\n- 新增强迫症设置-离开搜索界面时是否清空搜索框
\n- 设置-关于板块新增常见问题链接
\n- 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
\n
\n优化
\n\n- 略微优化最小化按钮字符
\n- 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
\n
\n修复
\n\n移除
\n\n- 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
\n
\n"},{"version":"0.5.1","desc":"新增
\n\n- 新增右上角最小化/关闭按钮鼠标滑过符号
\n- 新增下载列表定位文件按钮
\n
\n修复
\n\n- 修复百度源歌单全部分类无法加载的问题
\n- 修复更新弹窗无法弹出的问题
\n
\n"},{"version":"0.5.0","desc":"新增
\n\n- 新增封面嵌入(默认开启,可到设置-下载设置关闭)
\n- 新增歌词下载(默认关闭,可到设置-下载设置开启)
\n- 新增单例应用功能(实现软件单开功能,禁止软件多开)
\n
\n优化
\n\n修复
\n\n- 修复歌单无法翻页的问题
\n- 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
\n- 修复版本更新弹窗Bug
\n- 修复酷狗歌单推荐歌单出现在其他分类中的Bug
\n
\n"},{"version":"0.4.0","desc":"新增
\n\n- 新增歌单功能,目前支持酷我、酷狗、百度源歌单
\n- 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址与打赏地址
\n- 新增酷狗 电音热歌榜、DJ热歌榜
\n- 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
\n
\n移除
\n\n- 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
\n
\n"},{"version":"0.3.5","desc":"新增
\n\n- 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
\n
\n优化
\n\n- 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
\n
\n修复
\n\n- 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
\n- 修复歌词加载Bug
\n
\n"},{"version":"0.3.4","desc":"优化
\n\n- 减少接口不稳定带来的影响,适当增加请求等待时间
\n
\n修复
\n\n- 修复播放过程中URL过期不会刷新URL的问题
\n
\n"},{"version":"0.3.3","desc":"修复
\n\n- messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
\n- 修复设置界面更新出错时仍然显示更新下载中的问题
\n- 修复手动定位播放进度条时存在偏差的问题
\n- 屏蔽播放器中没有歌曲时对进度条的点击
\n
\n"},{"version":"0.3.2","desc":"新增
\n\n"},{"version":"0.3.1","desc":"修复
\n\n"},{"version":"0.3.0","desc":"新增
\n\n- 新增MAC及Linux版本(需要的可自行下载)
\n- 新增音量调整
\n- 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
\n- 新增更新出错时的弹窗提示
\n- 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
\n
\n修复
\n\n- 强制把临时接口设置回
messoer 接口 \n
\n"},{"version":"0.2.3","desc":"新增
\n\n- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
\n
\n修复
\n\n- 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
\n- 修复某些情况下歌曲链接未能缓存的问题
\n
\n移除
\n\n- 移除临时接口(因服务器被攻击,本接口已关闭)
\n- 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
\n
\n"},{"version":"0.2.2","desc":"修复
\n\n- 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
\n- 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
\n
\n"},{"version":"0.2.1","desc":"优化
\n\n- 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
\n
\n修复
\n\n- 修复歌曲加载无法加载时自动切换混乱的Bug
\n- 修复移除列表最后一首歌曲时播放器不停止播放的问题
\n
\n"},{"version":"0.2.0","desc":"新增
\n\n- 新增百度音乐排行榜及其音乐直接试听与下载
\n- 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
\n- 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
\n
\n修复
\n\n- 修复更新弹窗历史版本描述多余的换行问题
\n- 修复歌曲无法播放的情况下歌词仍会播放的问题
\n
\n"},{"version":"0.1.6","desc":"修复
\n\n"},{"version":"0.1.5","desc":"新增
\n\n- 新增搜索列表批量试听与下载功能
\n- 新增排行榜列表批量试听与下载功能
\n- 新增试听列表批量移除与下载功能
\n- 新增下载列表批量开始、暂停与移除功能
\n
\n优化
\n\n"},{"version":"0.1.4","desc":"新增
\n\n- 新增音乐来源切换,可到设置页面-基本设置 look look !
\n- 为搜索结果列表添加多选功能。
\nP.S:暂时没想好多选后的操作按钮放哪… \n
\n优化
\n\n- 重构与改进checkbox组件,使其支持不定选中状态
\n- 完善上一个版本的http请求封装并切换部分请求到该方法上
\n- 优化其他一些细节
\n
\n"},{"version":"0.1.3","desc":"新增
\n\n修复
\n\n- 修复安装包许可协议乱码问题
\n- messoer 提供的接口已挂,暂时切换到临时接口!
\n
\n移除
\n\n- 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
\n
\n"},{"version":"0.1.2","desc":"修复
\n\n"},{"version":"0.1.1","desc":"新增
\n\n- QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
\n
\n优化
\n\n- 优化http请求机制
\n- 更新关于本软件说明
\n
\n修复
\n\n- 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
\n- 修复切换歌曲时仍然播放上一首歌曲的问题
\n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}
From e848fda4e37c9d8f024802e9c35b5bf7803fd205 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 1 Feb 2021 14:55:39 +0800
Subject: [PATCH 041/132] =?UTF-8?q?=E5=B0=86=E4=B8=8B=E8=BD=BD=E5=88=97?=
=?UTF-8?q?=E8=A1=A8=E4=B8=8E=E6=88=91=E7=9A=84=E5=88=97=E8=A1=A8=E5=88=86?=
=?UTF-8?q?=E7=A6=BB=E5=AD=98=E5=82=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/common/utils.js | 12 +++++++++++-
src/main/rendererEvents/playList.js | 21 +++++++++++++++++++--
2 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/src/common/utils.js b/src/common/utils.js
index ae274f99..372a67a5 100644
--- a/src/common/utils.js
+++ b/src/common/utils.js
@@ -150,6 +150,9 @@ exports.initSetting = () => {
const electronStore_config = new Store({
name: 'config',
})
+ const electronStore_downloadList = new Store({
+ name: 'downloadList',
+ })
let setting = electronStore_config.get('setting')
if (setting) {
let version = electronStore_config.get('version')
@@ -165,7 +168,7 @@ exports.initSetting = () => {
}
const downloadList = electronStore_config.get('download')
if (downloadList) {
- if (downloadList.list) electronStore_list.set('downloadList', downloadList.list)
+ if (downloadList.list) electronStore_downloadList.set('list', downloadList.list)
electronStore_config.delete('download')
}
}
@@ -181,6 +184,13 @@ exports.initSetting = () => {
}
}
+ // 从我的列表分离下载列表 v1.7.0 后
+ let downloadList = electronStore_list.get('downloadList')
+ if (downloadList) {
+ electronStore_downloadList.set('list', downloadList)
+ electronStore_list.delete('downloadList')
+ }
+
const { version: settingVersion, setting: newSetting } = exports.mergeSetting(setting, electronStore_config.get('version'))
// 重置 ^0.18.2 排行榜ID
diff --git a/src/main/rendererEvents/playList.js b/src/main/rendererEvents/playList.js
index 219046da..5bfeb50e 100644
--- a/src/main/rendererEvents/playList.js
+++ b/src/main/rendererEvents/playList.js
@@ -3,6 +3,7 @@ const { mainOn, NAMES: { mainWindow: ipcMainWindowNames }, mainHandle } = requir
let electronStore_list
+let electronStore_downloadList
mainHandle(ipcMainWindowNames.get_playlist, async(event, isIgnoredError = false) => {
if (!electronStore_list) {
@@ -11,13 +12,29 @@ mainHandle(ipcMainWindowNames.get_playlist, async(event, isIgnoredError = false)
clearInvalidConfig: !isIgnoredError,
})
}
+ if (!electronStore_downloadList) {
+ electronStore_downloadList = new Store({
+ name: 'downloadList',
+ })
+ }
return {
defaultList: electronStore_list.get('defaultList'),
loveList: electronStore_list.get('loveList'),
userList: electronStore_list.get('userList'),
- downloadList: electronStore_list.get('downloadList'),
+ downloadList: electronStore_downloadList.get('list'),
}
})
-mainOn(ipcMainWindowNames.save_playlist, (event, { type, data }) => electronStore_list && electronStore_list.set(type, data))
+mainOn(ipcMainWindowNames.save_playlist, (event, { type, data }) => {
+ switch (type) {
+ case 'defaultList':
+ case 'loveList':
+ case 'userList':
+ electronStore_list && electronStore_list.set(type, data)
+ break
+ case 'downloadList':
+ electronStore_downloadList && electronStore_downloadList.set(type, data)
+ break
+ }
+})
From 84530ca0a2503c827947509e7eca994534ba3d75 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 1 Feb 2021 16:17:57 +0800
Subject: [PATCH 042/132] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BD=91=E7=9B=98?=
=?UTF-8?q?=E6=97=A0=E6=B3=95=E6=89=93=E5=BC=80=E7=9A=84=E6=8F=90=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1820fc76..088b531d 100644
--- a/README.md
+++ b/README.md
@@ -47,7 +47,7 @@
软件变化请查看:[更新日志](https://github.com/lyswhut/lx-music-desktop/blob/master/CHANGELOG.md)
软件下载请转到:[发布页面](https://github.com/lyswhut/lx-music-desktop/releases)
-或者到网盘下载(网盘内有MAC、windows版):`https://www.lanzoux.com/b0bf2cfa/` 密码:`glqw`
+或者到网盘下载(网盘内有MAC、windows版):`https://www.lanzoux.com/b0bf2cfa/` 密码:`glqw`(若链接无法打开请百度:蓝奏云链接打不开)
使用常见问题请转至:[常见问题](https://github.com/lyswhut/lx-music-desktop/blob/master/FAQ.md)
### 源码使用方法
From 70d24ffdfd2b34c3cc30a4b71f70fad7ddc56b35 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 1 Feb 2021 18:26:26 +0800
Subject: [PATCH 043/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9F=B3=E4=B9=90?=
=?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=88=97=E8=A1=A8=E7=9A=84=E7=A8=8D=E5=90=8E?=
=?UTF-8?q?=E6=92=AD=E6=94=BE=E5=8A=9F=E8=83=BD=E6=97=A0=E6=95=88=E7=9A=84?=
=?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 3 +--
src/renderer/views/Search.vue | 16 ++++++++--------
2 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 2460416e..ef55a99e 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -1,4 +1,3 @@
### 修复
-- 修复非透明模式下右侧滚动条无法拖动的问题
-- 修复MAC下xm音乐滑块验证问题
+- 修复音乐搜索列表的稍后播放功能无效的问题
diff --git a/src/renderer/views/Search.vue b/src/renderer/views/Search.vue
index 9fb8f0a8..6c428d8e 100644
--- a/src/renderer/views/Search.vue
+++ b/src/renderer/views/Search.vue
@@ -289,14 +289,6 @@ export default {
case 'play':
this.testPlay(info.index)
break
- case 'playLater':
- if (this.selectedData.length) {
- this.setTempPlayList(this.selectedData.map(s => ({ listId: '__temp__', musicInfo: s })))
- this.resetSelect()
- } else {
- this.setTempPlayList([{ listId: '__temp__', musicInfo: this.list[info.index] }])
- }
- break
case 'listAdd':
this.musicInfo = this.listInfo.list[info.index]
this.$nextTick(() => {
@@ -480,6 +472,14 @@ export default {
}
this.testPlay(index)
break
+ case 'playLater':
+ if (this.selectedData.length) {
+ this.setTempPlayList(this.selectedData.map(s => ({ listId: '__temp__', musicInfo: s })))
+ this.resetSelect()
+ } else {
+ this.setTempPlayList([{ listId: '__temp__', musicInfo: this.listInfo.list[index] }])
+ }
+ break
case 'addTo':
if (this.selectedData.length) {
this.$nextTick(() => {
From f9cbf9254c9daa1674c95f5378242775fed9e502 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Tue, 2 Feb 2021 15:08:07 +0800
Subject: [PATCH 044/132] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE-?=
=?UTF-8?q?=E5=85=B6=E4=BB=96-=E5=88=97=E8=A1=A8=E7=BC=93=E5=AD=98?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=B8=85=E7=90=86=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 4 ++++
src/renderer/lang/en-us/view/setting.json | 9 +++----
src/renderer/lang/zh-cn/view/setting.json | 9 +++----
src/renderer/lang/zh-tw/view/setting.json | 9 +++----
src/renderer/store/modules/list.js | 12 ++++++++++
src/renderer/views/Setting.vue | 29 ++++++++++++++++++-----
6 files changed, 54 insertions(+), 18 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index ef55a99e..6bbf7a39 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -1,3 +1,7 @@
+### 新增
+
+- 新增设置-其他-列表缓存信息清理功能,注:此功能一般情况下不要使用
+
### 修复
- 修复音乐搜索列表的稍后播放功能无效的问题
diff --git a/src/renderer/lang/en-us/view/setting.json b/src/renderer/lang/en-us/view/setting.json
index 2eaa537a..468256e0 100644
--- a/src/renderer/lang/en-us/view/setting.json
+++ b/src/renderer/lang/en-us/view/setting.json
@@ -121,10 +121,11 @@
"other_tray_theme": "Tray Icon Style",
"other_tray_theme_native": "Solid Color",
"other_tray_theme_origin": "Primary Color",
- "other_cache": "Cache size (Not recommended since resources such as pictures after the cache is cleaned need re-downloading. The software will dynamically manage the cache size based on disk space)",
- "other_cache_label": "Cache size used: ",
- "other_cache_label_title": "Currently used cache size",
- "other_cache_clear_btn": "Clear cache",
+ "other_resource_cache": "Resource cache management (pictures, audios and other caches, pictures and other resources will need to be downloaded again after cleaning up, it is not recommended to clean up, the software will dynamically manage the cache size according to the disk space)",
+ "other_resource_cache_label": "The software has used cache size: ",
+ "other_resource_cache_clear_btn": "Clear resource cache",
+ "other_play_list_cache": "List cache management (links to songs that have been cached in my list, alternative sources for playback, after cleaning up, you need to re-acquire them when you play and download songs, and do not clean up if there are no issues related to song playback)",
+ "other_play_list_cache_clear_btn": "Clear list cache information",
"update": "Update",
"update_latest_label": "Latest version: ",
diff --git a/src/renderer/lang/zh-cn/view/setting.json b/src/renderer/lang/zh-cn/view/setting.json
index 00e1dcdd..5ea41c74 100644
--- a/src/renderer/lang/zh-cn/view/setting.json
+++ b/src/renderer/lang/zh-cn/view/setting.json
@@ -121,10 +121,11 @@
"other_tray_theme": "托盘图标样式",
"other_tray_theme_native": "纯色",
"other_tray_theme_origin": "原色",
- "other_cache": "缓存大小(清理缓存后图片等资源将需要重新下载,不建议清理,软件会根据磁盘空间动态管理缓存大小)",
- "other_cache_label": "软件已使用缓存大小:",
- "other_cache_label_title": "当前已用缓存",
- "other_cache_clear_btn": "清理缓存",
+ "other_resource_cache": "资源缓存管理(图片、音频等缓存,清理后图片等资源将需要重新下载,不建议清理,软件会根据磁盘空间动态管理缓存大小)",
+ "other_resource_cache_label": "软件已使用缓存大小:",
+ "other_resource_cache_clear_btn": "清理资源缓存",
+ "other_play_list_cache": "列表缓存管理(我的列表中已缓存的歌曲链接、播放代替源,清理后播放、下载歌曲时需要重新获取,没有歌曲播放相关的问题不要清理)",
+ "other_play_list_cache_clear_btn": "清理列表缓存信息",
"update": "软件更新",
"update_latest_label": "最新版本:",
diff --git a/src/renderer/lang/zh-tw/view/setting.json b/src/renderer/lang/zh-tw/view/setting.json
index 0ba303c2..f4129d29 100644
--- a/src/renderer/lang/zh-tw/view/setting.json
+++ b/src/renderer/lang/zh-tw/view/setting.json
@@ -121,10 +121,11 @@
"other_tray_theme": "托盤圖標樣式",
"other_tray_theme_native": "純色",
"other_tray_theme_origin": "原色",
- "other_cache": "緩存大小(清理緩存後圖片等資源將需要重新下載,不建議清理,軟件會根據磁盤空間動態管理緩存大小)",
- "other_cache_label": "軟件已使用緩存大小:",
- "other_cache_label_title": "當前已用緩存",
- "other_cache_clear_btn": "清理緩存",
+ "other_resource_cache": "資源緩存管理(圖片、音頻等緩存,清理後圖片等資源將需要重新下載,不建議清理,軟件會根據磁盤空間動態管理緩存大小)",
+ "other_resource_cache_label": "軟件已使用緩存大小:",
+ "other_resource_cache_clear_btn": "清理資源緩存",
+ "other_play_list_cache": "列表緩存管理(我的列表中已緩存的歌曲鏈接、播放代替源,清理後播放、下載歌曲時需要重新獲取,沒有歌曲播放相關的問題不要清理)",
+ "other_play_list_cache_clear_btn": "清理列表緩存信息",
"update": "軟件更新",
"update_latest_label": "最新版本:",
diff --git a/src/renderer/store/modules/list.js b/src/renderer/store/modules/list.js
index fceb4056..d0bc5451 100644
--- a/src/renderer/store/modules/list.js
+++ b/src/renderer/store/modules/list.js
@@ -205,6 +205,18 @@ const mutations = {
targetList.list.splice(sortNum - 1, 0, ...musicInfos)
},
+ clearCache() {
+ const lists = Object.values(allList)
+ for (const { list } of lists) {
+ for (const item of list) {
+ if (item.otherSource) item.otherSource = null
+ if (item.typeUrl['128k']) delete item.typeUrl['128k']
+ if (item.typeUrl['320k']) delete item.typeUrl['320k']
+ if (item.typeUrl.flac) delete item.typeUrl.flac
+ if (item.typeUrl.wav) delete item.typeUrl.wav
+ }
+ }
+ },
}
export default {
diff --git a/src/renderer/views/Setting.vue b/src/renderer/views/Setting.vue
index 27c9ad8b..21f81480 100644
--- a/src/renderer/views/Setting.vue
+++ b/src/renderer/views/Setting.vue
@@ -196,13 +196,18 @@ div.scroll(:class="$style.setting" ref="dom_setting")
material-checkbox(:id="'setting_tray_theme_' + item.id" v-model="current_setting.tray.themeId" name="setting_tray_theme" need :class="$style.gapLeft"
:label="$t('view.setting.other_tray_theme_' + item.name)" :key="item.id" :value="item.id" v-for="item in trayThemeList")
dd
- h3#other_cache {{$t('view.setting.other_cache')}}
+ h3#other_resource_cache {{$t('view.setting.other_resource_cache')}}
div
p
- | {{$t('view.setting.other_cache_label')}}
- span.auto-hidden(:tips="$t('view.setting.other_cache_label_title')") {{cacheSize}}
+ | {{$t('view.setting.other_resource_cache_label')}}
+ span.auto-hidden {{cacheSize}}
p
- material-btn(:class="$style.btn" min @click="clearCache") {{$t('view.setting.other_cache_clear_btn')}}
+ material-btn(:class="$style.btn" min :disabled="isDisabledResourceCacheClear" @click="clearResourceCache") {{$t('view.setting.other_resource_cache_clear_btn')}}
+ dd
+ h3#other_play_list_cache {{$t('view.setting.other_play_list_cache')}}
+ div
+ material-btn(:class="$style.btn" min :disabled="isDisabledListCacheClear" @click="clearListCache") {{$t('view.setting.other_play_list_cache_clear_btn')}}
+
dt#update {{$t('view.setting.update')}}
dd
p.small
@@ -570,6 +575,8 @@ export default {
list: [],
activeId: '',
},
+ isDisabledResourceCacheClear: false,
+ isDisabledListCacheClear: false,
}
},
watch: {
@@ -624,7 +631,10 @@ export default {
},
methods: {
...mapMutations(['setSetting', 'setSettingVersion', 'setVersionModalVisible']),
- ...mapMutations('list', ['setList']),
+ ...mapMutations('list', {
+ setList: 'setList',
+ clearMyListCache: 'clearCache',
+ }),
...mapMutations(['setMediaDeviceId']),
init() {
this.current_setting = JSON.parse(JSON.stringify(this.setting))
@@ -859,11 +869,18 @@ export default {
this.cacheSize = sizeFormate(size)
})
},
- clearCache() {
+ clearResourceCache() {
+ this.isDisabledResourceCacheClear = true
clearCache().then(() => {
this.getCacheSize()
+ this.isDisabledResourceCacheClear = false
})
},
+ clearListCache() {
+ this.isDisabledListCacheClear = true
+ this.clearMyListCache()
+ this.isDisabledListCacheClear = false
+ },
handleWindowSizeChange(index) {
let info = index == null ? this.windowSizeList[2] : this.windowSizeList[index]
setWindowSize(info.width, info.height)
From e9c96ecde21b8189686c020ac43e693a0d940bf2 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Thu, 4 Feb 2021 14:37:52 +0800
Subject: [PATCH 045/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=90=9C=E7=B4=A2?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8F=8C=E5=87=BB=E4=B8=8D=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E6=92=AD=E6=94=BE=E7=9A=84=E6=BA=90=E6=97=B6=E4=BC=9A=E5=AF=BC?=
=?UTF-8?q?=E8=87=B4=E5=88=87=E6=AD=8C=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 1 +
.../components/material/AasideList.vue | 319 ------------------
src/renderer/views/Search.vue | 2 +-
3 files changed, 2 insertions(+), 320 deletions(-)
delete mode 100644 src/renderer/components/material/AasideList.vue
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 6bbf7a39..69862234 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -5,3 +5,4 @@
### 修复
- 修复音乐搜索列表的稍后播放功能无效的问题
+- 修复搜索列表双击不支持播放的源时会导致切歌的问题
diff --git a/src/renderer/components/material/AasideList.vue b/src/renderer/components/material/AasideList.vue
deleted file mode 100644
index ac319081..00000000
--- a/src/renderer/components/material/AasideList.vue
+++ /dev/null
@@ -1,319 +0,0 @@
-
-div(:class="$style.lists")
- h2(:class="$style.listsTitle") {{$t('core.aside.my_list')}}
- ul.scroll(:class="$style.listsContent")
- li(:class="$style.listsItem" v-for="item in lists" :key="item.id") {{item.name}}
-
- transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
- div(v-show="!list.length" :class="$style.noitem")
- p(v-html="noItem")
- material-flow-btn(:show="isShowEditBtn && assertApiSupport(source)" :remove-btn="false" @btn-click="handleFlowBtnClick")
-
-
-
-
-
-
diff --git a/src/renderer/views/Search.vue b/src/renderer/views/Search.vue
index 6c428d8e..e8aac721 100644
--- a/src/renderer/views/Search.vue
+++ b/src/renderer/views/Search.vue
@@ -274,7 +274,7 @@ export default {
this.clickIndex = index
return
}
- this.testPlay(index)
+ if (this.assertApiSupport(this.listInfo.list[index].source)) this.testPlay(index)
this.clickTime = 0
this.clickIndex = -1
},
From a0254eb4f2d8bf7e10015ac527eb069d778d02bb Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Thu, 4 Feb 2021 17:25:40 +0800
Subject: [PATCH 046/132] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8B=B1=E6=96=87?=
=?UTF-8?q?=E5=90=8D=E6=AD=8C=E6=9B=B2=E5=8C=B9=E9=85=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/utils/music/index.js | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/src/renderer/utils/music/index.js b/src/renderer/utils/music/index.js
index 81caef4c..7ef844b3 100644
--- a/src/renderer/utils/music/index.js
+++ b/src/renderer/utils/music/index.js
@@ -74,26 +74,31 @@ export default {
return tempResult
}
const trimStr = str => typeof str == 'string' ? str.trim() : str
- const sortedSinger = sortSingle(musicInfo.singer)
+ const sortedSinger = String(sortSingle(musicInfo.singer)).toLowerCase()
const musicName = trimStr(musicInfo.name)
+ const lowerCaseName = String(musicName).toLowerCase()
+ const lowerCaseAlbumName = String(musicInfo.albumName).toLowerCase()
for (const source of sources.sources) {
if (!sources[source.id].musicSearch || source.id === musicInfo.source || source.id === 'xm') continue
tasks.push(sources[source.id].musicSearch.search(`${musicName} ${musicInfo.singer || ''}`.trim(), 1, { limit: 10 }).then(res => {
for (const item of res.list) {
- item.sortedSinger = sortSingle(item.singer)
+ item.sortedSinger = String(sortSingle(item.singer)).toLowerCase()
item.name = trimStr(item.name)
+ item.lowerCaseName = String(item.name).toLowerCase()
+ item.lowerCaseAlbumName = String(item.albumName).toLowerCase()
+ console.log(lowerCaseName, item.lowerCaseName)
if (
(
item.sortedSinger === sortedSinger &&
- (item.name === musicName || item.interval === musicInfo.interval)
+ (item.lowerCaseName === lowerCaseName || item.interval === musicInfo.interval)
) ||
(
- item.interval === musicInfo.interval && item.name === musicName &&
+ item.interval === musicInfo.interval && item.lowerCaseName === lowerCaseName &&
(item.sortedSinger.includes(sortedSinger) || sortedSinger.includes(item.sortedSinger))
) ||
(
- item.name === musicName && item.albumName === musicInfo.albumName &&
+ item.lowerCaseName === lowerCaseName && item.lowerCaseAlbumName === lowerCaseAlbumName &&
item.interval === musicInfo.interval
)
) {
@@ -106,12 +111,13 @@ export default {
const result = (await Promise.all(tasks)).filter(s => s)
const newResult = []
if (result.length) {
- newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.name === musicName && item.interval === musicInfo.interval))
+ newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.lowerCaseName === lowerCaseName && item.interval === musicInfo.interval))
newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.interval === musicInfo.interval))
- newResult.push(...sortMusic(result, item => item.name === musicName && item.sortedSinger === sortedSinger && item.albumName === musicInfo.albumName))
- newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.name === musicName))
+ newResult.push(...sortMusic(result, item => item.lowerCaseName === lowerCaseName && item.sortedSinger === sortedSinger && item.lowerCaseAlbumName === lowerCaseAlbumName))
+ newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.lowerCaseName === lowerCaseName))
for (const item of result) {
delete item.sortedSinger
+ delete item.lowerCaseName
}
newResult.push(...result)
}
From c78811fe360d218fd495be7bb9002ce58eda135b Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Fri, 5 Feb 2021 23:06:08 +0800
Subject: [PATCH 047/132] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E8=99=BE=E7=B1=B3?=
=?UTF-8?q?=E6=BA=90=EF=BC=8C=E5=85=81=E8=AE=B8=E6=92=AD=E6=94=BE=E9=99=A4?=
=?UTF-8?q?=E4=BA=86=E6=90=9C=E7=B4=A2=E5=88=97=E8=A1=A8=E4=BB=A5=E5=A4=96?=
=?UTF-8?q?=E7=9A=84=E6=89=80=E6=9C=89=E6=AD=8C=E6=9B=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 6 +-
publish/changeLog.md | 8 +++
src/renderer/components/core/Player.vue | 11 ++-
.../components/material/MusicComment.vue | 2 +-
src/renderer/components/material/SongList.vue | 10 ++-
src/renderer/store/modules/list.js | 12 +++-
src/renderer/store/modules/player.js | 68 +++++++++++++++----
src/renderer/utils/music/api-source-info.js | 1 -
src/renderer/utils/music/index.js | 2 +-
src/renderer/utils/music/xm/index.js | 65 +++++++++++-------
src/renderer/utils/music/xm/util.js | 2 +-
src/renderer/views/List.vue | 10 +--
src/renderer/views/SongList.vue | 2 +-
13 files changed, 134 insertions(+), 65 deletions(-)
diff --git a/package.json b/package.json
index 4be9b8a8..5561cdd4 100644
--- a/package.json
+++ b/package.json
@@ -34,18 +34,20 @@
"publish:gh:linux": "node build-config/pack.js && npm run publish:linux",
"publish:linux": "npm run publish:linux:deb && npm run publish:linux:appImage && npm run publish:linux:rpm && npm run publish:linux:pacman",
"publish:linux:appImage": "cross-env ARCH=x64 electron-builder -l=AppImage -p onTagOrDraft",
- "publish:linux:deb": "npm run publish:linux:deb:x64 && npm run publish:linux:deb:x86 && npm run publish:linux:deb:arm64",
+ "publish:linux:deb": "npm run publish:linux:deb:x64 && npm run publish:linux:deb:x86 && npm run publish:linux:deb:arm64 && npm run publish:linux:deb:armv7l",
"publish:linux:deb:x64": "cross-env ARCH=x64 electron-builder -l=deb --x64 -p onTagOrDraft",
"publish:linux:deb:x86": "cross-env ARCH=x86 electron-builder -l=deb --ia32 -p onTagOrDraft",
"publish:linux:deb:arm64": "cross-env ARCH=arm64 electron-builder -l=deb --arm64 -p onTagOrDraft",
+ "publish:linux:deb:armv7l": "cross-env ARCH=armv7l electron-builder -l=deb --armv7l -p onTagOrDraft",
"publish:linux:rpm": "cross-env ARCH=x64 electron-builder -l=rpm --x64 -p onTagOrDraft",
"publish:linux:pacman": "cross-env ARCH=x64 electron-builder -l=pacman --x64 -p onTagOrDraft",
"pack:linux": "node build-config/pack.js && npm run pack:linux:deb && npm run pack:linux:appImage && npm run pack:linux:rpm && npm run pack:linux:pacman",
"pack:linux:appImage": "cross-env ARCH=x64 electron-builder -l=AppImage",
- "pack:linux:deb": "npm run pack:linux:deb:x64 && npm run pack:linux:deb:x86 && npm run pack:linux:deb:arm64",
+ "pack:linux:deb": "npm run pack:linux:deb:x64 && npm run pack:linux:deb:x86 && npm run pack:linux:deb:arm64 && npm run pack:linux:deb:armv7l",
"pack:linux:deb:x64": "cross-env ARCH=x64 electron-builder -l=deb --x64",
"pack:linux:deb:x86": "cross-env ARCH=x86 electron-builder -l=deb --ia32",
"pack:linux:deb:arm64": "cross-env ARCH=arm64 electron-builder -l=deb --arm64",
+ "pack:linux:deb:armv7l": "cross-env ARCH=armv7l electron-builder -l=deb --armv7l",
"pack:linux:rpm": "cross-env ARCH=x64 electron-builder -l=rpm --x64",
"pack:linux:pacman": "cross-env ARCH=x64 electron-builder -l=pacman --x64",
"pack:mac": "node build-config/pack.js && electron-builder -m=dmg",
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 69862234..d7f52fa0 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -2,6 +2,14 @@
- 新增设置-其他-列表缓存信息清理功能,注:此功能一般情况下不要使用
+### 优化
+
+- 允许播放除了搜索列表以外的所有歌曲,即原来没有播放按钮或者灰色的歌曲都可以点击尝试去播放。注:该功能的原理是尝试自动切换到其他源播放,所以不一定会播放成功,特别是对于那些独家的资源
+
+### 移除
+
+- 移除虾米源。注:虽然已移除该源,但仍可尝试去播放之前添加的歌曲,虽然不一定会成功
+
### 修复
- 修复音乐搜索列表的稍后播放功能无效的问题
diff --git a/src/renderer/components/core/Player.vue b/src/renderer/components/core/Player.vue
index 2fb13e46..e7847c55 100644
--- a/src/renderer/components/core/Player.vue
+++ b/src/renderer/components/core/Player.vue
@@ -91,7 +91,6 @@ import { formatPlayTime2, getRandom, checkPath, setTitle, clipboardWriteText, de
import { mapGetters, mapActions, mapMutations } from 'vuex'
import { requestMsg } from '../../utils/message'
import { player as eventPlayerNames } from '../../../common/hotKey'
-import musicSdk from '@renderer/utils/music'
import path from 'path'
let audio
@@ -327,6 +326,7 @@ export default {
},
methods: {
...mapActions('player', ['getUrl', 'getPic', 'getLrc', 'playPrev', 'playNext']),
+ ...mapActions('list', ['getOtherSource']),
...mapMutations('player', [
'setPlayMusicInfo',
'setPlayIndex',
@@ -492,7 +492,7 @@ export default {
this.setImg(targetSong.musicInfo)
this.setLrc(targetSong.musicInfo)
} else {
- if (!this.assertApiSupport(targetSong.source)) return this.playNext()
+ // if (!this.assertApiSupport(targetSong.source)) return this.playNext()
this.musicInfo.songmid = targetSong.songmid
this.musicInfo.singer = targetSong.singer
this.musicInfo.name = targetSong.name
@@ -573,7 +573,7 @@ export default {
togglePlay() {
if (!audio.src) {
if (this.restorePlayTime != null) {
- if (!this.assertApiSupport(this.targetSong.source)) return this.playNext()
+ // if (!this.assertApiSupport(this.targetSong.source)) return this.playNext()
this.setUrl(this.targetSong)
}
return
@@ -613,10 +613,7 @@ export default {
this.status = this.statusText = 'Try toggle source...'
- return (originMusic.otherSource && originMusic.otherSource.length ? Promise.resolve(originMusic.otherSource) : musicSdk.findMusic(originMusic)).then(res => {
- this.updateMusicInfo({ id: this.listId, index: this.playIndex, data: { otherSource: res }, musicInfo: originMusic })
- return res
- }).then(otherSource => {
+ return this.getOtherSource(originMusic).then(otherSource => {
console.log('find otherSource', otherSource)
if (otherSource.length) {
for (const item of otherSource) {
diff --git a/src/renderer/components/material/MusicComment.vue b/src/renderer/components/material/MusicComment.vue
index 7b5c198e..f13c74bd 100644
--- a/src/renderer/components/material/MusicComment.vue
+++ b/src/renderer/components/material/MusicComment.vue
@@ -50,7 +50,7 @@ export default {
singer: '',
},
page: 1,
- total: 10,
+ total: 0,
maxPage: 1,
limit: 20,
isHotLoading: true,
diff --git a/src/renderer/components/material/SongList.vue b/src/renderer/components/material/SongList.vue
index 67c3c46a..afb4b7fc 100644
--- a/src/renderer/components/material/SongList.vue
+++ b/src/renderer/components/material/SongList.vue
@@ -31,8 +31,6 @@ div(:class="$style.songList")
td(:style="{ width: rowWidth.r6 }" style="padding-left: 0; padding-right: 0;")
material-list-buttons(:index="index" :class="$style.btns"
:remove-btn="false" @btn-click="handleListBtnClick"
- :listAdd-btn="assertApiSupport(item.source)"
- :play-btn="assertApiSupport(item.source)"
:download-btn="assertApiSupport(item.source)")
//- button.btn-info(type='button' v-if="item._types['128k'] || item._types['192k'] || item._types['320k'] || item._types.flac" @click.stop='openDownloadModal(index)') 下载
//- button.btn-secondary(type='button' v-if="item._types['128k'] || item._types['192k'] || item._types['320k']" @click.stop='testPlay(index)') 试听
@@ -243,7 +241,7 @@ export default {
this.clickIndex = index
return
}
- this.emitEvent(this.assertApiSupport(this.source) ? 'testPlay' : 'search', index)
+ this.emitEvent('testPlay', index)
this.clickTime = 0
this.clickIndex = -1
},
@@ -340,9 +338,9 @@ export default {
},
handleListItemRigthClick(event, index) {
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.list[index].source].getMusicDetailPageUrl
- this.listMenu.itemMenuControl.play =
- this.listMenu.itemMenuControl.playLater =
- this.listMenu.itemMenuControl.download =
+ // this.listMenu.itemMenuControl.play =
+ // this.listMenu.itemMenuControl.playLater =
+ this.listMenu.itemMenuControl.download =
this.assertApiSupport(this.list[index].source)
let dom_selected = this.$refs.dom_tbody.querySelector('tr.selected')
if (dom_selected) dom_selected.classList.remove('selected')
diff --git a/src/renderer/store/modules/list.js b/src/renderer/store/modules/list.js
index d0bc5451..10af48b6 100644
--- a/src/renderer/store/modules/list.js
+++ b/src/renderer/store/modules/list.js
@@ -1,3 +1,5 @@
+import musicSdk from '../../utils/music'
+
let allList = {}
window.allList = allList
@@ -48,7 +50,12 @@ const getters = {
// actions
const actions = {
-
+ getOtherSource({ state, commit }, musicInfo) {
+ return (musicInfo.otherSource && musicInfo.otherSource.length ? Promise.resolve(musicInfo.otherSource) : musicSdk.findMusic(musicInfo)).then(otherSource => {
+ commit('setOtherSource', { musicInfo, otherSource })
+ return otherSource
+ })
+ },
}
// mitations
@@ -217,6 +224,9 @@ const mutations = {
}
}
},
+ setOtherSource(state, { musicInfo, otherSource }) {
+ musicInfo.otherSource = otherSource
+ },
}
export default {
diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js
index a6a27bfc..d134f033 100644
--- a/src/renderer/store/modules/player.js
+++ b/src/renderer/store/modules/player.js
@@ -18,8 +18,8 @@ const state = {
}
let urlRequest
-let picRequest
-let lrcRequest
+// let picRequest
+// let lrcRequest
const filterList = async({ playedList, listInfo, savePath, commit }) => {
// if (this.list.listName === null) return
@@ -44,7 +44,7 @@ const filterList = async({ playedList, listInfo, savePath, commit }) => {
}
} else {
list = listInfo.list.filter(s => {
- if (!assertApiSupport(s.source)) return false
+ // if (!assertApiSupport(s.source)) return false
canPlayList.push(s)
let index = filteredPlayedList.indexOf(s)
@@ -62,6 +62,42 @@ const filterList = async({ playedList, listInfo, savePath, commit }) => {
return list
}
+const getPic = function(musicInfo, retryedSource = [], originMusic) {
+ console.log(musicInfo.source)
+ return music[musicInfo.source].getPic(musicInfo).promise.catch(err => {
+ if (!retryedSource.includes(musicInfo.source)) retryedSource.push(musicInfo.source)
+ return this.dispatch('list/getOtherSource', musicInfo).then(otherSource => {
+ if (!originMusic) originMusic = musicInfo
+ console.log('find otherSource', otherSource)
+ if (otherSource.length) {
+ for (const item of otherSource) {
+ if (retryedSource.includes(item.source)) continue
+ console.log('try toggle to: ', item.source, item.name, item.singer, item.interval)
+ return getPic.call(this, item, retryedSource, originMusic)
+ }
+ }
+ return Promise.reject(err)
+ })
+ })
+}
+const getLyric = function(musicInfo, retryedSource = [], originMusic) {
+ return music[musicInfo.source].getLyric(musicInfo).promise.catch(err => {
+ if (!retryedSource.includes(musicInfo.source)) retryedSource.push(musicInfo.source)
+ return this.dispatch('list/getOtherSource', musicInfo).then(otherSource => {
+ if (!originMusic) originMusic = musicInfo
+ console.log('find otherSource', otherSource)
+ if (otherSource.length) {
+ for (const item of otherSource) {
+ if (retryedSource.includes(item.source)) continue
+ console.log('try toggle to: ', item.source, item.name, item.singer, item.interval)
+ return getLyric.call(this, item, retryedSource, originMusic)
+ }
+ }
+ return Promise.reject(err)
+ })
+ })
+}
+
// getters
const getters = {
list: state => state.listInfo.list,
@@ -120,7 +156,11 @@ const actions = {
}
if (urlRequest && urlRequest.cancelHttp) urlRequest.cancelHttp()
if (musicInfo.typeUrl[type] && !isRefresh) return Promise.resolve(musicInfo.typeUrl[type])
- urlRequest = music[musicInfo.source].getMusicUrl(musicInfo, type)
+ try {
+ urlRequest = music[musicInfo.source].getMusicUrl(musicInfo, type)
+ } catch (err) {
+ return Promise.reject(err)
+ }
return urlRequest.promise.then(({ url }) => {
if (originMusic) commit('setUrl', { musicInfo: originMusic, url, type })
commit('setUrl', { musicInfo, url, type })
@@ -132,18 +172,18 @@ const actions = {
})
},
getPic({ commit, state }, musicInfo) {
- if (picRequest && picRequest.cancelHttp) picRequest.cancelHttp()
- picRequest = music[musicInfo.source].getPic(musicInfo)
- return picRequest.promise.then(url => {
- picRequest = null
+ // if (picRequest && picRequest.cancelHttp) picRequest.cancelHttp()
+ // picRequest = music[musicInfo.source].getPic(musicInfo)
+ return getPic.call(this, musicInfo).then(url => {
+ // picRequest = null
commit('getPic', { musicInfo, url })
}).catch(err => {
- picRequest = null
+ // picRequest = null
return Promise.reject(err)
})
},
getLrc({ commit, state }, musicInfo) {
- if (lrcRequest && lrcRequest.cancelHttp) lrcRequest.cancelHttp()
+ // if (lrcRequest && lrcRequest.cancelHttp) lrcRequest.cancelHttp()
if (musicInfo.lrc && musicInfo.tlrc != null) {
if (musicInfo.lrc.startsWith('\ufeff[id:$00000000]')) {
let str = musicInfo.lrc.replace('\ufeff[id:$00000000]\n', '')
@@ -153,12 +193,12 @@ const actions = {
}
- lrcRequest = music[musicInfo.source].getLyric(musicInfo)
- return lrcRequest.promise.then(({ lyric, tlyric }) => {
- lrcRequest = null
+ // lrcRequest = music[musicInfo.source].getLyric(musicInfo)
+ return getLyric.call(this, musicInfo).then(({ lyric, tlyric }) => {
+ // lrcRequest = null
commit('setLrc', { musicInfo, lyric, tlyric })
}).catch(err => {
- lrcRequest = null
+ // lrcRequest = null
return Promise.reject(err)
})
},
diff --git a/src/renderer/utils/music/api-source-info.js b/src/renderer/utils/music/api-source-info.js
index 74379655..e3ea06f7 100644
--- a/src/renderer/utils/music/api-source-info.js
+++ b/src/renderer/utils/music/api-source-info.js
@@ -11,7 +11,6 @@ module.exports = [
tx: ['128k'],
wy: ['128k'],
mg: ['128k'],
- xm: ['128k'],
// bd: ['128k'],
},
},
diff --git a/src/renderer/utils/music/index.js b/src/renderer/utils/music/index.js
index 7ef844b3..c9821b02 100644
--- a/src/renderer/utils/music/index.js
+++ b/src/renderer/utils/music/index.js
@@ -87,7 +87,7 @@ export default {
item.name = trimStr(item.name)
item.lowerCaseName = String(item.name).toLowerCase()
item.lowerCaseAlbumName = String(item.albumName).toLowerCase()
- console.log(lowerCaseName, item.lowerCaseName)
+ // console.log(lowerCaseName, item.lowerCaseName)
if (
(
item.sortedSinger === sortedSinger &&
diff --git a/src/renderer/utils/music/xm/index.js b/src/renderer/utils/music/xm/index.js
index e586bf25..5142a0db 100644
--- a/src/renderer/utils/music/xm/index.js
+++ b/src/renderer/utils/music/xm/index.js
@@ -1,39 +1,54 @@
-import { apis } from '../api-source'
-import leaderboard from './leaderboard'
-import songList from './songList'
-import musicSearch from './musicSearch'
+// import { apis } from '../api-source'
+// import leaderboard from './leaderboard'
+// import songList from './songList'
+// import musicSearch from './musicSearch'
// import pic from './pic'
-import lyric from './lyric'
-import hotSearch from './hotSearch'
-import comment from './comment'
-import musicInfo from './musicInfo'
-import { closeVerifyModal } from './util'
+// import lyric from './lyric'
+// import hotSearch from './hotSearch'
+// import comment from './comment'
+// import musicInfo from './musicInfo'
+// import { closeVerifyModal } from './util'
const xm = {
- songList,
- musicSearch,
- leaderboard,
- hotSearch,
- closeVerifyModal,
- comment,
+ // songList,
+ // musicSearch,
+ // leaderboard,
+ // hotSearch,
+ // closeVerifyModal,
+ comment: {
+ getComment() {
+ return Promise.reject(new Error('fail'))
+ },
+ getHotComment() {
+ return Promise.reject(new Error('fail'))
+ },
+ },
getMusicUrl(songInfo, type) {
- return apis('xm').getMusicUrl(songInfo, type)
+ return {
+ promise: Promise.reject(new Error('fail')),
+ }
+ // return apis('xm').getMusicUrl(songInfo, type)
},
getLyric(songInfo) {
- return lyric.getLyric(songInfo)
+ return {
+ promise: Promise.reject(new Error('fail')),
+ }
+ // return lyric.getLyric(songInfo)
},
getPic(songInfo) {
- return Promise.reject(new Error('fail'))
+ return {
+ promise: Promise.reject(new Error('fail')),
+ }
// return pic.getPic(songInfo)
},
- getMusicDetailPageUrl(songInfo) {
- if (songInfo.songStringId) return `https://www.xiami.com/song/${songInfo.songStringId}`
+ // getMusicDetailPageUrl(songInfo) {
+ // if (songInfo.songStringId) return `https://www.xiami.com/song/${songInfo.songStringId}`
- musicInfo.getMusicInfo(songInfo).then(({ data }) => {
- songInfo.songStringId = data.songStringId
- })
- return `https://www.xiami.com/song/${songInfo.songmid}`
- },
+ // musicInfo.getMusicInfo(songInfo).then(({ data }) => {
+ // songInfo.songStringId = data.songStringId
+ // })
+ // return `https://www.xiami.com/song/${songInfo.songmid}`
+ // },
// init() {
// getToken()
// },
diff --git a/src/renderer/utils/music/xm/util.js b/src/renderer/utils/music/xm/util.js
index d8b30f08..e02aa2c3 100644
--- a/src/renderer/utils/music/xm/util.js
+++ b/src/renderer/utils/music/xm/util.js
@@ -68,7 +68,7 @@ export const xmRequest = (path, params = '') => {
isCancelled: false,
cancelHttp() {
if (!this.isInited) this.isCancelled = true
- this.requestObj.cancelHttp()
+ this.requestObj && this.requestObj.cancelHttp()
},
}
diff --git a/src/renderer/views/List.vue b/src/renderer/views/List.vue
index 8703fd19..2759cad9 100644
--- a/src/renderer/views/List.vue
+++ b/src/renderer/views/List.vue
@@ -569,7 +569,7 @@ export default {
}
},
testPlay(index) {
- if (!this.assertApiSupport(this.list[index].source)) return
+ // if (!this.assertApiSupport(this.list[index].source)) return
this.setPlayList({ list: this.listData, index })
},
handleRemove(index) {
@@ -579,7 +579,7 @@ export default {
switch (info.action) {
case 'download': {
const minfo = this.list[info.index]
- if (!this.assertApiSupport(minfo.source)) return
+ // if (!this.assertApiSupport(minfo.source)) return
this.musicInfo = minfo
this.$nextTick(() => {
this.isShowDownload = true
@@ -732,9 +732,9 @@ export default {
},
handleListItemRigthClick(event, index) {
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.list[index].source].getMusicDetailPageUrl
- this.listMenu.itemMenuControl.play =
- this.listMenu.itemMenuControl.playLater =
- this.listMenu.itemMenuControl.download =
+ // this.listMenu.itemMenuControl.play =
+ // this.listMenu.itemMenuControl.playLater =
+ this.listMenu.itemMenuControl.download =
this.assertApiSupport(this.list[index].source)
let dom_selected = this.$refs.dom_tbody.querySelector('tr.selected')
if (dom_selected) dom_selected.classList.remove('selected')
diff --git a/src/renderer/views/SongList.vue b/src/renderer/views/SongList.vue
index e0dbac2f..dc272426 100644
--- a/src/renderer/views/SongList.vue
+++ b/src/renderer/views/SongList.vue
@@ -239,7 +239,7 @@ export default {
break
case 'play':
if (this.selectedData.length) {
- this.listAddMultiple({ id: 'default', list: this.filterList(this.selectedData) })
+ this.listAddMultiple({ id: 'default', list: [...this.selectedData] })
this.resetSelect()
}
this.testPlay(info.index)
From b6b41660d6cfaa37b4bb29a82f50c56f12ba39ad Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Fri, 5 Feb 2021 23:07:36 +0800
Subject: [PATCH 048/132] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=9C=AA=E4=BD=BF?=
=?UTF-8?q?=E7=94=A8=E7=9A=84=E5=8F=98=E9=87=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/store/modules/player.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js
index d134f033..87d3d083 100644
--- a/src/renderer/store/modules/player.js
+++ b/src/renderer/store/modules/player.js
@@ -1,6 +1,6 @@
import path from 'path'
import music from '../../utils/music'
-import { getRandom, checkPath, assertApiSupport } from '../../utils'
+import { getRandom, checkPath } from '../../utils'
// state
const state = {
From 0afb1417a3ec5a7cf78377a4c0c1df8d5a72c72c Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 6 Feb 2021 00:09:09 +0800
Subject: [PATCH 049/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8B=E8=BD=BD?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E6=95=B0=E6=8D=AE=E5=AD=98=E5=82=A8=E9=97=AE?=
=?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/rendererEvents/playList.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/rendererEvents/playList.js b/src/main/rendererEvents/playList.js
index 5bfeb50e..a22c5e4f 100644
--- a/src/main/rendererEvents/playList.js
+++ b/src/main/rendererEvents/playList.js
@@ -34,7 +34,7 @@ mainOn(ipcMainWindowNames.save_playlist, (event, { type, data }) => {
electronStore_list && electronStore_list.set(type, data)
break
case 'downloadList':
- electronStore_downloadList && electronStore_downloadList.set(type, data)
+ electronStore_downloadList && electronStore_downloadList.set('list', data)
break
}
})
From 475b8924c3542db48d13bfc1a2ca7450e1838f1b Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 15 Feb 2021 10:52:29 +0800
Subject: [PATCH 050/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=AD=8C=E5=8D=95?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8A=A0=E8=BD=BD=E5=A4=B1=E8=B4=A5=E6=97=B6?=
=?UTF-8?q?=E6=97=A0=E6=B3=95=E8=BF=9B=E5=85=A5=E6=AD=8C=E5=8D=95=E6=89=93?=
=?UTF-8?q?=E5=BC=80=E7=95=8C=E9=9D=A2=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 1 +
src/renderer/views/SongList.vue | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index d7f52fa0..a620045f 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -14,3 +14,4 @@
- 修复音乐搜索列表的稍后播放功能无效的问题
- 修复搜索列表双击不支持播放的源时会导致切歌的问题
+- 修复歌单列表加载失败时无法进入歌单打开界面的问题
diff --git a/src/renderer/views/SongList.vue b/src/renderer/views/SongList.vue
index dc272426..35ad83f7 100644
--- a/src/renderer/views/SongList.vue
+++ b/src/renderer/views/SongList.vue
@@ -23,7 +23,7 @@
material-select(:class="$style.select" :list="sourceInfo.sources" item-key="id" item-name="name" v-model="source")
div(:class="$style.songListContent")
transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
- div(:class="$style.songListContent" v-show="listData.list.length")
+ div(:class="$style.songListContent")
transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
div.scroll(:class="$style.songList" v-if="sortId !== 'importSongList'" ref="dom_scrollContent")
ul
@@ -49,7 +49,7 @@
li {{$t('view.song_list.tip_2')}}
li {{$t('view.song_list.tip_3')}}
transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
- div(v-show="!listData.list.length" :class="$style.noitem")
+ div(v-show="!listData.list.length && sortId !== 'importSongList'" :class="$style.noitem")
p {{$t('view.song_list.loding_list')}}
material-download-modal(:show="isShowDownload" :musicInfo="musicInfo" @select="handleAddDownload" @close="isShowDownload = false")
material-download-multiple-modal(:show="isShowDownloadMultiple" :list="selectedData" @select="handleAddDownloadMultiple" @close="isShowDownloadMultiple = false")
From 00d262f0e630f138396c64a2ad704a9569f860cb Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 15 Feb 2021 12:40:12 +0800
Subject: [PATCH 051/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmg=E6=BA=90=E6=AD=8C?=
=?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8=E6=97=A0=E6=B3=95=E5=8A=A0=E8=BD=BD?=
=?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 1 +
src/renderer/utils/music/mg/songList.js | 12 ++++++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index a620045f..0c496d8e 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -15,3 +15,4 @@
- 修复音乐搜索列表的稍后播放功能无效的问题
- 修复搜索列表双击不支持播放的源时会导致切歌的问题
- 修复歌单列表加载失败时无法进入歌单打开界面的问题
+- 修复mg源歌单列表无法加载的问题
diff --git a/src/renderer/utils/music/mg/songList.js b/src/renderer/utils/music/mg/songList.js
index 5eaf869d..0f7f49bb 100644
--- a/src/renderer/utils/music/mg/songList.js
+++ b/src/renderer/utils/music/mg/songList.js
@@ -48,10 +48,12 @@ export default {
return `https://app.c.nf.migu.cn/MIGUM2.0/v1.0/user/queryMusicListSongs.do?musicListId=${id}&pageNo=${page}&pageSize=${this.limit_song}`
},
defaultHeaders: {
- language: 'Chinese',
- ua: 'Android_migu',
- mode: 'android',
- version: '6.8.5',
+ 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
+ Referer: 'https://m.music.migu.cn/',
+ // language: 'Chinese',
+ // ua: 'Android_migu',
+ // mode: 'android',
+ // version: '6.8.5',
},
/**
@@ -155,6 +157,7 @@ export default {
if (this._requestObj_list) this._requestObj_list.cancelHttp()
if (tryNum > 2) return Promise.reject(new Error('try max num'))
this._requestObj_list = httpFetch(this.getSongListUrl(sortId, tagId, page), {
+ headers: this.defaultHeaders,
// headers: {
// sign: 'c3b7ae985e2206e97f1b2de8f88691e2',
// timestamp: 1578225871982,
@@ -186,6 +189,7 @@ export default {
// })
// })
return this._requestObj_list.promise.then(({ body }) => {
+ // console.log(body)
if (body.retCode !== '100000' || body.retMsg.code !== this.successCode) return this.getList(sortId, tagId, page, ++tryNum)
return {
list: this.filterList(body.retMsg.playlist),
From ef371dedb42b5130c0f3f2efc6df10bb88668169 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 15 Feb 2021 19:53:46 +0800
Subject: [PATCH 052/132] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=8F=8F=E8=BF=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 0c496d8e..6c426675 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -4,7 +4,7 @@
### 优化
-- 允许播放除了搜索列表以外的所有歌曲,即原来没有播放按钮或者灰色的歌曲都可以点击尝试去播放。注:该功能的原理是尝试自动切换到其他源播放,所以不一定会播放成功,特别是对于那些独家的资源
+- 允许播放除了搜索列表以外的所有歌曲,即原来没有播放按钮或者灰色的歌曲都可以去尝试点击播放。注:该功能的原理是尝试自动切换到其他源播放,所以不一定会播放成功,特别是对于那些独家的资源
### 移除
From d128aeb6efc9cb83e4a786eab8fb1a669eac0d62 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Fri, 19 Feb 2021 11:47:25 +0800
Subject: [PATCH 053/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dkg=E6=AD=8C=E6=9B=B2?=
=?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E7=9A=84=E6=AD=8C=E6=9B=B2=E6=97=A0?=
=?UTF-8?q?=E6=B3=95=E6=92=AD=E6=94=BE=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 1 +
src/renderer/utils/music/kg/index.js | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 6c426675..c84185f6 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -16,3 +16,4 @@
- 修复搜索列表双击不支持播放的源时会导致切歌的问题
- 修复歌单列表加载失败时无法进入歌单打开界面的问题
- 修复mg源歌单列表无法加载的问题
+- 修复kg歌曲详情页的歌曲无法播放的问题
diff --git a/src/renderer/utils/music/kg/index.js b/src/renderer/utils/music/kg/index.js
index c0ccfbb2..4d4ac3da 100644
--- a/src/renderer/utils/music/kg/index.js
+++ b/src/renderer/utils/music/kg/index.js
@@ -26,7 +26,7 @@ const kg = {
return pic.getPic(songInfo)
},
getMusicDetailPageUrl(songInfo) {
- return `https://www.kugou.com/song/#hash=${songInfo.hash}`
+ return `https://www.kugou.com/song/#hash=${songInfo.hash}&album_id=${songInfo.albumId}`
},
// getPic(songInfo) {
// return apis('kg').getPic(songInfo)
From 9e1fe0a6c1c80c4bccaafbe5cc84c58a86410387 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Fri, 19 Feb 2021 21:59:58 +0800
Subject: [PATCH 054/132] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=A4=9A=E4=BD=99?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
publish/changeLog.md | 2 +-
src/renderer/views/Setting.vue | 40 +++++++++++++++++-----------------
2 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/publish/changeLog.md b/publish/changeLog.md
index c84185f6..4b4e5c67 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -16,4 +16,4 @@
- 修复搜索列表双击不支持播放的源时会导致切歌的问题
- 修复歌单列表加载失败时无法进入歌单打开界面的问题
- 修复mg源歌单列表无法加载的问题
-- 修复kg歌曲详情页的歌曲无法播放的问题
+- 修复kg跳转到官方歌曲详情页的歌曲无法播放的问题
diff --git a/src/renderer/views/Setting.vue b/src/renderer/views/Setting.vue
index 21f81480..10ed1d08 100644
--- a/src/renderer/views/Setting.vue
+++ b/src/renderer/views/Setting.vue
@@ -301,26 +301,26 @@ export default {
? `${this.version.downloadProgress.percent.toFixed(2)}% - ${sizeFormate(this.version.downloadProgress.transferred)}/${sizeFormate(this.version.downloadProgress.total)} - ${sizeFormate(this.version.downloadProgress.bytesPerSecond)}/s`
: this.$t('view.setting.update_init')
},
- togglePlayMethods() {
- return [
- {
- name: this.$t('view.setting.play_toggle_list_loop'),
- value: 'listLoop',
- },
- {
- name: this.$t('view.setting.play_toggle_random'),
- value: 'random',
- },
- {
- name: this.$t('view.setting.play_toggle_list'),
- value: 'list',
- },
- {
- name: this.$t('view.setting.play_toggle_single_loop'),
- value: 'singleLoop',
- },
- ]
- },
+ // togglePlayMethods() {
+ // return [
+ // {
+ // name: this.$t('view.setting.play_toggle_list_loop'),
+ // value: 'listLoop',
+ // },
+ // {
+ // name: this.$t('view.setting.play_toggle_random'),
+ // value: 'random',
+ // },
+ // {
+ // name: this.$t('view.setting.play_toggle_list'),
+ // value: 'list',
+ // },
+ // {
+ // name: this.$t('view.setting.play_toggle_single_loop'),
+ // value: 'singleLoop',
+ // },
+ // ]
+ // },
apiSources() {
return apiSourceInfo.map(api => ({
id: api.id,
From 24d5722ef72319584852f091557d85464d6cbfc1 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Fri, 19 Feb 2021 22:10:37 +0800
Subject: [PATCH 055/132] =?UTF-8?q?=E7=A7=BB=E9=99=A4log?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/store/modules/player.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js
index 87d3d083..cfde88f0 100644
--- a/src/renderer/store/modules/player.js
+++ b/src/renderer/store/modules/player.js
@@ -63,7 +63,7 @@ const filterList = async({ playedList, listInfo, savePath, commit }) => {
}
const getPic = function(musicInfo, retryedSource = [], originMusic) {
- console.log(musicInfo.source)
+ // console.log(musicInfo.source)
return music[musicInfo.source].getPic(musicInfo).promise.catch(err => {
if (!retryedSource.includes(musicInfo.source)) retryedSource.push(musicInfo.source)
return this.dispatch('list/getOtherSource', musicInfo).then(otherSource => {
From ffaa3e591b47390847a6dbf41287165b121c79f7 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 20 Feb 2021 00:50:00 +0800
Subject: [PATCH 056/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dkg=E8=8E=B7=E5=8F=96?=
=?UTF-8?q?=E5=9B=BE=E7=89=87=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=94=99=E8=AF=AF?=
=?UTF-8?q?=E5=A4=84=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/utils/music/kg/pic.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/renderer/utils/music/kg/pic.js b/src/renderer/utils/music/kg/pic.js
index feceef68..b74693ba 100644
--- a/src/renderer/utils/music/kg/pic.js
+++ b/src/renderer/utils/music/kg/pic.js
@@ -37,7 +37,9 @@ export default {
requestObj.promise = requestObj.promise.then(({ body }) => {
if (body.error_code !== 0) return Promise.reject('图片获取失败')
let info = body.data[0].info
- return info.imgsize ? info.image.replace('{size}', info.imgsize[0]) : info.image
+ const img = info.imgsize ? info.image.replace('{size}', info.imgsize[0]) : info.image
+ if (!img) return Promise.reject('Pic get failed')
+ return img
})
return requestObj
},
From 376b7545e1c53b31f0d7438230e714f60de6e2cb Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sat, 20 Feb 2021 01:01:58 +0800
Subject: [PATCH 057/132] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=88=91=E7=9A=84?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84=E7=81=B0=E8=89=B2=E6=AD=8C=E6=9B=B2?=
=?UTF-8?q?=E4=BC=9A=E6=98=BE=E7=A4=BA=E4=B8=8B=E8=BD=BD=E6=8C=89=E9=92=AE?=
=?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/views/List.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/views/List.vue b/src/renderer/views/List.vue
index 2759cad9..15e8966b 100644
--- a/src/renderer/views/List.vue
+++ b/src/renderer/views/List.vue
@@ -54,7 +54,7 @@
td(style="width: 9%;")
span(:class="[$style.time, $style.noSelect]") {{item.interval || '--/--'}}
td(style="width: 15%; padding-left: 0; padding-right: 0;")
- material-list-buttons(:index="index" @btn-click="handleListBtnClick")
+ material-list-buttons(:index="index" @btn-click="handleListBtnClick" :download-btn="assertApiSupport(item.source)")
//- button.btn-info(type='button' v-if="item._types['128k'] || item._types['192k'] || item._types['320k'] || item._types.flac" @click.stop='openDownloadModal(index)') 下载
//- button.btn-secondary(type='button' v-if="item._types['128k'] || item._types['192k'] || item._types['320k']" @click.stop='testPlay(index)') 试听
//- button.btn-secondary(type='button' @click.stop='handleRemove(index)') 删除
From b5f5e13f22277997f7a4decfd5898c218f348ba8 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sun, 21 Feb 2021 12:34:50 +0800
Subject: [PATCH 058/132] =?UTF-8?q?=E7=A7=BB=E9=99=A4xm=20verify=E7=AA=97?=
=?UTF-8?q?=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/rendererEvents/index.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/rendererEvents/index.js b/src/main/rendererEvents/index.js
index 395d0fca..4df658d3 100644
--- a/src/main/rendererEvents/index.js
+++ b/src/main/rendererEvents/index.js
@@ -18,6 +18,6 @@ require('./showDialog')
require('./playList')
require('./data')
-require('./xm_verify')
+// require('./xm_verify')
require('./kw_decodeLyric')
From 6ffe61562b4689ca88fa2c95f4ab62635a8e8227 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sun, 21 Feb 2021 15:46:19 +0800
Subject: [PATCH 059/132] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E8=87=AA=E5=8A=A8?=
=?UTF-8?q?=E6=8D=A2=E6=BA=90=E6=B8=85=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/store/modules/list.js | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/src/renderer/store/modules/list.js b/src/renderer/store/modules/list.js
index 10af48b6..6dc9b97f 100644
--- a/src/renderer/store/modules/list.js
+++ b/src/renderer/store/modules/list.js
@@ -64,20 +64,6 @@ const mutations = {
if (defaultList != null) Object.assign(state.defaultList, { list: defaultList.list, location: defaultList.location })
if (loveList != null) Object.assign(state.loveList, { list: loveList.list, location: loveList.location })
if (userList != null) state.userList = userList
- if (window.localStorage.getItem('isResetOtherSource') != '1') {
- for (const item of defaultList.list) {
- if (item.otherSource) item.otherSource = null
- }
- for (const item of loveList.list) {
- if (item.otherSource) item.otherSource = null
- }
- for (const list of userList) {
- for (const item of list.list) {
- if (item.otherSource) item.otherSource = null
- }
- }
- window.localStorage.setItem('isResetOtherSource', '1')
- }
allListInit(state.defaultList, state.loveList, state.userList)
state.isInitedList = true
},
From b6107b728194be2436a1520b281e56b0ef22a57e Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Sun, 21 Feb 2021 16:19:08 +0800
Subject: [PATCH 060/132] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E5=AD=98=E5=82=A8=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/rendererEvents/playList.js | 14 +++++++---
src/renderer/App.vue | 40 +++++++++++++++--------------
2 files changed, 31 insertions(+), 23 deletions(-)
diff --git a/src/main/rendererEvents/playList.js b/src/main/rendererEvents/playList.js
index a22c5e4f..86a90d89 100644
--- a/src/main/rendererEvents/playList.js
+++ b/src/main/rendererEvents/playList.js
@@ -26,12 +26,18 @@ mainHandle(ipcMainWindowNames.get_playlist, async(event, isIgnoredError = false)
}
})
+const handleSaveList = ({ defaultList, loveList, userList }) => {
+ if (!electronStore_list) return
+ let data = {}
+ if (defaultList != null) data.defaultList = defaultList
+ if (loveList != null) data.loveList = loveList
+ if (userList != null) data.userList = userList
+ electronStore_list.set(data)
+}
mainOn(ipcMainWindowNames.save_playlist, (event, { type, data }) => {
switch (type) {
- case 'defaultList':
- case 'loveList':
- case 'userList':
- electronStore_list && electronStore_list.set(type, data)
+ case 'myList':
+ handleSaveList(data)
break
case 'downloadList':
electronStore_downloadList && electronStore_downloadList.set('list', data)
diff --git a/src/renderer/App.vue b/src/renderer/App.vue
index 161531cb..3364102a 100644
--- a/src/renderer/App.vue
+++ b/src/renderer/App.vue
@@ -37,6 +37,20 @@ dnscache({
cachesize: 1000,
})
+const listThrottle = (fn, delay = 100) => {
+ let timer = null
+ let _data = {}
+ return function(data) {
+ Object.assign(_data, data)
+ if (timer) return
+ timer = setTimeout(() => {
+ timer = null
+ fn.call(this, _data)
+ _data = {}
+ }, delay)
+ }
+}
+
export default {
data() {
return {
@@ -70,24 +84,12 @@ export default {
}),
},
created() {
- this.saveDefaultList = throttle(n => {
+ this.saveMyList = listThrottle(data => {
rendererSend(NAMES.mainWindow.save_playlist, {
- type: 'defaultList',
- data: n,
+ type: 'myList',
+ data,
})
- }, 500)
- this.saveLoveList = throttle(n => {
- rendererSend(NAMES.mainWindow.save_playlist, {
- type: 'loveList',
- data: n,
- })
- }, 500)
- this.saveUserList = throttle(n => {
- rendererSend(NAMES.mainWindow.save_playlist, {
- type: 'userList',
- data: n,
- })
- }, 500)
+ }, 300)
this.saveDownloadList = throttle(n => {
rendererSend(NAMES.mainWindow.save_playlist, {
type: 'downloadList',
@@ -115,19 +117,19 @@ export default {
},
defaultList: {
handler(n) {
- this.saveDefaultList(n)
+ this.saveMyList({ defaultList: n })
},
deep: true,
},
loveList: {
handler(n) {
- this.saveLoveList(n)
+ this.saveMyList({ loveList: n })
},
deep: true,
},
userList: {
handler(n) {
- this.saveUserList(n)
+ this.saveMyList({ userList: n })
},
deep: true,
},
From fa0d9ad4c3efe0c409a00041159606837afc7a3a Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Mon, 22 Feb 2021 12:59:39 +0800
Subject: [PATCH 061/132] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=AF=E5=8A=A8?=
=?UTF-8?q?=E5=8F=82=E6=95=B0-play?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 6 +
publish/changeLog.md | 1 +
src/common/config.js | 2 +-
src/main/rendererEvents/index.js | 2 -
src/main/rendererEvents/xm_verify/index.js | 4 -
.../rendererEvents/xm_verify/xm_verify.js | 4 -
.../xm_verify/xm_verify_view.js | 79 -------
.../rendererEvents/xm_verify/xm_verify_win.js | 91 --------
src/renderer/App.vue | 120 ++++++++--
.../components/material/XmVerifyModal.vue | 50 ----
src/renderer/utils/index.js | 11 +
src/renderer/utils/music/index.js | 4 +-
src/renderer/utils/music/kw/index.js | 2 +-
.../utils/music/{xm/index.js => xm.js} | 0
src/renderer/utils/music/xm/api-test.js | 20 --
src/renderer/utils/music/xm/comment.js | 47 ----
src/renderer/utils/music/xm/hotSearch.js | 20 --
src/renderer/utils/music/xm/leaderboard.js | 211 -----------------
src/renderer/utils/music/xm/lyric.js | 107 ---------
src/renderer/utils/music/xm/musicInfo.js | 14 --
src/renderer/utils/music/xm/musicSearch.js | 115 ---------
src/renderer/utils/music/xm/songList.js | 221 ------------------
src/renderer/utils/music/xm/util.js | 122 ----------
23 files changed, 121 insertions(+), 1132 deletions(-)
delete mode 100644 src/main/rendererEvents/xm_verify/index.js
delete mode 100644 src/main/rendererEvents/xm_verify/xm_verify.js
delete mode 100644 src/main/rendererEvents/xm_verify/xm_verify_view.js
delete mode 100644 src/main/rendererEvents/xm_verify/xm_verify_win.js
delete mode 100644 src/renderer/components/material/XmVerifyModal.vue
rename src/renderer/utils/music/{xm/index.js => xm.js} (100%)
delete mode 100644 src/renderer/utils/music/xm/api-test.js
delete mode 100644 src/renderer/utils/music/xm/comment.js
delete mode 100644 src/renderer/utils/music/xm/hotSearch.js
delete mode 100644 src/renderer/utils/music/xm/leaderboard.js
delete mode 100644 src/renderer/utils/music/xm/lyric.js
delete mode 100644 src/renderer/utils/music/xm/musicInfo.js
delete mode 100644 src/renderer/utils/music/xm/musicSearch.js
delete mode 100644 src/renderer/utils/music/xm/songList.js
delete mode 100644 src/renderer/utils/music/xm/util.js
diff --git a/README.md b/README.md
index 088b531d..a9af56d1 100644
--- a/README.md
+++ b/README.md
@@ -83,6 +83,12 @@ npm run pack:linux
- `-search` 启动软件时自动在搜索框搜索指定的内容,例如:`-search="突然的自我 - 伍佰"`
- `-dha` 禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动(v1.6.0起新增)
- `-dt` 以非透明模式启动(Disable Transparent),对于未开启AERO效果的win7系统可加此参数启动以确保界面正常显示,原来的`-nt`参数已重命名为`-dt`(v1.6.0起重命名)
+- `-play` 启动时播放指定列表的音乐,参数说明:
+ - `type`:播放类型,目前固定为`songList`
+ - `source`:播放源,可用值为`kw/kg/tx/wy/mg/myList`,其中`kw/kg/tx/wy/mg`对应各源的在线列表,`myList`为本地列表
+ - `link`:要播放的在线列表歌单链接、或ID,source为`kw/kg/tx/wy/mg`之一(在线列表)时必传,举例:`./lx-music-desktop -play="type=songList&source=kw&link=歌单URL or ID",注意:如果传入URL时必须对URL进行编码后再传入
+ - `name`:要播放的本地列表歌单名字,source为`myList`时必传,举例:`./lx-music-desktop -play="type=songList&source=myList&name=默认列表"
+ - `index`:从列表的哪个位置开始播放,选传,若不传默认播放第一首歌曲,举例:`./lx-music-desktop -play="type=songList&source=myList&name=默认列表&index=2"
### 常见问题
diff --git a/publish/changeLog.md b/publish/changeLog.md
index 4b4e5c67..33529d36 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -1,6 +1,7 @@
### 新增
- 新增设置-其他-列表缓存信息清理功能,注:此功能一般情况下不要使用
+- 新增启动参数`-play`,可以在启动软件时播放指定歌单,使用方法看Readme.md的"启动参数"部分
### 优化
diff --git a/src/common/config.js b/src/common/config.js
index 833c3a86..c6568f1d 100644
--- a/src/common/config.js
+++ b/src/common/config.js
@@ -51,6 +51,6 @@ module.exports = {
},
],
navigationUrlWhiteList: [
- /^https:\/\/www\.xiami\.com/,
+
],
}
diff --git a/src/main/rendererEvents/index.js b/src/main/rendererEvents/index.js
index 4df658d3..9fe426ab 100644
--- a/src/main/rendererEvents/index.js
+++ b/src/main/rendererEvents/index.js
@@ -18,6 +18,4 @@ require('./showDialog')
require('./playList')
require('./data')
-// require('./xm_verify')
-
require('./kw_decodeLyric')
diff --git a/src/main/rendererEvents/xm_verify/index.js b/src/main/rendererEvents/xm_verify/index.js
deleted file mode 100644
index c702a972..00000000
--- a/src/main/rendererEvents/xm_verify/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-const { isMac } = require('../../../common/utils')
-
-// mac下的 BrowserView 无法拖动验证栏,改用 BrowserWindow
-require(isMac ? './xm_verify_win' : './xm_verify_view')
diff --git a/src/main/rendererEvents/xm_verify/xm_verify.js b/src/main/rendererEvents/xm_verify/xm_verify.js
deleted file mode 100644
index c702a972..00000000
--- a/src/main/rendererEvents/xm_verify/xm_verify.js
+++ /dev/null
@@ -1,4 +0,0 @@
-const { isMac } = require('../../../common/utils')
-
-// mac下的 BrowserView 无法拖动验证栏,改用 BrowserWindow
-require(isMac ? './xm_verify_win' : './xm_verify_view')
diff --git a/src/main/rendererEvents/xm_verify/xm_verify_view.js b/src/main/rendererEvents/xm_verify/xm_verify_view.js
deleted file mode 100644
index 22df05ef..00000000
--- a/src/main/rendererEvents/xm_verify/xm_verify_view.js
+++ /dev/null
@@ -1,79 +0,0 @@
-const { BrowserView } = require('electron')
-const { mainHandle, NAMES: { mainWindow: ipcMainWindowNames } } = require('../../../common/ipc')
-const { getWindowSizeInfo } = require('../../utils')
-
-let view
-let isActioned = false
-let rejectFn
-
-const closeView = async() => {
- if (!view) return
- // await view.webContents.session.clearCache()
- if (global.modules.mainWindow) global.modules.mainWindow.removeBrowserView(view)
- await view.webContents.session.clearStorageData()
- view.destroy()
- view = null
-}
-
-mainHandle(ipcMainWindowNames.handle_xm_verify_open, (event, url) => new Promise((resolve, reject) => {
- if (!global.modules.mainWindow) return reject(new Error('mainWindow is undefined'))
- if (view) {
- global.modules.mainWindow.removeBrowserView(view)
- view.destroy()
- }
-
- rejectFn = reject
-
- isActioned = false
-
- view = new BrowserView({
- webPreferences: {
- enableRemoteModule: false,
- disableHtmlFullscreenWindowResize: true,
- },
- })
- // view.webContents.on('did-finish-load', () => {
- // if (/punish\?/.test(view.webContents.getURL())) return
- // let ses = view.webContents.session
- // ses.cookies.get({ name: 'x5sec' })
- // .then(async([x5sec]) => {
- // isActioned = true
- // await closeView()
- // if (!x5sec) return reject(new Error('get x5sec failed'))
- // resolve(x5sec.value)
- // }).catch(async err => {
- // isActioned = true
- // await closeView()
- // reject(err)
- // })
- // })
- view.webContents.session.webRequest.onCompleted({ urls: ['*://www.xiami.com/*'] }, details => {
- if (/\/_____tmd_____\/slide\?/.test(details.url)) {
- for (const item of details.responseHeaders['set-cookie']) {
- if (!/^x5sec=/.test(item)) continue
- const x5sec = /x5sec=(\w+);.+$/.exec(item)
- isActioned = true
- closeView().finally(() => {
- if (!x5sec) return reject(new Error('get x5sec failed'))
- resolve(x5sec[1])
- })
- }
- }
- })
- // console.log(url)
- global.modules.mainWindow.setBrowserView(view)
- const windowSizeInfo = getWindowSizeInfo(global.appSetting)
- view.setBounds({ x: (windowSizeInfo.width - 380) / 2, y: ((windowSizeInfo.height - 320 + 52) / 2), width: 380, height: 320 })
- view.webContents.loadURL(url, {
- httpReferrer: 'https://www.xiami.com/',
- })
- // view.webContents.openDevTools()
-}))
-
-mainHandle(ipcMainWindowNames.handle_xm_verify_close, async() => {
- await closeView()
- if (!rejectFn) return
- if (!isActioned) rejectFn(new Error('canceled verify'))
- rejectFn = null
-})
-
diff --git a/src/main/rendererEvents/xm_verify/xm_verify_win.js b/src/main/rendererEvents/xm_verify/xm_verify_win.js
deleted file mode 100644
index 611fcaed..00000000
--- a/src/main/rendererEvents/xm_verify/xm_verify_win.js
+++ /dev/null
@@ -1,91 +0,0 @@
-const { BrowserWindow } = require('electron')
-const { mainHandle, NAMES: { mainWindow: ipcMainWindowNames } } = require('../../../common/ipc')
-const { getWindowSizeInfo } = require('../../utils')
-
-let win
-
-const closeWin = async() => {
- if (!win) return
- // await win.webContents.session.clearCache()
- // if (global.modules.mainWindow) global.modules.mainWindow.removeBrowserView(win)
- if (win.isDestroyed()) {
- win = null
- return
- }
- await win.webContents.session.clearStorageData()
- win.destroy()
- win = null
-}
-
-mainHandle(ipcMainWindowNames.handle_xm_verify_open, (event, url) => new Promise((resolve, reject) => {
- if (!global.modules.mainWindow) return reject(new Error('mainWindow is undefined'))
- if (win) win.destroy()
-
- let isActioned = false
-
- const mainWindowSizeInfo = global.modules.mainWindow.getBounds()
- const windowSizeInfo = getWindowSizeInfo(global.appSetting)
- win = new BrowserWindow({
- parent: global.modules.mainWindow,
- width: 1000,
- height: 800,
- resizable: false,
- // transparent: true,
- x: mainWindowSizeInfo.x + (windowSizeInfo.width - 1000) / 2,
- y: mainWindowSizeInfo.y + (windowSizeInfo.height - 800 + 52) / 2,
- minimizable: false,
- maximizable: false,
- // movable: false,
- // frame: false,
- // modal: true,
- webPreferences: {
- enableRemoteModule: false,
- disableHtmlFullscreenWindowResize: true,
- },
- })
- // win.webContents.on('did-finish-load', () => {
- // if (/punish\?/.test(win.webContents.getURL())) return
- // let ses = win.webContents.session
- // ses.cookies.get({ name: 'x5sec' })
- // .then(async([x5sec]) => {
- // isActioned = true
- // await closeWin()
- // if (!x5sec) return reject(new Error('get x5sec failed'))
- // resolve(x5sec.value)
- // }).catch(async err => {
- // isActioned = true
- // await closeWin()
- // reject(err)
- // })
- // })
-
- win.webContents.session.webRequest.onCompleted({ urls: ['*://www.xiami.com/*'] }, details => {
- if (/\/_____tmd_____\/slide\?/.test(details.url)) {
- for (const item of details.responseHeaders['set-cookie']) {
- if (!/^x5sec=/.test(item)) continue
- const x5sec = /x5sec=(\w+);.+$/.exec(item)
- isActioned = true
- closeWin().finally(() => {
- if (!x5sec) return reject(new Error('get x5sec failed'))
- resolve(x5sec[1])
- })
- }
- }
- })
-
- win.webContents.loadURL(url, {
- httpReferrer: 'https://www.xiami.com/',
- })
-
- win.on('closed', async() => {
- await closeWin()
- if (isActioned) return
- reject(new Error('canceled verify'))
- })
-
- // win.webContents.openDevTools()
-}))
-
-mainHandle(ipcMainWindowNames.handle_xm_verify_close, async() => {
- await closeWin()
-})
diff --git a/src/renderer/App.vue b/src/renderer/App.vue
index 3364102a..edd3bad4 100644
--- a/src/renderer/App.vue
+++ b/src/renderer/App.vue
@@ -6,7 +6,6 @@
core-view#view
core-player#player
core-icons
- material-xm-verify-modal(v-show="globalObj.xm.isShowVerify" :show="globalObj.xm.isShowVerify" :bg-close="false" @close="handleXMVerifyModalClose")
material-version-modal(v-show="version.showModal")
material-pact-modal(v-show="!setting.isAgreePact || globalObj.isShowPact")
#container(v-else :class="theme")
@@ -16,7 +15,6 @@
core-view#view
core-player#player
core-icons
- material-xm-verify-modal(v-show="globalObj.xm.isShowVerify" :show="globalObj.xm.isShowVerify" :bg-close="false" @close="handleXMVerifyModalClose")
material-version-modal(v-show="version.showModal")
material-pact-modal(v-show="!setting.isAgreePact || globalObj.isShowPact")
@@ -27,7 +25,7 @@ import { mapMutations, mapGetters, mapActions } from 'vuex'
import { rendererOn, rendererSend, rendererInvoke, NAMES } from '../common/ipc'
import { isLinux } from '../common/utils'
import music from './utils/music'
-import { throttle, openUrl, compareVer, getPlayList } from './utils'
+import { throttle, openUrl, compareVer, getPlayList, parseUrlParams } from './utils'
import { base as eventBaseName } from './event/names'
window.ELECTRON_DISABLE_SECURITY_WARNINGS = process.env.ELECTRON_DISABLE_SECURITY_WARNINGS
@@ -62,9 +60,6 @@ export default {
proxy: {},
isShowPact: false,
qualityList: {},
- xm: {
- isShowVerify: false,
- },
},
updateTimeout: null,
envParams: {
@@ -179,10 +174,12 @@ export default {
...mapMutations('player', {
setPlayList: 'setList',
}),
+ ...mapActions('songList', ['getListDetailAll']),
init() {
document.documentElement.style.fontSize = this.windowSizeActive.fontSize
- rendererInvoke(NAMES.mainWindow.get_env_params).then(this.handleEnvParamsInit)
+ const asyncTask = []
+ asyncTask.push(rendererInvoke(NAMES.mainWindow.get_env_params).then(this.handleEnvParamsInit))
document.body.addEventListener('click', this.handleBodyClick, true)
rendererOn(NAMES.mainWindow.update_available, (e, info) => {
@@ -246,14 +243,18 @@ export default {
}, 60 * 30 * 1000)
this.listenEvent()
- this.initData()
+ asyncTask.push(this.initData())
this.globalObj.apiSource = this.setting.apiSource
this.globalObj.qualityList = music.supportQuality[this.setting.apiSource]
this.globalObj.proxy = Object.assign({}, this.setting.network.proxy)
window.globalObj = this.globalObj
// 初始化音乐sdk
- music.init()
+ asyncTask.push(music.init())
+ Promise.all(asyncTask).then(() => {
+ this.handleInitEnvParamSearch()
+ this.handleInitEnvParamPlay()
+ })
},
enableIgnoreMouseEvents() {
if (this.isDT) return
@@ -267,12 +268,14 @@ export default {
},
initData() { // 初始化数据
- this.initLocalList() // 初始化播放列表
+ return Promise.all([
+ this.initMyList(), // 初始化播放列表
+ this.initSearchHistoryList(), // 初始化搜索历史列表
+ ])
// this.initDownloadList() // 初始化下载列表
- this.initSearchHistoryList() // 初始化搜索历史列表
},
- initLocalList() {
- getPlayList().then(({ defaultList, loveList, userList, downloadList }) => {
+ initMyList() {
+ return getPlayList().then(({ defaultList, loveList, userList, downloadList }) => {
if (!defaultList) defaultList = this.defaultList
if (!loveList) loveList = this.loveList
if (userList) {
@@ -391,18 +394,91 @@ export default {
document.body.addEventListener('mouseenter', this.dieableIgnoreMouseEvents)
document.body.addEventListener('mouseleave', this.enableIgnoreMouseEvents)
}
+ this.handleInitEnvParamSearch()
+ this.handleInitEnvParamPlay()
+ },
+ // 处理启动参数 search
+ handleInitEnvParamSearch() {
+ if (this.envParams.search == null) return
+ this.$router.push({
+ path: 'search',
+ query: {
+ text: this.envParams.search,
+ },
+ })
+ },
+ // 处理启动参数 play
+ handleInitEnvParamPlay() {
+ if (this.envParams.play == null || typeof this.envParams.play != 'string') return
+ // -play="source=kw&link=链接、ID"
+ // -play="source=myList&name=名字"
+ // -play="source=myList&name=名字&index=位置"
+ const params = parseUrlParams(this.envParams.play)
+ if (params.type != 'songList') return
+ this.handlePlaySongList(params)
+ },
+ handlePlaySongList(params) {
+ switch (params.source) {
+ case 'myList':
+ if (params.name != null) {
+ let targetList
+ const lists = Object.values(window.allList)
+ for (const list of lists) {
+ if (list.name === params.name) {
+ targetList = list
+ break
+ }
+ }
+ if (!targetList) return
- if (this.envParams.search != null) {
- this.$router.push({
- path: 'search',
- query: {
- text: this.envParams.search,
- },
- })
+
+ this.setPlayList({
+ list: {
+ list: targetList.list,
+ id: targetList.id,
+ },
+ index: this.getListPlayIndex(targetList.list, params.index),
+ })
+ }
+ break
+ case 'kw':
+ case 'kg':
+ case 'tx':
+ case 'mg':
+ case 'wy':
+ this.playSongListDetail(params.source, params.link, params.index)
+ break
}
},
- handleXMVerifyModalClose() {
- music.xm.closeVerifyModal()
+ async playSongListDetail(source, link, playIndex) {
+ if (link == null) return
+ let list
+ try {
+ list = await this.getListDetailAll({ source, id: decodeURIComponent(link) })
+ } catch (err) {
+ console.log(err)
+ }
+ this.setPlayList({
+ list: {
+ list,
+ id: null,
+ },
+ index: this.getListPlayIndex(list, playIndex),
+ })
+ },
+ getListPlayIndex(list, index) {
+ if (index == null) {
+ index = 1
+ } else {
+ index = parseInt(index)
+ if (Number.isNaN(index)) {
+ index = 1
+ } else {
+ if (index < 1) index = 1
+ else if (index > list.length) index = list.length
+ }
+ }
+ return index - 1
},
listenEvent() {
window.eventHub.$on('key_escape_down', this.handle_key_esc_down)
diff --git a/src/renderer/components/material/XmVerifyModal.vue b/src/renderer/components/material/XmVerifyModal.vue
deleted file mode 100644
index 6a910c4c..00000000
--- a/src/renderer/components/material/XmVerifyModal.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-
-material-modal(:show="show" :bg-close="bgClose" @close="handleClose")
- main.ignore-to-rem(:class="$style.main")
- h2 {{$t('material.xm_verify_modal.title')}}
-
-
-
-
-
-
diff --git a/src/renderer/utils/index.js b/src/renderer/utils/index.js
index 1e642b57..772849d3 100644
--- a/src/renderer/utils/index.js
+++ b/src/renderer/utils/index.js
@@ -396,3 +396,14 @@ export const getPlayList = () => rendererInvoke(NAMES.mainWindow.get_playlist).c
return rendererInvoke(NAMES.mainWindow.get_playlist, true)
})
+// 解析URL参数为对象
+export const parseUrlParams = str => {
+ const params = {}
+ if (typeof str !== 'string') return params
+ const paramsArr = str.split('&')
+ for (const param of paramsArr) {
+ let [key, value] = param.split('=')
+ params[key] = value
+ }
+ return params
+}
diff --git a/src/renderer/utils/music/index.js b/src/renderer/utils/music/index.js
index c9821b02..c9466f67 100644
--- a/src/renderer/utils/music/index.js
+++ b/src/renderer/utils/music/index.js
@@ -50,10 +50,12 @@ const sources = {
export default {
...sources,
init() {
+ const tasks = []
for (let source of sources.sources) {
let sm = sources[source.id]
- sm && sm.init && sm.init()
+ sm && sm.init && tasks.push(sm.init())
}
+ return Promise.all(tasks)
},
supportQuality,
diff --git a/src/renderer/utils/music/kw/index.js b/src/renderer/utils/music/kw/index.js
index 1039305e..d8c4dc21 100644
--- a/src/renderer/utils/music/kw/index.js
+++ b/src/renderer/utils/music/kw/index.js
@@ -106,7 +106,7 @@ const kw = {
},
init() {
- getToken()
+ return getToken()
},
}
diff --git a/src/renderer/utils/music/xm/index.js b/src/renderer/utils/music/xm.js
similarity index 100%
rename from src/renderer/utils/music/xm/index.js
rename to src/renderer/utils/music/xm.js
diff --git a/src/renderer/utils/music/xm/api-test.js b/src/renderer/utils/music/xm/api-test.js
deleted file mode 100644
index c9881164..00000000
--- a/src/renderer/utils/music/xm/api-test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import { httpFetch } from '../../request'
-import { requestMsg } from '../../message'
-import { headers, timeout } from '../options'
-
-const api_test = {
- getMusicUrl(songInfo, type) {
- const requestObj = httpFetch(`http://ts.tempmusic.tk/url/xm/${songInfo.songmid}/${type}`, {
- method: 'get',
- timeout,
- headers,
- family: 4,
- })
- requestObj.promise = requestObj.promise.then(({ body }) => {
- return body.code === 0 ? Promise.resolve({ type, url: body.data }) : Promise.reject(new Error(requestMsg.fail))
- })
- return requestObj
- },
-}
-
-export default api_test
diff --git a/src/renderer/utils/music/xm/comment.js b/src/renderer/utils/music/xm/comment.js
deleted file mode 100644
index d8432cbe..00000000
--- a/src/renderer/utils/music/xm/comment.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { xmRequest } from './util'
-import { dateFormat2 } from '../../'
-
-export default {
- _requestObj: null,
- _requestObj2: null,
- async getComment({ songmid }, page = 1, limit = 20) {
- if (this._requestObj) this._requestObj.cancelHttp()
-
- const _requestObj = xmRequest('/api/comment/getCommentList', { objectId: songmid, objectType: 'song', pagingVO: { page, pageSize: limit } })
- const { body, statusCode } = await _requestObj.promise
- // console.log(body)
- if (statusCode != 200 || body.code !== 'SUCCESS') throw new Error('获取评论失败')
- return { source: 'xm', comments: this.filterComment(body.result.data.commentList), total: body.result.data.pagingVO.count, page, limit, maxPage: Math.ceil(body.result.data.pagingVO.count / limit) || 1 }
- },
- async getHotComment({ songmid }, page = 1, limit = 100) {
- if (this._requestObj2) this._requestObj2.cancelHttp()
- if (!songmid) throw new Error('获取失败')
- const _requestObj2 = xmRequest('/api/comment/getHotCommentList', { objectId: songmid, objectType: 'song', pagingVO: { page, pageSize: limit } })
- const { body, statusCode } = await _requestObj2.promise
- // console.log(body)
- if (statusCode != 200 || body.code !== 'SUCCESS') throw new Error('获取热门评论失败')
- return { source: 'xm', comments: this.filterComment(body.result.data.hotList) }
- },
- filterComment(rawList) {
- return rawList.map(item => ({
- id: item.commentId,
- text: item.message.split('\n').filter(t => !!t),
- time: item.gmtCreate,
- timeStr: dateFormat2(item.gmtCreate),
- userName: item.nickName,
- avatar: item.avatar,
- userId: item.userId,
- likedCount: item.likes,
- reply: item.replyData ? item.replyData.map(c => ({
- id: c.commentId,
- text: c.message.split('\n').filter(t => !!t),
- time: c.gmtCreate,
- timeStr: dateFormat2(c.gmtCreate),
- userName: c.nickName,
- avatar: c.avatar,
- userId: c.userId,
- likedCount: c.likes,
- })) : [],
- }))
- },
-}
diff --git a/src/renderer/utils/music/xm/hotSearch.js b/src/renderer/utils/music/xm/hotSearch.js
deleted file mode 100644
index 247fdd5c..00000000
--- a/src/renderer/utils/music/xm/hotSearch.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// import { xmRequest } from './util'
-
-export default {
- _requestObj: null,
- async getList(retryNum = 0) {
- // if (this._requestObj) this._requestObj.cancelHttp()
- // if (retryNum > 2) return Promise.reject(new Error('try max num'))
-
- // const _requestObj = xmRequest('/api/search/getHotSearchWords')
- // const { body, statusCode } = await _requestObj.promise
- // // console.log(body)
- // if (statusCode != 200 || body.code !== 'SUCCESS') return this.getList(++retryNum)
- // // console.log(body, statusCode)
- // return { source: 'xm', list: this.filterList(body.result.data.hotWords) }
- return { source: 'xm', list: [] }
- },
- filterList(rawList) {
- return rawList.map(item => item.word)
- },
-}
diff --git a/src/renderer/utils/music/xm/leaderboard.js b/src/renderer/utils/music/xm/leaderboard.js
deleted file mode 100644
index 5831e56b..00000000
--- a/src/renderer/utils/music/xm/leaderboard.js
+++ /dev/null
@@ -1,211 +0,0 @@
-import { xmRequest } from './util'
-import { formatPlayTime, sizeFormate } from '../../index'
-// import jshtmlencode from 'js-htmlencode'
-
-let boardList = [{ id: 'xm__102', name: '新歌榜', bangid: '102' }, { id: 'xm__103', name: '热歌榜', bangid: '103' }, { id: 'xm__104', name: '原创榜', bangid: '104' }, { id: 'xm__306', name: 'K歌榜', bangid: '306' }, { id: 'xm__332', name: '抖音热歌榜', bangid: '332' }, { id: 'xm__305', name: '歌单收录榜', bangid: '305' }, { id: 'xm__327', name: '趴间热歌榜', bangid: '327' }, { id: 'xm__324', name: '影视原声榜', bangid: '324' }, { id: 'xm__204', name: '美国Billboard单曲榜', bangid: '204' }, { id: 'xm__206', name: '韩国MNET音乐排行榜', bangid: '206' }, { id: 'xm__201', name: 'Hito 中文排行榜', bangid: '201' }, { id: 'xm__203', name: '英国UK单曲榜', bangid: '203' }, { id: 'xm__205', name: 'oricon公信单曲榜', bangid: '205' }, { id: 'xm__328', name: '美国iTunes榜', bangid: '328' }, { id: 'xm__329', name: 'Beatport电音榜', bangid: '329' }, { id: 'xm__330', name: '香港商业电台榜', bangid: '330' }]
-
-export default {
- limit: 200,
- list: [
- {
- id: 'xmrgb',
- name: '热歌榜',
- bangid: '103',
- },
- {
- id: 'xmxgb',
- name: '新歌榜',
- bangid: '102',
- },
- {
- id: 'xmrcb',
- name: '原创榜',
- bangid: '104',
- },
- {
- id: 'xmdyb',
- name: '抖音榜',
- bangid: '332',
- },
- {
- id: 'xmkgb',
- name: 'K歌榜',
- bangid: '306',
- },
- {
- id: 'xmfxb',
- name: '分享榜',
- bangid: '307',
- },
- {
- id: 'xmrdtlb',
- name: '讨论榜',
- bangid: '331',
- },
- {
- id: 'xmgdslb',
- name: '歌单榜',
- bangid: '305',
- },
- {
- id: 'xmpjrgb',
- name: '趴间榜',
- bangid: '327',
- },
- {
- id: 'xmysysb',
- name: '影视榜',
- bangid: '324',
- },
- ],
- requestBoardsObj: null,
- requestObj: null,
- getBoardsData() {
- if (this.requestBoardsObj) this.requestBoardsObj.cancelHttp()
- this.requestBoardsObj = xmRequest('/api/billboard/getBillboards')
- return this.requestBoardsObj.promise
- },
- getData(id) {
- if (this.requestObj) this.requestObj.cancelHttp()
- this.requestObj = xmRequest('/api/billboard/getBillboardDetail', { billboardId: id })
- return this.requestObj.promise
- },
- getSinger(singers) {
- let arr = []
- singers.forEach(singer => {
- arr.push(singer.artistName)
- })
- return arr.join('、')
- },
- filterData(rawList) {
- // console.log(rawList)
- let ids = new Set()
- const list = []
- rawList.forEach(songData => {
- if (!songData) return
- if (ids.has(songData.songId)) return
- ids.add(songData.songId)
-
- const types = []
- const _types = {}
- let size = null
- for (const item of songData.purviewRoleVOs) {
- if (!item.filesize) continue
- size = sizeFormate(item.filesize)
- switch (item.quality) {
- case 's':
- types.push({ type: 'wav', size })
- _types.wav = {
- size,
- }
- break
- case 'h':
- types.push({ type: '320k', size })
- _types['320k'] = {
- size,
- }
- break
- case 'l':
- types.push({ type: '128k', size })
- _types['128k'] = {
- size,
- }
- break
- }
- }
- types.reverse()
-
- list.push({
- singer: this.getSinger(songData.singerVOs),
- name: songData.songName,
- albumName: songData.albumName,
- albumId: songData.albumId,
- source: 'xm',
- interval: formatPlayTime(parseInt(songData.length / 1000)),
- songmid: songData.songId,
- img: songData.albumLogo || songData.albumLogoS,
- songStringId: songData.songStringId,
- lrc: null,
- lrcUrl: songData.lyricInfo && songData.lyricInfo.lyricFile,
- otherSource: null,
- types,
- _types,
- typeUrl: {},
- })
- })
-
- return list
- },
- filterBoardsData(rawList) {
- // console.log(rawList)
- let list = []
- if (rawList.xiamiBillboards) {
- for (const board of rawList.xiamiBillboards) {
- if (board.itemType != 1) continue
- list.push({
- id: 'xm__' + board.billboardId,
- name: board.name,
- bangid: String(board.billboardId),
- })
- }
- }
- if (rawList.spBillboards) {
- for (const board of rawList.spBillboards) {
- if (board.itemType != 1) continue
- list.push({
- id: 'xm__' + board.billboardId,
- name: board.name,
- bangid: String(board.billboardId),
- })
- }
- }
- if (rawList.globalBillboards) {
- for (const board of rawList.globalBillboards) {
- if (board.itemType != 1) continue
- list.push({
- id: 'xm__' + board.billboardId,
- name: board.name,
- bangid: String(board.billboardId),
- })
- }
- }
- return list
- },
- async getBoards(retryNum = 0) {
- // if (++retryNum > 3) return Promise.reject(new Error('try max num'))
- // let response
- // try {
- // response = await this.getBoardsData()
- // } catch (error) {
- // return this.getBoards(retryNum)
- // }
- // if (response.statusCode !== 200 || response.body.code !== 'SUCCESS') return this.getBoards(retryNum)
- // const list = this.filterBoardsData(response.body.result.data)
- // this.list = list
- // return {
- // list,
- // source: 'xm',
- // }
- this.list = boardList
- return {
- list: boardList,
- source: 'xm',
- }
- },
- getList(bangid, page, retryNum = 0) {
- if (++retryNum > 3) return Promise.reject(new Error('try max num'))
- return this.getData(bangid).then(({ statusCode, body }) => {
- if (statusCode !== 200 || body.code !== 'SUCCESS') return this.getList(bangid, page, retryNum)
- // console.log(body)
- const list = this.filterData(body.result.data.billboard.songs)
-
- return {
- total: parseInt(body.result.data.billboard.attributeMap.item_size),
- list,
- limit: this.limit,
- page,
- source: 'xm',
- }
- })
- },
-}
diff --git a/src/renderer/utils/music/xm/lyric.js b/src/renderer/utils/music/xm/lyric.js
deleted file mode 100644
index d1e85d79..00000000
--- a/src/renderer/utils/music/xm/lyric.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import { httpGet, httpFetch } from '../../request'
-import { xmRequest } from './util'
-
-const parseLyric = str => {
- str = str.replace(/(?:<\d+>|\r)/g, '')
- let tlyric = []
- let lyric = str.replace(/\[[\d:.]+\].*?\n\[x-trans\].*/g, s => {
- // console.log(s)
- let [lrc, tlrc] = s.split('\n')
- tlrc = tlrc.replace('[x-trans]', lrc.replace(/^(\[[\d:.]+\]).*$/, '$1'))
- tlyric.push(tlrc)
- return lrc
- })
- tlyric = tlyric.join('\n')
- return {
- lyric,
- tlyric,
- }
-}
-
-export default {
- failTime: 0,
- expireTime: 60 * 1000 * 1000,
- getLyricFile_1(url, retryNum = 0) {
- if (retryNum > 5) return Promise.reject('歌词获取失败')
- let requestObj = httpFetch(url)
- requestObj.promise = requestObj.promise.then(({ body, statusCode }) => {
- if (statusCode !== 200) {
- let tryRequestObj = this.getLyric(url, ++retryNum)
- requestObj.cancelHttp = tryRequestObj.cancelHttp.bind(tryRequestObj)
- return tryRequestObj.promise
- }
- return url.endsWith('.xtrc') ? parseLyric(body) : {
- lyric: body,
- tlyric: '',
- }
- })
- return requestObj
- },
- getLyricFile_2(url, retryNum = 0) {
- if (retryNum > 5) return Promise.reject('歌词获取失败')
- return new Promise((resolve, reject) => {
- httpGet(url, {
- headers: {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
- referer: 'https://www.xiami.com',
- },
- }, function(err, resp, body) {
- if (err || resp.statusCode !== 200) return this.getLyricFile(url, ++retryNum).then(resolve).catch(reject)
- return resolve(url.endsWith('.xtrc') ? parseLyric(body) : {
- lyric: body,
- tlyric: '',
- })
- })
- })
- },
- getLyricUrl_1(songInfo, retryNum = 0) {
- if (retryNum > 2) return Promise.reject('歌词获取失败')
- let requestObj = xmRequest('/api/lyric/getSongLyrics', { songId: songInfo.songmid })
- requestObj.promise = requestObj.promise.then(({ statusCode, body }) => {
- if (statusCode !== 200) {
- let tryRequestObj = this.getLyricUrl_1(songInfo, ++retryNum)
- requestObj.cancelHttp = tryRequestObj.cancelHttp.bind(tryRequestObj)
- return tryRequestObj.promise
- }
- if (body.code !== 'SUCCESS') {
- this.failTime = Date.now()
- let tryRequestObj = this.getLyricUrl_2(songInfo)
- requestObj.cancelHttp = tryRequestObj.cancelHttp.bind(tryRequestObj)
- return tryRequestObj.promise
- }
- if (!body.result.data.lyrics.length) return Promise.reject(new Error('未找到歌词'))
- let lrc = body.result.data.lyrics.find(lyric => /\.(trc|lrc)$/.test(lyric.lyricUrl))
- return lrc
- ? lrc.lyricUrl.endsWith('.trc')
- ? parseLyric(lrc.content)
- : { lyric: lrc.content, tlyric: '' }
- : Promise.reject(new Error('未找到歌词'))
- })
- return requestObj
- },
- getLyricUrl_2(songInfo, retryNum = 0) {
- if (retryNum > 2) return Promise.reject('歌词获取失败')
- // https://github.com/listen1/listen1_chrome_extension/blob/2587e627d23a85e490628acc0b3c9b534bc8323d/js/provider/xiami.js#L149
- let requestObj = httpFetch(`https://emumo.xiami.com/song/playlist/id/${songInfo.songmid}/object_name/default/object_id/0/cat/json`, {
- headers: {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
- referer: 'https://www.xiami.com',
- },
- })
- requestObj.promise = requestObj.promise.then(({ statusCode, body }) => {
- if (statusCode !== 200 || !body.status) {
- let tryRequestObj = this.getLyricUrl_2(songInfo, ++retryNum)
- requestObj.cancelHttp = tryRequestObj.cancelHttp.bind(tryRequestObj)
- return tryRequestObj.promise
- }
- let url = body.data.trackList[0].lyric_url
- if (!url) return Promise.reject(new Error('未找到歌词'))
- return this.getLyricFile_2(/^http:/.test(url) ? url : ('http:' + url))
- })
- return requestObj
- },
- getLyric(songInfo) {
- if (songInfo.lrcUrl && /\.(xtrc|lrc)$/.test(songInfo.lrcUrl)) return this.getLyricFile_1(songInfo.lrcUrl)
- return Date.now() - this.failTime > this.expireTime ? this.getLyricUrl_1(songInfo) : this.getLyricUrl_2(songInfo)
- },
-}
diff --git a/src/renderer/utils/music/xm/musicInfo.js b/src/renderer/utils/music/xm/musicInfo.js
deleted file mode 100644
index 7ca9b1be..00000000
--- a/src/renderer/utils/music/xm/musicInfo.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { xmRequest } from './util'
-
-export default {
- _requestObj: null,
- async getMusicInfo({ songmid }, page = 1, limit = 20) {
- if (this._requestObj) this._requestObj.cancelHttp()
-
- const _requestObj = xmRequest('/api/song/initialize', { songId: songmid })
- const { body, statusCode } = await _requestObj.promise
- // console.log(body)
- if (statusCode != 200 || body.code !== 'SUCCESS') throw new Error('获取歌曲信息失败')
- return { source: 'xm', data: body.result.data.songDetail }
- },
-}
diff --git a/src/renderer/utils/music/xm/musicSearch.js b/src/renderer/utils/music/xm/musicSearch.js
deleted file mode 100644
index 1971c190..00000000
--- a/src/renderer/utils/music/xm/musicSearch.js
+++ /dev/null
@@ -1,115 +0,0 @@
-// import '../../polyfill/array.find'
-// import jshtmlencode from 'js-htmlencode'
-import { xmRequest } from './util'
-import { formatPlayTime, sizeFormate } from '../../index'
-// import { debug } from '../../utils/env'
-// import { formatSinger } from './util'
-// "cdcb72dc3eba41cb5bc4267f09183119_xmMain_/api/list/collect_{"pagingVO":{"page":1,"pageSize":60},"dataType":"system"}"
-let searchRequest
-export default {
- limit: 30,
- total: 0,
- page: 0,
- allPage: 1,
- musicSearch(str, page, limit) {
- if (searchRequest && searchRequest.cancelHttp) searchRequest.cancelHttp()
- searchRequest = xmRequest('/api/search/searchSongs', {
- key: str,
- pagingVO: {
- page: page,
- pageSize: limit,
- },
- })
- return searchRequest.promise.then(({ body }) => body)
- },
- getSinger(singers) {
- let arr = []
- singers.forEach(singer => {
- arr.push(singer.artistName)
- })
- return arr.join('、')
- },
- handleResult(rawData) {
- // console.log(rawData)
- let ids = new Set()
- const list = []
- rawData.forEach(songData => {
- if (!songData) return
- if (ids.has(songData.songId)) return
- ids.add(songData.songId)
-
- const types = []
- const _types = {}
- let size = null
- for (const item of songData.purviewRoleVOs) {
- if (!item.filesize) continue
- size = sizeFormate(item.filesize)
- switch (item.quality) {
- case 's':
- types.push({ type: 'wav', size })
- _types.wav = {
- size,
- }
- break
- case 'h':
- types.push({ type: '320k', size })
- _types['320k'] = {
- size,
- }
- break
- case 'l':
- types.push({ type: '128k', size })
- _types['128k'] = {
- size,
- }
- break
- }
- }
- types.reverse()
-
- list.push({
- singer: this.getSinger(songData.singerVOs),
- name: songData.songName,
- albumName: songData.albumName,
- albumId: songData.albumId,
- source: 'xm',
- interval: formatPlayTime(parseInt(songData.length / 1000)),
- songmid: songData.songId,
- img: songData.albumLogo || songData.albumLogoS,
- songStringId: songData.songStringId,
- lrc: null,
- lrcUrl: songData.lyricInfo && songData.lyricInfo.lyricFile,
- otherSource: null,
- types,
- _types,
- typeUrl: {},
- })
- })
- return list
- },
- search(str, page = 1, { limit } = {}, retryNum = 0) {
- if (++retryNum > 3) return Promise.reject(new Error('try max num'))
- if (limit == null) limit = this.limit
- // http://newlyric.kuwo.cn/newlyric.lrc?62355680
- return this.musicSearch(str, page, limit).then(result => {
- if (!result) return this.search(str, page, { limit }, retryNum)
- if (result.code !== 'SUCCESS') return this.search(str, page, { limit }, retryNum)
- // const songResultData = result.data || { songs: [], total: 0 }
-
- let list = this.handleResult(result.result.data.songs)
- if (list == null) return this.search(str, page, { limit }, retryNum)
-
- this.total = parseInt(result.result.data.pagingVO.count)
- this.page = page
- this.allPage = Math.ceil(this.total / limit)
-
- return Promise.resolve({
- list,
- allPage: this.allPage,
- limit,
- total: this.total,
- source: 'xm',
- })
- }).catch(err => err.message.includes('canceled verify') ? Promise.reject(err) : this.search(str, page, { limit }, retryNum))
- },
-}
diff --git a/src/renderer/utils/music/xm/songList.js b/src/renderer/utils/music/xm/songList.js
deleted file mode 100644
index 5389cff0..00000000
--- a/src/renderer/utils/music/xm/songList.js
+++ /dev/null
@@ -1,221 +0,0 @@
-import { xmRequest } from './util'
-import { sizeFormate, formatPlayTime } from '../../index'
-
-export default {
- _requestObj_tags: null,
- _requestObj_list: null,
- _requestObj_listDetail: null,
- limit_list: 36,
- limit_song: 100000,
- successCode: 'SUCCESS',
- sortList: [
- {
- name: '推荐',
- id: 'system',
- },
- {
- name: '精选',
- id: 'recommend',
- },
- {
- name: '最热',
- id: 'hot',
- },
- {
- name: '最新',
- id: 'new',
- },
- ],
- regExps: {
- // https://www.xiami.com/collect/1138092824?action=play
- listDetailLink: /^.+\/collect\/(\d+)(?:\s\(.*|\?.*|&.*$|#.*$|$)/,
- },
- tagsUrl: '/api/collect/getRecommendTags',
- songListUrl: '/api/list/collect',
- songListDetailUrl: '/api/collect/initialize',
- getSongListData(sortId, tagId, page) {
- if (tagId == null) {
- return { pagingVO: { page, pageSize: this.limit_list }, dataType: sortId }
- }
- switch (sortId) {
- case 'system':
- case 'recommend':
- sortId = 'hot'
- }
- return { pagingVO: { page, pageSize: this.limit_list }, dataType: sortId, key: tagId }
- },
-
- /**
- * 格式化播放数量
- * @param {*} num
- */
- formatPlayCount(num) {
- if (num > 100000000) return parseInt(num / 10000000) / 10 + '亿'
- if (num > 10000) return parseInt(num / 1000) / 10 + '万'
- return num
- },
- getSinger(singers) {
- let arr = []
- singers.forEach(singer => {
- arr.push(singer.artistName)
- })
- return arr.join('、')
- },
-
- getListDetail(id, page, tryNum = 0) { // 获取歌曲列表内的音乐
- if (this._requestObj_listDetail) this._requestObj_listDetail.cancelHttp()
- if (tryNum > 2) return Promise.reject(new Error('try max num'))
-
- if ((/[?&:/]/.test(id))) id = id.replace(this.regExps.listDetailLink, '$1')
-
- this._requestObj_listDetail = xmRequest('/api/collect/getCollectStaticUrl', { listId: id })
- return this._requestObj_listDetail.promise.then(({ body }) => {
- if (body.code !== this.successCode) return this.getListDetail(id, page, ++tryNum)
- this._requestObj_listDetail = xmRequest(body.result.data.data.data.url)
- return this._requestObj_listDetail.promise.then(({ body }) => {
- if (!body.status) return this.getListDetail(id, page, ++tryNum)
- // console.log(JSON.stringify(body))
- return {
- list: this.filterListDetail(body.resultObj.songs),
- page,
- limit: this.limit_song,
- total: body.resultObj.songCount,
- source: 'xm',
- info: {
- name: body.resultObj.collectName,
- img: body.resultObj.collectLogo,
- desc: body.resultObj.description,
- author: body.resultObj.userName,
- play_count: this.formatPlayCount(body.resultObj.playCount),
- },
- }
- })
- })
- },
- filterListDetail(rawList) {
- // console.log(rawList)
- let ids = new Set()
- const list = []
- rawList.forEach(songData => {
- if (!songData) return
- if (ids.has(songData.songId)) return
- ids.add(songData.songId)
-
- const types = []
- const _types = {}
- let size = null
- for (const item of songData.purviewRoleVOs) {
- if (!item.filesize) continue
- size = sizeFormate(item.filesize)
- switch (item.quality) {
- case 's':
- types.push({ type: 'wav', size })
- _types.wav = {
- size,
- }
- break
- case 'h':
- types.push({ type: '320k', size })
- _types['320k'] = {
- size,
- }
- break
- case 'l':
- types.push({ type: '128k', size })
- _types['128k'] = {
- size,
- }
- break
- }
- }
- types.reverse()
-
- list.push({
- singer: this.getSinger(songData.singerVOs),
- name: songData.songName,
- albumName: songData.albumName,
- albumId: songData.albumId,
- source: 'xm',
- interval: formatPlayTime(parseInt(songData.length / 1000)),
- songmid: songData.songId,
- songStringId: songData.songStringId,
- img: songData.albumLogo || songData.albumLogoS,
- lrc: null,
- lrcUrl: songData.lyricInfo && songData.lyricInfo.lyricFile,
- otherSource: null,
- types,
- _types,
- typeUrl: {},
- })
- })
- return list
- },
-
- // 获取列表数据
- getList(sortId, tagId, page, tryNum = 0) {
- if (this._requestObj_list) this._requestObj_list.cancelHttp()
- if (tryNum > 2) return Promise.reject(new Error('try max num'))
- this._requestObj_list = xmRequest(this.songListUrl, this.getSongListData(sortId, tagId, page))
- return this._requestObj_list.promise.then(({ body }) => {
- if (body.code !== this.successCode) return this.getList(sortId, tagId, page, ++tryNum)
- return {
- list: this.filterList(body.result.data.collects),
- total: body.result.data.pagingVO.count,
- page,
- limit: body.result.data.pagingVO.pageSize,
- source: 'xm',
- }
- })
- },
- filterList(rawData) {
- return rawData.map(item => ({
- play_count: this.formatPlayCount(item.playCount),
- id: item.listId,
- author: item.userName,
- name: item.collectName,
- time: null,
- img: item.collectLogo,
- grade: null,
- desc: null,
- source: 'xm',
- }))
- },
-
- // 获取标签
- getTag(tryNum = 0) {
- if (this._requestObj_tags) this._requestObj_tags.cancelHttp()
- if (tryNum > 2) return Promise.reject(new Error('try max num'))
- this._requestObj_tags = xmRequest(this.tagsUrl, { recommend: 1 })
- return this._requestObj_tags.promise.then(({ body }) => {
- if (body.code !== this.successCode) return this.getTag(++tryNum)
- return this.filterTagInfo(body.result.data.recommendTags)
- })
- },
- filterTagInfo(rawList) {
- return {
- hotTag: rawList[0].items.map(item => ({
- id: item.name,
- name: item.name,
- source: 'xm',
- })),
- tags: rawList.slice(1).map(item => ({
- name: item.title,
- list: item.items.map(tag => ({
- parent_id: item.title,
- parent_name: item.title,
- id: tag.name,
- name: tag.name,
- source: 'xm',
- })),
- })),
- source: 'xm',
- }
- },
- getTags() {
- return this.getTag()
- },
-}
-
-// getList
-// getTags
-// getListDetail
diff --git a/src/renderer/utils/music/xm/util.js b/src/renderer/utils/music/xm/util.js
deleted file mode 100644
index e02aa2c3..00000000
--- a/src/renderer/utils/music/xm/util.js
+++ /dev/null
@@ -1,122 +0,0 @@
-import { httpGet, httpFetch } from '../../request'
-import { toMD5 } from '../../index'
-// import crateIsg from './isg'
-import { rendererInvoke, NAMES } from '../../../../common/ipc'
-
-if (!window.xm_token) {
- let data = window.localStorage.getItem('xm_token')
- window.xm_token = data ? JSON.parse(data) : {
- cookies: {},
- cookie: null,
- token: null,
- isGetingToken: false,
- }
- window.xm_token.isGetingToken = false
-}
-
-export const formatSinger = rawData => rawData.replace(/&/g, '、')
-
-const matchToken = headers => {
- let cookies = {}
- let token
- for (const item of headers['set-cookie']) {
- const [key, value] = item.substring(0, item.indexOf(';')).split('=')
- cookies[key] = value
- if (key == 'xm_sg_tk') token = value.substring(0, value.indexOf('_'))
- }
- // console.log(cookies)
- return { token, cookies }
-}
-
-const wait = time => new Promise(resolve => setTimeout(() => resolve(), time))
-
-const createToken = (token, path, params) => toMD5(`${token}_xmMain_${path}_${params}`)
-
-const handleSaveToken = ({ token, cookies }) => {
- Object.assign(window.xm_token.cookies, cookies)
- // window.xm_token.cookies.isg = crateIsg()
- window.xm_token.cookie = Object.keys(window.xm_token.cookies).map(k => `${k}=${window.xm_token.cookies[k]};`).join(' ')
- if (token) window.xm_token.token = token
-
- window.localStorage.setItem('xm_token', JSON.stringify(window.xm_token))
-}
-
-export const getToken = (path, params) => new Promise((resolve, reject) => {
- if (window.xm_token.isGetingToken) return wait(1000).then(() => getToken(path, params).then(data => resolve(data)))
- if (window.xm_token.token) return resolve({ token: createToken(window.xm_token.token, path, params), cookie: window.xm_token.cookie })
- window.xm_token.isGetingToken = true
- httpGet('https://www.xiami.com/', (err, resp) => {
- window.xm_token.isGetingToken = false
- if (err) return reject(err)
- if (resp.statusCode != 200) return reject(new Error('获取失败'))
-
- handleSaveToken(matchToken(resp.headers))
-
- resolve({ token: createToken(window.xm_token.token, path, params), cookie: window.xm_token.cookie })
- })
-})
-
-const baseUrl = 'https://www.xiami.com'
-export const xmRequest = (path, params = '') => {
- let query = params
- if (params != '') {
- params = JSON.stringify(params)
- query = '&_q=' + encodeURIComponent(params)
- }
- let requestObj = {
- isInited: false,
- isCancelled: false,
- cancelHttp() {
- if (!this.isInited) this.isCancelled = true
- this.requestObj && this.requestObj.cancelHttp()
- },
- }
-
- requestObj.promise = getToken(path, params).then(data => {
- // console.log(data)
- if (requestObj.isCancelled) return Promise.reject('取消请求')
- let url = path
- if (!/^http/.test(path)) url = baseUrl + path
- let s = `_s=${data.token}${query}`
- url += (url.includes('?') ? '&' : '?') + s
- requestObj.requestObj = httpFetch(url, {
- headers: {
- Referer: 'https://www.xiami.com/',
- 'User-Agent': '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',
- cookie: data.cookie,
- },
- })
- return requestObj.requestObj.promise.then(resp => {
- // console.log(resp.body)
- if (resp.statusCode != 200) {
- // console.log(resp.headers)
- window.xm_token.token = null
- return Promise.reject(new Error('获取失败'))
- }
- if (resp.body.code !== 'SUCCESS' && resp.body.rgv587_flag == 'sm') {
- window.globalObj.xm.isShowVerify = true
- return wait(300).then(() => {
- return rendererInvoke(NAMES.mainWindow.handle_xm_verify_open, /^https:/.test(resp.body.url) ? resp.body.url : 'https:' + resp.body.url).then(x5sec => {
- handleSaveToken({ cookies: { x5sec } })
- // console.log(x5sec)
- window.globalObj.xm.isShowVerify = false
- return Promise.reject(new Error('获取成功'))
- }).catch(err => {
- window.globalObj.xm.isShowVerify = false
- return Promise.reject(err)
- })
- })
- }
- if (resp.headers['set-cookie']) handleSaveToken(matchToken(resp.headers))
-
- return Promise.resolve(resp)
- })
- })
- return requestObj
-}
-
-export const closeVerifyModal = async() => {
- if (!window.globalObj.xm.isShowVerify) return
- await rendererInvoke(NAMES.mainWindow.handle_xm_verify_close)
- window.globalObj.xm.isShowVerify = false
-}
From 9f72831e4ab6e22eae723ce91444ec9b4b930270 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Tue, 23 Feb 2021 19:51:01 +0800
Subject: [PATCH 062/132] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 2421 ++++++++++++++++++++++++---------------------
package.json | 18 +-
2 files changed, 1319 insertions(+), 1120 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6263f319..447fcf9a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "lx-music-desktop",
- "version": "1.7.0",
+ "version": "1.7.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -20,141 +20,142 @@
}
},
"@babel/compat-data": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.12.7.tgz?cache=0&sync_timestamp=1605904555025&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.12.7.tgz",
- "integrity": "sha1-kym0eCp9a71+71fhGt35HuPvHkE=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.13.0.tgz?cache=0&sync_timestamp=1614034223050&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.13.0.tgz",
+ "integrity": "sha1-eInrfuZRjir6XTErFf1/0f6fN0Q=",
"dev": true
},
"@babel/core": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.12.10.tgz",
- "integrity": "sha1-t5ouG59w7T2Eu/ttjE74JfYGvM0=",
+ "version": "7.13.1",
+ "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.13.1.tgz?cache=0&sync_timestamp=1614047661695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.13.1.tgz",
+ "integrity": "sha1-fd0CcXbevkDxO7iLrAwhIYxbHs8=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.10",
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helpers": "^7.12.5",
- "@babel/parser": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/traverse": "^7.12.10",
- "@babel/types": "^7.12.10",
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.13.0",
+ "@babel/helper-compilation-targets": "^7.13.0",
+ "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helpers": "^7.13.0",
+ "@babel/parser": "^7.13.0",
+ "@babel/template": "^7.12.13",
+ "@babel/traverse": "^7.13.0",
+ "@babel/types": "^7.13.0",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
- "gensync": "^1.0.0-beta.1",
+ "gensync": "^1.0.0-beta.2",
"json5": "^2.1.2",
"lodash": "^4.17.19",
- "semver": "^5.4.1",
+ "semver": "7.0.0",
"source-map": "^0.5.0"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.10.4.tgz?cache=0&sync_timestamp=1593522948158&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.10.4.tgz",
- "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
}
},
"@babel/generator": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.12.10.tgz?cache=0&sync_timestamp=1607569383543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.12.10.tgz",
- "integrity": "sha1-KxiPwyn7jk92IYFwO+/8D+bfNGA=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.13.0.tgz?cache=0&sync_timestamp=1614034209588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.13.0.tgz",
+ "integrity": "sha1-vQDUOUyiLyIDkMVqC1uFVo7B7Aw=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10",
+ "@babel/types": "^7.13.0",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.10.4.tgz?cache=0&sync_timestamp=1593522977138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.10.4.tgz",
- "integrity": "sha1-0tOyDFmtjEcRL6fSqUvAnV74Lxo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/types": "^7.10.4"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.10.tgz?cache=0&sync_timestamp=1607584580801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.10.tgz",
- "integrity": "sha1-sViBejFltfqiBHgl36YZcN3MFs8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.11.0",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.11.0.tgz",
- "integrity": "sha1-+KSRJErPamdhWKxCBykRuoOtCZ8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
"dev": true,
"requires": {
- "@babel/types": "^7.11.0"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.10.tgz?cache=0&sync_timestamp=1607569377971&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.10.tgz",
- "integrity": "sha1-gkYA1Z6WrqJqWir1qdgSrwXDroE=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.7.tgz?cache=0&sync_timestamp=1605904556456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.12.7.tgz",
- "integrity": "sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/traverse": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.12.10.tgz?cache=0&sync_timestamp=1607569373091&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.12.10.tgz",
- "integrity": "sha1-LR9AQei/QuoJnlstxI1qWUwAAXo=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.13.0.tgz?cache=0&sync_timestamp=1614035095258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.13.0.tgz",
+ "integrity": "sha1-bZV1JHX4bufe0GU23jCaZfyJZsw=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.10",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-split-export-declaration": "^7.11.0",
- "@babel/parser": "^7.12.10",
- "@babel/types": "^7.12.10",
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.13.0",
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/parser": "^7.13.0",
+ "@babel/types": "^7.13.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.19"
}
},
"@babel/types": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.10.tgz?cache=0&sync_timestamp=1607569351602&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.10.tgz",
- "integrity": "sha1-eWXkpyYLJvCcVrz8sEmK8fbZsmA=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
@@ -171,9 +172,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
- "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1606852064928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz",
+ "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=",
"dev": true
}
}
@@ -191,12 +192,12 @@
}
},
"@babel/helper-annotate-as-pure": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.12.10.tgz?cache=0&sync_timestamp=1607583995267&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-annotate-as-pure%2Fdownload%2F%40babel%2Fhelper-annotate-as-pure-7.12.10.tgz",
- "integrity": "sha1-VKubAA5gqTZEzhez830xOq8dEV0=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.12.13.tgz?cache=0&sync_timestamp=1612314684390&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-annotate-as-pure%2Fdownload%2F%40babel%2Fhelper-annotate-as-pure-7.12.13.tgz",
+ "integrity": "sha1-D1jobfxLs7H819uAZXDhd9Q5tqs=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.12.13"
},
"dependencies": {
"@babel/helper-validator-identifier": {
@@ -206,9 +207,9 @@
"dev": true
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -219,13 +220,13 @@
}
},
"@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz?cache=0&sync_timestamp=1593522960718&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor%2Fdownload%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor-7.10.4.tgz",
- "integrity": "sha1-uwt18xv5jL+f8UPBrleLhydK4aM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz?cache=0&sync_timestamp=1612314819975&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor%2Fdownload%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor-7.12.13.tgz",
+ "integrity": "sha1-a8IDYciLCnTQUTemXKyNPL9vYfw=",
"dev": true,
"requires": {
- "@babel/helper-explode-assignable-expression": "^7.10.4",
- "@babel/types": "^7.10.4"
+ "@babel/helper-explode-assignable-expression": "^7.12.13",
+ "@babel/types": "^7.12.13"
},
"dependencies": {
"@babel/helper-validator-identifier": {
@@ -235,9 +236,9 @@
"dev": true
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -248,40 +249,40 @@
}
},
"@babel/helper-compilation-targets": {
- "version": "7.12.5",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.12.5.tgz?cache=0&sync_timestamp=1604441105017&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-compilation-targets%2Fdownload%2F%40babel%2Fhelper-compilation-targets-7.12.5.tgz",
- "integrity": "sha1-y0cMdhmNtqJOnbyJhydWMeXSmDE=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.13.0.tgz?cache=0&sync_timestamp=1614034209053&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-compilation-targets%2Fdownload%2F%40babel%2Fhelper-compilation-targets-7.13.0.tgz",
+ "integrity": "sha1-yc8puCp2/WN/D6o1VExKzmChVaE=",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.12.5",
- "@babel/helper-validator-option": "^7.12.1",
+ "@babel/compat-data": "^7.13.0",
+ "@babel/helper-validator-option": "^7.12.17",
"browserslist": "^4.14.5",
- "semver": "^5.5.0"
+ "semver": "7.0.0"
},
"dependencies": {
"browserslist": {
- "version": "4.16.0",
- "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.16.0.tgz?cache=0&sync_timestamp=1607665751821&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.0.tgz",
- "integrity": "sha1-QQJ3YnUAvjyyihv+A3WG++35SIs=",
+ "version": "4.16.3",
+ "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.16.3.tgz?cache=0&sync_timestamp=1612124071745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.3.tgz",
+ "integrity": "sha1-NAqkaUDX24eHSFZ8XeokpI3fNxc=",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001165",
+ "caniuse-lite": "^1.0.30001181",
"colorette": "^1.2.1",
- "electron-to-chromium": "^1.3.621",
+ "electron-to-chromium": "^1.3.649",
"escalade": "^3.1.1",
- "node-releases": "^1.1.67"
+ "node-releases": "^1.1.70"
}
},
"caniuse-lite": {
- "version": "1.0.30001170",
- "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001170.tgz?cache=0&sync_timestamp=1608444159124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001170.tgz",
- "integrity": "sha1-AIi/7MahRpSWnjkcwp1+tjYspqc=",
+ "version": "1.0.30001191",
+ "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001191.tgz?cache=0&sync_timestamp=1613979294700&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001191.tgz",
+ "integrity": "sha1-ustDK2cB9pDIxffGgBZrmp8IQ9k=",
"dev": true
},
"electron-to-chromium": {
- "version": "1.3.633",
- "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.633.tgz?cache=0&sync_timestamp=1608748384027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.633.tgz",
- "integrity": "sha1-Ft1a7J3gOJTo0UodtM2oo2m5t/4=",
+ "version": "1.3.672",
+ "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.672.tgz",
+ "integrity": "sha1-Om4zUBbatLxYTVKSrcT5j1RUH2o=",
"dev": true
},
"escalade": {
@@ -291,68 +292,68 @@
"dev": true
},
"node-releases": {
- "version": "1.1.67",
- "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.67.tgz?cache=0&sync_timestamp=1605581385142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.67.tgz",
- "integrity": "sha1-KOv8zNC6pqrY6NTY/ky8Sa4jnBI=",
+ "version": "1.1.70",
+ "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.70.tgz?cache=0&sync_timestamp=1611010668335&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.70.tgz",
+ "integrity": "sha1-ZuDtAnOqZWZtf+eP6+djSHVCagg=",
"dev": true
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
- "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1606852064928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz",
+ "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=",
"dev": true
}
}
},
"@babel/helper-create-class-features-plugin": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.12.1.tgz?cache=0&sync_timestamp=1602799938240&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-class-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-class-features-plugin-7.12.1.tgz",
- "integrity": "sha1-PEWZj0Me3UqSFMXx060USKYTf24=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.13.0.tgz?cache=0&sync_timestamp=1614035098067&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-class-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-class-features-plugin-7.13.0.tgz",
+ "integrity": "sha1-KNBK2c+9HtHYuYjJ6nuUUmM2WEY=",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-member-expression-to-functions": "^7.12.1",
- "@babel/helper-optimise-call-expression": "^7.10.4",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.10.4"
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-member-expression-to-functions": "^7.13.0",
+ "@babel/helper-optimise-call-expression": "^7.12.13",
+ "@babel/helper-replace-supers": "^7.13.0",
+ "@babel/helper-split-export-declaration": "^7.12.13"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz?cache=0&sync_timestamp=1608076996164&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.11.tgz",
- "integrity": "sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
}
},
"@babel/helper-function-name": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.11.tgz?cache=0&sync_timestamp=1608076995996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.12.11.tgz",
- "integrity": "sha1-H9dziu5dz1PD7P8k8dqcUR7Ee0I=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/types": "^7.12.11"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.10.tgz?cache=0&sync_timestamp=1607584580801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.10.tgz",
- "integrity": "sha1-sViBejFltfqiBHgl36YZcN3MFs8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.11.tgz",
- "integrity": "sha1-G0zEJEWGQ8R9NwIiI9oz126kYDo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.11"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-validator-identifier": {
@@ -362,37 +363,37 @@
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.11.tgz?cache=0&sync_timestamp=1608076996366&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.11.tgz",
- "integrity": "sha1-nONZW810vFxGaQXobFNbiyUBHnk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.7.tgz?cache=0&sync_timestamp=1605904556456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.12.7.tgz",
- "integrity": "sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -414,53 +415,84 @@
}
},
"@babel/helper-create-regexp-features-plugin": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.12.7.tgz?cache=0&sync_timestamp=1605904561550&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-regexp-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-regexp-features-plugin-7.12.7.tgz",
- "integrity": "sha1-IIQXLpVEP6CgkhS6G7Mo+a6hJ48=",
+ "version": "7.12.17",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.12.17.tgz",
+ "integrity": "sha1-oqyH6eMZJprGVbjUQV6U041mPLc=",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-annotate-as-pure": "^7.12.13",
"regexpu-core": "^4.7.1"
}
},
- "@babel/helper-define-map": {
- "version": "7.10.5",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.10.5.tgz",
- "integrity": "sha1-tTwQ23imQIABUmkrEzkxR6y5uzA=",
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-define-polyfill-provider/download/@babel/helper-define-polyfill-provider-0.1.0.tgz",
+ "integrity": "sha1-qeihYbtZSmomupP2jv1HXJNaFyc=",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/types": "^7.10.5",
- "lodash": "^4.17.19"
+ "@babel/helper-compilation-targets": "^7.10.4",
+ "@babel/helper-module-imports": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/traverse": "^7.11.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2",
+ "semver": "^6.1.2"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz?cache=0&sync_timestamp=1608076996164&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.11.tgz",
- "integrity": "sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.13.0.tgz?cache=0&sync_timestamp=1614034209588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.13.0.tgz",
+ "integrity": "sha1-vQDUOUyiLyIDkMVqC1uFVo7B7Aw=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.13.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.11.tgz?cache=0&sync_timestamp=1608076995996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.12.11.tgz",
- "integrity": "sha1-H9dziu5dz1PD7P8k8dqcUR7Ee0I=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/types": "^7.12.11"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.10.tgz?cache=0&sync_timestamp=1607584580801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.10.tgz",
- "integrity": "sha1-sViBejFltfqiBHgl36YZcN3MFs8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
+ "dev": true
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-validator-identifier": {
@@ -470,37 +502,54 @@
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.11.tgz?cache=0&sync_timestamp=1608076996366&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.11.tgz",
- "integrity": "sha1-nONZW810vFxGaQXobFNbiyUBHnk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.7.tgz?cache=0&sync_timestamp=1605904556456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.12.7.tgz",
- "integrity": "sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.13.0.tgz?cache=0&sync_timestamp=1614035095258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.13.0.tgz",
+ "integrity": "sha1-bZV1JHX4bufe0GU23jCaZfyJZsw=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.13.0",
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/parser": "^7.13.0",
+ "@babel/types": "^7.13.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.19"
}
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -522,12 +571,12 @@
}
},
"@babel/helper-explode-assignable-expression": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.12.1.tgz?cache=0&sync_timestamp=1602801819900&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.12.1.tgz",
- "integrity": "sha1-gAakZmlcSthqKl8vsVtfLDGtVjM=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.13.0.tgz?cache=0&sync_timestamp=1614034233759&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.13.0.tgz",
+ "integrity": "sha1-F7XFn/Rz2flW9A71cM86dsoSZX8=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.1"
+ "@babel/types": "^7.13.0"
},
"dependencies": {
"@babel/helper-validator-identifier": {
@@ -537,9 +586,9 @@
"dev": true
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -570,12 +619,146 @@
}
},
"@babel/helper-hoist-variables": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.10.4.tgz?cache=0&sync_timestamp=1593521294715&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-hoist-variables%2Fdownload%2F%40babel%2Fhelper-hoist-variables-7.10.4.tgz",
- "integrity": "sha1-1JsAHR1aaMpeZgTdoBpil/fJOB4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.13.0.tgz?cache=0&sync_timestamp=1614034233154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-hoist-variables%2Fdownload%2F%40babel%2Fhelper-hoist-variables-7.13.0.tgz",
+ "integrity": "sha1-XViC6FW1xe2pHgytwmxueiyFk9g=",
"dev": true,
"requires": {
- "@babel/types": "^7.10.4"
+ "@babel/traverse": "^7.13.0",
+ "@babel/types": "^7.13.0"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.12.13"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.13.0.tgz?cache=0&sync_timestamp=1614034209588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.13.0.tgz",
+ "integrity": "sha1-vQDUOUyiLyIDkMVqC1uFVo7B7Aw=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.13.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.12.11",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.13.0.tgz?cache=0&sync_timestamp=1614035095258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.13.0.tgz",
+ "integrity": "sha1-bZV1JHX4bufe0GU23jCaZfyJZsw=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.13.0",
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/parser": "^7.13.0",
+ "@babel/types": "^7.13.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.19"
+ }
+ },
+ "@babel/types": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.12.11",
+ "lodash": "^4.17.19",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz",
+ "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.13.0.tgz?cache=0&sync_timestamp=1614034230629&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-member-expression-to-functions%2Fdownload%2F%40babel%2Fhelper-member-expression-to-functions-7.13.0.tgz",
+ "integrity": "sha1-aqS7Z44PjCL1jNt5RR0wSURhsJE=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.13.0"
},
"dependencies": {
"@babel/helper-validator-identifier": {
@@ -585,9 +768,9 @@
"dev": true
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -597,56 +780,28 @@
}
}
},
- "@babel/helper-member-expression-to-functions": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.12.1.tgz",
- "integrity": "sha1-+6Dy/P8/ugDm7LZku15uJuLWFlw=",
- "dev": true,
- "requires": {
- "@babel/types": "^7.12.1"
- },
- "dependencies": {
- "@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
- "dev": true
- },
- "@babel/types": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.1.tgz?cache=0&sync_timestamp=1602799916513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.1.tgz",
- "integrity": "sha1-4QnZq5mo3nNb4ofuPWqZR6GQxK4=",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "lodash": "^4.17.19",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
"@babel/helper-module-imports": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.12.1.tgz?cache=0&sync_timestamp=1602799917569&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.12.1.tgz",
- "integrity": "sha1-FkTAFZGhWi8ITdbQktlDDrHRIWw=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.12.13.tgz?cache=0&sync_timestamp=1612314630289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.12.13.tgz",
+ "integrity": "sha1-7GfkQE9BdQRj5FXMMgP2oy6T/LA=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.1"
+ "@babel/types": "^7.12.13"
},
"dependencies": {
"@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
"dev": true
},
"@babel/types": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.1.tgz?cache=0&sync_timestamp=1602799916513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.1.tgz",
- "integrity": "sha1-4QnZq5mo3nNb4ofuPWqZR6GQxK4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
@@ -654,129 +809,129 @@
}
},
"@babel/helper-module-transforms": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.12.1.tgz?cache=0&sync_timestamp=1602799922305&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.12.1.tgz",
- "integrity": "sha1-eVT+xx9bMsSOSzA7Q3w0RT/XJHw=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.13.0.tgz?cache=0&sync_timestamp=1614035098405&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.13.0.tgz",
+ "integrity": "sha1-QutL2O6mi6tGdRISw1e/7YtA9vE=",
"dev": true,
"requires": {
- "@babel/helper-module-imports": "^7.12.1",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-simple-access": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.11.0",
- "@babel/helper-validator-identifier": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.12.1",
- "@babel/types": "^7.12.1",
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-replace-supers": "^7.13.0",
+ "@babel/helper-simple-access": "^7.12.13",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/helper-validator-identifier": "^7.12.11",
+ "@babel/template": "^7.12.13",
+ "@babel/traverse": "^7.13.0",
+ "@babel/types": "^7.13.0",
"lodash": "^4.17.19"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.10.4.tgz?cache=0&sync_timestamp=1593522948158&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.10.4.tgz",
- "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
}
},
"@babel/generator": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.12.1.tgz?cache=0&sync_timestamp=1602799917077&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.12.1.tgz",
- "integrity": "sha1-DXC+Mr2qA9fFHIWX3aduDfHxVGg=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.13.0.tgz?cache=0&sync_timestamp=1614034209588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.13.0.tgz",
+ "integrity": "sha1-vQDUOUyiLyIDkMVqC1uFVo7B7Aw=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.1",
+ "@babel/types": "^7.13.0",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.10.4.tgz?cache=0&sync_timestamp=1593522977138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.10.4.tgz",
- "integrity": "sha1-0tOyDFmtjEcRL6fSqUvAnV74Lxo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/types": "^7.10.4"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.10.4.tgz?cache=0&sync_timestamp=1593521294451&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.10.4.tgz",
- "integrity": "sha1-mMHL6g4jMvM/mkZhuM4VBbLBm6I=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.10.4"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.11.0",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.11.0.tgz",
- "integrity": "sha1-+KSRJErPamdhWKxCBykRuoOtCZ8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
"dev": true,
"requires": {
- "@babel/types": "^7.11.0"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.3",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.3.tgz?cache=0&sync_timestamp=1602881242014&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.3.tgz",
- "integrity": "sha1-owVBXr56bHAjtAtRIqBmLZKDNM0=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.10.4.tgz",
- "integrity": "sha1-MlGZbEIA68cdGo/EBfupQPNrong=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.10.4",
- "@babel/types": "^7.10.4"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/traverse": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.12.1.tgz?cache=0&sync_timestamp=1602801751997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.12.1.tgz",
- "integrity": "sha1-lBOV4MXMhtXT51yqCV05JFJvDB4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.13.0.tgz?cache=0&sync_timestamp=1614035095258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.13.0.tgz",
+ "integrity": "sha1-bZV1JHX4bufe0GU23jCaZfyJZsw=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.1",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-split-export-declaration": "^7.11.0",
- "@babel/parser": "^7.12.1",
- "@babel/types": "^7.12.1",
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.13.0",
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/parser": "^7.13.0",
+ "@babel/types": "^7.13.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.19"
}
},
"@babel/types": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.1.tgz?cache=0&sync_timestamp=1602799916513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.1.tgz",
- "integrity": "sha1-4QnZq5mo3nNb4ofuPWqZR6GQxK4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
@@ -795,27 +950,27 @@
}
},
"@babel/helper-optimise-call-expression": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.10.4.tgz?cache=0&sync_timestamp=1593521296446&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-optimise-call-expression%2Fdownload%2F%40babel%2Fhelper-optimise-call-expression-7.10.4.tgz",
- "integrity": "sha1-UNyWQT1ZT5lad5BZBbBYk813lnM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.12.13.tgz?cache=0&sync_timestamp=1612314687212&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-optimise-call-expression%2Fdownload%2F%40babel%2Fhelper-optimise-call-expression-7.12.13.tgz",
+ "integrity": "sha1-XALRcbTIYVsecWP4iMHIHDCiquo=",
"dev": true,
"requires": {
- "@babel/types": "^7.10.4"
+ "@babel/types": "^7.12.13"
},
"dependencies": {
"@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
"dev": true
},
"@babel/types": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.1.tgz?cache=0&sync_timestamp=1602799916513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.1.tgz",
- "integrity": "sha1-4QnZq5mo3nNb4ofuPWqZR6GQxK4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
@@ -829,14 +984,14 @@
"dev": true
},
"@babel/helper-remap-async-to-generator": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.12.1.tgz",
- "integrity": "sha1-jE27+RYxT2BH3AXmoiFwdCODR/0=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.13.0.tgz?cache=0&sync_timestamp=1614035099023&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-remap-async-to-generator%2Fdownload%2F%40babel%2Fhelper-remap-async-to-generator-7.13.0.tgz",
+ "integrity": "sha1-N2p2DZ97SyB3qd0Fqpw5J8rbIgk=",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
- "@babel/helper-wrap-function": "^7.10.4",
- "@babel/types": "^7.12.1"
+ "@babel/helper-annotate-as-pure": "^7.12.13",
+ "@babel/helper-wrap-function": "^7.13.0",
+ "@babel/types": "^7.13.0"
},
"dependencies": {
"@babel/helper-validator-identifier": {
@@ -846,9 +1001,9 @@
"dev": true
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -859,124 +1014,124 @@
}
},
"@babel/helper-replace-supers": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.12.1.tgz?cache=0&sync_timestamp=1602799937610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.12.1.tgz",
- "integrity": "sha1-8VycyJdDkoGJHhHVzhJWKsDPP6k=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.13.0.tgz?cache=0&sync_timestamp=1614035096522&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.13.0.tgz",
+ "integrity": "sha1-YDS3tRlDCUy0FieEjLIZywK+HSQ=",
"dev": true,
"requires": {
- "@babel/helper-member-expression-to-functions": "^7.12.1",
- "@babel/helper-optimise-call-expression": "^7.10.4",
- "@babel/traverse": "^7.12.1",
- "@babel/types": "^7.12.1"
+ "@babel/helper-member-expression-to-functions": "^7.13.0",
+ "@babel/helper-optimise-call-expression": "^7.12.13",
+ "@babel/traverse": "^7.13.0",
+ "@babel/types": "^7.13.0"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.10.4.tgz?cache=0&sync_timestamp=1593522948158&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.10.4.tgz",
- "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
}
},
"@babel/generator": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.12.1.tgz?cache=0&sync_timestamp=1602799917077&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.12.1.tgz",
- "integrity": "sha1-DXC+Mr2qA9fFHIWX3aduDfHxVGg=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.13.0.tgz?cache=0&sync_timestamp=1614034209588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.13.0.tgz",
+ "integrity": "sha1-vQDUOUyiLyIDkMVqC1uFVo7B7Aw=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.1",
+ "@babel/types": "^7.13.0",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.10.4.tgz?cache=0&sync_timestamp=1593522977138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.10.4.tgz",
- "integrity": "sha1-0tOyDFmtjEcRL6fSqUvAnV74Lxo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/types": "^7.10.4"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.10.4.tgz?cache=0&sync_timestamp=1593521294451&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.10.4.tgz",
- "integrity": "sha1-mMHL6g4jMvM/mkZhuM4VBbLBm6I=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.10.4"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.11.0",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.11.0.tgz",
- "integrity": "sha1-+KSRJErPamdhWKxCBykRuoOtCZ8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
"dev": true,
"requires": {
- "@babel/types": "^7.11.0"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.3",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.3.tgz?cache=0&sync_timestamp=1602881242014&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.3.tgz",
- "integrity": "sha1-owVBXr56bHAjtAtRIqBmLZKDNM0=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.10.4.tgz",
- "integrity": "sha1-MlGZbEIA68cdGo/EBfupQPNrong=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.10.4",
- "@babel/types": "^7.10.4"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/traverse": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.12.1.tgz?cache=0&sync_timestamp=1602801751997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.12.1.tgz",
- "integrity": "sha1-lBOV4MXMhtXT51yqCV05JFJvDB4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.13.0.tgz?cache=0&sync_timestamp=1614035095258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.13.0.tgz",
+ "integrity": "sha1-bZV1JHX4bufe0GU23jCaZfyJZsw=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.1",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-split-export-declaration": "^7.11.0",
- "@babel/parser": "^7.12.1",
- "@babel/types": "^7.12.1",
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.13.0",
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/parser": "^7.13.0",
+ "@babel/types": "^7.13.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.19"
}
},
"@babel/types": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.1.tgz?cache=0&sync_timestamp=1602799916513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.1.tgz",
- "integrity": "sha1-4QnZq5mo3nNb4ofuPWqZR6GQxK4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
@@ -995,27 +1150,27 @@
}
},
"@babel/helper-simple-access": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.12.1.tgz?cache=0&sync_timestamp=1602799955395&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-simple-access%2Fdownload%2F%40babel%2Fhelper-simple-access-7.12.1.tgz",
- "integrity": "sha1-MkJ+WqYVR9OOsebq9f0UJv2tkTY=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.12.13.tgz?cache=0&sync_timestamp=1612314687477&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-simple-access%2Fdownload%2F%40babel%2Fhelper-simple-access-7.12.13.tgz",
+ "integrity": "sha1-hHi8xcrPaqFnKyUcHS3eXM1hpsQ=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.1"
+ "@babel/types": "^7.12.13"
},
"dependencies": {
"@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
"dev": true
},
"@babel/types": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.1.tgz?cache=0&sync_timestamp=1602799916513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.1.tgz",
- "integrity": "sha1-4QnZq5mo3nNb4ofuPWqZR6GQxK4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
@@ -1038,9 +1193,9 @@
"dev": true
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -1066,70 +1221,70 @@
"dev": true
},
"@babel/helper-validator-option": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-option/download/@babel/helper-validator-option-7.12.11.tgz?cache=0&sync_timestamp=1608076995499&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-option%2Fdownload%2F%40babel%2Fhelper-validator-option-7.12.11.tgz",
- "integrity": "sha1-1my4t6Pn/kxpYrMgIKEx7PCEf08=",
+ "version": "7.12.17",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-option/download/@babel/helper-validator-option-7.12.17.tgz",
+ "integrity": "sha1-0fvwEuGnm37rv9xtJwuq+NnrmDE=",
"dev": true
},
"@babel/helper-wrap-function": {
- "version": "7.12.3",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.12.3.tgz?cache=0&sync_timestamp=1602881330831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-wrap-function%2Fdownload%2F%40babel%2Fhelper-wrap-function-7.12.3.tgz",
- "integrity": "sha1-MzIzn8TR+78cJ9eVjCfTRwjpkNk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.13.0.tgz?cache=0&sync_timestamp=1614034233760&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-wrap-function%2Fdownload%2F%40babel%2Fhelper-wrap-function-7.13.0.tgz",
+ "integrity": "sha1-vbXGb9qFJuwjWriUrVOhI1x5/MQ=",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.10.4",
- "@babel/types": "^7.10.4"
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/traverse": "^7.13.0",
+ "@babel/types": "^7.13.0"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz?cache=0&sync_timestamp=1608076996164&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.11.tgz",
- "integrity": "sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
}
},
"@babel/generator": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.12.11.tgz?cache=0&sync_timestamp=1608076904393&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.12.11.tgz",
- "integrity": "sha1-mKffe4w1jJo3qweiQFaFMBaro68=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.13.0.tgz?cache=0&sync_timestamp=1614034209588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.13.0.tgz",
+ "integrity": "sha1-vQDUOUyiLyIDkMVqC1uFVo7B7Aw=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.11",
+ "@babel/types": "^7.13.0",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.11.tgz?cache=0&sync_timestamp=1608076995996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.12.11.tgz",
- "integrity": "sha1-H9dziu5dz1PD7P8k8dqcUR7Ee0I=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/types": "^7.12.11"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.10.tgz?cache=0&sync_timestamp=1607584580801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.10.tgz",
- "integrity": "sha1-sViBejFltfqiBHgl36YZcN3MFs8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.11.tgz",
- "integrity": "sha1-G0zEJEWGQ8R9NwIiI9oz126kYDo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.11"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-validator-identifier": {
@@ -1139,54 +1294,54 @@
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.11.tgz?cache=0&sync_timestamp=1608076996366&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.11.tgz",
- "integrity": "sha1-nONZW810vFxGaQXobFNbiyUBHnk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.7.tgz?cache=0&sync_timestamp=1605904556456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.12.7.tgz",
- "integrity": "sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/traverse": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.12.12.tgz?cache=0&sync_timestamp=1608730525021&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.12.12.tgz",
- "integrity": "sha1-0M2HiScE7djaAC1nS8gRzmR0M3Y=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.13.0.tgz?cache=0&sync_timestamp=1614035095258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.13.0.tgz",
+ "integrity": "sha1-bZV1JHX4bufe0GU23jCaZfyJZsw=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.12.11",
- "@babel/generator": "^7.12.11",
- "@babel/helper-function-name": "^7.12.11",
- "@babel/helper-split-export-declaration": "^7.12.11",
- "@babel/parser": "^7.12.11",
- "@babel/types": "^7.12.12",
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.13.0",
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/parser": "^7.13.0",
+ "@babel/types": "^7.13.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.19"
}
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -1208,123 +1363,123 @@
}
},
"@babel/helpers": {
- "version": "7.12.5",
- "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.12.5.tgz",
- "integrity": "sha1-Ghukp2jZtYMQ7aUWxEmRP+ZHEW4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.13.0.tgz?cache=0&sync_timestamp=1614035096837&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.13.0.tgz",
+ "integrity": "sha1-dkeuVzd7TwQIv0+KevAcQuQbrcA=",
"dev": true,
"requires": {
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.12.5",
- "@babel/types": "^7.12.5"
+ "@babel/template": "^7.12.13",
+ "@babel/traverse": "^7.13.0",
+ "@babel/types": "^7.13.0"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.10.4.tgz?cache=0&sync_timestamp=1593522948158&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.10.4.tgz",
- "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
}
},
"@babel/generator": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.12.10.tgz?cache=0&sync_timestamp=1607569383543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.12.10.tgz",
- "integrity": "sha1-KxiPwyn7jk92IYFwO+/8D+bfNGA=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.13.0.tgz?cache=0&sync_timestamp=1614034209588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.13.0.tgz",
+ "integrity": "sha1-vQDUOUyiLyIDkMVqC1uFVo7B7Aw=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10",
+ "@babel/types": "^7.13.0",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.10.4.tgz?cache=0&sync_timestamp=1593522977138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.10.4.tgz",
- "integrity": "sha1-0tOyDFmtjEcRL6fSqUvAnV74Lxo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/types": "^7.10.4"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.10.tgz?cache=0&sync_timestamp=1607584580801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.10.tgz",
- "integrity": "sha1-sViBejFltfqiBHgl36YZcN3MFs8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.11.0",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.11.0.tgz",
- "integrity": "sha1-+KSRJErPamdhWKxCBykRuoOtCZ8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
"dev": true,
"requires": {
- "@babel/types": "^7.11.0"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.10.tgz?cache=0&sync_timestamp=1607569377971&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.10.tgz",
- "integrity": "sha1-gkYA1Z6WrqJqWir1qdgSrwXDroE=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.7.tgz?cache=0&sync_timestamp=1605904556456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.12.7.tgz",
- "integrity": "sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/traverse": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.12.10.tgz?cache=0&sync_timestamp=1607569373091&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.12.10.tgz",
- "integrity": "sha1-LR9AQei/QuoJnlstxI1qWUwAAXo=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.13.0.tgz?cache=0&sync_timestamp=1614035095258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.13.0.tgz",
+ "integrity": "sha1-bZV1JHX4bufe0GU23jCaZfyJZsw=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.10",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-split-export-declaration": "^7.11.0",
- "@babel/parser": "^7.12.10",
- "@babel/types": "^7.12.10",
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.13.0",
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/parser": "^7.13.0",
+ "@babel/types": "^7.13.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.19"
}
},
"@babel/types": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.10.tgz?cache=0&sync_timestamp=1607569351602&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.10.tgz",
- "integrity": "sha1-eWXkpyYLJvCcVrz8sEmK8fbZsmA=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
@@ -1373,238 +1528,238 @@
"dev": true
},
"@babel/plugin-proposal-async-generator-functions": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.12.12.tgz?cache=0&sync_timestamp=1608730476710&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-async-generator-functions%2Fdownload%2F%40babel%2Fplugin-proposal-async-generator-functions-7.12.12.tgz",
- "integrity": "sha1-BLjyT9RTIAirTnn3iEaP1ahHZWY=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.13.0.tgz?cache=0&sync_timestamp=1614035099761&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-async-generator-functions%2Fdownload%2F%40babel%2Fplugin-proposal-async-generator-functions-7.13.0.tgz",
+ "integrity": "sha1-QvSkkiyXPOtwv9Rwja9VYB/iVDQ=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-remap-async-to-generator": "^7.12.1",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-remap-async-to-generator": "^7.13.0",
"@babel/plugin-syntax-async-generators": "^7.8.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-class-properties": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.12.1.tgz?cache=0&sync_timestamp=1602801742700&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.12.1.tgz",
- "integrity": "sha1-oIL/VB8qKaSCEGW4rdk0bAwW5d4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.13.0.tgz?cache=0&sync_timestamp=1614035098704&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.13.0.tgz",
+ "integrity": "sha1-FGN2AAuU79AB5XpAqIpSWvqrnzc=",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-create-class-features-plugin": "^7.13.0",
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-dynamic-import": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.12.1.tgz?cache=0&sync_timestamp=1602801779067&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-dynamic-import%2Fdownload%2F%40babel%2Fplugin-proposal-dynamic-import-7.12.1.tgz",
- "integrity": "sha1-Q+tcKjSH7NmMXI6otf22midJstw=",
+ "version": "7.12.17",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.12.17.tgz",
+ "integrity": "sha1-4OvY22Wsw36sUY+he+rSF04iRRI=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.12.13",
"@babel/plugin-syntax-dynamic-import": "^7.8.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-export-namespace-from": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.12.1.tgz?cache=0&sync_timestamp=1602801775633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-export-namespace-from%2Fdownload%2F%40babel%2Fplugin-proposal-export-namespace-from-7.12.1.tgz",
- "integrity": "sha1-i5uPN2stiPXdd05NJKXMLjZ5ttQ=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.12.13.tgz",
+ "integrity": "sha1-OTvkekrNA/oq9uPN6bBuM94bRG0=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.12.13",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-json-strings": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.12.1.tgz?cache=0&sync_timestamp=1602801778453&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-json-strings%2Fdownload%2F%40babel%2Fplugin-proposal-json-strings-7.12.1.tgz",
- "integrity": "sha1-1FQjtRdxTu3VYhqd/cA/qfTrJBw=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.12.13.tgz?cache=0&sync_timestamp=1612314816754&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-json-strings%2Fdownload%2F%40babel%2Fplugin-proposal-json-strings-7.12.13.tgz",
+ "integrity": "sha1-zteIii25Kj1SCi4160If23/Mm10=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.12.13",
"@babel/plugin-syntax-json-strings": "^7.8.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.12.1.tgz?cache=0&sync_timestamp=1602801777850&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-logical-assignment-operators%2Fdownload%2F%40babel%2Fplugin-proposal-logical-assignment-operators-7.12.1.tgz",
- "integrity": "sha1-8sSQ024bPJZZJBA0pdLNUCY6J1E=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.12.13.tgz",
+ "integrity": "sha1-V1tdmgjYKZ7rTbZDDabhblzxQ1A=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.12.13",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz?cache=0&sync_timestamp=1602801777104&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator-7.12.1.tgz",
- "integrity": "sha1-PtT/8xwBXn8/FGfxkNvlRc17BGw=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.13.0.tgz",
+ "integrity": "sha1-Gpb98sQxCc/lVoUTxTeQFaI/U4A=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-numeric-separator": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.12.7.tgz?cache=0&sync_timestamp=1605904557549&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-numeric-separator%2Fdownload%2F%40babel%2Fplugin-proposal-numeric-separator-7.12.7.tgz",
- "integrity": "sha1-i/JT3oE5CZ/qGTspfSOp1AbvBWs=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.12.13.tgz?cache=0&sync_timestamp=1612314835872&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-numeric-separator%2Fdownload%2F%40babel%2Fplugin-proposal-numeric-separator-7.12.13.tgz",
+ "integrity": "sha1-vZ2jGI54e1EgtPnUZagmHOZ+0ds=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.12.13",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-object-rest-spread": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.12.1.tgz?cache=0&sync_timestamp=1602799956368&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.12.1.tgz",
- "integrity": "sha1-3vm9A86g+bcig9rA7CLSicdpEGk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.13.0.tgz",
+ "integrity": "sha1-jxmtJHu5a9WtLUEH5u3f4KeJk3s=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-object-rest-spread": "^7.8.0",
- "@babel/plugin-transform-parameters": "^7.12.1"
+ "@babel/plugin-transform-parameters": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-catch-binding%2Fdownload%2F%40babel%2Fplugin-proposal-optional-catch-binding-7.12.1.tgz",
- "integrity": "sha1-zMJCGvZNOq5QtVinHO3pKaWrKUI=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.12.13.tgz?cache=0&sync_timestamp=1612314816858&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-catch-binding%2Fdownload%2F%40babel%2Fplugin-proposal-optional-catch-binding-7.12.13.tgz",
+ "integrity": "sha1-RkBSCv5XcorxS00VdLqETyY7yuU=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.12.13",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-optional-chaining": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.12.7.tgz?cache=0&sync_timestamp=1605904558173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-chaining%2Fdownload%2F%40babel%2Fplugin-proposal-optional-chaining-7.12.7.tgz",
- "integrity": "sha1-4C8OobXcWdQB7Bb7gkZ59oPTMDw=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.13.0.tgz",
+ "integrity": "sha1-dbQc4NiD0Z6P5jX8P4Rr47FmT00=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.13.0",
"@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
"@babel/plugin-syntax-optional-chaining": "^7.8.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-private-methods": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.12.1.tgz?cache=0&sync_timestamp=1602801864793&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-private-methods%2Fdownload%2F%40babel%2Fplugin-proposal-private-methods-7.12.1.tgz",
- "integrity": "sha1-hoFPbnohN0yYDBDTi0ST5wP0o4k=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.13.0.tgz?cache=0&sync_timestamp=1614035100398&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-private-methods%2Fdownload%2F%40babel%2Fplugin-proposal-private-methods-7.13.0.tgz",
+ "integrity": "sha1-BL1MbUD25rv6L1fi2AlLrZAO94c=",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-create-class-features-plugin": "^7.13.0",
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.12.1.tgz?cache=0&sync_timestamp=1602799956486&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-unicode-property-regex%2Fdownload%2F%40babel%2Fplugin-proposal-unicode-property-regex-7.12.1.tgz",
- "integrity": "sha1-Khg5WNQXdluerjNPR3WOXWqC4HI=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.12.13.tgz",
+ "integrity": "sha1-vr3lEzm+gpwXqqrO0YZB3rYrObo=",
"dev": true,
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
@@ -1619,18 +1774,18 @@
}
},
"@babel/plugin-syntax-class-properties": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.12.1.tgz?cache=0&sync_timestamp=1602801779713&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-class-properties%2Fdownload%2F%40babel%2Fplugin-syntax-class-properties-7.12.1.tgz",
- "integrity": "sha1-vLKXxTZueb663vUJVJzZOwTxmXg=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
@@ -1672,9 +1827,9 @@
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
@@ -1698,9 +1853,9 @@
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
@@ -1733,150 +1888,149 @@
}
},
"@babel/plugin-syntax-top-level-await": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-top-level-await%2Fdownload%2F%40babel%2Fplugin-syntax-top-level-await-7.12.1.tgz",
- "integrity": "sha1-3WwLNXrBuxQtmFN0UKMZYl0T0qA=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.12.13.tgz",
+ "integrity": "sha1-xfD6biSfW3OXJ/kjVAz3qAYTAXg=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-arrow-functions": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-arrow-functions%2Fdownload%2F%40babel%2Fplugin-transform-arrow-functions-7.12.1.tgz",
- "integrity": "sha1-gIP/yGrI53f74ktZZ8SyUh88srM=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.13.0.tgz?cache=0&sync_timestamp=1614034212513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-arrow-functions%2Fdownload%2F%40babel%2Fplugin-transform-arrow-functions-7.13.0.tgz",
+ "integrity": "sha1-EKWb661S1jegJ6+mkujVzv9ePa4=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-async-to-generator": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.12.1.tgz?cache=0&sync_timestamp=1602799957601&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-async-to-generator%2Fdownload%2F%40babel%2Fplugin-transform-async-to-generator-7.12.1.tgz",
- "integrity": "sha1-OEmknMKiLpdDy9a1KSbTAzcimvE=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.13.0.tgz",
+ "integrity": "sha1-jhEr9ncbgr8el05eJoBsXJmqUW8=",
"dev": true,
"requires": {
- "@babel/helper-module-imports": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-remap-async-to-generator": "^7.12.1"
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-remap-async-to-generator": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-block-scoped-functions": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.12.1.tgz?cache=0&sync_timestamp=1602801921176&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoped-functions%2Fdownload%2F%40babel%2Fplugin-transform-block-scoped-functions-7.12.1.tgz",
- "integrity": "sha1-8qGjZb3itxEuCm3tkGf918B5Bdk=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.12.13.tgz?cache=0&sync_timestamp=1612314818063&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoped-functions%2Fdownload%2F%40babel%2Fplugin-transform-block-scoped-functions-7.12.13.tgz",
+ "integrity": "sha1-qb8YNvKjm062zwmWdzneKepL9MQ=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.12.12.tgz?cache=0&sync_timestamp=1608730517320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoping%2Fdownload%2F%40babel%2Fplugin-transform-block-scoping-7.12.12.tgz",
- "integrity": "sha1-2TpWehUsIq6jsZKbsRjR0KF1zco=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.12.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoping%2Fdownload%2F%40babel%2Fplugin-transform-block-scoping-7.12.13.tgz",
+ "integrity": "sha1-825VB20G9B39eFV+oDnBtYFkLmE=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-classes": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.12.1.tgz?cache=0&sync_timestamp=1602801866220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.12.1.tgz",
- "integrity": "sha1-ZeZQ/K3dPYjdzmfA+DSj1DajLbY=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.13.0.tgz?cache=0&sync_timestamp=1614035097764&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.13.0.tgz",
+ "integrity": "sha1-AmUVUHXEKRi/TTpAUxNBdq2bUzs=",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
- "@babel/helper-define-map": "^7.10.4",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-optimise-call-expression": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.10.4",
+ "@babel/helper-annotate-as-pure": "^7.12.13",
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-optimise-call-expression": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-replace-supers": "^7.13.0",
+ "@babel/helper-split-export-declaration": "^7.12.13",
"globals": "^11.1.0"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz?cache=0&sync_timestamp=1608076996164&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.11.tgz",
- "integrity": "sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
}
},
"@babel/helper-function-name": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.11.tgz?cache=0&sync_timestamp=1608076995996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.12.11.tgz",
- "integrity": "sha1-H9dziu5dz1PD7P8k8dqcUR7Ee0I=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/types": "^7.12.11"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.10.tgz?cache=0&sync_timestamp=1607584580801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.10.tgz",
- "integrity": "sha1-sViBejFltfqiBHgl36YZcN3MFs8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
},
"@babel/helper-split-export-declaration": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.11.tgz",
- "integrity": "sha1-G0zEJEWGQ8R9NwIiI9oz126kYDo=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314686094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.11"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-validator-identifier": {
@@ -1886,37 +2040,37 @@
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.11.tgz?cache=0&sync_timestamp=1608076996366&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.11.tgz",
- "integrity": "sha1-nONZW810vFxGaQXobFNbiyUBHnk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.7.tgz?cache=0&sync_timestamp=1605904556456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.12.7.tgz",
- "integrity": "sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -1938,152 +2092,152 @@
}
},
"@babel/plugin-transform-computed-properties": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.12.1.tgz?cache=0&sync_timestamp=1602801922882&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-computed-properties%2Fdownload%2F%40babel%2Fplugin-transform-computed-properties-7.12.1.tgz",
- "integrity": "sha1-1oz2ybf4OKikFEutvpdUHqCQSFI=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.13.0.tgz?cache=0&sync_timestamp=1614034212505&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-computed-properties%2Fdownload%2F%40babel%2Fplugin-transform-computed-properties-7.13.0.tgz",
+ "integrity": "sha1-hFxui5u1U3ax+guS7wvcjqBmRO0=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.12.1.tgz?cache=0&sync_timestamp=1602801919435&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-destructuring%2Fdownload%2F%40babel%2Fplugin-transform-destructuring-7.12.1.tgz",
- "integrity": "sha1-uaVw/g0KjUYBFkE8tPl+jgiy+Ec=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.13.0.tgz?cache=0&sync_timestamp=1614034212503&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-destructuring%2Fdownload%2F%40babel%2Fplugin-transform-destructuring-7.13.0.tgz",
+ "integrity": "sha1-xdzicAFNTh67HYBhFmlMErcCiWM=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-dotall-regex": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.12.1.tgz?cache=0&sync_timestamp=1602799956601&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-dotall-regex%2Fdownload%2F%40babel%2Fplugin-transform-dotall-regex-7.12.1.tgz",
- "integrity": "sha1-odFsFIYoF7ZAnApnjW+Tc8qc2XU=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.12.13.tgz",
+ "integrity": "sha1-PxYBzCmQW/y2f1ORDxl66v67Ja0=",
"dev": true,
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-duplicate-keys": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-duplicate-keys%2Fdownload%2F%40babel%2Fplugin-transform-duplicate-keys-7.12.1.tgz",
- "integrity": "sha1-dFZhuropWsBuaGgieXpp+6osoig=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.12.13.tgz?cache=0&sync_timestamp=1612314817333&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-duplicate-keys%2Fdownload%2F%40babel%2Fplugin-transform-duplicate-keys-7.12.13.tgz",
+ "integrity": "sha1-bwa4eouAP9ko5UuBwljwoAM5BN4=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-exponentiation-operator": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-exponentiation-operator%2Fdownload%2F%40babel%2Fplugin-transform-exponentiation-operator-7.12.1.tgz",
- "integrity": "sha1-sPLtNWuhvhQo7K8Sj/iiTwKDCuA=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.12.13.tgz",
+ "integrity": "sha1-TVI5C5onPmUeSrpq7knvQOgM0KE=",
"dev": true,
"requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-for-of": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.12.1.tgz",
- "integrity": "sha1-B2QPKIZ+0W+VEcmciIKR9WCSHPo=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.13.0.tgz?cache=0&sync_timestamp=1614034212987&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.13.0.tgz",
+ "integrity": "sha1-x5n4gagJGsJrVIZ6hFw+l9JpYGI=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-function-name": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-function-name%2Fdownload%2F%40babel%2Fplugin-transform-function-name-7.12.1.tgz",
- "integrity": "sha1-LsdiWMcP4IxtfaFUADpIBiDrpmc=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.12.13.tgz",
+ "integrity": "sha1-uwJEUvmq7YYdN0yOeiQlLOOlAFE=",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-function-name": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz?cache=0&sync_timestamp=1608076996164&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.11.tgz",
- "integrity": "sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz",
+ "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=",
"dev": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.12.13"
}
},
"@babel/helper-function-name": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.11.tgz?cache=0&sync_timestamp=1608076995996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.12.11.tgz",
- "integrity": "sha1-H9dziu5dz1PD7P8k8dqcUR7Ee0I=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz",
+ "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/types": "^7.12.11"
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.10.tgz?cache=0&sync_timestamp=1607584580801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.10.tgz",
- "integrity": "sha1-sViBejFltfqiBHgl36YZcN3MFs8=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&sync_timestamp=1612314652298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=",
"dev": true,
"requires": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.12.13"
}
},
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
},
"@babel/helper-validator-identifier": {
@@ -2093,37 +2247,37 @@
"dev": true
},
"@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521095576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
- "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.11.tgz?cache=0&sync_timestamp=1608076996366&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.11.tgz",
- "integrity": "sha1-nONZW810vFxGaQXobFNbiyUBHnk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.0.tgz?cache=0&sync_timestamp=1614034207866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.0.tgz",
+ "integrity": "sha1-Sbm27iE+VjT6gDYdrhOe/++JP3g=",
"dev": true
},
"@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.7.tgz?cache=0&sync_timestamp=1605904556456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.12.7.tgz",
- "integrity": "sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
+ "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
}
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -2145,95 +2299,95 @@
}
},
"@babel/plugin-transform-literals": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-literals%2Fdownload%2F%40babel%2Fplugin-transform-literals-7.12.1.tgz",
- "integrity": "sha1-1zuAOiazcBfd+dO7j03Fi/uAb1c=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.12.13.tgz?cache=0&sync_timestamp=1612314818038&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-literals%2Fdownload%2F%40babel%2Fplugin-transform-literals-7.12.13.tgz",
+ "integrity": "sha1-LKRbr+SoIBl88xV5Sk0mVg/kvbk=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-member-expression-literals": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-member-expression-literals%2Fdownload%2F%40babel%2Fplugin-transform-member-expression-literals-7.12.1.tgz",
- "integrity": "sha1-SWA4YC2vFRSmTUPY4Xy7J1Xgw60=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.12.13.tgz?cache=0&sync_timestamp=1612314834575&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-member-expression-literals%2Fdownload%2F%40babel%2Fplugin-transform-member-expression-literals-7.12.13.tgz",
+ "integrity": "sha1-X/pmzVm54ZExTJ8fgDuTjowIHkA=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-modules-amd": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.12.1.tgz?cache=0&sync_timestamp=1602801866519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-amd%2Fdownload%2F%40babel%2Fplugin-transform-modules-amd-7.12.1.tgz",
- "integrity": "sha1-MVQwCwJhhWZu67DA7X+EFf789vk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.13.0.tgz?cache=0&sync_timestamp=1614035101900&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-amd%2Fdownload%2F%40babel%2Fplugin-transform-modules-amd-7.13.0.tgz",
+ "integrity": "sha1-GfUR1g49h1PMWm1Od106UYSGbMM=",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-plugin-utils": "^7.13.0",
"babel-plugin-dynamic-import-node": "^2.3.3"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-modules-commonjs": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.12.1.tgz?cache=0&sync_timestamp=1602801780277&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.12.1.tgz",
- "integrity": "sha1-+kAxJFQmNseGz5tGCg/7tIqG5kg=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.13.0.tgz?cache=0&sync_timestamp=1614035100975&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.13.0.tgz",
+ "integrity": "sha1-J2kyaTog0SyXdgk/3JnA2ZleNMY=",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-simple-access": "^7.12.1",
+ "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-simple-access": "^7.12.13",
"babel-plugin-dynamic-import-node": "^2.3.3"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-modules-systemjs": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.12.1.tgz?cache=0&sync_timestamp=1602799960092&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.12.1.tgz",
- "integrity": "sha1-Zj/qYg1ZPJPyFKRkzTmb9txoMIY=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.12.13.tgz?cache=0&sync_timestamp=1612314800325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.12.13.tgz",
+ "integrity": "sha1-NRk385LH8HST/HmyEYIB1QQEo8U=",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.10.4",
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-validator-identifier": "^7.10.4",
+ "@babel/helper-hoist-variables": "^7.12.13",
+ "@babel/helper-module-transforms": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/helper-validator-identifier": "^7.12.11",
"babel-plugin-dynamic-import-node": "^2.3.3"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
},
"@babel/helper-validator-identifier": {
@@ -2245,295 +2399,272 @@
}
},
"@babel/plugin-transform-modules-umd": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.12.1.tgz?cache=0&sync_timestamp=1602801867203&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-umd%2Fdownload%2F%40babel%2Fplugin-transform-modules-umd-7.12.1.tgz",
- "integrity": "sha1-61ohjWscaPPWIXuPosyC/sZUeQI=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.13.0.tgz",
+ "integrity": "sha1-ij2WqX0ZlwW5/QIVgAgq+BwG5ws=",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.12.1.tgz?cache=0&sync_timestamp=1602799956689&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-named-capturing-groups-regex%2Fdownload%2F%40babel%2Fplugin-transform-named-capturing-groups-regex-7.12.1.tgz",
- "integrity": "sha1-tAf1yWvg2fX4hGdJf6grMKw+h1M=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.12.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-named-capturing-groups-regex%2Fdownload%2F%40babel%2Fplugin-transform-named-capturing-groups-regex-7.12.13.tgz",
+ "integrity": "sha1-IhNyWl9bu+NktQw7pZmMlZnFydk=",
"dev": true,
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.12.13"
}
},
"@babel/plugin-transform-new-target": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-new-target%2Fdownload%2F%40babel%2Fplugin-transform-new-target-7.12.1.tgz",
- "integrity": "sha1-gAc/Au4bstNlw0FkkOCFyVdZ3sA=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.12.13.tgz?cache=0&sync_timestamp=1612314816557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-new-target%2Fdownload%2F%40babel%2Fplugin-transform-new-target-7.12.13.tgz",
+ "integrity": "sha1-4i2MOvJLFQ3VKMvW5oXnmb8cNRw=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-object-super": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.12.1.tgz?cache=0&sync_timestamp=1602799958437&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.12.1.tgz",
- "integrity": "sha1-TqCGlrjS5lhB0MdwZIKwSL7RBm4=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.12.13.tgz?cache=0&sync_timestamp=1612314795746&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.12.13.tgz",
+ "integrity": "sha1-tEFqLWO4974xTz00m9VanBtRcfc=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-replace-supers": "^7.12.1"
+ "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/helper-replace-supers": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-parameters%2Fdownload%2F%40babel%2Fplugin-transform-parameters-7.12.1.tgz",
- "integrity": "sha1-0uljsDh3FlDJIu/1k3mclthTJV0=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.13.0.tgz?cache=0&sync_timestamp=1614034217661&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-parameters%2Fdownload%2F%40babel%2Fplugin-transform-parameters-7.13.0.tgz",
+ "integrity": "sha1-j6dgPjCX+cC3yhpIIbwvtS6eUAc=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-property-literals": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-property-literals%2Fdownload%2F%40babel%2Fplugin-transform-property-literals-7.12.1.tgz",
- "integrity": "sha1-QbyBIA1zCrtEVquLP71VN7Wa3s0=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.12.13.tgz",
+ "integrity": "sha1-TmqeN4ZNjxs7wOLc57+IV9uLGoE=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-regenerator": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-regenerator%2Fdownload%2F%40babel%2Fplugin-transform-regenerator-7.12.1.tgz",
- "integrity": "sha1-Xwoo2EL2RiKB8GqWToi6jXq0l1M=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.12.13.tgz?cache=0&sync_timestamp=1612314681275&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-regenerator%2Fdownload%2F%40babel%2Fplugin-transform-regenerator-7.12.13.tgz",
+ "integrity": "sha1-tii8ychSYKwa6wW0W94lIQGUovU=",
"dev": true,
"requires": {
"regenerator-transform": "^0.14.2"
}
},
"@babel/plugin-transform-reserved-words": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.12.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-reserved-words%2Fdownload%2F%40babel%2Fplugin-transform-reserved-words-7.12.1.tgz",
- "integrity": "sha1-b9/IzH7cxCs2p8EhiMZ4fIc63Ng=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.12.13.tgz?cache=0&sync_timestamp=1612314845661&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-reserved-words%2Fdownload%2F%40babel%2Fplugin-transform-reserved-words-7.12.13.tgz",
+ "integrity": "sha1-fZmI1PBuD+aX6h2YAxiKoYtHJpU=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-runtime": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.12.10.tgz?cache=0&sync_timestamp=1607569385672&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-runtime%2Fdownload%2F%40babel%2Fplugin-transform-runtime-7.12.10.tgz",
- "integrity": "sha1-rw/e1OhGxLNweOjl0G3qxs2EhWI=",
+ "version": "7.13.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.4.tgz",
+ "integrity": "sha512-0Xip4KjXwapfwjK4yj4MXklT5JIA+ENWdOiQM/lpFF+13Z7BHzosgaDDRwQNvzhXvJuJFAW06F72wqsCL4lmyQ==",
"dev": true,
"requires": {
- "@babel/helper-module-imports": "^7.12.5",
- "@babel/helper-plugin-utils": "^7.10.4",
- "semver": "^5.5.1"
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "babel-plugin-polyfill-corejs2": "^0.1.2",
+ "babel-plugin-polyfill-corejs3": "^0.1.2",
+ "babel-plugin-polyfill-regenerator": "^0.1.1",
+ "semver": "7.0.0"
},
"dependencies": {
- "@babel/helper-module-imports": {
- "version": "7.12.5",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.12.5.tgz?cache=0&sync_timestamp=1604441076449&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.12.5.tgz",
- "integrity": "sha1-G/wCKfeUmI927QpNTpCGCFC1Tfs=",
- "dev": true,
- "requires": {
- "@babel/types": "^7.12.5"
- }
- },
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==",
"dev": true
},
- "@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593521083613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz",
- "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=",
- "dev": true
- },
- "@babel/types": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.10.tgz?cache=0&sync_timestamp=1607569351602&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.10.tgz",
- "integrity": "sha1-eWXkpyYLJvCcVrz8sEmK8fbZsmA=",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "lodash": "^4.17.19",
- "to-fast-properties": "^2.0.0"
- }
- },
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
- "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
"dev": true
}
}
},
"@babel/plugin-transform-shorthand-properties": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.12.1.tgz?cache=0&sync_timestamp=1602799951645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-shorthand-properties%2Fdownload%2F%40babel%2Fplugin-transform-shorthand-properties-7.12.1.tgz",
- "integrity": "sha1-C/nKxVUPzgz98ENCD2YdZF/cdeM=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.12.13.tgz?cache=0&sync_timestamp=1612314820265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-shorthand-properties%2Fdownload%2F%40babel%2Fplugin-transform-shorthand-properties-7.12.13.tgz",
+ "integrity": "sha1-23VXMrcMU51QTGOQ2c6Q/mSv960=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-spread": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.12.1.tgz?cache=0&sync_timestamp=1602799957708&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-spread%2Fdownload%2F%40babel%2Fplugin-transform-spread-7.12.1.tgz",
- "integrity": "sha1-Un+fMRvk7H/cK3m7ife/iEs+Hh4=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.13.0.tgz?cache=0&sync_timestamp=1614034217488&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-spread%2Fdownload%2F%40babel%2Fplugin-transform-spread-7.13.0.tgz",
+ "integrity": "sha1-hIh3EOJzwYFaznrkWfb0Kl0x1f0=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.13.0",
"@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-sticky-regex": {
- "version": "7.12.7",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.12.7.tgz?cache=0&sync_timestamp=1605904558279&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-sticky-regex%2Fdownload%2F%40babel%2Fplugin-transform-sticky-regex-7.12.7.tgz",
- "integrity": "sha1-VgIkYTqyOYdFOUjtIdCwsZP6f60=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.12.13.tgz",
+ "integrity": "sha1-dg/9k2+s5z+GCuZG+4bugvPQbR8=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-template-literals": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.12.1.tgz?cache=0&sync_timestamp=1602799951964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-template-literals%2Fdownload%2F%40babel%2Fplugin-transform-template-literals-7.12.1.tgz",
- "integrity": "sha1-tD7ObtmnnAxxEZ9XbSme8J2UKEM=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.13.0.tgz?cache=0&sync_timestamp=1614034222672&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-template-literals%2Fdownload%2F%40babel%2Fplugin-transform-template-literals-7.13.0.tgz",
+ "integrity": "sha1-o2BJEnl3rZRDje50Q1mNHO/fQJ0=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-typeof-symbol": {
- "version": "7.12.10",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.12.10.tgz?cache=0&sync_timestamp=1607569552808&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.12.10.tgz",
- "integrity": "sha1-3gHEyPllgL0A8YMHKw0Ozc8N7Es=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.12.13.tgz?cache=0&sync_timestamp=1612314820235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.12.13.tgz",
+ "integrity": "sha1-eF3Weh8upXnZwr5yLejITLhfWn8=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-unicode-escapes": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.12.1.tgz?cache=0&sync_timestamp=1602799952036&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-unicode-escapes%2Fdownload%2F%40babel%2Fplugin-transform-unicode-escapes-7.12.1.tgz",
- "integrity": "sha1-UjK5+BzLBwcLfDw2xnobePGEVwk=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.12.13.tgz?cache=0&sync_timestamp=1612314845292&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-unicode-escapes%2Fdownload%2F%40babel%2Fplugin-transform-unicode-escapes-7.12.13.tgz",
+ "integrity": "sha1-hAztO4FtO1En3R0S3O3F3q0aXnQ=",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
},
"@babel/plugin-transform-unicode-regex": {
- "version": "7.12.1",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.12.1.tgz?cache=0&sync_timestamp=1602799957036&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-unicode-regex%2Fdownload%2F%40babel%2Fplugin-transform-unicode-regex-7.12.1.tgz",
- "integrity": "sha1-zJZh9hOQ21xl4/66zO/Vxqw/rss=",
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.12.13.tgz?cache=0&sync_timestamp=1612314820337&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-unicode-regex%2Fdownload%2F%40babel%2Fplugin-transform-unicode-regex-7.12.13.tgz",
+ "integrity": "sha1-tSUhaFgE4VWxIC6D/BiNNLtw9aw=",
"dev": true,
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"dependencies": {
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
}
}
@@ -2557,31 +2688,30 @@
}
},
"@babel/preset-env": {
- "version": "7.12.11",
- "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.12.11.tgz?cache=0&sync_timestamp=1608076996293&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-env%2Fdownload%2F%40babel%2Fpreset-env-7.12.11.tgz",
- "integrity": "sha1-VdX3mBSHNlyT27yEUHscchXoV/k=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.13.0.tgz",
+ "integrity": "sha1-bsw9r2Nid5LsA9EHbbtUtJKKng0=",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.12.7",
- "@babel/helper-compilation-targets": "^7.12.5",
- "@babel/helper-module-imports": "^7.12.5",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-validator-option": "^7.12.11",
- "@babel/plugin-proposal-async-generator-functions": "^7.12.1",
- "@babel/plugin-proposal-class-properties": "^7.12.1",
- "@babel/plugin-proposal-dynamic-import": "^7.12.1",
- "@babel/plugin-proposal-export-namespace-from": "^7.12.1",
- "@babel/plugin-proposal-json-strings": "^7.12.1",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
- "@babel/plugin-proposal-numeric-separator": "^7.12.7",
- "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
- "@babel/plugin-proposal-optional-catch-binding": "^7.12.1",
- "@babel/plugin-proposal-optional-chaining": "^7.12.7",
- "@babel/plugin-proposal-private-methods": "^7.12.1",
- "@babel/plugin-proposal-unicode-property-regex": "^7.12.1",
+ "@babel/compat-data": "^7.13.0",
+ "@babel/helper-compilation-targets": "^7.13.0",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-validator-option": "^7.12.17",
+ "@babel/plugin-proposal-async-generator-functions": "^7.13.0",
+ "@babel/plugin-proposal-class-properties": "^7.13.0",
+ "@babel/plugin-proposal-dynamic-import": "^7.12.17",
+ "@babel/plugin-proposal-export-namespace-from": "^7.12.13",
+ "@babel/plugin-proposal-json-strings": "^7.12.13",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.12.13",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.12.13",
+ "@babel/plugin-proposal-object-rest-spread": "^7.13.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.12.13",
+ "@babel/plugin-proposal-optional-chaining": "^7.13.0",
+ "@babel/plugin-proposal-private-methods": "^7.13.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
"@babel/plugin-syntax-async-generators": "^7.8.0",
- "@babel/plugin-syntax-class-properties": "^7.12.1",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
"@babel/plugin-syntax-dynamic-import": "^7.8.0",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
"@babel/plugin-syntax-json-strings": "^7.8.0",
@@ -2591,58 +2721,52 @@
"@babel/plugin-syntax-object-rest-spread": "^7.8.0",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
"@babel/plugin-syntax-optional-chaining": "^7.8.0",
- "@babel/plugin-syntax-top-level-await": "^7.12.1",
- "@babel/plugin-transform-arrow-functions": "^7.12.1",
- "@babel/plugin-transform-async-to-generator": "^7.12.1",
- "@babel/plugin-transform-block-scoped-functions": "^7.12.1",
- "@babel/plugin-transform-block-scoping": "^7.12.11",
- "@babel/plugin-transform-classes": "^7.12.1",
- "@babel/plugin-transform-computed-properties": "^7.12.1",
- "@babel/plugin-transform-destructuring": "^7.12.1",
- "@babel/plugin-transform-dotall-regex": "^7.12.1",
- "@babel/plugin-transform-duplicate-keys": "^7.12.1",
- "@babel/plugin-transform-exponentiation-operator": "^7.12.1",
- "@babel/plugin-transform-for-of": "^7.12.1",
- "@babel/plugin-transform-function-name": "^7.12.1",
- "@babel/plugin-transform-literals": "^7.12.1",
- "@babel/plugin-transform-member-expression-literals": "^7.12.1",
- "@babel/plugin-transform-modules-amd": "^7.12.1",
- "@babel/plugin-transform-modules-commonjs": "^7.12.1",
- "@babel/plugin-transform-modules-systemjs": "^7.12.1",
- "@babel/plugin-transform-modules-umd": "^7.12.1",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1",
- "@babel/plugin-transform-new-target": "^7.12.1",
- "@babel/plugin-transform-object-super": "^7.12.1",
- "@babel/plugin-transform-parameters": "^7.12.1",
- "@babel/plugin-transform-property-literals": "^7.12.1",
- "@babel/plugin-transform-regenerator": "^7.12.1",
- "@babel/plugin-transform-reserved-words": "^7.12.1",
- "@babel/plugin-transform-shorthand-properties": "^7.12.1",
- "@babel/plugin-transform-spread": "^7.12.1",
- "@babel/plugin-transform-sticky-regex": "^7.12.7",
- "@babel/plugin-transform-template-literals": "^7.12.1",
- "@babel/plugin-transform-typeof-symbol": "^7.12.10",
- "@babel/plugin-transform-unicode-escapes": "^7.12.1",
- "@babel/plugin-transform-unicode-regex": "^7.12.1",
+ "@babel/plugin-syntax-top-level-await": "^7.12.13",
+ "@babel/plugin-transform-arrow-functions": "^7.13.0",
+ "@babel/plugin-transform-async-to-generator": "^7.13.0",
+ "@babel/plugin-transform-block-scoped-functions": "^7.12.13",
+ "@babel/plugin-transform-block-scoping": "^7.12.13",
+ "@babel/plugin-transform-classes": "^7.13.0",
+ "@babel/plugin-transform-computed-properties": "^7.13.0",
+ "@babel/plugin-transform-destructuring": "^7.13.0",
+ "@babel/plugin-transform-dotall-regex": "^7.12.13",
+ "@babel/plugin-transform-duplicate-keys": "^7.12.13",
+ "@babel/plugin-transform-exponentiation-operator": "^7.12.13",
+ "@babel/plugin-transform-for-of": "^7.13.0",
+ "@babel/plugin-transform-function-name": "^7.12.13",
+ "@babel/plugin-transform-literals": "^7.12.13",
+ "@babel/plugin-transform-member-expression-literals": "^7.12.13",
+ "@babel/plugin-transform-modules-amd": "^7.13.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.13.0",
+ "@babel/plugin-transform-modules-systemjs": "^7.12.13",
+ "@babel/plugin-transform-modules-umd": "^7.13.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
+ "@babel/plugin-transform-new-target": "^7.12.13",
+ "@babel/plugin-transform-object-super": "^7.12.13",
+ "@babel/plugin-transform-parameters": "^7.13.0",
+ "@babel/plugin-transform-property-literals": "^7.12.13",
+ "@babel/plugin-transform-regenerator": "^7.12.13",
+ "@babel/plugin-transform-reserved-words": "^7.12.13",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.13",
+ "@babel/plugin-transform-spread": "^7.13.0",
+ "@babel/plugin-transform-sticky-regex": "^7.12.13",
+ "@babel/plugin-transform-template-literals": "^7.13.0",
+ "@babel/plugin-transform-typeof-symbol": "^7.12.13",
+ "@babel/plugin-transform-unicode-escapes": "^7.12.13",
+ "@babel/plugin-transform-unicode-regex": "^7.12.13",
"@babel/preset-modules": "^0.1.3",
- "@babel/types": "^7.12.11",
- "core-js-compat": "^3.8.0",
- "semver": "^5.5.0"
+ "@babel/types": "^7.13.0",
+ "babel-plugin-polyfill-corejs2": "^0.1.2",
+ "babel-plugin-polyfill-corejs3": "^0.1.2",
+ "babel-plugin-polyfill-regenerator": "^0.1.1",
+ "core-js-compat": "^3.9.0",
+ "semver": "7.0.0"
},
"dependencies": {
- "@babel/helper-module-imports": {
- "version": "7.12.5",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.12.5.tgz?cache=0&sync_timestamp=1604441076449&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.12.5.tgz",
- "integrity": "sha1-G/wCKfeUmI927QpNTpCGCFC1Tfs=",
- "dev": true,
- "requires": {
- "@babel/types": "^7.12.5"
- }
- },
"@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521082372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz",
- "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
"dev": true
},
"@babel/helper-validator-identifier": {
@@ -2652,9 +2776,9 @@
"dev": true
},
"@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.12.tgz?cache=0&sync_timestamp=1608730470163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.12.tgz",
- "integrity": "sha1-Rgim7DE6u9h6+lUATTc60EqWwpk=",
+ "version": "7.13.0",
+ "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.0.tgz?cache=0&sync_timestamp=1614034208093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.0.tgz",
+ "integrity": "sha1-dEJNKBbwFxtBAPCrNOmjdO/ff4A=",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
@@ -2663,9 +2787,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
- "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1606852064928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz",
+ "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=",
"dev": true
}
}
@@ -2684,9 +2808,9 @@
}
},
"@babel/runtime": {
- "version": "7.12.5",
- "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.12.5.tgz?cache=0&sync_timestamp=1604441104026&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.12.5.tgz",
- "integrity": "sha1-QQ5+SHRB4bNgwpvnFdhw2bmFiC4=",
+ "version": "7.13.2",
+ "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.13.2.tgz",
+ "integrity": "sha1-lRHIfSgIss9fuenFzw0at4nXVJk=",
"dev": true,
"requires": {
"regenerator-runtime": "^0.13.4"
@@ -2821,9 +2945,9 @@
"dev": true
},
"lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336125847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz",
- "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=",
+ "version": "4.17.21",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1613835838133&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.21.tgz",
+ "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=",
"dev": true
},
"strip-json-comments": {
@@ -2967,7 +3091,7 @@
},
"@types/parse-json": {
"version": "4.0.0",
- "resolved": "https://registry.npm.taobao.org/@types/parse-json/download/@types/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1605054896578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fparse-json%2Fdownload%2F%40types%2Fparse-json-4.0.0.tgz",
+ "resolved": "https://registry.npm.taobao.org/@types/parse-json/download/@types/parse-json-4.0.0.tgz",
"integrity": "sha1-L4u0QUNNFjs1+4/9zNcTiSf/uMA=",
"dev": true
},
@@ -4155,6 +4279,36 @@
"babel-helper-is-void-0": "^0.3.0"
}
},
+ "babel-plugin-polyfill-corejs2": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.1.2.tgz",
+ "integrity": "sha1-Pl5+8zndhMo0xqIGBebU72Kro7E=",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.11.0",
+ "@babel/helper-define-polyfill-provider": "^0.1.0",
+ "semver": "^6.1.1"
+ }
+ },
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-corejs3/download/babel-plugin-polyfill-corejs3-0.1.2.tgz",
+ "integrity": "sha1-ObDUZ0Q2Bzgje9VAUq+FLITXTr8=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.1.0",
+ "core-js-compat": "^3.8.1"
+ }
+ },
+ "babel-plugin-polyfill-regenerator": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-regenerator/download/babel-plugin-polyfill-regenerator-0.1.1.tgz",
+ "integrity": "sha1-O5uQfRVUdH/xMb1cbagXE+NC23M=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.1.0"
+ }
+ },
"babel-plugin-transform-inline-consecutive-adds": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.3.0.tgz",
@@ -6018,44 +6172,44 @@
}
},
"core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.8.3.tgz?cache=0&sync_timestamp=1611040749668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.8.3.tgz",
- "integrity": "sha1-whkG4fFPNon5OrzG4miDVQ3ZLdA=",
+ "version": "3.9.0",
+ "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.9.0.tgz?cache=0&sync_timestamp=1613668840564&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.9.0.tgz",
+ "integrity": "sha1-eQsbsRVToicrNuJiXHF52zRUkvg=",
"dev": true
},
"core-js-compat": {
- "version": "3.8.1",
- "resolved": "https://registry.npm.taobao.org/core-js-compat/download/core-js-compat-3.8.1.tgz?cache=0&sync_timestamp=1607215918248&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js-compat%2Fdownload%2Fcore-js-compat-3.8.1.tgz",
- "integrity": "sha1-jR3dNB1mC6YZTL4M5g9MeUyHo24=",
+ "version": "3.9.0",
+ "resolved": "https://registry.npm.taobao.org/core-js-compat/download/core-js-compat-3.9.0.tgz?cache=0&sync_timestamp=1613668838540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js-compat%2Fdownload%2Fcore-js-compat-3.9.0.tgz",
+ "integrity": "sha1-Kdo5OF8Wtx4ZFVZaoDhcTgljrVY=",
"dev": true,
"requires": {
- "browserslist": "^4.15.0",
+ "browserslist": "^4.16.3",
"semver": "7.0.0"
},
"dependencies": {
"browserslist": {
- "version": "4.16.0",
- "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.16.0.tgz?cache=0&sync_timestamp=1607665751821&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.0.tgz",
- "integrity": "sha1-QQJ3YnUAvjyyihv+A3WG++35SIs=",
+ "version": "4.16.3",
+ "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.16.3.tgz?cache=0&sync_timestamp=1612124071745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.3.tgz",
+ "integrity": "sha1-NAqkaUDX24eHSFZ8XeokpI3fNxc=",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001165",
+ "caniuse-lite": "^1.0.30001181",
"colorette": "^1.2.1",
- "electron-to-chromium": "^1.3.621",
+ "electron-to-chromium": "^1.3.649",
"escalade": "^3.1.1",
- "node-releases": "^1.1.67"
+ "node-releases": "^1.1.70"
}
},
"caniuse-lite": {
- "version": "1.0.30001170",
- "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001170.tgz?cache=0&sync_timestamp=1608444159124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001170.tgz",
- "integrity": "sha1-AIi/7MahRpSWnjkcwp1+tjYspqc=",
+ "version": "1.0.30001191",
+ "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001191.tgz?cache=0&sync_timestamp=1613979294700&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001191.tgz",
+ "integrity": "sha1-ustDK2cB9pDIxffGgBZrmp8IQ9k=",
"dev": true
},
"electron-to-chromium": {
- "version": "1.3.633",
- "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.633.tgz?cache=0&sync_timestamp=1608748384027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.633.tgz",
- "integrity": "sha1-Ft1a7J3gOJTo0UodtM2oo2m5t/4=",
+ "version": "1.3.672",
+ "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.672.tgz",
+ "integrity": "sha1-Om4zUBbatLxYTVKSrcT5j1RUH2o=",
"dev": true
},
"escalade": {
@@ -6065,9 +6219,9 @@
"dev": true
},
"node-releases": {
- "version": "1.1.67",
- "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.67.tgz?cache=0&sync_timestamp=1605581385142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.67.tgz",
- "integrity": "sha1-KOv8zNC6pqrY6NTY/ky8Sa4jnBI=",
+ "version": "1.1.70",
+ "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.70.tgz?cache=0&sync_timestamp=1611010668335&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.70.tgz",
+ "integrity": "sha1-ZuDtAnOqZWZtf+eP6+djSHVCagg=",
"dev": true
},
"semver": {
@@ -7151,9 +7305,9 @@
}
},
"electron-log": {
- "version": "4.3.1",
- "resolved": "https://registry.npm.taobao.org/electron-log/download/electron-log-4.3.1.tgz",
- "integrity": "sha1-FAX++dTmlkpf24eQppFjqiN//pE="
+ "version": "4.3.2",
+ "resolved": "https://registry.npm.taobao.org/electron-log/download/electron-log-4.3.2.tgz",
+ "integrity": "sha1-ITM0xp8EmPrGd6enPq5KYftplJ4="
},
"electron-publish": {
"version": "22.9.1",
@@ -7459,12 +7613,12 @@
"dev": true
},
"eslint": {
- "version": "7.18.0",
- "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-7.18.0.tgz?cache=0&sync_timestamp=1610751984223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-7.18.0.tgz",
- "integrity": "sha1-f9zS83FaQf5ilaFiNL1prtLHXmc=",
+ "version": "7.20.0",
+ "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-7.20.0.tgz",
+ "integrity": "sha1-2wfEyk7aLiMW56pXrH/JHsVQvcc=",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
+ "@babel/code-frame": "7.12.11",
"@eslint/eslintrc": "^0.3.0",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
@@ -7476,7 +7630,7 @@
"eslint-utils": "^2.1.0",
"eslint-visitor-keys": "^2.0.0",
"espree": "^7.3.1",
- "esquery": "^1.2.0",
+ "esquery": "^1.4.0",
"esutils": "^2.0.2",
"file-entry-cache": "^6.0.0",
"functional-red-black-tree": "^1.0.1",
@@ -7503,6 +7657,45 @@
"v8-compile-cache": "^2.0.3"
},
"dependencies": {
+ "@babel/code-frame": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz?cache=0&sync_timestamp=1612314620252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.11.tgz",
+ "integrity": "sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz?cache=0&sync_timestamp=1608076995361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.12.13.tgz?cache=0&sync_timestamp=1612314610961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.12.13.tgz",
+ "integrity": "sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.12.11",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz",
+ "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz",
@@ -7531,9 +7724,9 @@
"dev": true
},
"lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336125847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz",
- "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=",
+ "version": "4.17.21",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1613835838133&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.21.tgz",
+ "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=",
"dev": true
},
"semver": {
@@ -7992,9 +8185,9 @@
}
},
"eslint-plugin-promise": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
- "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npm.taobao.org/eslint-plugin-promise/download/eslint-plugin-promise-4.3.1.tgz",
+ "integrity": "sha1-YUhd8qNZ4DFJ/a/AposOAwrSrEU=",
"dev": true
},
"eslint-plugin-standard": {
@@ -8059,9 +8252,9 @@
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"esquery": {
- "version": "1.3.1",
- "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.3.1.tgz",
- "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.4.0.tgz",
+ "integrity": "sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=",
"dev": true,
"requires": {
"estraverse": "^5.1.0"
@@ -8558,9 +8751,9 @@
"dev": true
},
"file-entry-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-6.0.0.tgz?cache=0&sync_timestamp=1604832267816&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-entry-cache%2Fdownload%2Ffile-entry-cache-6.0.0.tgz",
- "integrity": "sha1-eSGonDkcbZPv7CFprGvzAMUn6go=",
+ "version": "6.0.1",
+ "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-6.0.1.tgz?cache=0&sync_timestamp=1613794357372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-entry-cache%2Fdownload%2Ffile-entry-cache-6.0.1.tgz",
+ "integrity": "sha1-IRst2WWcsDlLBz5zI6w8kz1SICc=",
"dev": true,
"requires": {
"flat-cache": "^3.0.4"
@@ -10608,7 +10801,7 @@
"dependencies": {
"ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1609583919173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
+ "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1604996837320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
"integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
"dev": true,
"requires": {
@@ -10620,7 +10813,7 @@
},
"ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1608059984992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
+ "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1604565113393&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
"integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=",
"dev": true
},
@@ -10675,7 +10868,7 @@
},
"lines-and-columns": {
"version": "1.1.6",
- "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
"dev": true
},
@@ -10756,6 +10949,12 @@
"resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
"integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
},
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+ "dev": true
+ },
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
@@ -10824,9 +11023,9 @@
"dev": true
},
"lrc-file-parser": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/lrc-file-parser/-/lrc-file-parser-1.0.5.tgz",
- "integrity": "sha512-cBB8gG3BwhQp3ewv4G/rqfk8hBjcjGFjgki3jYpU7A6QX+VFQatRUYq3LxfE9+f4ZzoAUIuFYNEBHHdbFRrulw=="
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/lrc-file-parser/-/lrc-file-parser-1.0.7.tgz",
+ "integrity": "sha512-YaPa3xMMlN+cLXyINorMlWkXfO5U+AWpPywHiyVaVLgvRnI7xjArOyLpKH/I8XHmIPmdtJQfxFxT3K3hdCS91Q=="
},
"lru-cache": {
"version": "6.0.0",
@@ -12243,7 +12442,7 @@
"dependencies": {
"ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1609583919173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
+ "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1602353715225&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
"integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
"dev": true,
"requires": {
@@ -12255,7 +12454,7 @@
},
"ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1608059984992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
+ "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1595908717940&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
"integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=",
"dev": true
},
@@ -13553,9 +13752,9 @@
"dev": true
},
"regjsparser": {
- "version": "0.6.4",
- "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.4.tgz",
- "integrity": "sha1-p2n4aEMIQBpm6bUp0kNv9NBmYnI=",
+ "version": "0.6.7",
+ "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.7.tgz?cache=0&sync_timestamp=1612023307806&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregjsparser%2Fdownload%2Fregjsparser-0.6.7.tgz",
+ "integrity": "sha1-wAFk4eZxPC4+5kHxcBxLeqCn+Gw=",
"dev": true,
"requires": {
"jsesc": "~0.5.0"
@@ -15110,9 +15309,9 @@
},
"dependencies": {
"ajv": {
- "version": "7.0.3",
- "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-7.0.3.tgz?cache=0&sync_timestamp=1609583919173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-7.0.3.tgz",
- "integrity": "sha1-E650fv8SXK+yMKxQSyQGzzce7OI=",
+ "version": "7.1.1",
+ "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-7.1.1.tgz?cache=0&sync_timestamp=1613553016724&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-7.1.1.tgz",
+ "integrity": "sha1-Hms3pFQCH6mUFxPzi5UvwcjTKoQ=",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
@@ -15128,9 +15327,9 @@
"dev": true
},
"lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336125847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz",
- "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=",
+ "version": "4.17.21",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1613835838133&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.21.tgz",
+ "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=",
"dev": true
}
}
diff --git a/package.json b/package.json
index 5561cdd4..f373005c 100644
--- a/package.json
+++ b/package.json
@@ -162,12 +162,12 @@
},
"homepage": "https://github.com/lyswhut/lx-music-desktop#readme",
"devDependencies": {
- "@babel/core": "^7.12.10",
+ "@babel/core": "^7.13.1",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-transform-modules-umd": "^7.12.1",
- "@babel/plugin-transform-runtime": "^7.12.10",
+ "@babel/plugin-transform-modules-umd": "^7.13.0",
+ "@babel/plugin-transform-runtime": "^7.13.4",
"@babel/polyfill": "^7.12.1",
- "@babel/preset-env": "^7.12.11",
+ "@babel/preset-env": "^7.13.0",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.2.2",
"babel-minify-webpack-plugin": "^0.3.1",
@@ -176,7 +176,7 @@
"chalk": "^4.1.0",
"changelog-parser": "^2.8.0",
"copy-webpack-plugin": "^6.4.1",
- "core-js": "^3.8.3",
+ "core-js": "^3.9.0",
"cross-env": "^7.0.3",
"css-loader": "^4.3.0",
"del": "^6.0.0",
@@ -184,14 +184,14 @@
"electron-builder": "^22.9.1",
"electron-debug": "^3.2.0",
"electron-devtools-installer": "^3.1.1",
- "eslint": "^7.18.0",
+ "eslint": "^7.20.0",
"eslint-config-standard": "^14.1.1",
"eslint-formatter-friendly": "^7.0.0",
"eslint-loader": "^4.0.2",
"eslint-plugin-html": "^6.1.1",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^4.2.1",
+ "eslint-plugin-promise": "^4.3.1",
"eslint-plugin-standard": "^4.1.0",
"file-loader": "^6.2.0",
"friendly-errors-webpack-plugin": "^1.7.0",
@@ -224,13 +224,13 @@
"dependencies": {
"crypto-js": "^4.0.0",
"dnscache": "^1.0.2",
- "electron-log": "^4.3.1",
+ "electron-log": "^4.3.2",
"electron-store": "^6.0.1",
"electron-updater": "^4.3.5",
"iconv-lite": "^0.6.2",
"image-size": "^0.9.3",
"js-htmlencode": "^0.3.0",
- "lrc-file-parser": "^1.0.5",
+ "lrc-file-parser": "^1.0.7",
"needle": "^2.6.0",
"node-id3": "^0.2.2",
"request": "^2.88.2",
From 040fcfba4ffc3232491593ab78f5e55b1fb07138 Mon Sep 17 00:00:00 2001
From: lyswhut
Date: Tue, 2 Mar 2021 08:32:26 +0800
Subject: [PATCH 063/132] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=8C=E5=96=84?=
=?UTF-8?q?=E6=AD=8C=E8=AF=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.babelrc | 3 +-
package-lock.json | 150 ++++------
package.json | 1 +
src/renderer/components/core/Player.vue | 18 +-
src/renderer/components/core/PlayerDetail.vue | 73 ++++-
src/renderer/store/modules/player.js | 16 +-
.../utils/lyric-font-player/font-player.js | 267 ++++++++++++++++++
src/renderer/utils/lyric-font-player/index.js | 148 ++++++++++
.../utils/lyric-font-player/line-player.js | 153 ++++++++++
src/renderer/utils/lyric-font-player/utils.js | 50 ++++
src/renderer/utils/music/kg/lyric.js | 16 +-
src/renderer/utils/music/wy/index.js | 4 +-
12 files changed, 779 insertions(+), 120 deletions(-)
create mode 100644 src/renderer/utils/lyric-font-player/font-player.js
create mode 100644 src/renderer/utils/lyric-font-player/index.js
create mode 100644 src/renderer/utils/lyric-font-player/line-player.js
create mode 100644 src/renderer/utils/lyric-font-player/utils.js
diff --git a/.babelrc b/.babelrc
index b4f2472d..c3affdfe 100644
--- a/.babelrc
+++ b/.babelrc
@@ -19,6 +19,7 @@
"plugins": [
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-transform-modules-umd",
- "@babel/plugin-transform-runtime"
+ "@babel/plugin-transform-runtime",
+ "@babel/plugin-proposal-class-properties"
]
}
diff --git a/package-lock.json b/package-lock.json
index 447fcf9a..8732f3c1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1548,8 +1548,8 @@
},
"@babel/plugin-proposal-class-properties": {
"version": "7.13.0",
- "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.13.0.tgz?cache=0&sync_timestamp=1614035098704&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.13.0.tgz",
- "integrity": "sha1-FGN2AAuU79AB5XpAqIpSWvqrnzc=",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz",
+ "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==",
"dev": true,
"requires": {
"@babel/helper-create-class-features-plugin": "^7.13.0",
@@ -1558,8 +1558,8 @@
"dependencies": {
"@babel/helper-plugin-utils": {
"version": "7.13.0",
- "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz",
- "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==",
"dev": true
}
}
@@ -2882,14 +2882,13 @@
}
},
"@electron/get": {
- "version": "1.12.3",
- "resolved": "https://registry.npm.taobao.org/@electron/get/download/@electron/get-1.12.3.tgz",
- "integrity": "sha1-+icjOFxLVlo0xMgvRgh6oqX79tA=",
+ "version": "1.12.4",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz",
+ "integrity": "sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg==",
"dev": true,
"requires": {
"debug": "^4.1.1",
"env-paths": "^2.2.0",
- "filenamify": "^4.1.0",
"fs-extra": "^8.1.0",
"global-agent": "^2.0.2",
"global-tunnel-ng": "^2.7.1",
@@ -4871,8 +4870,8 @@
},
"boolean": {
"version": "3.0.2",
- "resolved": "https://registry.npm.taobao.org/boolean/download/boolean-3.0.2.tgz",
- "integrity": "sha1-3xuqGLaisOcIQEdeHZPsj+dbJXA=",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz",
+ "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==",
"dev": true,
"optional": true
},
@@ -5085,7 +5084,7 @@
},
"buffer-crc32": {
"version": "0.2.13",
- "resolved": "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true
},
@@ -5929,8 +5928,8 @@
},
"config-chain": {
"version": "1.1.12",
- "resolved": "https://registry.npm.taobao.org/config-chain/download/config-chain-1.1.12.tgz",
- "integrity": "sha1-D96NCRIA616AjK8l/mGMAvSOTvo=",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
+ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
"dev": true,
"optional": true,
"requires": {
@@ -7182,8 +7181,8 @@
},
"electron": {
"version": "9.4.2",
- "resolved": "https://registry.npm.taobao.org/electron/download/electron-9.4.2.tgz",
- "integrity": "sha1-DHbfw9MXEIraxmhEuGip4uV9SPU=",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-9.4.2.tgz",
+ "integrity": "sha512-WpnJLDFHtj5eIewAi4hMHxGdbwkzjzmxsMu/BtDFCic3wpruchkskL7EV28Sg/IYTAqo6yN5ISfnFaQcLsIdng==",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@@ -7192,9 +7191,9 @@
},
"dependencies": {
"@types/node": {
- "version": "12.19.15",
- "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.19.15.tgz",
- "integrity": "sha1-DefpePtD22LaNp2xjqCIpjZzwYI=",
+ "version": "12.20.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.4.tgz",
+ "integrity": "sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ==",
"dev": true
}
}
@@ -7583,8 +7582,8 @@
},
"es6-error": {
"version": "4.1.1",
- "resolved": "https://registry.npm.taobao.org/es6-error/download/es6-error-4.1.1.tgz",
- "integrity": "sha1-njr0B0Wd7tR+mpH5uIWoTrBcVh0=",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
"dev": true,
"optional": true
},
@@ -8644,8 +8643,8 @@
},
"extract-zip": {
"version": "1.7.0",
- "resolved": "https://registry.npm.taobao.org/extract-zip/download/extract-zip-1.7.0.tgz?cache=0&sync_timestamp=1591773082587&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fextract-zip%2Fdownload%2Fextract-zip-1.7.0.tgz",
- "integrity": "sha1-VWzDrp339FLEk6DPtRzDAneUCSc=",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
+ "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
"dev": true,
"requires": {
"concat-stream": "^1.6.2",
@@ -8656,8 +8655,8 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
- "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -8665,7 +8664,7 @@
},
"ms": {
"version": "2.0.0",
- "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433842694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
}
@@ -8737,7 +8736,7 @@
},
"fd-slicer": {
"version": "1.1.0",
- "resolved": "https://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
"dev": true,
"requires": {
@@ -8827,23 +8826,6 @@
"minimatch": "^3.0.4"
}
},
- "filename-reserved-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npm.taobao.org/filename-reserved-regex/download/filename-reserved-regex-2.0.0.tgz",
- "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
- "dev": true
- },
- "filenamify": {
- "version": "4.2.0",
- "resolved": "https://registry.npm.taobao.org/filenamify/download/filenamify-4.2.0.tgz?cache=0&sync_timestamp=1600940508592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffilenamify%2Fdownload%2Ffilenamify-4.2.0.tgz",
- "integrity": "sha1-yZcW1naGlYWztdMos/BlkNAy6J8=",
- "dev": true,
- "requires": {
- "filename-reserved-regex": "^2.0.0",
- "strip-outer": "^1.0.1",
- "trim-repeated": "^1.0.0"
- }
- },
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -9333,8 +9315,8 @@
},
"global-agent": {
"version": "2.1.12",
- "resolved": "https://registry.npm.taobao.org/global-agent/download/global-agent-2.1.12.tgz",
- "integrity": "sha1-5K44Ercxqegcv4Jfk3fvRQqOQZU=",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz",
+ "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==",
"dev": true,
"optional": true,
"requires": {
@@ -9349,8 +9331,8 @@
"dependencies": {
"semver": {
"version": "7.3.4",
- "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.3.4.tgz?cache=0&sync_timestamp=1606852064928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.4.tgz",
- "integrity": "sha1-J6qn0uTKdkUvmNOt0JOnLJQ+3Jc=",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
"dev": true,
"optional": true,
"requires": {
@@ -9425,8 +9407,8 @@
},
"global-tunnel-ng": {
"version": "2.7.1",
- "resolved": "https://registry.npm.taobao.org/global-tunnel-ng/download/global-tunnel-ng-2.7.1.tgz",
- "integrity": "sha1-0DtRAt/eOmmRT17n2GdhyjXVfY8=",
+ "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
+ "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
"dev": true,
"optional": true,
"requires": {
@@ -9443,9 +9425,9 @@
"dev": true
},
"globalthis": {
- "version": "1.0.1",
- "resolved": "https://registry.npm.taobao.org/globalthis/download/globalthis-1.0.1.tgz",
- "integrity": "sha1-QBFvXZwHH56PsAN2VN8as6g7fvk=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz",
+ "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==",
"dev": true,
"optional": true,
"requires": {
@@ -11089,8 +11071,8 @@
},
"matcher": {
"version": "3.0.0",
- "resolved": "https://registry.npm.taobao.org/matcher/download/matcher-3.0.0.tgz",
- "integrity": "sha1-vZBg9MW3CqgEHMxvgDaHYJlPMMo=",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
"dev": true,
"optional": true,
"requires": {
@@ -11099,8 +11081,8 @@
"dependencies": {
"escape-string-regexp": {
"version": "4.0.0",
- "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-4.0.0.tgz",
- "integrity": "sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ=",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"optional": true
}
@@ -11684,8 +11666,8 @@
},
"npm-conf": {
"version": "1.1.3",
- "resolved": "https://registry.npm.taobao.org/npm-conf/download/npm-conf-1.1.3.tgz",
- "integrity": "sha1-JWzEe9DiGMJZxOlVC/QTvCGSr/k=",
+ "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
+ "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
"dev": true,
"optional": true,
"requires": {
@@ -12209,7 +12191,7 @@
},
"pend": {
"version": "1.2.0",
- "resolved": "https://registry.npm.taobao.org/pend/download/pend-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
@@ -12226,7 +12208,7 @@
},
"pify": {
"version": "3.0.0",
- "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true,
"optional": true
@@ -13094,7 +13076,7 @@
},
"proto-list": {
"version": "1.2.4",
- "resolved": "https://registry.npm.taobao.org/proto-list/download/proto-list-1.2.4.tgz",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
"integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
"dev": true,
"optional": true
@@ -14010,8 +13992,8 @@
},
"roarr": {
"version": "2.15.4",
- "resolved": "https://registry.npm.taobao.org/roarr/download/roarr-2.15.4.tgz?cache=0&sync_timestamp=1610472352033&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Froarr%2Fdownload%2Froarr-2.15.4.tgz",
- "integrity": "sha1-9f55W3uDjM/jXcYI4Cgrnrouev0=",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
"dev": true,
"optional": true,
"requires": {
@@ -14025,8 +14007,8 @@
"dependencies": {
"sprintf-js": {
"version": "1.1.2",
- "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.1.2.tgz",
- "integrity": "sha1-2hdlJiv4wPVxdJ8q1sJjACB65nM=",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
"dev": true,
"optional": true
}
@@ -14113,7 +14095,7 @@
},
"semver-compare": {
"version": "1.0.0",
- "resolved": "https://registry.npm.taobao.org/semver-compare/download/semver-compare-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
"integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
"dev": true,
"optional": true
@@ -14175,8 +14157,8 @@
},
"serialize-error": {
"version": "7.0.1",
- "resolved": "https://registry.npm.taobao.org/serialize-error/download/serialize-error-7.0.1.tgz",
- "integrity": "sha1-8TYLBEf2H/tIPsQVfHN/q313jhg=",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
"dev": true,
"optional": true,
"requires": {
@@ -14185,8 +14167,8 @@
"dependencies": {
"type-fest": {
"version": "0.13.1",
- "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.13.1.tgz?cache=0&sync_timestamp=1606468844109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.13.1.tgz",
- "integrity": "sha1-AXLLW86AsL1ULqNI21DH4hg02TQ=",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
"dev": true,
"optional": true
}
@@ -15069,15 +15051,6 @@
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true
},
- "strip-outer": {
- "version": "1.0.1",
- "resolved": "https://registry.npm.taobao.org/strip-outer/download/strip-outer-1.0.1.tgz",
- "integrity": "sha1-sv0qv2YEudHmATBXGV34Nrip1jE=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.2"
- }
- },
"stylehacks": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
@@ -15218,8 +15191,8 @@
},
"sumchecker": {
"version": "3.0.1",
- "resolved": "https://registry.npm.taobao.org/sumchecker/download/sumchecker-3.0.1.tgz",
- "integrity": "sha1-Y3fplnlauwttNI6bPh37JDRajkI=",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+ "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
"dev": true,
"requires": {
"debug": "^4.1.0"
@@ -15734,15 +15707,6 @@
"punycode": "^2.1.1"
}
},
- "trim-repeated": {
- "version": "1.0.0",
- "resolved": "https://registry.npm.taobao.org/trim-repeated/download/trim-repeated-1.0.0.tgz",
- "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.2"
- }
- },
"trim-right": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
@@ -15795,8 +15759,8 @@
},
"tunnel": {
"version": "0.0.6",
- "resolved": "https://registry.npm.taobao.org/tunnel/download/tunnel-0.0.6.tgz",
- "integrity": "sha1-cvExSzSlsZLbASMk3yzFh8pH+Sw=",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
"dev": true,
"optional": true
},
@@ -17844,7 +17808,7 @@
},
"yauzl": {
"version": "2.10.0",
- "resolved": "https://registry.npm.taobao.org/yauzl/download/yauzl-2.10.0.tgz",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
"dev": true,
"requires": {
diff --git a/package.json b/package.json
index f373005c..669190c7 100644
--- a/package.json
+++ b/package.json
@@ -163,6 +163,7 @@
"homepage": "https://github.com/lyswhut/lx-music-desktop#readme",
"devDependencies": {
"@babel/core": "^7.13.1",
+ "@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-modules-umd": "^7.13.0",
"@babel/plugin-transform-runtime": "^7.13.4",
diff --git a/src/renderer/components/core/Player.vue b/src/renderer/components/core/Player.vue
index e7847c55..1f3f7b39 100644
--- a/src/renderer/components/core/Player.vue
+++ b/src/renderer/components/core/Player.vue
@@ -85,7 +85,7 @@ div(:class="$style.player")
+
+`))
+ const randomNum = Math.random().toString().substring(2, 10)
+ global.modules.userApiWindow.loadURL(
+ 'data:text/html;charset=UTF-8,' + encodeURIComponent(html
+ .replace('',
+ ``)
+ .replace('', ``)))
+
+ // global.modules.userApiWindow.loadFile(path.join(dir, 'renderer/user-api.html'))
+ // global.modules.userApiWindow.webContents.openDevTools()
+}
+
+exports.closeWindow = async() => {
+ if (!global.modules.userApiWindow) return
+ await Promise.all([
+ global.modules.userApiWindow.webContents.session.clearAuthCache(),
+ global.modules.userApiWindow.webContents.session.clearStorageData(),
+ global.modules.userApiWindow.webContents.session.clearCache(),
+ ])
+ global.modules.userApiWindow.destroy()
+ global.modules.userApiWindow = null
+}
diff --git a/src/main/modules/userApi/renderer/preload.js b/src/main/modules/userApi/renderer/preload.js
new file mode 100644
index 00000000..f0b0793e
--- /dev/null
+++ b/src/main/modules/userApi/renderer/preload.js
@@ -0,0 +1,227 @@
+const { contextBridge, ipcRenderer } = require('electron')
+const needle = require('needle')
+const { createCipheriv, publicEncrypt, constants, randomBytes, createHash } = require('crypto')
+const USER_API_RENDERER_EVENT_NAME = require('../rendererEvent/name')
+
+const sendMessage = (action, status, data, message) => {
+ ipcRenderer.send(action, { status, data, message })
+}
+
+let isInitedApi = false
+const EVENT_NAMES = {
+ request: 'request',
+ inited: 'inited',
+}
+const eventNames = Object.values(EVENT_NAMES)
+const events = {
+ request: null,
+}
+const allSources = ['kw', 'kg', 'tx', 'wy', 'mg']
+const supportQualitys = {
+ kw: ['128k', '320k', 'flac'],
+ kg: ['128k', '320k', 'flac'],
+ tx: ['128k', '320k', 'flac'],
+ wy: ['128k', '320k', 'flac'],
+ mg: ['128k', '320k', 'flac'],
+}
+const supportActions = {
+ kw: ['musicUrl'],
+ kg: ['musicUrl'],
+ tx: ['musicUrl'],
+ wy: ['musicUrl'],
+ mg: ['musicUrl'],
+ xm: ['musicUrl'],
+}
+
+const handleRequest = (context, { requestKey, data }) => {
+ // console.log(data)
+ if (!events.request) return sendMessage(USER_API_RENDERER_EVENT_NAME.response, false, { requestKey }, 'Request event is not defined')
+ try {
+ events.request.call(context, { source: data.source, action: data.action, info: data.info }).then(response => {
+ let sendData = {
+ requestKey,
+ }
+ switch (data.action) {
+ case 'musicUrl':
+ sendData.result = {
+ source: data.source,
+ action: data.action,
+ data: {
+ type: data.info.type,
+ url: response,
+ },
+ }
+ break
+ }
+ sendMessage(USER_API_RENDERER_EVENT_NAME.response, true, sendData)
+ }).catch(err => {
+ sendMessage(USER_API_RENDERER_EVENT_NAME.response, false, { requestKey }, err.message)
+ })
+ } catch (err) {
+ sendMessage(USER_API_RENDERER_EVENT_NAME.response, false, { requestKey }, err.message)
+ }
+}
+
+/**
+ *
+ * @param {*} context
+ * @param {*} info {
+ * status: true,
+ * message: 'xxx',
+ * sources: {
+ * kw: ['128k', '320k', 'flac'],
+ * kg: ['128k', '320k', 'flac'],
+ * tx: ['128k', '320k', 'flac'],
+ * wy: ['128k', '320k', 'flac'],
+ * mg: ['128k', '320k', 'flac'],
+ * }
+ * }
+ */
+const handleInit = (context, info) => {
+ if (!info) {
+ sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, 'Init failed')
+ // sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, typeof info.message === 'string' ? info.message.substring(0, 100) : '')
+ return
+ }
+ if (info.openDevTools === true) {
+ sendMessage(USER_API_RENDERER_EVENT_NAME.openDevTools)
+ }
+ if (!info.status) {
+ sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, 'Init failed')
+ // sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, typeof info.message === 'string' ? info.message.substring(0, 100) : '')
+ return
+ }
+ const sourceInfo = {
+ sources: {},
+ }
+ try {
+ for (const source of allSources) {
+ const userSource = info.sources[source]
+ if (!userSource || userSource.type !== 'music') continue
+ const qualitys = supportQualitys[source]
+ const actions = supportActions[source]
+ sourceInfo.sources[source] = {
+ type: 'music',
+ actions: actions.filter(a => userSource.actions.includes(a)),
+ qualitys: qualitys.filter(q => userSource.qualitys.includes(q)),
+ }
+ }
+ } catch (error) {
+ console.log(error)
+ sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, error.message)
+ return
+ }
+ sendMessage(USER_API_RENDERER_EVENT_NAME.init, true, sourceInfo)
+
+ ipcRenderer.on(USER_API_RENDERER_EVENT_NAME.request, (event, data) => {
+ handleRequest(context, data)
+ })
+}
+
+contextBridge.exposeInMainWorld('lx', {
+ EVENT_NAMES,
+ request(url, { method = 'get', timeout, headers, body, form, formData }, callback) {
+ let options = { headers }
+ let data
+ if (body) {
+ data = body
+ } else if (form) {
+ data = form
+ // data.content_type = 'application/x-www-form-urlencoded'
+ options.json = false
+ } else if (formData) {
+ data = formData
+ // data.content_type = 'multipart/form-data'
+ options.json = false
+ }
+ options.response_timeout = timeout
+
+ let request = needle.request(method, url, data, options, (err, resp, body) => {
+ if (!err) {
+ body = resp.body = resp.raw.toString()
+ try {
+ resp.body = JSON.parse(resp.body)
+ } catch (_) {}
+ body = resp.body
+ }
+ callback(err, {
+ statusCode: resp.statusCode,
+ statusMessage: resp.statusMessage,
+ headers: resp.headers,
+ bytes: resp.bytes,
+ raw: resp.raw,
+ body: body,
+ }, body)
+ }).request
+
+ return () => {
+ if (!request.aborted) request.abort()
+ request = null
+ }
+ },
+ send(eventName, data) {
+ return new Promise((resolve, reject) => {
+ if (!eventNames.includes(eventName)) return reject(new Error('The event is not supported: ' + eventName))
+ switch (eventName) {
+ case EVENT_NAMES.inited:
+ if (isInitedApi) return
+ isInitedApi = true
+ handleInit(this, data)
+ break
+ default:
+ resolve(new Error('Unknown event name: ' + eventName))
+ }
+ })
+ },
+ on(eventName, handler) {
+ if (!eventNames.includes(eventName)) return Promise.reject(new Error('The event is not supported: ' + eventName))
+ switch (eventName) {
+ case EVENT_NAMES.request:
+ events.request = handler
+ break
+ }
+ },
+ utils: {
+ crypto: {
+ aesEncrypt(buffer, mode, key, iv) {
+ const cipher = createCipheriv('aes-128-' + mode, key, iv)
+ return Buffer.concat([cipher.update(buffer), cipher.final()])
+ },
+ rsaEncrypt(buffer, key) {
+ buffer = Buffer.concat([Buffer.alloc(128 - buffer.length), buffer])
+ return publicEncrypt({ key: key, padding: constants.RSA_NO_PADDING }, buffer)
+ },
+ randomBytes(size) {
+ return randomBytes(size)
+ },
+ md5(str) {
+ return createHash('md5').update(str).digest('hex')
+ },
+ },
+ buffer: {
+ from(...args) {
+ return Buffer.from(...args)
+ },
+ },
+ },
+ // removeEvent(eventName, handler) {
+ // if (!eventNames.includes(eventName)) return Promise.reject(new Error('The event is not supported: ' + eventName))
+ // let handlers
+ // switch (eventName) {
+ // case EVENT_NAMES.request:
+ // handlers = events.request
+ // break
+ // }
+ // for (let index = 0; index < handlers.length; index++) {
+ // if (handlers[index] === handler) {
+ // handlers.splice(index, 1)
+ // break
+ // }
+ // }
+ // },
+ // removeAllEvents() {
+ // for (const handlers of Object.values(events)) {
+ // handlers.splice(0, handlers.length)
+ // }
+ // },
+})
diff --git a/src/main/modules/userApi/renderer/user-api.html b/src/main/modules/userApi/renderer/user-api.html
new file mode 100644
index 00000000..a5cadf09
--- /dev/null
+++ b/src/main/modules/userApi/renderer/user-api.html
@@ -0,0 +1,12 @@
+
+
+