Merge branch 'dev' of https://github.com/Folltoshe/lx-music-desktop into pr/2382
commit
8445bfe655
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"name": "lx-music-desktop",
|
||||
"version": "2.12.0-beta.1",
|
||||
"version": "2.12.0-beta.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "lx-music-desktop",
|
||||
"version": "2.12.0-beta.1",
|
||||
"version": "2.12.0-beta.2",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@simonwep/pickr": "^1.9.1",
|
||||
"better-sqlite3": "^11.9.1",
|
||||
"better-sqlite3": "^11.10.0",
|
||||
"bufferutil": "^4.0.9",
|
||||
"comlink": "~4.3.1",
|
||||
"crypto-js": "^4.2.0",
|
||||
|
@ -30,7 +30,7 @@
|
|||
"utf-8-validate": "^6.0.5",
|
||||
"vue": "~3.3.13",
|
||||
"vue-router": "^4.5.1",
|
||||
"ws": "^8.18.1"
|
||||
"ws": "^8.18.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.27.1",
|
||||
|
@ -39,19 +39,19 @@
|
|||
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
||||
"@babel/plugin-transform-modules-umd": "^7.27.1",
|
||||
"@babel/plugin-transform-runtime": "^7.27.1",
|
||||
"@babel/preset-env": "^7.27.1",
|
||||
"@babel/preset-env": "^7.27.2",
|
||||
"@babel/preset-typescript": "^7.27.1",
|
||||
"@babel/runtime": "^7.27.1",
|
||||
"@tsconfig/recommended": "^1.0.8",
|
||||
"@types/better-sqlite3": "^7.6.13",
|
||||
"@types/needle": "^3.3.0",
|
||||
"@types/node": "^20.17.32",
|
||||
"@types/node": "^20.17.46",
|
||||
"@types/tunnel": "^0.0.7",
|
||||
"@types/ws": "8.5.4",
|
||||
"@volar/vue-language-plugin-pug": "^1.6.5",
|
||||
"@vue/language-plugin-pug": "^2.2.10",
|
||||
"babel-loader": "^10.0.0",
|
||||
"browserslist": "^4.24.4",
|
||||
"browserslist": "^4.24.5",
|
||||
"chalk": "^4.1.2",
|
||||
"changelog-parser": "^3.0.1",
|
||||
"copy-webpack-plugin": "^13.0.0",
|
||||
|
@ -60,12 +60,12 @@
|
|||
"css-loader": "^7.1.2",
|
||||
"css-minimizer-webpack-plugin": "^7.0.2",
|
||||
"del": "^6.1.1",
|
||||
"electron": "^35.2.2",
|
||||
"electron-builder": "^26.0.14",
|
||||
"electron": "^35.3.0",
|
||||
"electron-builder": "^26.0.15",
|
||||
"electron-debug": "^3.2.0",
|
||||
"electron-devtools-installer": "github:lyswhut/electron-devtools-installer#64596d615c1fc891eefd8aef1dfcb2c87aaadf03",
|
||||
"electron-to-chromium": "^1.5.149",
|
||||
"electron-updater": "6.6.3",
|
||||
"electron-to-chromium": "^1.5.151",
|
||||
"electron-updater": "6.6.4",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-standard": "^17.1.0",
|
||||
"eslint-config-standard-with-typescript": "^43.0.1",
|
||||
|
@ -96,7 +96,7 @@
|
|||
"typescript": "5.8.3",
|
||||
"vue-eslint-parser": "^9.4.3",
|
||||
"vue-loader": "^17.4.2",
|
||||
"webpack": "^5.99.7",
|
||||
"webpack": "^5.99.8",
|
||||
"webpack-cli": "^6.0.1",
|
||||
"webpack-dev-server": "5.2.1",
|
||||
"webpack-hot-middleware": "github:lyswhut/webpack-hot-middleware#329c4375134b89d39da23a56a94db651247c74a1",
|
||||
|
@ -137,9 +137,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/compat-data": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz",
|
||||
"integrity": "sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==",
|
||||
"version": "7.27.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz",
|
||||
"integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
|
@ -227,13 +227,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/helper-compilation-targets": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz",
|
||||
"integrity": "sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==",
|
||||
"version": "7.27.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
|
||||
"integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/compat-data": "^7.27.1",
|
||||
"@babel/compat-data": "^7.27.2",
|
||||
"@babel/helper-validator-option": "^7.27.1",
|
||||
"browserslist": "^4.24.0",
|
||||
"lru-cache": "^5.1.1",
|
||||
|
@ -1205,14 +1205,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-object-rest-spread": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.1.tgz",
|
||||
"integrity": "sha512-/sSliVc9gHE20/7D5qsdGlq7RG5NCDTWsAhyqzGuq174EtWJoGzIu1BQ7G56eDsTcy1jseBZwv50olSdXOlGuA==",
|
||||
"version": "7.27.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz",
|
||||
"integrity": "sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-compilation-targets": "^7.27.1",
|
||||
"@babel/helper-compilation-targets": "^7.27.2",
|
||||
"@babel/helper-plugin-utils": "^7.27.1",
|
||||
"@babel/plugin-transform-destructuring": "^7.27.1",
|
||||
"@babel/plugin-transform-parameters": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -1578,14 +1579,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/preset-env": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.1.tgz",
|
||||
"integrity": "sha512-TZ5USxFpLgKDpdEt8YWBR7p6g+bZo6sHaXLqP2BY/U0acaoI8FTVflcYCr/v94twM1C5IWFdZ/hscq9WjUeLXA==",
|
||||
"version": "7.27.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz",
|
||||
"integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/compat-data": "^7.27.1",
|
||||
"@babel/helper-compilation-targets": "^7.27.1",
|
||||
"@babel/compat-data": "^7.27.2",
|
||||
"@babel/helper-compilation-targets": "^7.27.2",
|
||||
"@babel/helper-plugin-utils": "^7.27.1",
|
||||
"@babel/helper-validator-option": "^7.27.1",
|
||||
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1",
|
||||
|
@ -1627,7 +1628,7 @@
|
|||
"@babel/plugin-transform-new-target": "^7.27.1",
|
||||
"@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
|
||||
"@babel/plugin-transform-numeric-separator": "^7.27.1",
|
||||
"@babel/plugin-transform-object-rest-spread": "^7.27.1",
|
||||
"@babel/plugin-transform-object-rest-spread": "^7.27.2",
|
||||
"@babel/plugin-transform-object-super": "^7.27.1",
|
||||
"@babel/plugin-transform-optional-catch-binding": "^7.27.1",
|
||||
"@babel/plugin-transform-optional-chaining": "^7.27.1",
|
||||
|
@ -1976,9 +1977,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@electron/osx-sign": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz",
|
||||
"integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==",
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz",
|
||||
"integrity": "sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
|
@ -2116,13 +2117,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@electron/universal": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz",
|
||||
"integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==",
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz",
|
||||
"integrity": "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@electron/asar": "^3.2.7",
|
||||
"@electron/asar": "^3.3.1",
|
||||
"@malept/cross-spawn-promise": "^2.0.0",
|
||||
"debug": "^4.3.1",
|
||||
"dir-compare": "^4.2.0",
|
||||
|
@ -2173,9 +2174,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@electron/windows-sign": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.1.tgz",
|
||||
"integrity": "sha512-YfASnrhJ+ve6Q43ZiDwmpBgYgi2u0bYjeAVi2tDfN7YWAKO8X9EEOuPGtqbJpPLM6TfAHimghICjWe2eaJ8BAg==",
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz",
|
||||
"integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
|
@ -3193,9 +3194,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.17.32",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.32.tgz",
|
||||
"integrity": "sha512-zeMXFn8zQ+UkjK4ws0RiOC9EWByyW1CcVmLe+2rQocXRsGEDxUCwPEIVgpsGcLHS/P8JkT0oa3839BRABS0oPw==",
|
||||
"version": "20.17.46",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.46.tgz",
|
||||
"integrity": "sha512-0PQHLhZPWOxGW4auogW0eOQAuNIlCYvibIpG67ja0TOJ6/sehu+1en7sfceUn+QQtx4Rk3GxbLNwPh0Cav7TWw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -4288,9 +4289,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/app-builder-lib": {
|
||||
"version": "26.0.14",
|
||||
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.0.14.tgz",
|
||||
"integrity": "sha512-nc/A9MUd95MCc7bR4yVW7Lhs9FZTA/l8QdV8PE1vZZOOiogK4dupBfCCJG0UqLU81JS62f078/bwAeuMjt3hfQ==",
|
||||
"version": "26.0.15",
|
||||
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.0.15.tgz",
|
||||
"integrity": "sha512-KVIsAHkBLaO2fvYVAccGbQPlbGFeGkx7IJXi/nDSBDXaMwHxauIXpAtf/NpopgudG6Ovyixl4QIWeHMPIvx0kg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -4298,9 +4299,9 @@
|
|||
"@electron/asar": "3.4.1",
|
||||
"@electron/fuses": "^1.8.0",
|
||||
"@electron/notarize": "2.5.0",
|
||||
"@electron/osx-sign": "1.3.1",
|
||||
"@electron/osx-sign": "1.3.3",
|
||||
"@electron/rebuild": "3.7.2",
|
||||
"@electron/universal": "2.0.1",
|
||||
"@electron/universal": "2.0.3",
|
||||
"@malept/flatpak-bundler": "^0.4.0",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
"async-exit-hook": "^2.0.1",
|
||||
|
@ -4332,8 +4333,8 @@
|
|||
"node": ">=14.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"dmg-builder": "26.0.14",
|
||||
"electron-builder-squirrel-windows": "26.0.14"
|
||||
"dmg-builder": "26.0.15",
|
||||
"electron-builder-squirrel-windows": "26.0.15"
|
||||
}
|
||||
},
|
||||
"node_modules/app-builder-lib/node_modules/fs-extra": {
|
||||
|
@ -4814,9 +4815,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/better-sqlite3": {
|
||||
"version": "11.9.1",
|
||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.1.tgz",
|
||||
"integrity": "sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==",
|
||||
"version": "11.10.0",
|
||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.10.0.tgz",
|
||||
"integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -4980,9 +4981,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.24.4",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
|
||||
"integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
|
||||
"version": "4.24.5",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz",
|
||||
"integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
@ -5000,10 +5001,10 @@
|
|||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001688",
|
||||
"electron-to-chromium": "^1.5.73",
|
||||
"caniuse-lite": "^1.0.30001716",
|
||||
"electron-to-chromium": "^1.5.149",
|
||||
"node-releases": "^2.0.19",
|
||||
"update-browserslist-db": "^1.1.1"
|
||||
"update-browserslist-db": "^1.1.3"
|
||||
},
|
||||
"bin": {
|
||||
"browserslist": "cli.js"
|
||||
|
@ -5409,9 +5410,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001707",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz",
|
||||
"integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==",
|
||||
"version": "1.0.30001717",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz",
|
||||
"integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
@ -6779,13 +6780,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/dmg-builder": {
|
||||
"version": "26.0.14",
|
||||
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.0.14.tgz",
|
||||
"integrity": "sha512-0l7oEj175hee7NfnaUpb0zf7fsgh1SyHeLjDA0AtOMnBUfTGxPPwrifbUxfd73qzamrGNcyeqza+m/EJx3QUug==",
|
||||
"version": "26.0.15",
|
||||
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.0.15.tgz",
|
||||
"integrity": "sha512-RXbDCcrPw2B0q2HIcPI2H7pIFeQiDsLW+ykRVKkW2ke2H3pTgI36r86xLmQZ6397uFCNUjpegRFv6bB+BCWJIA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"app-builder-lib": "26.0.14",
|
||||
"app-builder-lib": "26.0.15",
|
||||
"builder-util": "26.0.13",
|
||||
"builder-util-runtime": "9.3.2",
|
||||
"fs-extra": "^10.1.0",
|
||||
|
@ -7055,9 +7056,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/electron": {
|
||||
"version": "35.2.2",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-35.2.2.tgz",
|
||||
"integrity": "sha512-jZnCOtIgrt28esWP5z/PKndj/vPQ/Zt+cvNRlb/qOGnK/AjW1mASwPMtQ099NlSodf69RR3JrhnZCYbTWeDR4g==",
|
||||
"version": "35.3.0",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-35.3.0.tgz",
|
||||
"integrity": "sha512-6dLslJrQYB1qvqVPYRv1PhAA/uytC66nUeiTcq2JXiBzrmTWCHppqtGUjZhvnSRVatBCT5/SFdizdzcBiEiYUg==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
|
@ -7074,17 +7075,17 @@
|
|||
}
|
||||
},
|
||||
"node_modules/electron-builder": {
|
||||
"version": "26.0.14",
|
||||
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.0.14.tgz",
|
||||
"integrity": "sha512-YBxpWLMGj0oS7fbS3LVingeZqFunU0F8s+uB9QTd5+wN4qgrf/rSGRkqoImbWg2+F2yHq11wmaA/Xr9xzvgQ0w==",
|
||||
"version": "26.0.15",
|
||||
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.0.15.tgz",
|
||||
"integrity": "sha512-1nDY/7bbbORdWPQkIyFPfLfEHR4d22QfI5yec+etFL0y/PdmVz/wcxXc2KRpTQeIt75njm2/ocrtgp7LJvZC3Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"app-builder-lib": "26.0.14",
|
||||
"app-builder-lib": "26.0.15",
|
||||
"builder-util": "26.0.13",
|
||||
"builder-util-runtime": "9.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
"dmg-builder": "26.0.14",
|
||||
"dmg-builder": "26.0.15",
|
||||
"fs-extra": "^10.1.0",
|
||||
"is-ci": "^3.0.0",
|
||||
"lazy-val": "^1.0.5",
|
||||
|
@ -7100,14 +7101,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/electron-builder-squirrel-windows": {
|
||||
"version": "26.0.14",
|
||||
"resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.0.14.tgz",
|
||||
"integrity": "sha512-1JvbMXtNJsElDZZaFMa3nIRV/diXBFeP0+JPhLLu1c7b21VWPcPbr3MCCL+lTchVDq+q2v0F5dmHN72CJnOTpg==",
|
||||
"version": "26.0.15",
|
||||
"resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.0.15.tgz",
|
||||
"integrity": "sha512-NAPShr9weifHIn2JXdnZ8P4DfQg60NCiYPF42S1yR+S9YQQ/8cG3lSeoZ/LGPFO9Cf3MoXlbwqa+SSpEb3xXYw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"app-builder-lib": "26.0.14",
|
||||
"app-builder-lib": "26.0.15",
|
||||
"builder-util": "26.0.13",
|
||||
"electron-winstaller": "5.4.0"
|
||||
}
|
||||
|
@ -7286,16 +7287,16 @@
|
|||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.149",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.149.tgz",
|
||||
"integrity": "sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==",
|
||||
"version": "1.5.151",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.151.tgz",
|
||||
"integrity": "sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/electron-updater": {
|
||||
"version": "6.6.3",
|
||||
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.3.tgz",
|
||||
"integrity": "sha512-i448/SwMtqxy5wqAcXScnWjiFxZp+hmWA2jZCmojcdfodEGhi/DWTdRP01mE3lCILb8hmdE28SBaHf1oQW3+kw==",
|
||||
"version": "6.6.4",
|
||||
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.4.tgz",
|
||||
"integrity": "sha512-RcuWXbXTQkI5X3vir/eJ9S0VZQJ73eaQdlrA2J0mVrb0sbkHtnkjBMGo9umFtX8axn6r/pShN3CORxdmiF4OOw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -17750,9 +17751,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/webpack": {
|
||||
"version": "5.99.7",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.7.tgz",
|
||||
"integrity": "sha512-CNqKBRMQjwcmKR0idID5va1qlhrqVUKpovi+Ec79ksW8ux7iS1+A6VqzfZXgVYCFRKl7XL5ap3ZoMpwBJxcg0w==",
|
||||
"version": "5.99.8",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.8.tgz",
|
||||
"integrity": "sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -18215,9 +18216,9 @@
|
|||
"license": "ISC"
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.18.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
|
||||
"integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
|
||||
"version": "8.18.2",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
|
||||
"integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
|
|
22
package.json
22
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "lx-music-desktop",
|
||||
"version": "2.12.0-beta.1",
|
||||
"version": "2.12.0-beta.2",
|
||||
"description": "一个免费的音乐查找助手",
|
||||
"main": "./dist/main.js",
|
||||
"scripts": {
|
||||
|
@ -113,19 +113,19 @@
|
|||
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
||||
"@babel/plugin-transform-modules-umd": "^7.27.1",
|
||||
"@babel/plugin-transform-runtime": "^7.27.1",
|
||||
"@babel/preset-env": "^7.27.1",
|
||||
"@babel/preset-env": "^7.27.2",
|
||||
"@babel/preset-typescript": "^7.27.1",
|
||||
"@babel/runtime": "^7.27.1",
|
||||
"@tsconfig/recommended": "^1.0.8",
|
||||
"@types/better-sqlite3": "^7.6.13",
|
||||
"@types/needle": "^3.3.0",
|
||||
"@types/node": "^20.17.32",
|
||||
"@types/node": "^20.17.46",
|
||||
"@types/tunnel": "^0.0.7",
|
||||
"@types/ws": "8.5.4",
|
||||
"@volar/vue-language-plugin-pug": "^1.6.5",
|
||||
"@vue/language-plugin-pug": "^2.2.10",
|
||||
"babel-loader": "^10.0.0",
|
||||
"browserslist": "^4.24.4",
|
||||
"browserslist": "^4.24.5",
|
||||
"chalk": "^4.1.2",
|
||||
"changelog-parser": "^3.0.1",
|
||||
"copy-webpack-plugin": "^13.0.0",
|
||||
|
@ -134,12 +134,12 @@
|
|||
"css-loader": "^7.1.2",
|
||||
"css-minimizer-webpack-plugin": "^7.0.2",
|
||||
"del": "^6.1.1",
|
||||
"electron": "^35.2.2",
|
||||
"electron-builder": "^26.0.14",
|
||||
"electron": "^35.3.0",
|
||||
"electron-builder": "^26.0.15",
|
||||
"electron-debug": "^3.2.0",
|
||||
"electron-devtools-installer": "github:lyswhut/electron-devtools-installer#64596d615c1fc891eefd8aef1dfcb2c87aaadf03",
|
||||
"electron-to-chromium": "^1.5.149",
|
||||
"electron-updater": "6.6.3",
|
||||
"electron-to-chromium": "^1.5.151",
|
||||
"electron-updater": "6.6.4",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-standard": "^17.1.0",
|
||||
"eslint-config-standard-with-typescript": "^43.0.1",
|
||||
|
@ -170,7 +170,7 @@
|
|||
"typescript": "5.8.3",
|
||||
"vue-eslint-parser": "^9.4.3",
|
||||
"vue-loader": "^17.4.2",
|
||||
"webpack": "^5.99.7",
|
||||
"webpack": "^5.99.8",
|
||||
"webpack-cli": "^6.0.1",
|
||||
"webpack-dev-server": "5.2.1",
|
||||
"webpack-hot-middleware": "github:lyswhut/webpack-hot-middleware#329c4375134b89d39da23a56a94db651247c74a1",
|
||||
|
@ -178,7 +178,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@simonwep/pickr": "^1.9.1",
|
||||
"better-sqlite3": "^11.9.1",
|
||||
"better-sqlite3": "^11.10.0",
|
||||
"bufferutil": "^4.0.9",
|
||||
"comlink": "~4.3.1",
|
||||
"crypto-js": "^4.2.0",
|
||||
|
@ -197,7 +197,7 @@
|
|||
"utf-8-validate": "^6.0.5",
|
||||
"vue": "~3.3.13",
|
||||
"vue-router": "^4.5.1",
|
||||
"ws": "^8.18.1"
|
||||
"ws": "^8.18.2"
|
||||
},
|
||||
"overrides": {
|
||||
"got": "^11",
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
- 新增「设置 → 其他设置 → 主窗口使用软件内置的圆角及阴影」设置(#2360)
|
||||
*默认启用,关闭后将使用系统原生的窗口样式,该设置重启软件后生效*
|
||||
- 开放API新增播放器声音大小、静音、播放进度控制,详情看接入文档(#2386)
|
||||
|
||||
### 变更
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@ declare namespace LX {
|
|||
| 'pause'
|
||||
| 'play'
|
||||
| 'next'
|
||||
| 'seek'
|
||||
| 'volume'
|
||||
| 'mute'
|
||||
|
||||
interface LyricInfo extends LX.Music.LyricInfo {
|
||||
rawlrcInfo: LX.Music.LyricInfo
|
||||
|
@ -29,6 +32,8 @@ declare namespace LX {
|
|||
lyricLineAllText: string
|
||||
lyric: string
|
||||
collect: boolean
|
||||
volume: number
|
||||
mute: boolean
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -320,11 +320,11 @@
|
|||
"setting__basic_control_btn_position_right": "右边",
|
||||
"setting__basic_font": "字体",
|
||||
"setting__basic_font_size": "字体大小",
|
||||
"setting__basic_font_size_14px": "较小",
|
||||
"setting__basic_font_size_14px": "更小",
|
||||
"setting__basic_font_size_15px": "小",
|
||||
"setting__basic_font_size_16px": "标准",
|
||||
"setting__basic_font_size_17px": "大",
|
||||
"setting__basic_font_size_18px": "较大",
|
||||
"setting__basic_font_size_18px": "更大",
|
||||
"setting__basic_font_size_19px": "非常大",
|
||||
"setting__basic_lang": "语言",
|
||||
"setting__basic_lang_title": "软件显示的语言",
|
||||
|
@ -351,11 +351,11 @@
|
|||
"setting__basic_window_size": "窗口尺寸",
|
||||
"setting__basic_window_size_big": "大",
|
||||
"setting__basic_window_size_huge": "巨大",
|
||||
"setting__basic_window_size_larger": "较大",
|
||||
"setting__basic_window_size_larger": "更大",
|
||||
"setting__basic_window_size_medium": "中",
|
||||
"setting__basic_window_size_oversized": "超大",
|
||||
"setting__basic_window_size_small": "小",
|
||||
"setting__basic_window_size_smaller": "较小",
|
||||
"setting__basic_window_size_smaller": "更小",
|
||||
"setting__basic_window_size_title": "设置软件窗口尺寸",
|
||||
"setting__click_copy": "点击复制",
|
||||
"setting__click_open": "点击打开",
|
||||
|
|
|
@ -320,11 +320,11 @@
|
|||
"setting__basic_control_btn_position_right": "右邊",
|
||||
"setting__basic_font": "字體",
|
||||
"setting__basic_font_size": "字體大小",
|
||||
"setting__basic_font_size_14px": "較小",
|
||||
"setting__basic_font_size_14px": "更小",
|
||||
"setting__basic_font_size_15px": "小",
|
||||
"setting__basic_font_size_16px": "標準",
|
||||
"setting__basic_font_size_17px": "大",
|
||||
"setting__basic_font_size_18px": "較大",
|
||||
"setting__basic_font_size_18px": "更大",
|
||||
"setting__basic_font_size_19px": "非常大",
|
||||
"setting__basic_lang": "語言",
|
||||
"setting__basic_lang_title": "軟體顯示的語言",
|
||||
|
@ -351,11 +351,11 @@
|
|||
"setting__basic_window_size": "視窗尺寸",
|
||||
"setting__basic_window_size_big": "大",
|
||||
"setting__basic_window_size_huge": "巨大",
|
||||
"setting__basic_window_size_larger": "較大",
|
||||
"setting__basic_window_size_larger": "更大",
|
||||
"setting__basic_window_size_medium": "中",
|
||||
"setting__basic_window_size_oversized": "超大",
|
||||
"setting__basic_window_size_small": "小",
|
||||
"setting__basic_window_size_smaller": "較小",
|
||||
"setting__basic_window_size_smaller": "更大",
|
||||
"setting__basic_window_size_title": "設定軟體視窗尺寸",
|
||||
"setting__click_copy": "點擊複製",
|
||||
"setting__click_open": "點擊開啟",
|
||||
|
|
|
@ -65,6 +65,8 @@ export const initGlobalData = () => {
|
|||
lyricLineAllText: '',
|
||||
lyric: '',
|
||||
collect: false,
|
||||
volume: 0,
|
||||
mute: false,
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -230,6 +232,15 @@ export const listenerAppEvent = (startApp: () => void) => {
|
|||
global.lx.theme.shouldUseDarkColors = shouldUseDarkColors
|
||||
global.lx?.event_app.system_theme_change(shouldUseDarkColors)
|
||||
})
|
||||
|
||||
global.lx.event_app.on('updated_config', (config, setting) => {
|
||||
if (config.includes('player.volume')) {
|
||||
global.lx.event_app.player_status({ volume: Math.trunc(setting['player.volume']! * 100) })
|
||||
}
|
||||
if (config.includes('player.isMute')) {
|
||||
global.lx.event_app.player_status({ mute: setting['player.isMute'] })
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const initTheme = () => {
|
||||
|
@ -256,6 +267,20 @@ const initTheme = () => {
|
|||
})
|
||||
}
|
||||
|
||||
const backupDB = (backupPath: string) => {
|
||||
const dbPath = path.join(global.lxDataPath, 'lx.data.db')
|
||||
try {
|
||||
renameSync(dbPath, backupPath)
|
||||
} catch {}
|
||||
try {
|
||||
renameSync(`${dbPath}-wal`, `${backupPath}-wal`)
|
||||
} catch {}
|
||||
try {
|
||||
renameSync(`${dbPath}-shm`, `${backupPath}-shm`)
|
||||
} catch {}
|
||||
openDirInExplorer(backupPath)
|
||||
}
|
||||
|
||||
let isInitialized = false
|
||||
export const initAppSetting = async() => {
|
||||
if (!global.lx.inited) {
|
||||
|
@ -268,14 +293,13 @@ export const initAppSetting = async() => {
|
|||
if (!isInitialized) {
|
||||
let dbFileExists = await global.lx.worker.dbService.init(global.lxDataPath)
|
||||
if (dbFileExists === null) {
|
||||
const backPath = path.join(global.lxDataPath, `lx.data.db.${Date.now()}.bak`)
|
||||
const backupPath = path.join(global.lxDataPath, `lx.data.db.${Date.now()}.bak`)
|
||||
dialog.showMessageBoxSync({
|
||||
type: 'warning',
|
||||
message: 'Database verify failed',
|
||||
detail: `数据库表结构校验失败,我们将把有问题的数据库备份到:${backPath}\n若此问题导致你的数据丢失,你可以尝试从备份文件找回它们。\n\nThe database table structure verification failed, we will back up the problematic database to: ${backPath}\nIf this problem causes your data to be lost, you can try to retrieve them from the backup file.`,
|
||||
detail: `数据库表结构校验失败,我们将把有问题的数据库备份到:${backupPath}\n若此问题导致你的数据丢失,你可以尝试从备份文件找回它们。\n\nThe database table structure verification failed, we will back up the problematic database to: ${backupPath}\nIf this problem causes your data to be lost, you can try to retrieve them from the backup file.`,
|
||||
})
|
||||
renameSync(path.join(global.lxDataPath, 'lx.data.db'), backPath)
|
||||
openDirInExplorer(backPath)
|
||||
backupDB(backupPath)
|
||||
dbFileExists = await global.lx.worker.dbService.init(global.lxDataPath)
|
||||
}
|
||||
global.lx.appSetting = (await initSetting()).setting
|
||||
|
|
|
@ -142,12 +142,44 @@ const handleStartServer = async(port: number, ip: string) => new Promise<void>((
|
|||
case '/skip-prev':
|
||||
sendTaskbarButtonClick('prev')
|
||||
break
|
||||
case '/seek': {
|
||||
const offset = parseFloat(querystring.parse(query ?? '').offset as string)
|
||||
if (Number.isNaN(offset) || offset < 0 || offset > global.lx.player_status.duration) {
|
||||
code = 400
|
||||
msg = 'Invalid offset'
|
||||
} else {
|
||||
sendTaskbarButtonClick('seek', parseFloat(offset.toFixed(3)))
|
||||
}
|
||||
break
|
||||
}
|
||||
case '/collect':
|
||||
sendTaskbarButtonClick('collect')
|
||||
break
|
||||
case '/uncollect':
|
||||
sendTaskbarButtonClick('unCollect')
|
||||
break
|
||||
case '/volume': {
|
||||
const volume = parseInt(querystring.parse(query ?? '').volume as string)
|
||||
if (Number.isNaN(volume) || volume < 0 || volume > 100) {
|
||||
code = 400
|
||||
msg = 'Invalid volume'
|
||||
} else {
|
||||
sendTaskbarButtonClick('volume', volume / 100)
|
||||
}
|
||||
break
|
||||
}
|
||||
case '/mute': {
|
||||
const mute = querystring.parse(query ?? '').mute
|
||||
if (mute == 'true') {
|
||||
sendTaskbarButtonClick('mute', true)
|
||||
} else if (mute == 'false') {
|
||||
sendTaskbarButtonClick('mute', false)
|
||||
} else {
|
||||
code = 400
|
||||
msg = 'Invalid mute value'
|
||||
}
|
||||
break
|
||||
}
|
||||
case '/subscribe-player-status':
|
||||
try {
|
||||
handleSubscribePlayerStatus(req, res, query)
|
||||
|
|
|
@ -137,8 +137,8 @@ export const sendFocus = () => {
|
|||
sendEvent(WIN_MAIN_RENDERER_EVENT_NAME.focus)
|
||||
}
|
||||
|
||||
export const sendTaskbarButtonClick = (action: LX.Player.StatusButtonActions) => {
|
||||
sendEvent(WIN_MAIN_RENDERER_EVENT_NAME.player_action_on_button_click, action)
|
||||
export const sendTaskbarButtonClick = (action: LX.Player.StatusButtonActions, data?: unknown) => {
|
||||
sendEvent(WIN_MAIN_RENDERER_EVENT_NAME.player_action_on_button_click, { action, data })
|
||||
}
|
||||
export const sendConfigChange = (setting: Partial<LX.AppSetting>) => {
|
||||
sendEvent(WIN_MAIN_RENDERER_EVENT_NAME.on_config_change, setting)
|
||||
|
|
|
@ -259,7 +259,10 @@ export default {
|
|||
})
|
||||
|
||||
onMounted(() => {
|
||||
dom_scrollContainer.value.addEventListener('scroll', onScroll, false)
|
||||
dom_scrollContainer.value.addEventListener('scroll', onScroll, {
|
||||
capture: false,
|
||||
passive: true,
|
||||
})
|
||||
cachedList = Array(props.list.length)
|
||||
startIndex = -1
|
||||
endIndex = -1
|
||||
|
|
|
@ -282,7 +282,10 @@ export default {
|
|||
})
|
||||
|
||||
onMounted(() => {
|
||||
dom_scrollContainer.value.addEventListener('scroll', onScroll, false)
|
||||
dom_scrollContainer.value.addEventListener('scroll', onScroll, {
|
||||
capture: false,
|
||||
passive: true,
|
||||
})
|
||||
cachedList = Array(props.list.length)
|
||||
startIndex = -1
|
||||
endIndex = -1
|
||||
|
|
|
@ -81,7 +81,7 @@ export default () => {
|
|||
// buttons.lockLrc = setting.desktopLyric.isLock
|
||||
// setButtons()
|
||||
// }
|
||||
const rTaskbarThumbarClick = onPlayerAction(async({ params: action }) => {
|
||||
const rTaskbarThumbarClick = onPlayerAction(async({ params: { action, data } }) => {
|
||||
switch (action) {
|
||||
case 'play':
|
||||
play()
|
||||
|
@ -105,6 +105,19 @@ export default () => {
|
|||
void removeListMusics({ listId: loveList.id, ids: ['progress' in playMusicInfo.musicInfo ? playMusicInfo.musicInfo.metadata.musicInfo.id : playMusicInfo.musicInfo.id] })
|
||||
if (await updateCollectStatus()) sendPlayerStatus({ collect })
|
||||
break
|
||||
case 'seek': {
|
||||
let progress = data as number
|
||||
if (progress < 0) progress = 0
|
||||
else if (progress > playProgress.maxPlayTime) progress = playProgress.maxPlayTime
|
||||
window.app_event.setProgress(progress)
|
||||
break
|
||||
}
|
||||
case 'mute':
|
||||
window.app_event.setVolumeIsMute(data as boolean)
|
||||
break
|
||||
case 'volume':
|
||||
window.app_event.setVolume(data as number)
|
||||
break
|
||||
// case 'lrc':
|
||||
// setVisibleDesktopLyric(true)
|
||||
// updateSetting()
|
||||
|
|
|
@ -476,7 +476,10 @@ export const hotKeyGetStatus = async() => {
|
|||
}
|
||||
|
||||
// 主进程操作播放器状态
|
||||
export const onPlayerAction = (listener: LX.IpcRendererEventListenerParams<LX.Player.StatusButtonActions>): RemoveListener => {
|
||||
export const onPlayerAction = (listener: LX.IpcRendererEventListenerParams<{
|
||||
action: LX.Player.StatusButtonActions
|
||||
data?: unknown
|
||||
}>): RemoveListener => {
|
||||
rendererOn(WIN_MAIN_RENDERER_EVENT_NAME.player_action_on_button_click, listener)
|
||||
return () => {
|
||||
rendererOff(WIN_MAIN_RENDERER_EVENT_NAME.player_action_on_button_click, listener)
|
||||
|
|
Loading…
Reference in New Issue