mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 18:41:47 +00:00
Compare commits
49 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 27f4c0393e | |||
| 9bc42f836f | |||
| 11b11ed966 | |||
| 5f79b7e788 | |||
| 7d1d806797 | |||
| 836cedb0f3 | |||
| 70349e13cc | |||
| 6d16b74471 | |||
| c211780c33 | |||
| 2173ba0234 | |||
| 3a4cbc543b | |||
| 2fef7f0246 | |||
| 12d693921e | |||
| d1b4879f51 | |||
| f14939fcd2 | |||
| 4e66b0cedd | |||
| 11fe54d640 | |||
| 446529f738 | |||
| ac6e9deeb9 | |||
| 100873163f | |||
| e141e18bac | |||
| f4da0c2c95 | |||
| 7507bce3cc | |||
| 2b970fade8 | |||
| 35f0e43082 | |||
| ae4410a613 | |||
| 5534174016 | |||
| 15cf6c77c3 | |||
| 18a8fc462d | |||
| d3acb4945a | |||
| 32d3c58b44 | |||
| bd8c2eb390 | |||
| a81fa9c0d1 | |||
| 1d0f7d7a48 | |||
| b6687307df | |||
| 7e07a44f68 | |||
| 5ca66530ee | |||
| 95acbe2b65 | |||
| 534aeb163a | |||
| 6abcbee290 | |||
| 4457a043a4 | |||
| 410a052fea | |||
| e4287085a1 | |||
| b6cefef8fb | |||
| 9d7e2a06bc | |||
| d516fc2153 | |||
| 77bfe8e218 | |||
| 0fcbe38837 | |||
| b85a40f683 |
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@ -62,6 +62,12 @@ jobs:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
sudo snap install snapcraft --classic
|
||||
sudo apt update
|
||||
sudo apt install -y flatpak flatpak-builder
|
||||
sudo flatpak remote-add --if-not-exists --system flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
sudo flatpak install -y flathub org.freedesktop.Platform/x86_64/20.08
|
||||
sudo flatpak install -y flathub org.freedesktop.Sdk/x86_64/20.08
|
||||
sudo flatpak install -y flathub org.electronjs.Electron2.BaseApp/x86_64/20.08
|
||||
pnpm release:linux
|
||||
|
||||
- name: Build and release on Windows
|
||||
|
||||
64
changelog.md
64
changelog.md
@ -2,8 +2,72 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||
|
||||
#### [v3.6.1](https://github.com/th-ch/youtube-music/compare/v3.6.0...v3.6.1)
|
||||
|
||||
- fix(api-server): Various fixes and improvements [`#2496`](https://github.com/th-ch/youtube-music/pull/2496)
|
||||
- fix(deps): update dependency electron-debug to v4.1.0 [`#2499`](https://github.com/th-ch/youtube-music/pull/2499)
|
||||
- fix(renderer): fix force like buttons display logic [`#2493`](https://github.com/th-ch/youtube-music/pull/2493)
|
||||
- fix(deps): update dependency i18next to v23.16.0 [`#2492`](https://github.com/th-ch/youtube-music/pull/2492)
|
||||
- fix(downloader): fix #2371 [`#2371`](https://github.com/th-ch/youtube-music/issues/2371)
|
||||
- fix(ytm-bugs): incorrect video ratio [`#2459`](https://github.com/th-ch/youtube-music/issues/2459)
|
||||
- fix(api-server): fix init/authentication error [`#2497`](https://github.com/th-ch/youtube-music/issues/2497)
|
||||
- fix: RSS feed CORS issue [`#1620`](https://github.com/th-ch/youtube-music/issues/1620)
|
||||
- chore(flatpak-builder): Add more details when failing [`d3acb49`](https://github.com/th-ch/youtube-music/commit/d3acb4945a8dcde6598c53d8207bbf16eda8c739)
|
||||
- chore(i18n): Translated using Weblate (Filipino) [`e428708`](https://github.com/th-ch/youtube-music/commit/e4287085a11f30d141148ab0432cc684819fd0d0)
|
||||
- Bump version to 3.6.1 [`b668730`](https://github.com/th-ch/youtube-music/commit/b6687307dfe7ef765517019093c8db3c2ad14417)
|
||||
|
||||
#### [v3.6.0](https://github.com/th-ch/youtube-music/compare/v3.5.3...v3.6.0)
|
||||
|
||||
> 13 October 2024
|
||||
|
||||
- feat(api-server): remote control api [`#1909`](https://github.com/th-ch/youtube-music/pull/1909)
|
||||
- chore(deps): update playwright monorepo to v1.48.0 [`#2489`](https://github.com/th-ch/youtube-music/pull/2489)
|
||||
- fix(`synced-lyrics`): Fix 2 issues [`#2441`](https://github.com/th-ch/youtube-music/pull/2441)
|
||||
- chore(deps): update dependency typescript to v5.6.3 [`#2486`](https://github.com/th-ch/youtube-music/pull/2486)
|
||||
- chore(deps): update dependency electron to v32.2.0 [`#2487`](https://github.com/th-ch/youtube-music/pull/2487)
|
||||
- chore(deps): update dependency del-cli to v6 [`#2475`](https://github.com/th-ch/youtube-music/pull/2475)
|
||||
- chore(deps): update dependency typescript-eslint to v8.8.1 [`#2477`](https://github.com/th-ch/youtube-music/pull/2477)
|
||||
- fix(deps): update dependency solid-js to v1.9.2 [`#2480`](https://github.com/th-ch/youtube-music/pull/2480)
|
||||
- Revert "chore(deps): update dependency electron-builder to v25" [`#2488`](https://github.com/th-ch/youtube-music/pull/2488)
|
||||
- chore(deps): update dependency electron-builder to v25 [`#2406`](https://github.com/th-ch/youtube-music/pull/2406)
|
||||
- fix(deps): update dependency deepmerge-ts to v7.1.3 [`#2481`](https://github.com/th-ch/youtube-music/pull/2481)
|
||||
- fix(deps): update dependency ts-morph to v24 [`#2474`](https://github.com/th-ch/youtube-music/pull/2474)
|
||||
- fix(deps): update dependency i18next to v23.15.2 [`#2471`](https://github.com/th-ch/youtube-music/pull/2471)
|
||||
- chore(deps): update eslint monorepo to v9.12.0 [`#2470`](https://github.com/th-ch/youtube-music/pull/2470)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.9.0 [`#2469`](https://github.com/th-ch/youtube-music/pull/2469)
|
||||
- chore(deps): bump micromatch from 4.0.5 to 4.0.8 [`#2465`](https://github.com/th-ch/youtube-music/pull/2465)
|
||||
- chore(deps): bump braces from 3.0.2 to 3.0.3 [`#2466`](https://github.com/th-ch/youtube-music/pull/2466)
|
||||
- fix(deps): update dependency electron-updater to v6.3.9 [`#2468`](https://github.com/th-ch/youtube-music/pull/2468)
|
||||
- fix(deps): update dependency deepmerge-ts to v7.1.1 [`#2467`](https://github.com/th-ch/youtube-music/pull/2467)
|
||||
- chore(deps): update dependency typescript-eslint to v8.8.0 [`#2457`](https://github.com/th-ch/youtube-music/pull/2457)
|
||||
- chore(deps): update dependency @babel/runtime to v7.25.7 [`#2462`](https://github.com/th-ch/youtube-music/pull/2462)
|
||||
- chore(deps): update dependency rollup to v4.24.0 [`#2458`](https://github.com/th-ch/youtube-music/pull/2458)
|
||||
- chore(deps): update dependency eslint-plugin-import to v2.31.0 [`#2464`](https://github.com/th-ch/youtube-music/pull/2464)
|
||||
- chore(deps): update dependency rollup to v4.22.5 [`#2448`](https://github.com/th-ch/youtube-music/pull/2448)
|
||||
- chore(deps): update dependency typescript-eslint to v8.7.0 [`#2450`](https://github.com/th-ch/youtube-music/pull/2450)
|
||||
- fix(deps): update dependency solid-js to v1.9.1 [`#2451`](https://github.com/th-ch/youtube-music/pull/2451)
|
||||
- chore(deps): update dependency vite to v5.4.8 [`#2449`](https://github.com/th-ch/youtube-music/pull/2449)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.101 [`#2440`](https://github.com/th-ch/youtube-music/pull/2440)
|
||||
- chore(deps): update dependency esbuild to v0.24.0 [`#2439`](https://github.com/th-ch/youtube-music/pull/2439)
|
||||
- chore(deps): update eslint monorepo to v9.11.1 [`#2442`](https://github.com/th-ch/youtube-music/pull/2442)
|
||||
- chore(deps): update dependency @types/howler to v2.2.12 [`#2443`](https://github.com/th-ch/youtube-music/pull/2443)
|
||||
- chore(deps): update dependency vite to v5.4.7 [`#2434`](https://github.com/th-ch/youtube-music/pull/2434)
|
||||
- chore(deps): update playwright monorepo to v1.47.2 [`#2436`](https://github.com/th-ch/youtube-music/pull/2436)
|
||||
- chore(deps): update eslint monorepo to v9.11.0 [`#2437`](https://github.com/th-ch/youtube-music/pull/2437)
|
||||
- fix(deps): update dependency youtubei.js to v10.5.0 [`#2431`](https://github.com/th-ch/youtube-music/pull/2431)
|
||||
- chore(deps): update dependency rollup to v4.22.4 [`#2430`](https://github.com/th-ch/youtube-music/pull/2430)
|
||||
- chore(deps): update dependency electron to v32.1.2 [`#2433`](https://github.com/th-ch/youtube-music/pull/2433)
|
||||
- feat: ESLint Flat Config (v9 support #2229) [`#2426`](https://github.com/th-ch/youtube-music/pull/2426)
|
||||
- fix(taskbar-mediacontrol): fix icon color [`#2485`](https://github.com/th-ch/youtube-music/issues/2485)
|
||||
- chore(eslint): apply eslint-plugin-prettier [`#2438`](https://github.com/th-ch/youtube-music/issues/2438)
|
||||
- fix: apply fix from eslint [`cb1381b`](https://github.com/th-ch/youtube-music/commit/cb1381bbb394e2bbb404f44817ef96411dabc8a9)
|
||||
- chore(i18n): Translated using Weblate (Portuguese (Brazil)) [`bcff26c`](https://github.com/th-ch/youtube-music/commit/bcff26c85b18258806f3960309776bc860c3a54e)
|
||||
- chore(i18n): Translated using Weblate (Persian) [`ead448e`](https://github.com/th-ch/youtube-music/commit/ead448ed98095339557903eb0f84c4a6d0f32058)
|
||||
|
||||
#### [v3.5.3](https://github.com/th-ch/youtube-music/compare/v3.5.2...v3.5.3)
|
||||
|
||||
> 17 September 2024
|
||||
|
||||
- fix: fix `trustedHTML` issue [`#2339`](https://github.com/th-ch/youtube-music/issues/2339)
|
||||
- chore(deps): update dependency rollup to v4.21.3 [`6edc84a`](https://github.com/th-ch/youtube-music/commit/6edc84a8bd6c7e009041117ba0d2004783eb3a47)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.6.0 [`d4c8a43`](https://github.com/th-ch/youtube-music/commit/d4c8a4320d733f7bddc4dcd1de93644790e71d66)
|
||||
|
||||
93
package.json
93
package.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "youtube-music",
|
||||
"productName": "YouTube Music",
|
||||
"version": "3.6.0",
|
||||
"version": "3.6.2",
|
||||
"description": "YouTube Music Desktop App - including custom plugins",
|
||||
"main": "./dist/main/index.js",
|
||||
"license": "MIT",
|
||||
@ -40,7 +40,8 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"icon": "assets/generated/icons/mac/icon.icns"
|
||||
"icon": "assets/generated/icons/mac/icon.icns",
|
||||
"compression": "maximum"
|
||||
},
|
||||
"win": {
|
||||
"icon": "assets/generated/icons/win/icon.ico",
|
||||
@ -61,7 +62,8 @@
|
||||
"arm64"
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"compression": "maximum"
|
||||
},
|
||||
"nsisWeb": {
|
||||
"runAfterFinish": false
|
||||
@ -70,13 +72,67 @@
|
||||
"icon": "assets/generated/icons/png",
|
||||
"category": "AudioVideo",
|
||||
"target": [
|
||||
"AppImage",
|
||||
"snap",
|
||||
"freebsd",
|
||||
"deb",
|
||||
"rpm"
|
||||
{
|
||||
"target": "AppImage",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64",
|
||||
"armv7l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "flatpak",
|
||||
"arch": [
|
||||
"x64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "deb",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64",
|
||||
"armv7l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "rpm",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "snap",
|
||||
"arch": [
|
||||
"x64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "freebsd",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64",
|
||||
"armv7l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "tar.gz",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64",
|
||||
"armv7l"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"appImage": {
|
||||
"description": "YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)",
|
||||
"category": "AudioVideo"
|
||||
},
|
||||
"flatpak": {
|
||||
"description": "YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)",
|
||||
"category": "AudioVideo"
|
||||
},
|
||||
"deb": {
|
||||
"depends": [
|
||||
"libgtk-3-0",
|
||||
@ -139,7 +195,7 @@
|
||||
"typecheck": "tsc -p tsconfig.json --noEmit"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0",
|
||||
"node": ">=18",
|
||||
"pnpm": ">=8"
|
||||
},
|
||||
"pnpm": {
|
||||
@ -153,7 +209,8 @@
|
||||
},
|
||||
"patchedDependencies": {
|
||||
"vudio@2.1.1": "patches/vudio@2.1.1.patch",
|
||||
"app-builder-lib@24.13.3": "patches/app-builder-lib@24.13.3.patch"
|
||||
"app-builder-lib@24.13.3": "patches/app-builder-lib@24.13.3.patch",
|
||||
"@malept/flatpak-bundler": "patches/@malept__flatpak-bundler.patch"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
@ -182,7 +239,7 @@
|
||||
"custom-electron-prompt": "1.5.8",
|
||||
"dbus-next": "0.10.2",
|
||||
"deepmerge-ts": "7.1.3",
|
||||
"electron-debug": "4.0.1",
|
||||
"electron-debug": "4.1.0",
|
||||
"electron-is": "3.0.0",
|
||||
"electron-localshortcut": "3.2.1",
|
||||
"electron-store": "10.0.0",
|
||||
@ -191,10 +248,10 @@
|
||||
"fast-average-color": "9.4.0",
|
||||
"fast-equals": "5.0.1",
|
||||
"filenamify": "6.0.0",
|
||||
"hono": "4.6.4",
|
||||
"hono": "4.6.5",
|
||||
"howler": "2.2.4",
|
||||
"html-to-text": "9.0.5",
|
||||
"i18next": "23.15.2",
|
||||
"i18next": "23.16.0",
|
||||
"jimp": "1.6.0",
|
||||
"keyboardevent-from-electron-accelerator": "2.0.0",
|
||||
"keyboardevents-areequal": "0.2.2",
|
||||
@ -202,7 +259,7 @@
|
||||
"node-id3": "0.2.6",
|
||||
"peerjs": "1.5.4",
|
||||
"semver": "7.6.3",
|
||||
"serve": "14.2.3",
|
||||
"serve": "14.2.4",
|
||||
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
|
||||
"solid-floating-ui": "0.3.1",
|
||||
"solid-js": "1.9.2",
|
||||
@ -230,8 +287,8 @@
|
||||
"builtin-modules": "4.0.0",
|
||||
"cross-env": "7.0.3",
|
||||
"del-cli": "6.0.0",
|
||||
"discord-api-types": "0.37.101",
|
||||
"electron": "32.2.0",
|
||||
"discord-api-types": "0.37.102",
|
||||
"electron": "33.0.0",
|
||||
"electron-builder": "24.13.3",
|
||||
"electron-devtools-installer": "3.2.0",
|
||||
"electron-vite": "2.3.0",
|
||||
@ -247,9 +304,9 @@
|
||||
"playwright": "1.48.0",
|
||||
"rollup": "4.24.0",
|
||||
"typescript": "5.6.3",
|
||||
"typescript-eslint": "8.8.1",
|
||||
"typescript-eslint": "8.9.0",
|
||||
"utf-8-validate": "6.0.4",
|
||||
"vite": "5.4.8",
|
||||
"vite": "5.4.9",
|
||||
"vite-plugin-inspect": "0.8.7",
|
||||
"vite-plugin-resolve": "2.5.2",
|
||||
"vite-plugin-solid": "2.10.2",
|
||||
|
||||
29
patches/@malept__flatpak-bundler.patch
Normal file
29
patches/@malept__flatpak-bundler.patch
Normal file
@ -0,0 +1,29 @@
|
||||
diff --git a/index.js b/index.js
|
||||
index 5968fcf47b69094993b0f861c03f5560e4a6a9b7..0fe16d4f40612c0abfa57898909ce0083f56944c 100644
|
||||
--- a/index.js
|
||||
+++ b/index.js
|
||||
@@ -56,19 +56,23 @@ function getOptionsWithDefaults (options, manifest) {
|
||||
async function spawnWithLogging (options, command, args, allowFail) {
|
||||
return new Promise((resolve, reject) => {
|
||||
logger(`$ ${command} ${args.join(' ')}`)
|
||||
+ const output = []
|
||||
const child = childProcess.spawn(command, args, { cwd: options['working-dir'] })
|
||||
child.stdout.on('data', (data) => {
|
||||
+ output.push(data)
|
||||
logger(`1> ${data}`)
|
||||
})
|
||||
child.stderr.on('data', (data) => {
|
||||
+ output.push(data)
|
||||
logger(`2> ${data}`)
|
||||
})
|
||||
child.on('error', (error) => {
|
||||
+ logger(`error - ${error.message} ${error.stack}`)
|
||||
reject(error)
|
||||
})
|
||||
child.on('close', (code) => {
|
||||
if (!allowFail && code !== 0) {
|
||||
- reject(new Error(`${command} failed with status code ${code}`))
|
||||
+ reject(new Error(`${command} ${args.join(' ')} failed with status code ${code} ${output.join(' ')}`))
|
||||
}
|
||||
resolve(code === 0)
|
||||
})
|
||||
316
pnpm-lock.yaml
generated
316
pnpm-lock.yaml
generated
@ -13,6 +13,9 @@ overrides:
|
||||
'@babel/runtime': 7.25.7
|
||||
|
||||
patchedDependencies:
|
||||
'@malept/flatpak-bundler':
|
||||
hash: vli4xtu6rndz3xtsscixhngsxa
|
||||
path: patches/@malept__flatpak-bundler.patch
|
||||
app-builder-lib@24.13.3:
|
||||
hash: zcnm2qnjaggm2keyecnhiglkke
|
||||
path: patches/app-builder-lib@24.13.3.patch
|
||||
@ -26,16 +29,16 @@ importers:
|
||||
dependencies:
|
||||
'@cliqz/adblocker-electron':
|
||||
specifier: 1.27.1
|
||||
version: 1.27.1(electron@32.2.0)
|
||||
version: 1.27.1(electron@33.0.0)
|
||||
'@cliqz/adblocker-electron-preload':
|
||||
specifier: 1.27.1
|
||||
version: 1.27.1(electron@32.2.0)
|
||||
version: 1.27.1(electron@33.0.0)
|
||||
'@electron-toolkit/tsconfig':
|
||||
specifier: 1.0.1
|
||||
version: 1.0.1(@types/node@20.12.5)
|
||||
'@electron/remote':
|
||||
specifier: 2.1.2
|
||||
version: 2.1.2(electron@32.2.0)
|
||||
version: 2.1.2(electron@33.0.0)
|
||||
'@ffmpeg.wasm/core-mt':
|
||||
specifier: 0.12.0
|
||||
version: 0.12.0
|
||||
@ -50,16 +53,16 @@ importers:
|
||||
version: 2.0.5
|
||||
'@hono/node-server':
|
||||
specifier: 1.13.2
|
||||
version: 1.13.2(hono@4.6.4)
|
||||
version: 1.13.2(hono@4.6.5)
|
||||
'@hono/swagger-ui':
|
||||
specifier: 0.4.1
|
||||
version: 0.4.1(hono@4.6.4)
|
||||
version: 0.4.1(hono@4.6.5)
|
||||
'@hono/zod-openapi':
|
||||
specifier: 0.16.4
|
||||
version: 0.16.4(hono@4.6.4)(zod@3.23.8)
|
||||
version: 0.16.4(hono@4.6.5)(zod@3.23.8)
|
||||
'@hono/zod-validator':
|
||||
specifier: 0.4.1
|
||||
version: 0.4.1(hono@4.6.4)(zod@3.23.8)
|
||||
version: 0.4.1(hono@4.6.5)(zod@3.23.8)
|
||||
'@jellybrick/electron-better-web-request':
|
||||
specifier: 1.0.4
|
||||
version: 1.0.4
|
||||
@ -92,7 +95,7 @@ importers:
|
||||
version: 13.0.1
|
||||
custom-electron-prompt:
|
||||
specifier: 1.5.8
|
||||
version: 1.5.8(electron@32.2.0)
|
||||
version: 1.5.8(electron@33.0.0)
|
||||
dbus-next:
|
||||
specifier: 0.10.2
|
||||
version: 0.10.2
|
||||
@ -100,8 +103,8 @@ importers:
|
||||
specifier: 7.1.3
|
||||
version: 7.1.3
|
||||
electron-debug:
|
||||
specifier: 4.0.1
|
||||
version: 4.0.1
|
||||
specifier: 4.1.0
|
||||
version: 4.1.0
|
||||
electron-is:
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0
|
||||
@ -127,8 +130,8 @@ importers:
|
||||
specifier: 6.0.0
|
||||
version: 6.0.0
|
||||
hono:
|
||||
specifier: 4.6.4
|
||||
version: 4.6.4
|
||||
specifier: 4.6.5
|
||||
version: 4.6.5
|
||||
howler:
|
||||
specifier: 2.2.4
|
||||
version: 2.2.4
|
||||
@ -136,8 +139,8 @@ importers:
|
||||
specifier: 9.0.5
|
||||
version: 9.0.5
|
||||
i18next:
|
||||
specifier: 23.15.2
|
||||
version: 23.15.2
|
||||
specifier: 23.16.0
|
||||
version: 23.16.0
|
||||
jimp:
|
||||
specifier: 1.6.0
|
||||
version: 1.6.0
|
||||
@ -160,8 +163,8 @@ importers:
|
||||
specifier: 7.6.3
|
||||
version: 7.6.3
|
||||
serve:
|
||||
specifier: 14.2.3
|
||||
version: 14.2.3
|
||||
specifier: 14.2.4
|
||||
version: 14.2.4
|
||||
simple-youtube-age-restriction-bypass:
|
||||
specifier: github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9
|
||||
version: https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6
|
||||
@ -239,11 +242,11 @@ importers:
|
||||
specifier: 6.0.0
|
||||
version: 6.0.0
|
||||
discord-api-types:
|
||||
specifier: 0.37.101
|
||||
version: 0.37.101
|
||||
specifier: 0.37.102
|
||||
version: 0.37.102
|
||||
electron:
|
||||
specifier: 32.2.0
|
||||
version: 32.2.0
|
||||
specifier: 33.0.0
|
||||
version: 33.0.0
|
||||
electron-builder:
|
||||
specifier: 24.13.3
|
||||
version: 24.13.3(electron-builder-squirrel-windows@24.13.3)
|
||||
@ -252,7 +255,7 @@ importers:
|
||||
version: 3.2.0
|
||||
electron-vite:
|
||||
specifier: 2.3.0
|
||||
version: 2.3.0(vite@5.4.8(@types/node@20.12.5))
|
||||
version: 2.3.0(vite@5.4.9(@types/node@20.12.5))
|
||||
esbuild:
|
||||
specifier: 0.24.0
|
||||
version: 0.24.0
|
||||
@ -267,10 +270,10 @@ importers:
|
||||
version: 1.0.0-beta.5(eslint-plugin-import@2.31.0)(eslint@9.12.0)
|
||||
eslint-import-resolver-typescript:
|
||||
specifier: 3.6.3
|
||||
version: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.12.0)
|
||||
version: 3.6.3(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.12.0)
|
||||
eslint-plugin-import:
|
||||
specifier: 2.31.0
|
||||
version: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
version: 2.31.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
eslint-plugin-prettier:
|
||||
specifier: 5.2.1
|
||||
version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.3.3)
|
||||
@ -290,23 +293,23 @@ importers:
|
||||
specifier: 5.6.3
|
||||
version: 5.6.3
|
||||
typescript-eslint:
|
||||
specifier: 8.8.1
|
||||
version: 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
specifier: 8.9.0
|
||||
version: 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
utf-8-validate:
|
||||
specifier: 6.0.4
|
||||
version: 6.0.4
|
||||
vite:
|
||||
specifier: 5.4.8
|
||||
version: 5.4.8(@types/node@20.12.5)
|
||||
specifier: 5.4.9
|
||||
version: 5.4.9(@types/node@20.12.5)
|
||||
vite-plugin-inspect:
|
||||
specifier: 0.8.7
|
||||
version: 0.8.7(rollup@4.24.0)(vite@5.4.8(@types/node@20.12.5))
|
||||
version: 0.8.7(rollup@4.24.0)(vite@5.4.9(@types/node@20.12.5))
|
||||
vite-plugin-resolve:
|
||||
specifier: 2.5.2
|
||||
version: 2.5.2
|
||||
vite-plugin-solid:
|
||||
specifier: 2.10.2
|
||||
version: 2.10.2(solid-js@1.9.2)(vite@5.4.8(@types/node@20.12.5))
|
||||
version: 2.10.2(solid-js@1.9.2)(vite@5.4.9(@types/node@20.12.5))
|
||||
ws:
|
||||
specifier: 8.18.0
|
||||
version: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
|
||||
@ -1384,8 +1387,8 @@ packages:
|
||||
'@types/yauzl@2.10.3':
|
||||
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.8.1':
|
||||
resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==}
|
||||
'@typescript-eslint/eslint-plugin@8.9.0':
|
||||
resolution: {integrity: sha512-Y1n621OCy4m7/vTXNlCbMVp87zSd7NH0L9cXD8aIpOaNlzeWxIK4+Q19A68gSmTNRZn92UjocVUWDthGxtqHFg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
|
||||
@ -1395,8 +1398,8 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/parser@8.8.1':
|
||||
resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==}
|
||||
'@typescript-eslint/parser@8.9.0':
|
||||
resolution: {integrity: sha512-U+BLn2rqTTHnc4FL3FJjxaXptTxmf9sNftJK62XLz4+GxG3hLHm/SUNaaXP5Y4uTiuYoL5YLy4JBCJe3+t8awQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@ -1405,12 +1408,12 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/scope-manager@8.8.1':
|
||||
resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==}
|
||||
'@typescript-eslint/scope-manager@8.9.0':
|
||||
resolution: {integrity: sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/type-utils@8.8.1':
|
||||
resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==}
|
||||
'@typescript-eslint/type-utils@8.9.0':
|
||||
resolution: {integrity: sha512-JD+/pCqlKqAk5961vxCluK+clkppHY07IbV3vett97KOV+8C6l+CPEPwpUuiMwgbOz/qrN3Ke4zzjqbT+ls+1Q==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
@ -1418,12 +1421,12 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/types@8.8.1':
|
||||
resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==}
|
||||
'@typescript-eslint/types@8.9.0':
|
||||
resolution: {integrity: sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.8.1':
|
||||
resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==}
|
||||
'@typescript-eslint/typescript-estree@8.9.0':
|
||||
resolution: {integrity: sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
@ -1431,14 +1434,14 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/utils@8.8.1':
|
||||
resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==}
|
||||
'@typescript-eslint/utils@8.9.0':
|
||||
resolution: {integrity: sha512-PKgMmaSo/Yg/F7kIZvrgrWa1+Vwn036CdNUvYFEkYbPwOH4i8xvkaRlu148W3vtheWK9ckKRIz7PBP5oUlkrvQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.8.1':
|
||||
resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==}
|
||||
'@typescript-eslint/visitor-keys@8.9.0':
|
||||
resolution: {integrity: sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@vladfrangu/async_event_emitter@2.4.4':
|
||||
@ -2027,8 +2030,8 @@ packages:
|
||||
dir-compare@4.2.0:
|
||||
resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==}
|
||||
|
||||
discord-api-types@0.37.101:
|
||||
resolution: {integrity: sha512-2wizd94t7G3A8U5Phr3AiuL4gSvhqistDwWnlk1VLTit8BI1jWUncFqFQNdPbHqS3661+Nx/iEyIwtVjPuBP3w==}
|
||||
discord-api-types@0.37.102:
|
||||
resolution: {integrity: sha512-5+m5twqG8n77rLhKuh2c/971UWszEL/c3KbdvVLUBTPXuS8PbYC/7W7NYhwP02qowjj6CHoKYZbD0ppOUCsT6g==}
|
||||
|
||||
discord-api-types@0.37.83:
|
||||
resolution: {integrity: sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==}
|
||||
@ -2095,8 +2098,8 @@ packages:
|
||||
engines: {node: '>=14.0.0'}
|
||||
hasBin: true
|
||||
|
||||
electron-debug@4.0.1:
|
||||
resolution: {integrity: sha512-PdUG3SvcK70P05z99PFLUzn0+lPZl5c4quG1bXI7OtPaXxidwh8UONcdRLsr+6J9kf5y1FycJD5nBd80dYrcsA==}
|
||||
electron-debug@4.1.0:
|
||||
resolution: {integrity: sha512-rdbvmotqbaNcSuinPe1tzB5zK+JKal+4LSDbguBcqTLARNqWrGoRS/TkR1gGH4+63boYH3HUaf9r9ECAxgIe9g==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
electron-devtools-installer@3.2.0:
|
||||
@ -2148,8 +2151,8 @@ packages:
|
||||
'@swc/core':
|
||||
optional: true
|
||||
|
||||
electron@32.2.0:
|
||||
resolution: {integrity: sha512-Xy82QBQrEiQysoxsv6lnhHAcWNNe6vV6QqH3OPFXhEj/T9oAsBHEhZuuYHINSSsUE7zRSj+J9sNwJYOjisT0Vw==}
|
||||
electron@33.0.0:
|
||||
resolution: {integrity: sha512-OdLLR/zAVuNfKahSSYokZmSi7uK2wEYTbCoiIdqWLsOWmCqO9j0JC2XkYQmXQcAk2BJY0ri4lxwAfc5pzPDYsA==}
|
||||
engines: {node: '>= 12.20.55'}
|
||||
hasBin: true
|
||||
|
||||
@ -2416,9 +2419,6 @@ packages:
|
||||
fast-levenshtein@2.0.6:
|
||||
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
|
||||
|
||||
fast-url-parser@1.1.3:
|
||||
resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==}
|
||||
|
||||
fastq@1.16.0:
|
||||
resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==}
|
||||
|
||||
@ -2669,8 +2669,8 @@ packages:
|
||||
resolution: {integrity: sha512-ciq6hFsSG/Bpt2DmrZJtv+56zpPdnq+NQ4ijEFrveKN0ZG1mhl/LdT1NQZ9se6ty1fACcI4d4vYqC9v8EYpH2A==}
|
||||
hasBin: true
|
||||
|
||||
hono@4.6.4:
|
||||
resolution: {integrity: sha512-T5WqBkTOcIQblqBKB5mpzaH/A+dSpvVe938xZJCHOmOuYfF7DSwE/9/10+BMvwSPq9N/f6LiQ38HxrZSQOsXKw==}
|
||||
hono@4.6.5:
|
||||
resolution: {integrity: sha512-qsmN3V5fgtwdKARGLgwwHvcdLKursMd+YOt69eGpl1dUCJb8mCd7hZfyZnBYjxCegBG7qkJRQRUy2oO25yHcyQ==}
|
||||
engines: {node: '>=16.9.0'}
|
||||
|
||||
hosted-git-info@4.1.0:
|
||||
@ -2717,8 +2717,8 @@ packages:
|
||||
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
|
||||
engines: {node: '>=10.17.0'}
|
||||
|
||||
i18next@23.15.2:
|
||||
resolution: {integrity: sha512-zcPSWzCvw6uKnuYHIqs4W7hTuB9e3AFcSdZgvCWoPXIZsBjBd4djN2/2uOHIB+1DFFkQnMBXvhNg7J3WyCuywQ==}
|
||||
i18next@23.16.0:
|
||||
resolution: {integrity: sha512-Ni3CG6c14teOogY19YNRl+kYaE/Rb59khy0VyHVn4uOZ97E2E/Yziyi6r3C3s9+wacjdLZiq/LLYyx+Cgd+FCw==}
|
||||
|
||||
iconv-corefoundation@1.1.7:
|
||||
resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==}
|
||||
@ -3453,8 +3453,8 @@ packages:
|
||||
resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
||||
path-to-regexp@2.2.1:
|
||||
resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==}
|
||||
path-to-regexp@3.3.0:
|
||||
resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==}
|
||||
|
||||
path-type@5.0.0:
|
||||
resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==}
|
||||
@ -3568,9 +3568,6 @@ packages:
|
||||
pump@3.0.0:
|
||||
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
|
||||
|
||||
punycode@1.4.1:
|
||||
resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
|
||||
|
||||
punycode@2.3.1:
|
||||
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
||||
engines: {node: '>=6'}
|
||||
@ -3746,11 +3743,11 @@ packages:
|
||||
resolution: {integrity: sha512-74Wpe+hhPx4V8NFe00I2Fu9gTJopKoH5vE7nCqFzVgKOXV8AnN23T58K79QLYQotzGpH93UZ+UN2Y11j9huZJg==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
serve-handler@6.1.5:
|
||||
resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==}
|
||||
serve-handler@6.1.6:
|
||||
resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==}
|
||||
|
||||
serve@14.2.3:
|
||||
resolution: {integrity: sha512-VqUFMC7K3LDGeGnJM9h56D3XGKb6KGgOw0cVNtA26yYXHCcpxf3xwCTUaQoWlVS7i8Jdh3GjQkOB23qsXyjoyQ==}
|
||||
serve@14.2.4:
|
||||
resolution: {integrity: sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==}
|
||||
engines: {node: '>= 14'}
|
||||
hasBin: true
|
||||
|
||||
@ -4071,8 +4068,8 @@ packages:
|
||||
resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
typescript-eslint@8.8.1:
|
||||
resolution: {integrity: sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==}
|
||||
typescript-eslint@8.9.0:
|
||||
resolution: {integrity: sha512-AuD/FXGYRQyqyOBCpNLldMlsCGvmDNxptQ3Dp58/NXeB+FqyvTfXmMyba3PYa0Vi9ybnj7G8S/yd/4Cw8y47eA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
@ -4192,8 +4189,8 @@ packages:
|
||||
'@testing-library/jest-dom':
|
||||
optional: true
|
||||
|
||||
vite@5.4.8:
|
||||
resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==}
|
||||
vite@5.4.9:
|
||||
resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@ -4535,16 +4532,16 @@ snapshots:
|
||||
dependencies:
|
||||
'@cliqz/adblocker-extended-selectors': 1.27.6
|
||||
|
||||
'@cliqz/adblocker-electron-preload@1.27.1(electron@32.2.0)':
|
||||
'@cliqz/adblocker-electron-preload@1.27.1(electron@33.0.0)':
|
||||
dependencies:
|
||||
'@cliqz/adblocker-content': 1.27.6
|
||||
electron: 32.2.0
|
||||
electron: 33.0.0
|
||||
|
||||
'@cliqz/adblocker-electron@1.27.1(electron@32.2.0)':
|
||||
'@cliqz/adblocker-electron@1.27.1(electron@33.0.0)':
|
||||
dependencies:
|
||||
'@cliqz/adblocker': 1.27.6
|
||||
'@cliqz/adblocker-electron-preload': 1.27.1(electron@32.2.0)
|
||||
electron: 32.2.0
|
||||
'@cliqz/adblocker-electron-preload': 1.27.1(electron@33.0.0)
|
||||
electron: 33.0.0
|
||||
tldts-experimental: 6.1.2
|
||||
|
||||
'@cliqz/adblocker-extended-selectors@1.27.6': {}
|
||||
@ -4624,9 +4621,9 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@electron/remote@2.1.2(electron@32.2.0)':
|
||||
'@electron/remote@2.1.2(electron@33.0.0)':
|
||||
dependencies:
|
||||
electron: 32.2.0
|
||||
electron: 33.0.0
|
||||
|
||||
'@electron/universal@2.0.1':
|
||||
dependencies:
|
||||
@ -4843,29 +4840,29 @@ snapshots:
|
||||
|
||||
'@foobar404/wave@2.0.5': {}
|
||||
|
||||
'@hono/node-server@1.13.2(hono@4.6.4)':
|
||||
'@hono/node-server@1.13.2(hono@4.6.5)':
|
||||
dependencies:
|
||||
hono: 4.6.4
|
||||
hono: 4.6.5
|
||||
|
||||
'@hono/swagger-ui@0.4.1(hono@4.6.4)':
|
||||
'@hono/swagger-ui@0.4.1(hono@4.6.5)':
|
||||
dependencies:
|
||||
hono: 4.6.4
|
||||
hono: 4.6.5
|
||||
|
||||
'@hono/zod-openapi@0.16.4(hono@4.6.4)(zod@3.23.8)':
|
||||
'@hono/zod-openapi@0.16.4(hono@4.6.5)(zod@3.23.8)':
|
||||
dependencies:
|
||||
'@asteasolutions/zod-to-openapi': 7.2.0(zod@3.23.8)
|
||||
'@hono/zod-validator': 0.3.0(hono@4.6.4)(zod@3.23.8)
|
||||
hono: 4.6.4
|
||||
'@hono/zod-validator': 0.3.0(hono@4.6.5)(zod@3.23.8)
|
||||
hono: 4.6.5
|
||||
zod: 3.23.8
|
||||
|
||||
'@hono/zod-validator@0.3.0(hono@4.6.4)(zod@3.23.8)':
|
||||
'@hono/zod-validator@0.3.0(hono@4.6.5)(zod@3.23.8)':
|
||||
dependencies:
|
||||
hono: 4.6.4
|
||||
hono: 4.6.5
|
||||
zod: 3.23.8
|
||||
|
||||
'@hono/zod-validator@0.4.1(hono@4.6.4)(zod@3.23.8)':
|
||||
'@hono/zod-validator@0.4.1(hono@4.6.5)(zod@3.23.8)':
|
||||
dependencies:
|
||||
hono: 4.6.4
|
||||
hono: 4.6.5
|
||||
zod: 3.23.8
|
||||
|
||||
'@humanfs/core@0.19.0': {}
|
||||
@ -5135,7 +5132,7 @@ snapshots:
|
||||
dependencies:
|
||||
cross-spawn: 7.0.3
|
||||
|
||||
'@malept/flatpak-bundler@0.4.0':
|
||||
'@malept/flatpak-bundler@0.4.0(patch_hash=vli4xtu6rndz3xtsscixhngsxa)':
|
||||
dependencies:
|
||||
debug: 4.3.7
|
||||
fs-extra: 9.1.0
|
||||
@ -5361,7 +5358,7 @@ snapshots:
|
||||
|
||||
'@types/electron-localshortcut@3.1.3':
|
||||
dependencies:
|
||||
electron: 32.2.0
|
||||
electron: 33.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@ -5434,14 +5431,14 @@ snapshots:
|
||||
'@types/node': 20.12.5
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)':
|
||||
'@typescript-eslint/eslint-plugin@8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.11.1
|
||||
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/scope-manager': 8.8.1
|
||||
'@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/visitor-keys': 8.8.1
|
||||
'@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/scope-manager': 8.9.0
|
||||
'@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/visitor-keys': 8.9.0
|
||||
eslint: 9.12.0
|
||||
graphemer: 1.4.0
|
||||
ignore: 5.3.2
|
||||
@ -5452,12 +5449,12 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3)':
|
||||
'@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 8.8.1
|
||||
'@typescript-eslint/types': 8.8.1
|
||||
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3)
|
||||
'@typescript-eslint/visitor-keys': 8.8.1
|
||||
'@typescript-eslint/scope-manager': 8.9.0
|
||||
'@typescript-eslint/types': 8.9.0
|
||||
'@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3)
|
||||
'@typescript-eslint/visitor-keys': 8.9.0
|
||||
debug: 4.3.7
|
||||
eslint: 9.12.0
|
||||
optionalDependencies:
|
||||
@ -5465,15 +5462,15 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/scope-manager@8.8.1':
|
||||
'@typescript-eslint/scope-manager@8.9.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.8.1
|
||||
'@typescript-eslint/visitor-keys': 8.8.1
|
||||
'@typescript-eslint/types': 8.9.0
|
||||
'@typescript-eslint/visitor-keys': 8.9.0
|
||||
|
||||
'@typescript-eslint/type-utils@8.8.1(eslint@9.12.0)(typescript@5.6.3)':
|
||||
'@typescript-eslint/type-utils@8.9.0(eslint@9.12.0)(typescript@5.6.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3)
|
||||
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3)
|
||||
'@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
debug: 4.3.7
|
||||
ts-api-utils: 1.3.0(typescript@5.6.3)
|
||||
optionalDependencies:
|
||||
@ -5482,12 +5479,12 @@ snapshots:
|
||||
- eslint
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/types@8.8.1': {}
|
||||
'@typescript-eslint/types@8.9.0': {}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.8.1(typescript@5.6.3)':
|
||||
'@typescript-eslint/typescript-estree@8.9.0(typescript@5.6.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.8.1
|
||||
'@typescript-eslint/visitor-keys': 8.8.1
|
||||
'@typescript-eslint/types': 8.9.0
|
||||
'@typescript-eslint/visitor-keys': 8.9.0
|
||||
debug: 4.3.7
|
||||
fast-glob: 3.3.2
|
||||
is-glob: 4.0.3
|
||||
@ -5499,20 +5496,20 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.8.1(eslint@9.12.0)(typescript@5.6.3)':
|
||||
'@typescript-eslint/utils@8.9.0(eslint@9.12.0)(typescript@5.6.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0)
|
||||
'@typescript-eslint/scope-manager': 8.8.1
|
||||
'@typescript-eslint/types': 8.8.1
|
||||
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3)
|
||||
'@typescript-eslint/scope-manager': 8.9.0
|
||||
'@typescript-eslint/types': 8.9.0
|
||||
'@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3)
|
||||
eslint: 9.12.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.8.1':
|
||||
'@typescript-eslint/visitor-keys@8.9.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.8.1
|
||||
'@typescript-eslint/types': 8.9.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@vladfrangu/async_event_emitter@2.4.4': {}
|
||||
@ -5521,7 +5518,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@discordjs/rest': 2.3.0
|
||||
'@vladfrangu/async_event_emitter': 2.4.4
|
||||
discord-api-types: 0.37.101
|
||||
discord-api-types: 0.37.102
|
||||
ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
@ -5618,7 +5615,7 @@ snapshots:
|
||||
'@electron/notarize': 2.2.1
|
||||
'@electron/osx-sign': 1.0.5
|
||||
'@electron/universal': 2.0.1
|
||||
'@malept/flatpak-bundler': 0.4.0
|
||||
'@malept/flatpak-bundler': 0.4.0(patch_hash=vli4xtu6rndz3xtsscixhngsxa)
|
||||
'@types/fs-extra': 9.0.13
|
||||
async-exit-hook: 2.0.1
|
||||
bluebird-lst: 1.0.9
|
||||
@ -6118,9 +6115,9 @@ snapshots:
|
||||
|
||||
csstype@3.1.3: {}
|
||||
|
||||
custom-electron-prompt@1.5.8(electron@32.2.0):
|
||||
custom-electron-prompt@1.5.8(electron@33.0.0):
|
||||
dependencies:
|
||||
electron: 32.2.0
|
||||
electron: 33.0.0
|
||||
|
||||
data-uri-to-buffer@4.0.1: {}
|
||||
|
||||
@ -6252,7 +6249,7 @@ snapshots:
|
||||
minimatch: 3.1.2
|
||||
p-limit: 3.1.0
|
||||
|
||||
discord-api-types@0.37.101: {}
|
||||
discord-api-types@0.37.102: {}
|
||||
|
||||
discord-api-types@0.37.83: {}
|
||||
|
||||
@ -6351,7 +6348,7 @@ snapshots:
|
||||
- electron-builder-squirrel-windows
|
||||
- supports-color
|
||||
|
||||
electron-debug@4.0.1:
|
||||
electron-debug@4.1.0:
|
||||
dependencies:
|
||||
electron-is-dev: 3.0.1
|
||||
electron-localshortcut: 3.2.1
|
||||
@ -6427,7 +6424,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
electron-vite@2.3.0(vite@5.4.8(@types/node@20.12.5)):
|
||||
electron-vite@2.3.0(vite@5.4.9(@types/node@20.12.5)):
|
||||
dependencies:
|
||||
'@babel/core': 7.24.7
|
||||
'@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.7)
|
||||
@ -6435,11 +6432,11 @@ snapshots:
|
||||
esbuild: 0.21.5
|
||||
magic-string: 0.30.10
|
||||
picocolors: 1.0.1
|
||||
vite: 5.4.8(@types/node@20.12.5)
|
||||
vite: 5.4.9(@types/node@20.12.5)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
electron@32.2.0:
|
||||
electron@33.0.0:
|
||||
dependencies:
|
||||
'@electron/get': 2.0.3
|
||||
'@types/node': 20.12.5
|
||||
@ -6633,7 +6630,7 @@ snapshots:
|
||||
eslint-import-resolver-exports@1.0.0-beta.5(eslint-plugin-import@2.31.0)(eslint@9.12.0):
|
||||
dependencies:
|
||||
eslint: 9.12.0
|
||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
resolve.exports: 2.0.2
|
||||
|
||||
eslint-import-resolver-node@0.3.9:
|
||||
@ -6644,37 +6641,37 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.12.0):
|
||||
eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.12.0):
|
||||
dependencies:
|
||||
'@nolyfill/is-core-module': 1.0.39
|
||||
debug: 4.3.7
|
||||
enhanced-resolve: 5.15.0
|
||||
eslint: 9.12.0
|
||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
fast-glob: 3.3.2
|
||||
get-tsconfig: 4.8.0
|
||||
is-bun-module: 1.1.0
|
||||
is-glob: 4.0.3
|
||||
optionalDependencies:
|
||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
transitivePeerDependencies:
|
||||
- '@typescript-eslint/parser'
|
||||
- eslint-import-resolver-node
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
|
||||
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0):
|
||||
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0):
|
||||
dependencies:
|
||||
debug: 3.2.7
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
eslint: 9.12.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.12.0)
|
||||
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.12.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0):
|
||||
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0):
|
||||
dependencies:
|
||||
'@rtsao/scc': 1.1.0
|
||||
array-includes: 3.1.8
|
||||
@ -6685,7 +6682,7 @@ snapshots:
|
||||
doctrine: 2.1.0
|
||||
eslint: 9.12.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0)
|
||||
hasown: 2.0.2
|
||||
is-core-module: 2.15.1
|
||||
is-glob: 4.0.3
|
||||
@ -6697,7 +6694,7 @@ snapshots:
|
||||
string.prototype.trimend: 1.0.8
|
||||
tsconfig-paths: 3.15.0
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-typescript
|
||||
- eslint-import-resolver-webpack
|
||||
@ -6845,10 +6842,6 @@ snapshots:
|
||||
|
||||
fast-levenshtein@2.0.6: {}
|
||||
|
||||
fast-url-parser@1.1.3:
|
||||
dependencies:
|
||||
punycode: 1.4.1
|
||||
|
||||
fastq@1.16.0:
|
||||
dependencies:
|
||||
reusify: 1.0.4
|
||||
@ -7127,7 +7120,7 @@ snapshots:
|
||||
|
||||
hexy@0.2.11: {}
|
||||
|
||||
hono@4.6.4: {}
|
||||
hono@4.6.5: {}
|
||||
|
||||
hosted-git-info@4.1.0:
|
||||
dependencies:
|
||||
@ -7190,7 +7183,7 @@ snapshots:
|
||||
|
||||
human-signals@2.1.0: {}
|
||||
|
||||
i18next@23.15.2:
|
||||
i18next@23.16.0:
|
||||
dependencies:
|
||||
'@babel/runtime': 7.25.7
|
||||
|
||||
@ -7887,7 +7880,7 @@ snapshots:
|
||||
lru-cache: 11.0.0
|
||||
minipass: 7.1.2
|
||||
|
||||
path-to-regexp@2.2.1: {}
|
||||
path-to-regexp@3.3.0: {}
|
||||
|
||||
path-type@5.0.0: {}
|
||||
|
||||
@ -7978,8 +7971,6 @@ snapshots:
|
||||
end-of-stream: 1.4.4
|
||||
once: 1.4.0
|
||||
|
||||
punycode@1.4.1: {}
|
||||
|
||||
punycode@2.3.1: {}
|
||||
|
||||
queue-microtask@1.2.3: {}
|
||||
@ -8171,18 +8162,17 @@ snapshots:
|
||||
|
||||
seroval@1.1.0: {}
|
||||
|
||||
serve-handler@6.1.5:
|
||||
serve-handler@6.1.6:
|
||||
dependencies:
|
||||
bytes: 3.0.0
|
||||
content-disposition: 0.5.2
|
||||
fast-url-parser: 1.1.3
|
||||
mime-types: 2.1.18
|
||||
minimatch: 3.1.2
|
||||
path-is-inside: 1.0.2
|
||||
path-to-regexp: 2.2.1
|
||||
path-to-regexp: 3.3.0
|
||||
range-parser: 1.2.0
|
||||
|
||||
serve@14.2.3:
|
||||
serve@14.2.4:
|
||||
dependencies:
|
||||
'@zeit/schemas': 2.36.0
|
||||
ajv: 8.12.0
|
||||
@ -8193,7 +8183,7 @@ snapshots:
|
||||
clipboardy: 3.0.0
|
||||
compression: 1.7.4
|
||||
is-port-reachable: 4.0.0
|
||||
serve-handler: 6.1.5
|
||||
serve-handler: 6.1.6
|
||||
update-check: 1.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@ -8548,11 +8538,11 @@ snapshots:
|
||||
is-typed-array: 1.1.13
|
||||
possible-typed-array-names: 1.0.0
|
||||
|
||||
typescript-eslint@8.8.1(eslint@9.12.0)(typescript@5.6.3):
|
||||
typescript-eslint@8.9.0(eslint@9.12.0)(typescript@5.6.3):
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/eslint-plugin': 8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
'@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3)
|
||||
optionalDependencies:
|
||||
typescript: 5.6.3
|
||||
transitivePeerDependencies:
|
||||
@ -8648,7 +8638,7 @@ snapshots:
|
||||
extsprintf: 1.4.1
|
||||
optional: true
|
||||
|
||||
vite-plugin-inspect@0.8.7(rollup@4.24.0)(vite@5.4.8(@types/node@20.12.5)):
|
||||
vite-plugin-inspect@0.8.7(rollup@4.24.0)(vite@5.4.9(@types/node@20.12.5)):
|
||||
dependencies:
|
||||
'@antfu/utils': 0.7.10
|
||||
'@rollup/pluginutils': 5.1.0(rollup@4.24.0)
|
||||
@ -8659,7 +8649,7 @@ snapshots:
|
||||
perfect-debounce: 1.0.0
|
||||
picocolors: 1.0.1
|
||||
sirv: 2.0.4
|
||||
vite: 5.4.8(@types/node@20.12.5)
|
||||
vite: 5.4.9(@types/node@20.12.5)
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
- supports-color
|
||||
@ -8668,7 +8658,7 @@ snapshots:
|
||||
dependencies:
|
||||
lib-esm: 0.4.2
|
||||
|
||||
vite-plugin-solid@2.10.2(solid-js@1.9.2)(vite@5.4.8(@types/node@20.12.5)):
|
||||
vite-plugin-solid@2.10.2(solid-js@1.9.2)(vite@5.4.9(@types/node@20.12.5)):
|
||||
dependencies:
|
||||
'@babel/core': 7.24.7
|
||||
'@types/babel__core': 7.20.5
|
||||
@ -8676,12 +8666,12 @@ snapshots:
|
||||
merge-anything: 5.1.7
|
||||
solid-js: 1.9.2
|
||||
solid-refresh: 0.6.3(solid-js@1.9.2)
|
||||
vite: 5.4.8(@types/node@20.12.5)
|
||||
vitefu: 0.2.5(vite@5.4.8(@types/node@20.12.5))
|
||||
vite: 5.4.9(@types/node@20.12.5)
|
||||
vitefu: 0.2.5(vite@5.4.9(@types/node@20.12.5))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
vite@5.4.8(@types/node@20.12.5):
|
||||
vite@5.4.9(@types/node@20.12.5):
|
||||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
postcss: 8.4.44
|
||||
@ -8690,9 +8680,9 @@ snapshots:
|
||||
'@types/node': 20.12.5
|
||||
fsevents: 2.3.3
|
||||
|
||||
vitefu@0.2.5(vite@5.4.8(@types/node@20.12.5)):
|
||||
vitefu@0.2.5(vite@5.4.9(@types/node@20.12.5)):
|
||||
optionalDependencies:
|
||||
vite: 5.4.8(@types/node@20.12.5)
|
||||
vite: 5.4.9(@types/node@20.12.5)
|
||||
|
||||
vudio@2.1.1(patch_hash=7iux5msqpgl3octdmwy4uspwoe): {}
|
||||
|
||||
|
||||
@ -281,24 +281,17 @@
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Adds an API server to control the player",
|
||||
"name": "API Server [Beta]",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"title": "API authorization request",
|
||||
"message": "Allow {{ID}} ({{origin}}) to access the API?",
|
||||
"buttons": {
|
||||
"allow": "Allow",
|
||||
"deny": "Deny"
|
||||
}
|
||||
},
|
||||
"message": "Allow {{ID}} ({{origin}}) to access the API?",
|
||||
"title": "API authorization request"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
},
|
||||
"auth-strategy": {
|
||||
"label": "Authorization strategy",
|
||||
"submenu": {
|
||||
@ -309,16 +302,23 @@
|
||||
"label": "No authorization"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"prompt": {
|
||||
},
|
||||
"hostname": {
|
||||
"title": "Hostname",
|
||||
"label": "Enter the hostname (like 0.0.0.0) for the API server:"
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"title": "Port",
|
||||
"label": "Enter the port for the API server:"
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Enter the hostname (like 0.0.0.0) for the API server:",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Enter the port for the API server:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -293,6 +293,7 @@
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Estrategia de autorización",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autorizar la primera solicitud"
|
||||
|
||||
@ -201,6 +201,7 @@
|
||||
"restart": "I-restart ang App",
|
||||
"show": "Ipakita ang window",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
@ -212,6 +213,9 @@
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "I-block ang lahat ng ad at tracking",
|
||||
"menu": {
|
||||
"blocker": "Blocker"
|
||||
},
|
||||
"name": "Pag-block ng Ad"
|
||||
},
|
||||
"album-actions": {
|
||||
@ -222,7 +226,10 @@
|
||||
"description": "Naglalapat ng dynamic na tema at visual effect batay sa color palette ng album",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Ratio ng paghahalo ng kulay"
|
||||
"label": "Ratio ng paghahalo ng kulay",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Tema ng Kulay ng Album"
|
||||
@ -261,6 +268,7 @@
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Ayos ng Transisyon",
|
||||
"submenu": {
|
||||
"during": "Habang {{interpolationTime}} s"
|
||||
}
|
||||
@ -268,6 +276,50 @@
|
||||
"use-fullscreen": {
|
||||
"label": "Gumamit ng fullscreen"
|
||||
}
|
||||
},
|
||||
"name": "Ambient Mode"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Nagdadagdag ng API Server upang kontrolin ang player",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Payagan",
|
||||
"deny": "Tanggihan"
|
||||
},
|
||||
"message": "Payagan ang {{ID}} ({{origin}}) upang ma-access ang API?",
|
||||
"title": "Awtorisasyon ng API request"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Estratehiya ng awtorisasyon",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Mag-autorisa sa unang request"
|
||||
},
|
||||
"none": {
|
||||
"label": "Walang awtorisasyon"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Itala ang hostname (tulad ng 0.0.0.0) para sa API server:",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Itala ang port para sa API server:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
@ -301,7 +353,8 @@
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Laging i-set ang sidebar sa compact mode"
|
||||
"description": "Laging i-set ang sidebar sa compact mode",
|
||||
"name": "Pinaliit na Sidebar"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "I-crossfade kada kanta",
|
||||
@ -425,7 +478,8 @@
|
||||
}
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Nabibigay suporta sa Lumia Stream"
|
||||
"description": "Nabibigay suporta sa Lumia Stream",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Nagdaragdag ng suporta sa lyrics para sa karamihan ng kanta",
|
||||
@ -582,7 +636,8 @@
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Ilagay ang ListenBrainz user token:"
|
||||
"label": "Ilagay ang ListenBrainz user token:",
|
||||
"title": "Token ng ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -696,7 +751,10 @@
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Idaragdag ng visualizer sa player"
|
||||
"description": "Idaragdag ng visualizer sa player",
|
||||
"menu": {
|
||||
"visualizer-type": "Uri ng Visualizer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,7 +202,7 @@
|
||||
"show": "Tampilkan jendela",
|
||||
"tooltip": {
|
||||
"default": "YouTube Musik",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
"with-song-info": "YouTube Musik: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -279,6 +279,49 @@
|
||||
},
|
||||
"name": "Mode ambient"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Menambahkan server API untuk mengontrol pemutar",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Izinkan",
|
||||
"deny": "Menolak"
|
||||
},
|
||||
"message": "Izinkan {{ID}} ({{origin}}) untuk mengakses API?",
|
||||
"title": "Permintaan otorisasi API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Strategi otorisasi",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Otorisasi pada permintaan pertama"
|
||||
},
|
||||
"none": {
|
||||
"label": "Tidak ada otorisasi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nama host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Masukkan nama host (seperti 0.0.0.0) untuk server API:",
|
||||
"title": "Nama host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Masukkan port untuk server API:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Menerapkan kompresi pada audio (mengurangi volume pada bagian paling keras dari sinyal dan meningkatkan volume pada bagian paling lembut)",
|
||||
"name": "Kompresi suara"
|
||||
|
||||
@ -279,6 +279,49 @@
|
||||
},
|
||||
"name": "Umhverfishamur"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Bætir API netþjóni til að stjórna spilaranum",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Leyfa",
|
||||
"deny": "Óleyfa"
|
||||
},
|
||||
"message": "Leyfa {{ID}} ({{origin}}) að aðganga API-ið?",
|
||||
"title": "API heimildarbeiðni"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Heimildarstefna",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Heimila á fyrst beiðni"
|
||||
},
|
||||
"none": {
|
||||
"label": "Nei heimild"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hýsitölvunafn"
|
||||
},
|
||||
"port": {
|
||||
"label": "Tengi"
|
||||
}
|
||||
},
|
||||
"name": "API-Netþjónn [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Sláðu inn hýsitölvunafnið (eins og 0.0.0.0) fyrir API-netþjónninn:",
|
||||
"title": "Hýsitölvunafn"
|
||||
},
|
||||
"port": {
|
||||
"label": "Sláðu inn tengið fyrir API-netþjónninn:",
|
||||
"title": "Tengi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Notaðu þjöppun á hljóð (lækkar hljóðstyrk háværustu hluta merkis og hækkar hljóðstyrk í mýkstu hlutunum)",
|
||||
"name": "Hljóðþjöppu"
|
||||
@ -670,7 +713,34 @@
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Veitir samstillta texta við lög, með því að nota veitur eins og LRClib.",
|
||||
"name": "Samstilltur texti"
|
||||
"errors": {
|
||||
"not-found": "⚠️ - Enginn texti fannst við þetta lag."
|
||||
},
|
||||
"menu": {
|
||||
"line-effect": {
|
||||
"label": "Línuafleiðing",
|
||||
"submenu": {
|
||||
"focus": {
|
||||
"label": "Brennidepill",
|
||||
"tooltip": "Gerðu aðeins núverandi línu hvíta"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Fararbyrjun"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Skali",
|
||||
"tooltip": "Skala núverandi línu"
|
||||
}
|
||||
}
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Sýna tímikóðar"
|
||||
}
|
||||
},
|
||||
"name": "Samstilltur texti",
|
||||
"warnings": {
|
||||
"instrumental": "⚠️ - Þetta er hljóðfærilegt lag"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Stjórnaðu spilun frá Windows verkefnastikunni þinni",
|
||||
|
||||
@ -279,6 +279,49 @@
|
||||
},
|
||||
"name": "Modo ambiente"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Adiciona um servidor API para controlar o player",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Permitir",
|
||||
"deny": "Negar"
|
||||
},
|
||||
"message": "Permitir que {{ID}} {{origin}} acesse o API?",
|
||||
"title": "Pedido de autorização API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Estratégia de autorização",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autorizar na primeira solicitação"
|
||||
},
|
||||
"none": {
|
||||
"label": "Não autorizar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nome do anfitrião"
|
||||
},
|
||||
"port": {
|
||||
"label": "Porta"
|
||||
}
|
||||
},
|
||||
"name": "Servidor API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Entre o nome do host (como 0.0.0.0) para o servidor API:",
|
||||
"title": "Nome do anfitrião"
|
||||
},
|
||||
"port": {
|
||||
"label": "Entre a porta do servidor API:",
|
||||
"title": "Porta"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Aplicar compressão ao áudio (reduz o volume das partes mais altas e aumenta o volume das partes mais baixas)",
|
||||
"name": "Compressor de áudio"
|
||||
|
||||
@ -279,6 +279,49 @@
|
||||
},
|
||||
"name": "Режим Ambient"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Добавляет API сервер для контроля за плеером",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Разрешить",
|
||||
"deny": "Отказать"
|
||||
},
|
||||
"message": "Разрешить {{ID}} ({{origin}}) доступ к API?",
|
||||
"title": "Запрос на авторизацию в API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Способ авторизации",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Авторизация при первом запросе"
|
||||
},
|
||||
"none": {
|
||||
"label": "Без авторизации"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Имя хоста"
|
||||
},
|
||||
"port": {
|
||||
"label": "Порт"
|
||||
}
|
||||
},
|
||||
"name": "API Сервер [БЕТА]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Введите имя хоста (на подобии 0.0.0.0) для API сервера:",
|
||||
"title": "Имя хоста"
|
||||
},
|
||||
"port": {
|
||||
"label": "Введите порт для API сервера:",
|
||||
"title": "Порт"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Применяет компрессию к аудио (уменьшает громкость самых громких частей сигнала и повышает громкость самых тихих частей)",
|
||||
"name": "Нормализация аудио"
|
||||
@ -414,6 +457,21 @@
|
||||
"description": "Скачивать MP3 / исходное аудио напрямую из интерфейса",
|
||||
"menu": {
|
||||
"choose-download-folder": "Выберите папку для загрузок",
|
||||
"download-finish-settings": {
|
||||
"label": "Скачать по завершении",
|
||||
"prompt": {
|
||||
"last-percent": "После х процентов",
|
||||
"last-seconds": "Осталось x сек",
|
||||
"title": "Условия скачивания"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Расширенные настройки",
|
||||
"enabled": "Включено",
|
||||
"mode": "Врмеменной режим",
|
||||
"percent": "Проценты",
|
||||
"seconds": "Секунды"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Скачать плейлист",
|
||||
"presets": "Пресеты",
|
||||
"skip-existing": "Пропускать уже существующие файлы"
|
||||
|
||||
@ -207,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "При програванні реклами звук вимикається і встановлюється швидкість відтворення 16х",
|
||||
"name": "Прискорення реклами"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Блокувати всю рекламу та відстеження з коробки",
|
||||
"menu": {
|
||||
@ -275,6 +279,49 @@
|
||||
},
|
||||
"name": "Режим навколишнього середовища"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Додає API сервер для контролю плеєра",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Дозволити",
|
||||
"deny": "Відмінити"
|
||||
},
|
||||
"message": "Дозволити {{ID}} ({{origin}}) доступ до API?",
|
||||
"title": "Запит авторизації до API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Стратегія авторизації",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Авторизувати при першому запиті"
|
||||
},
|
||||
"none": {
|
||||
"label": "Немає авторизації"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Назва серверу"
|
||||
},
|
||||
"port": {
|
||||
"label": "Порт"
|
||||
}
|
||||
},
|
||||
"name": "API сервер [Бета]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Введіть ім'я хоста (наприклад 0.0.0.0) для API серверу:",
|
||||
"title": "Ім'я хоста"
|
||||
},
|
||||
"port": {
|
||||
"label": "Введіть порт API серверу:",
|
||||
"title": "Порт"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Застосувати стиснення аудіо (зменшити гучність найгучніших фрагментів сигналу та збільшити гучність тихих фрагментів)",
|
||||
"name": "Аудіокомпресор"
|
||||
@ -411,13 +458,17 @@
|
||||
"menu": {
|
||||
"choose-download-folder": "Оберіть папку для завантаження",
|
||||
"download-finish-settings": {
|
||||
"label": "Скачати по завершенню",
|
||||
"prompt": {
|
||||
"last-percent": "Після Х відсотків",
|
||||
"last-seconds": "Останні Х секунд"
|
||||
"last-seconds": "Останні Х секунд",
|
||||
"title": "Налаштувати коли завантажувати"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Розширені",
|
||||
"enabled": "Увімкнено",
|
||||
"percent": "Відсотків",
|
||||
"mode": "Режим часу",
|
||||
"percent": "Відсоток",
|
||||
"seconds": "Секунди"
|
||||
}
|
||||
},
|
||||
@ -661,6 +712,7 @@
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Додає синхронізовані тексти до пісень використовуючи провайдери, такі як LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ - При завантаженні тексту сталась помилка. Спробуйте ще раз пізніше.",
|
||||
"not-found": "⚠️ - До цієї пісні текст не знайдено."
|
||||
@ -677,6 +729,10 @@
|
||||
"label": "Зосереджитись",
|
||||
"tooltip": "Зробити білим лише поточний рядок"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Офсет",
|
||||
"tooltip": "Офсет з права від нинішньої лінії"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Масштабувати",
|
||||
"tooltip": "Масштабуваты поточну лінію"
|
||||
@ -685,7 +741,8 @@
|
||||
"tooltip": "Виберіть ефект, який потрібно застосувати до поточної лінії"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Зробити текст пісні ідеально синхронізованим"
|
||||
"label": "Зробити текст пісні ідеально синхронізованим",
|
||||
"tooltip": "Обчисли до мілісекунд відображення наступного рядка (може мати невеликий вплив на продуктивність)"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Показувати текст пісні, навіть якщо він неточний",
|
||||
@ -698,7 +755,7 @@
|
||||
},
|
||||
"name": "Синхронізовані тексти",
|
||||
"refetch-btn": {
|
||||
"fetching": "Отримання...",
|
||||
"fetching": "Завантаження...",
|
||||
"normal": "Перезавантажити текст"
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
@ -279,6 +279,49 @@
|
||||
},
|
||||
"name": "微光效果"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "新增伺服器以使用 API 控制播放器",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "允許",
|
||||
"deny": "拒絕"
|
||||
},
|
||||
"message": "允許 {{ID}} ({{origin}}) 訪問 API 嗎?",
|
||||
"title": "API 驗證請求"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "驗證策略",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "首次請求時驗證"
|
||||
},
|
||||
"none": {
|
||||
"label": "不要驗證"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "主機名稱"
|
||||
},
|
||||
"port": {
|
||||
"label": "接口"
|
||||
}
|
||||
},
|
||||
"name": "API 伺服器 [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "輸入 API 伺服器的主機名稱 例 (0.0.0.0):",
|
||||
"title": "主機名稱"
|
||||
},
|
||||
"port": {
|
||||
"label": "輸入 API 伺服器接口:",
|
||||
"title": "接口"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "使用音效壓縮 (大聲部份的音量降低, 柔和部份的音量提高)",
|
||||
"name": "音效壓縮器"
|
||||
@ -300,7 +343,7 @@
|
||||
"name": "標題選擇器",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "目前標題語言: {{language}}",
|
||||
"label": "目前標題語言:{{language}}",
|
||||
"none": "無",
|
||||
"title": "選擇標題語言"
|
||||
}
|
||||
@ -363,7 +406,7 @@
|
||||
"name": "Discord 狀態",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "設定多少秒後清除狀態:",
|
||||
"label": "設定多少秒後清除狀態:",
|
||||
"title": "設定閒置狀態時長"
|
||||
}
|
||||
}
|
||||
@ -388,11 +431,11 @@
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "轉檔進度: {{percent}}%",
|
||||
"conversion-progress": "轉檔進度:{{percent}}%",
|
||||
"converting": "轉檔中…",
|
||||
"done": "完成下載: {{filePath}}",
|
||||
"done": "完成下載:{{filePath}}",
|
||||
"download-info": "正在下載 {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "下載進度: {{percent}}%",
|
||||
"download-progress": "下載進度:{{percent}}%",
|
||||
"downloading": "下載中…",
|
||||
"downloading-counter": "正在下載第 {{current}}/{{total}}…",
|
||||
"downloading-playlist": "正在下載播放清單 \"{{playlistTitle}}\" - 共 {{playlistSize}} 首歌 ({{playlistId}})",
|
||||
@ -403,10 +446,10 @@
|
||||
"playlist-has-only-one-song": "播放清單內只有一首歌曲, 將直接下載",
|
||||
"playlist-id-not-found": "沒有找到播放清單 ID",
|
||||
"playlist-is-empty": "播放清單是空的",
|
||||
"playlist-is-mix-or-private": "獲取播放清單資訊時發生錯誤: 請確認非私人播放清單或是\"為你推薦的合輯\"\n\n{{error}}",
|
||||
"playlist-is-mix-or-private": "獲取播放清單資訊時發生錯誤:請確認非私人播放清單或是\"為你推薦的合輯\"\n\n{{error}}",
|
||||
"preparing-file": "正在準備檔案…",
|
||||
"saving": "儲存中…",
|
||||
"trying-to-get-playlist-id": "正在嘗試獲取播放清單 ID: {{playlistId}}",
|
||||
"trying-to-get-playlist-id": "正在嘗試獲取播放清單 ID:{{playlistId}}",
|
||||
"video-id-not-found": "未能找到該影片",
|
||||
"writing-id3": "正在寫入 ID3 標籤…"
|
||||
}
|
||||
@ -582,7 +625,7 @@
|
||||
"decrease": "降低音量",
|
||||
"increase": "增加音量"
|
||||
},
|
||||
"label": "選擇全域音量控制快捷鍵:",
|
||||
"label": "選擇全域音量控制快捷鍵:",
|
||||
"title": "全域音量控制快捷鍵"
|
||||
},
|
||||
"volume-steps": {
|
||||
@ -595,8 +638,8 @@
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "目前畫質: {{quality}}",
|
||||
"message": "選擇影片畫質:",
|
||||
"detail": "目前畫質:{{quality}}",
|
||||
"message": "選擇影片畫質:",
|
||||
"title": "選擇影片畫質"
|
||||
}
|
||||
}
|
||||
@ -651,7 +694,7 @@
|
||||
"play-pause": "播放/暫停",
|
||||
"previous": "上一首"
|
||||
},
|
||||
"label": "選擇全域音樂控制快捷鍵:",
|
||||
"label": "選擇全域音樂控制快捷鍵:",
|
||||
"title": "全域快捷鍵"
|
||||
}
|
||||
}
|
||||
@ -703,7 +746,7 @@
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "即使不精確依然強制顯示歌詞",
|
||||
"tooltip": "當找不到符合該歌曲的歌詞時,該功能會嘗試不同的搜尋方式\n使用不同的搜尋方式會導致不精確的結果。"
|
||||
"tooltip": "當找不到符合該歌曲的歌詞時,該功能會嘗試不同的搜尋方式。\n使用不同的搜尋方式會導致不精確的結果。"
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "顯示時間線",
|
||||
|
||||
35
src/index.ts
35
src/index.ts
@ -11,6 +11,7 @@ import {
|
||||
shell,
|
||||
dialog,
|
||||
ipcMain,
|
||||
protocol,
|
||||
type BrowserWindowConstructorOptions,
|
||||
} from 'electron';
|
||||
import enhanceWebRequest, {
|
||||
@ -83,6 +84,34 @@ if (!gotTheLock) {
|
||||
app.exit();
|
||||
}
|
||||
|
||||
protocol.registerSchemesAsPrivileged([
|
||||
{
|
||||
scheme: 'http',
|
||||
privileges: {
|
||||
standard: true,
|
||||
bypassCSP: true,
|
||||
allowServiceWorkers: true,
|
||||
supportFetchAPI: true,
|
||||
corsEnabled: true,
|
||||
stream: true,
|
||||
codeCache: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
scheme: 'https',
|
||||
privileges: {
|
||||
standard: true,
|
||||
bypassCSP: true,
|
||||
allowServiceWorkers: true,
|
||||
supportFetchAPI: true,
|
||||
corsEnabled: true,
|
||||
stream: true,
|
||||
codeCache: true,
|
||||
},
|
||||
},
|
||||
{ scheme: 'mailto', privileges: { standard: true } },
|
||||
]);
|
||||
|
||||
// Ozone platform hint: Required for Wayland support
|
||||
app.commandLine.appendSwitch('ozone-platform-hint', 'auto');
|
||||
// SharedArrayBuffer: Required for downloader (@ffmpeg/core-mt)
|
||||
@ -531,7 +560,11 @@ app.once('browser-window-created', (_event, win) => {
|
||||
console.log(log);
|
||||
}
|
||||
|
||||
if (errorCode !== -3) {
|
||||
if (
|
||||
errorCode !== -3 &&
|
||||
// Workaround for #2435
|
||||
!new URL(validatedURL).hostname.includes('doubleclick.net')
|
||||
) {
|
||||
// -3 is a false positive
|
||||
win.webContents.send('log', log);
|
||||
win.webContents.loadFile(ErrorHtmlAsset);
|
||||
|
||||
@ -10,14 +10,15 @@ import { createBackend } from '@/utils';
|
||||
import { JWTPayloadSchema } from './scheme';
|
||||
import { registerAuth, registerControl } from './routes';
|
||||
|
||||
import type { APIServerConfig } from '../config';
|
||||
import { type APIServerConfig, AuthStrategy } from '../config';
|
||||
|
||||
import type { BackendType } from './types';
|
||||
|
||||
export const backend = createBackend<BackendType, APIServerConfig>({
|
||||
async start(ctx) {
|
||||
const config = await ctx.getConfig();
|
||||
|
||||
this.init(ctx);
|
||||
await this.init(ctx);
|
||||
registerCallback((songInfo) => {
|
||||
this.songInfo = songInfo;
|
||||
});
|
||||
@ -49,17 +50,20 @@ export const backend = createBackend<BackendType, APIServerConfig>({
|
||||
this.app.use('*', cors());
|
||||
|
||||
// middlewares
|
||||
this.app.use(
|
||||
'/api/*',
|
||||
jwt({
|
||||
secret: config.secret,
|
||||
}),
|
||||
);
|
||||
this.app.use('/api/*', async (ctx, next) => {
|
||||
if (config.authStrategy !== AuthStrategy.NONE) {
|
||||
return await jwt({
|
||||
secret: config.secret,
|
||||
})(ctx, next);
|
||||
}
|
||||
await next();
|
||||
});
|
||||
this.app.use('/api/*', async (ctx, next) => {
|
||||
const result = await JWTPayloadSchema.spa(await ctx.get('jwtPayload'));
|
||||
|
||||
const isAuthorized =
|
||||
result.success && config.authorizedClients.includes(result.data.id);
|
||||
config.authStrategy === AuthStrategy.NONE ||
|
||||
(result.success && config.authorizedClients.includes(result.data.id));
|
||||
if (!isAuthorized) {
|
||||
ctx.status(401);
|
||||
return ctx.body('Unauthorized');
|
||||
@ -73,12 +77,26 @@ export const backend = createBackend<BackendType, APIServerConfig>({
|
||||
registerAuth(this.app, ctx);
|
||||
|
||||
// swagger
|
||||
this.app.openAPIRegistry.registerComponent(
|
||||
'securitySchemes',
|
||||
'bearerAuth',
|
||||
{
|
||||
type: 'http',
|
||||
scheme: 'bearer',
|
||||
bearerFormat: 'JWT',
|
||||
},
|
||||
);
|
||||
this.app.doc('/doc', {
|
||||
openapi: '3.1.0',
|
||||
info: {
|
||||
version: '1.0.0',
|
||||
title: 'Youtube Music API Server',
|
||||
},
|
||||
security: [
|
||||
{
|
||||
bearerAuth: [],
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
this.app.get('/swagger', swaggerUI({ url: '/doc' }));
|
||||
|
||||
@ -6,9 +6,9 @@ import { getConnInfo } from '@hono/node-server/conninfo';
|
||||
|
||||
import { t } from '@/i18n';
|
||||
|
||||
import { APIServerConfig } from '../../config';
|
||||
import { JWTPayload } from '../scheme';
|
||||
import { type APIServerConfig, AuthStrategy } from '../../config';
|
||||
|
||||
import type { JWTPayload } from '../scheme';
|
||||
import type { HonoApp } from '../types';
|
||||
import type { BackendContext } from '@/types/contexts';
|
||||
|
||||
@ -18,6 +18,7 @@ const routes = {
|
||||
path: '/auth/{id}',
|
||||
summary: '',
|
||||
description: '',
|
||||
security: [],
|
||||
request: {
|
||||
params: z.object({
|
||||
id: z.string(),
|
||||
@ -51,16 +52,16 @@ export const register = (
|
||||
|
||||
if (config.authorizedClients.includes(id)) {
|
||||
// SKIP CHECK
|
||||
} else if (config.authStrategy === 'AUTH_AT_FIRST') {
|
||||
} else if (config.authStrategy === AuthStrategy.AUTH_AT_FIRST) {
|
||||
const result = await dialog.showMessageBox({
|
||||
title: t('plugins.api-server.dialog.request.title'),
|
||||
message: t('plugins.api-server.dialog.request.message', {
|
||||
origin: getConnInfo(ctx).remote.address,
|
||||
id,
|
||||
ID: id,
|
||||
}),
|
||||
buttons: [
|
||||
t('plugins.api-server.dialog.request.buttons.allow'),
|
||||
t('plugins.api-server.dialog.request.deny'),
|
||||
t('plugins.api-server.dialog.request.buttons.deny'),
|
||||
],
|
||||
defaultId: 1,
|
||||
cancelId: 1,
|
||||
@ -70,7 +71,7 @@ export const register = (
|
||||
ctx.status(403);
|
||||
return ctx.body(null);
|
||||
}
|
||||
} else if (config.authStrategy === 'NONE') {
|
||||
} else if (config.authStrategy === AuthStrategy.NONE) {
|
||||
// SKIP CHECK
|
||||
}
|
||||
|
||||
|
||||
@ -29,9 +29,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/previous`,
|
||||
summary: 'play previous song',
|
||||
description: 'Plays the previous song in the queue',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -43,9 +40,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/next`,
|
||||
summary: 'play next song',
|
||||
description: 'Plays the next song in the queue',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -57,9 +51,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/play`,
|
||||
summary: 'Play',
|
||||
description: 'Change the state of the player to play',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -71,9 +62,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/pause`,
|
||||
summary: 'Pause',
|
||||
description: 'Change the state of the player to pause',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -86,9 +74,6 @@ const routes = {
|
||||
summary: 'Toggle play/pause',
|
||||
description:
|
||||
'Change the state of the player to play if paused, or pause if playing',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -100,9 +85,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/like`,
|
||||
summary: 'like song',
|
||||
description: 'Set the current song as liked',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -114,9 +96,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/dislike`,
|
||||
summary: 'dislike song',
|
||||
description: 'Set the current song as disliked',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -175,9 +154,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/shuffle`,
|
||||
summary: 'shuffle',
|
||||
description: 'Shuffle the queue',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -255,9 +231,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/toggle-mute`,
|
||||
summary: 'toggle mute',
|
||||
description: 'Toggle the mute state of the player',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
204: {
|
||||
description: 'Success',
|
||||
@ -270,9 +243,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/fullscreen`,
|
||||
summary: 'get fullscreen state',
|
||||
description: 'Get the current fullscreen state',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
200: {
|
||||
description: 'Success',
|
||||
@ -291,9 +261,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/queue-info`,
|
||||
summary: 'get current queue info',
|
||||
description: 'Get the current queue info',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
200: {
|
||||
description: 'Success',
|
||||
@ -313,9 +280,6 @@ const routes = {
|
||||
path: `/api/${API_VERSION}/song-info`,
|
||||
summary: 'get current song info',
|
||||
description: 'Get the current song info',
|
||||
request: {
|
||||
headers: AuthHeadersSchema,
|
||||
},
|
||||
responses: {
|
||||
200: {
|
||||
description: 'Success',
|
||||
@ -345,8 +309,8 @@ export const register = (
|
||||
ctx.status(204);
|
||||
return ctx.body(null);
|
||||
});
|
||||
app.openapi(routes.previous, (ctx) => {
|
||||
controller.previous();
|
||||
app.openapi(routes.next, (ctx) => {
|
||||
controller.next();
|
||||
|
||||
ctx.status(204);
|
||||
return ctx.body(null);
|
||||
|
||||
@ -12,7 +12,7 @@ export type BackendType = {
|
||||
oldConfig?: APIServerConfig;
|
||||
songInfo?: SongInfo;
|
||||
|
||||
init: (ctx: BackendContext<APIServerConfig>) => void;
|
||||
init: (ctx: BackendContext<APIServerConfig>) => Promise<void>;
|
||||
run: (hostname: string, port: number) => void;
|
||||
end: () => void;
|
||||
};
|
||||
|
||||
@ -1,8 +1,13 @@
|
||||
export enum AuthStrategy {
|
||||
AUTH_AT_FIRST = 'AUTH_AT_FIRST',
|
||||
NONE = 'NONE',
|
||||
}
|
||||
|
||||
export interface APIServerConfig {
|
||||
enabled: boolean;
|
||||
hostname: string;
|
||||
port: number;
|
||||
authStrategy: 'AUTH_AT_FIRST' | 'NONE';
|
||||
authStrategy: AuthStrategy;
|
||||
secret: string;
|
||||
|
||||
authorizedClients: string[];
|
||||
@ -12,7 +17,7 @@ export const defaultAPIServerConfig: APIServerConfig = {
|
||||
enabled: true,
|
||||
hostname: '0.0.0.0',
|
||||
port: 26538,
|
||||
authStrategy: 'AUTH_AT_FIRST',
|
||||
authStrategy: AuthStrategy.AUTH_AT_FIRST,
|
||||
secret: Date.now().toString(36),
|
||||
|
||||
authorizedClients: [],
|
||||
|
||||
@ -3,7 +3,11 @@ import prompt from 'custom-electron-prompt';
|
||||
import { t } from '@/i18n';
|
||||
import promptOptions from '@/providers/prompt-options';
|
||||
|
||||
import { APIServerConfig, defaultAPIServerConfig } from './config';
|
||||
import {
|
||||
type APIServerConfig,
|
||||
AuthStrategy,
|
||||
defaultAPIServerConfig,
|
||||
} from './config';
|
||||
|
||||
import type { MenuContext } from '@/types/contexts';
|
||||
import type { MenuTemplate } from '@/menu';
|
||||
@ -74,17 +78,17 @@ export const onMenu = async ({
|
||||
'plugins.api-server.menu.auth-strategy.submenu.auth-at-first.label',
|
||||
),
|
||||
type: 'radio',
|
||||
checked: config.authStrategy === 'AUTH_AT_FIRST',
|
||||
checked: config.authStrategy === AuthStrategy.AUTH_AT_FIRST,
|
||||
click() {
|
||||
setConfig({ ...config, authStrategy: 'AUTH_AT_FIRST' });
|
||||
setConfig({ ...config, authStrategy: AuthStrategy.AUTH_AT_FIRST });
|
||||
},
|
||||
},
|
||||
{
|
||||
label: t('plugins.api-server.menu.auth-strategy.submenu.none.label'),
|
||||
type: 'radio',
|
||||
checked: config.authStrategy === 'NONE',
|
||||
checked: config.authStrategy === AuthStrategy.NONE,
|
||||
click() {
|
||||
setConfig({ ...config, authStrategy: 'NONE' });
|
||||
setConfig({ ...config, authStrategy: AuthStrategy.NONE });
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@ -172,6 +172,8 @@ function downloadSongOnFinishSetup({
|
||||
let duration: number | undefined;
|
||||
let time = 0;
|
||||
|
||||
const defaultDownloadFolder = app.getPath('downloads');
|
||||
|
||||
registerCallback((songInfo: SongInfo) => {
|
||||
if (
|
||||
!songInfo.isPaused &&
|
||||
@ -185,7 +187,9 @@ function downloadSongOnFinishSetup({
|
||||
) {
|
||||
downloadSong(
|
||||
currentUrl,
|
||||
config.downloadOnFinish.folder ?? config.downloadFolder,
|
||||
config.downloadOnFinish.folder ??
|
||||
config.downloadFolder ??
|
||||
defaultDownloadFolder,
|
||||
);
|
||||
} else if (
|
||||
config.downloadOnFinish.mode === 'percent' &&
|
||||
@ -193,7 +197,9 @@ function downloadSongOnFinishSetup({
|
||||
) {
|
||||
downloadSong(
|
||||
currentUrl,
|
||||
config.downloadOnFinish.folder ?? config.downloadFolder,
|
||||
config.downloadOnFinish.folder ??
|
||||
config.downloadFolder ??
|
||||
defaultDownloadFolder,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -107,7 +107,8 @@ export const onRendererLoad = ({
|
||||
|
||||
ipc.on('downloader-feedback', (feedback: string) => {
|
||||
if (progress) {
|
||||
progress.innerHTML = feedback || t('plugins.downloader.templates.button');
|
||||
const targetHtml = feedback || t('plugins.downloader.templates.button');
|
||||
progress.innerHTML = window.trustedTypes?.defaultPolicy ? window.trustedTypes.defaultPolicy.createHTML(targetHtml) : targetHtml;
|
||||
} else {
|
||||
console.warn(
|
||||
LoggerPrefix,
|
||||
|
||||
@ -10,7 +10,7 @@ export const onRendererLoad = ({
|
||||
ipc: { invoke, on },
|
||||
}: RendererContext<LyricsGeniusPluginConfig>) => {
|
||||
const setLyrics = (lyricsContainer: Element, lyrics: string | null) => {
|
||||
lyricsContainer.innerHTML = `
|
||||
const targetHtml = `
|
||||
<div id="contents" class="style-scope ytmusic-section-list-renderer description ytmusic-description-shelf-renderer genius-lyrics">
|
||||
${
|
||||
lyrics?.replaceAll(/\r\n|\r|\n/g, '<br/>') ??
|
||||
@ -20,6 +20,7 @@ export const onRendererLoad = ({
|
||||
<yt-formatted-string class="footer style-scope ytmusic-description-shelf-renderer" style="align-self: baseline">
|
||||
</yt-formatted-string>
|
||||
`;
|
||||
lyricsContainer.innerHTML = window.trustedTypes?.defaultPolicy ? window.trustedTypes.defaultPolicy.createHTML(targetHtml) : targetHtml;
|
||||
|
||||
if (lyrics) {
|
||||
const footer = lyricsContainer.querySelector('.footer');
|
||||
|
||||
@ -22,7 +22,8 @@ const updatePlayBackSpeed = () => {
|
||||
|
||||
const playbackSpeedElement = document.querySelector('#playback-speed-value');
|
||||
if (playbackSpeedElement) {
|
||||
playbackSpeedElement.innerHTML = String(playbackSpeed);
|
||||
const targetHtml = String(playbackSpeed);
|
||||
playbackSpeedElement.innerHTML = window.trustedTypes?.defaultPolicy ? trustedTypes.defaultPolicy.createHTML(targetHtml) : targetHtml;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
export const ElementFromHtml = (html: string): HTMLElement => {
|
||||
const template = document.createElement('template');
|
||||
html = html.trim(); // Never return a text node of whitespace as the result
|
||||
template.innerHTML = html;
|
||||
template.innerHTML = window.trustedTypes?.defaultPolicy ? window.trustedTypes.defaultPolicy.createHTML(html) : html;
|
||||
|
||||
return template.content.firstElementChild as HTMLElement;
|
||||
};
|
||||
|
||||
@ -51,6 +51,13 @@ interface YouTubeMusicAppElement extends HTMLElement {
|
||||
}
|
||||
|
||||
async function onApiLoaded() {
|
||||
// Workaround for #2459
|
||||
document
|
||||
.querySelector('button.video-button.ytmusic-av-toggle')
|
||||
?.addEventListener('click', () =>
|
||||
window.dispatchEvent(new Event('resize')),
|
||||
);
|
||||
|
||||
window.ipcRenderer.on('ytmd:previous-video', () => {
|
||||
document
|
||||
.querySelector<HTMLElement>('.previous-button.ytmusic-player-bar')
|
||||
@ -129,8 +136,8 @@ async function onApiLoaded() {
|
||||
}
|
||||
};
|
||||
|
||||
window.ipcRenderer.on('ytmd:get-fullscreen', (event) => {
|
||||
event.sender.send('ytmd:set-fullscreen', isFullscreen());
|
||||
window.ipcRenderer.on('ytmd:get-fullscreen', () => {
|
||||
window.ipcRenderer.send('ytmd:set-fullscreen', isFullscreen());
|
||||
});
|
||||
|
||||
window.ipcRenderer.on(
|
||||
@ -148,9 +155,9 @@ async function onApiLoaded() {
|
||||
?.onVolumeTap();
|
||||
});
|
||||
|
||||
window.ipcRenderer.on('ytmd:get-queue', (event) => {
|
||||
window.ipcRenderer.on('ytmd:get-queue', () => {
|
||||
const queue = document.querySelector<QueueElement>('#queue');
|
||||
event.sender.send('ytmd:get-queue-response', {
|
||||
window.ipcRenderer.send('ytmd:get-queue-response', {
|
||||
items: queue?.queue.getItems(),
|
||||
autoPlaying: queue?.queue.autoPlaying,
|
||||
continuation: queue?.queue.continuation,
|
||||
@ -237,16 +244,16 @@ async function onApiLoaded() {
|
||||
'options.likeButtons',
|
||||
);
|
||||
if (likeButtonsOptions) {
|
||||
const likeButtons: HTMLElement | null = document.querySelector(
|
||||
'ytmusic-like-button-renderer',
|
||||
);
|
||||
if (likeButtons) {
|
||||
likeButtons.style.display =
|
||||
{
|
||||
hide: 'none',
|
||||
force: 'inherit',
|
||||
}[likeButtonsOptions] || '';
|
||||
}
|
||||
const style = document.createElement('style');
|
||||
style.textContent = `
|
||||
ytmusic-player-bar[is-mweb-player-bar-modernization-enabled] .middle-controls-buttons.ytmusic-player-bar, #like-button-renderer {
|
||||
display: ${likeButtonsOptions === 'hide' ? 'none' : 'inherit'} !important;
|
||||
}
|
||||
ytmusic-player-bar[is-mweb-player-bar-modernization-enabled] .middle-controls.ytmusic-player-bar {
|
||||
justify-content: ${likeButtonsOptions === 'hide' ? 'flex-start' : 'space-between'} !important;
|
||||
}`;
|
||||
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
}
|
||||
|
||||
@ -262,7 +269,8 @@ const defineYTMDTransElements = () => {
|
||||
const that = this as HTMLElement;
|
||||
const key = that.getAttribute('key');
|
||||
if (key) {
|
||||
that.innerHTML = i18t(key);
|
||||
const targetHtml = i18t(key);
|
||||
that.innerHTML = window.trustedTypes?.defaultPolicy ? window.trustedTypes.defaultPolicy.createHTML(targetHtml) : targetHtml;
|
||||
}
|
||||
};
|
||||
customElements.define(
|
||||
|
||||
@ -73,6 +73,8 @@ tp-yt-paper-item.ytmusic-guide-entry-renderer::before {
|
||||
#av-id ~ #player.ytmusic-player-page:not([player-ui-state="FULLSCREEN"]) {
|
||||
margin-top: auto !important;
|
||||
margin-bottom: auto !important;
|
||||
margin-left: var(--ytmusic-player-page-vertical-padding);
|
||||
margin-right: var(--ytmusic-player-page-vertical-padding);
|
||||
max-height: calc(100% - (var(--ytmusic-player-page-vertical-padding) * 2));
|
||||
max-width: calc(100% - var(--ytmusic-player-page-vertical-padding) * 2);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user