diff --git a/README.md b/README.md
index bfca83d01..605d63da6 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@
-Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸](./docs/readme/README-is.md), [🇨🇱 🇪🇸](./docs/readme/README-es.md)
+Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸](./docs/readme/README-is.md), [🇨🇱 🇪🇸](./docs/readme/README-es.md), [🇷🇺](./docs/readme/README-ru.md)
**Electron wrapper around YouTube Music featuring:**
@@ -141,6 +141,8 @@ Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸]
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Automatically Skips non-music parts like intro/outro or
parts of music videos where the song isn't playing
+- **Synced Lyrics**: Provides synced lyrics to songs, using providers like [LRClib](https://lrclib.net).
+
- **Taskbar Media Control**: Control playback from
your [Windows taskbar](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
@@ -159,6 +161,7 @@ Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸]
- **Visualizer**: Different music visualizers
+
## Translation
You can help with translation on [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
diff --git a/changelog.md b/changelog.md
index ab1707267..438094038 100644
--- a/changelog.md
+++ b/changelog.md
@@ -2,8 +2,49 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
+#### [v3.5.2](https://github.com/th-ch/youtube-music/compare/v3.5.1...v3.5.2)
+
+- chore(deps): update typescript-eslint monorepo to v8.4.0 [`#2401`](https://github.com/th-ch/youtube-music/pull/2401)
+- chore(deps): update dependency @total-typescript/ts-reset to v0.6.1 [`#2396`](https://github.com/th-ch/youtube-music/pull/2396)
+- chore(deps): update dependency electron to v31.5.0 [`#2397`](https://github.com/th-ch/youtube-music/pull/2397)
+- chore(deps): update dependency eslint-import-resolver-typescript to v3.6.3 [`#2376`](https://github.com/th-ch/youtube-music/pull/2376)
+- chore(deps): update dependency discord-api-types to v0.37.100 [`#2394`](https://github.com/th-ch/youtube-music/pull/2394)
+- fix(deps): update dependency electron-updater to v6.3.4 [`#2395`](https://github.com/th-ch/youtube-music/pull/2395)
+- chore(deps): update dependency @babel/runtime to v7.25.6 [`#2388`](https://github.com/th-ch/youtube-music/pull/2388)
+- chore(deps): update dependency vite-plugin-inspect to v0.8.7 [`#2389`](https://github.com/th-ch/youtube-music/pull/2389)
+- chore(deps): update dependency discord-api-types to v0.37.99 [`#2374`](https://github.com/th-ch/youtube-music/pull/2374)
+- chore(deps): update dependency vite to v5.4.3 [`#2377`](https://github.com/th-ch/youtube-music/pull/2377)
+- fix: incorrect regex when splitting artistName [`#2378`](https://github.com/th-ch/youtube-music/pull/2378)
+- chore(deps): update dependency @babel/runtime to v7.25.4 [`#2373`](https://github.com/th-ch/youtube-music/pull/2373)
+- synced-lyrics: make the lyrics search more reliable [`#2343`](https://github.com/th-ch/youtube-music/pull/2343)
+- fix(deps): update dependency solid-js to v1.8.22 [`#2354`](https://github.com/th-ch/youtube-music/pull/2354)
+- chore(deps): update typescript-eslint monorepo to v8.3.0 [`#2350`](https://github.com/th-ch/youtube-music/pull/2350)
+- fix(deps): update dependency electron-debug to v4.0.1 [`#2349`](https://github.com/th-ch/youtube-music/pull/2349)
+- chore(deps): update dependency electron to v31.4.0 [`#2356`](https://github.com/th-ch/youtube-music/pull/2356)
+- fix: hide native-controls on linux when in-app-menu is used [`#2366`](https://github.com/th-ch/youtube-music/pull/2366)
+- fix: detect the upgrade btn using the icon [`#2364`](https://github.com/th-ch/youtube-music/pull/2364)
+- fix: exclude build-id files from rpm [`#2361`](https://github.com/th-ch/youtube-music/pull/2361)
+- fix(deps): update dependency i18next to v23.12.3 [`#2352`](https://github.com/th-ch/youtube-music/pull/2352)
+- fix(deps): update dependency @floating-ui/dom to v1.6.10 [`#2340`](https://github.com/th-ch/youtube-music/pull/2340)
+- fix(deps): update dependency electron-updater to v6.3.3 [`#2347`](https://github.com/th-ch/youtube-music/pull/2347)
+- fix(deps): update dependency solid-js to v1.8.20 [`#2345`](https://github.com/th-ch/youtube-music/pull/2345)
+- chore(deps): update dependency vite to v5.4.0 [`#2342`](https://github.com/th-ch/youtube-music/pull/2342)
+- chore(deps): update typescript-eslint monorepo to v8.0.1 [`#2335`](https://github.com/th-ch/youtube-music/pull/2335)
+- fix(deps): update dependency @floating-ui/dom to v1.6.9 [`#2337`](https://github.com/th-ch/youtube-music/pull/2337)
+- chore(deps): update playwright monorepo to v1.46.0 [`#2336`](https://github.com/th-ch/youtube-music/pull/2336)
+- chore(README): Translation README to Russian and adding Synced Lyrics to main README [`#2338`](https://github.com/th-ch/youtube-music/pull/2338)
+- chore(deps): update dependency rollup to v4.20.0 [`#2326`](https://github.com/th-ch/youtube-music/pull/2326)
+- fix(synced-lyric): fix timestamp [`#2323`](https://github.com/th-ch/youtube-music/issues/2323) [`#2379`](https://github.com/th-ch/youtube-music/issues/2379)
+- Revert "fix(MPRIS): Prevents player to start with invalid MPRIS interface (#1996)" [`#2225`](https://github.com/th-ch/youtube-music/issues/2225)
+- fix(adblocker/inplayer): fix Response.prototype.json [`#2310`](https://github.com/th-ch/youtube-music/issues/2310)
+- chore(deps): update dependency eslint-plugin-import to v2.30.0 [`f48e46d`](https://github.com/th-ch/youtube-music/commit/f48e46d29cf09c76c5172fd56d2d0f705616e4e3)
+- Revert "chore(deps): update dependency electron-builder to v25" [`089eff3`](https://github.com/th-ch/youtube-music/commit/089eff3152903c8b55ad3e5571b944062a647e27)
+- chore(deps): update dependency electron-builder to v25 [`fe4c89c`](https://github.com/th-ch/youtube-music/commit/fe4c89c349bb9f4f54d95c2018943095ccfdab0c)
+
#### [v3.5.1](https://github.com/th-ch/youtube-music/compare/v3.5.0...v3.5.1)
+> 1 August 2024
+
- fix(deps): update dependency youtubei.js to v10.3.0 [`#2306`](https://github.com/th-ch/youtube-music/pull/2306)
- fix: Window gets stuck offscreen in some instances [`#2303`](https://github.com/th-ch/youtube-music/pull/2303)
- fix: Incorrect window size on multi-monitor scaled displays [`#2302`](https://github.com/th-ch/youtube-music/pull/2302)
diff --git a/docs/readme/README-ru.md b/docs/readme/README-ru.md
new file mode 100644
index 000000000..2d9b635c1
--- /dev/null
+++ b/docs/readme/README-ru.md
@@ -0,0 +1,374 @@
+
+
+# YouTube Music
+
+[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
+[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
+[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
+[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
+[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
+[![AUR](https://img.shields.io/aur/version/youtube-music-bin?color=blueviolet&style=for-the-badge&logo=youtube-music)](https://aur.archlinux.org/packages/youtube-music-bin)
+[![Known Vulnerabilities](https://snyk.io/test/github/th-ch/youtube-music/badge.svg)](https://snyk.io/test/github/th-ch/youtube-music)
+
+
+
+![Screenshot](web/screenshot.jpg "Screenshot")
+
+
+
+
+
+
+**Клиент для YouTube Music основанный на Electron с поддержкой:**
+
+- Нативный вид приложения, нацелен на сохранение оригинального интерфейса
+- Фреймворк для пользовательских плагинов: изменяйте YouTube Music под ваши нужды (внешний вид, контент, возможности), включайте/выключайте плагины в один клик
+
+## Демо-изображение
+
+| Экран плеера (цветовая тема альбома & режим Ambient) |
+|:---------------------------------------------------------------------------------------------------------:|
+|![Screenshot1](https://github.com/th-ch/youtube-music/assets/16558115/53efdf73-b8fa-4d7b-a235-b96b91ea77fc)|
+
+## Содержание
+
+- [Возможности](#features)
+- [Доступные плагины](#available-plugins)
+- [Перевод](#translation)
+- [Скачать](#download)
+ - [Arch Linux](#arch-linux)
+ - [MacOS](#macos)
+ - [Windows](#windows)
+ - [Как установить без подключения к интернету? (в Windows)](#how-to-install-without-a-network-connection-in-windows)
+- [Темы](#themes)
+- [Для разработчиков](#dev)
+- [Создайте свои собственные плагины](#build-your-own-plugins)
+ - [Создание плагина](#creating-a-plugin)
+ - [Примеры использования](#common-use-cases)
+- [Сборка](#build)
+- [Предварительный просмотр](#production-preview)
+- [Тестирование](#tests)
+- [Лицензия](#license)
+- [Часто задаваемые вопросы](#faq)
+
+## Возможности:
+
+- **Авто-подтверждение при паузе** (Всегда включено): отключает всплывающие уведомление ["Продолжить просмотр?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png),
+ которое приостанавливает воспроизведение через определённое время
+
+ - И больше ...
+
+## Доступные плагины:
+
+- **Блокировщик рекламы**: Блокирует всю рекламу и трекеры
+
+- **Действия с альбомом**: Добавляет кнопки "Убрать дизлайк", "Дизлайк", "Лайк", "Убрать лайк" и применяет их действия ко всем трекам в плейлисте или альбоме
+
+- **Цветовая тема альбома**: Применяет динамическую тему и эффекты, основываясь на цветовой палитре альбома
+
+- **Режим Ambient**: Применяет световой эффект, проецируя нежные цвета из видео на задний фон вашего экрана
+
+- **Нормализация аудио**: Применяет нормализацию к аудио (уменьшает громкость громких частей трека и повышает громкость тихих частей трека)
+
+- **Размытие панели навигации**: Делает панель навигации прозрачной и размытой
+
+- **Обход возрастных ограничений**: Обходит проверку возраста YouTube
+
+- **Выбор субтитров**: Включить субтитры
+
+- **Компактная боковая панель**: Всегда показывать боковую панель компактно
+
+- **Плавный переход**: Плавный переход между треками
+
+- **Отключить автопроигрыш**: Каждый трек начинается в режиме паузы
+
+- **[Discord](https://discord.com/) Rich Presence**: Показывает вашим друзьям, что вы слушаете с помощью [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
+
+- **Загрузчик**: Загрузка MP3 [напрямую из интерфейса](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
+
+- **Расширенная громкость**: Делает слайдер громкости [расширенным](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) облегчая выбор громкости
+
+- **Меню в приложении**: [Придаёт панели меню красивый тёмный вид](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
+
+ > (посмотрите [этот пост,](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) если у вас есть проблемы с доступом к меню после включения этого плагина и опции "Скрыть меню")
+
+- **Скробблер**: Добавляет поддержку скробблинга [Last.fm](https://www.last.fm/) и [ListenBrainz](https://listenbrainz.org/)
+
+- **Lumia Stream**: Добавляет поддержку [Lumia Stream](https://lumiastream.com/)
+
+- **Тесты песен Genius**: Добавляет поддержку текстов для большинства песен
+
+- **Music Together**: Делитесь плейлистом с другими. Когда ведущий воспроизводит трек, все остальные будут слушать этот же трек.
+
+- **Навигация**: Кнопки Назад/Вперед интегрированы в интерфейс, как в вашем любимом браузере
+
+- **Без входа в систему Google**: Убирает из интерфейса кнопки и ссылки для входа через Google
+
+- **Уведомления**: Показывает уведомление, когда трек начинает играть ([интерактивные уведомления](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) доступны только для Windows)
+
+- **Картинка в картинке**: Позволяет переключить приложение в режим "картинка в картинке"
+
+- **Скорость воспроизведения**: Слушайте быстрее, слушайте медленнее! [Добавляет слайдер для контроля скорости трека](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
+
+- **Точная громкость**: Точечно управляйте громкостью с помощью колеса мыши/горячих клавиш, с кастомным интерфейсом и настраиваемыми шагами громкости
+
+- **Ярлыки (и MPRIS)**: Позволяет настроить глобальные горячие клавиши управления воспроизведением (плей/пауза/следующий/предыдущий) + отключает [отображение медиа на экране,](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) переопределяя клавиши управления + включает Ctrl/CMD + F для поиска + включает поддержку linux mpris для клавиш управления медиа + [настраиваемые сочетания клавиш](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) для [продвинутых пользователей](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
+
+- **Пропускать непонравившиеся треки**: Пропускает непонравившиеся треки
+
+- **Пропуск тишины**: Автоматически пропускает тихие моменты в песнях
+
+- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Автоматически пропускает немузыкальные части, такие как интро/аутро музыкальных видео, где трек не играет
+
+- **Управление воспроизведением из панели задач**: Управляйте воспроизведением из [панели задач Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
+
+- **TouchBar**: Кастомная раскладка TouchBar для MacOS
+
+- **Tuna OBS**: Интеграция с [OBS](https://obsproject.com/) плагином [Tuna](https://obsproject.com/forum/resources/tuna.843/)
+
+- **Изменение качества видео**: Позволяет менять качество видео [кнопкой](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) на медиаплеере видео
+
+- **Переключатель видео**: Добавляет
+ [кнопку](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) переключения режимов Трек/Видео. Также может удалять вкладку "Видео" полностью
+
+- **Визуализатор**: Различные визуализаторы музыки
+
+- **Synced Lyrics**:
+Предоставляет синхронизированные слова для песен из таких источников, как [LRClib](https://lrclib.net).
+
+## Перевод
+
+Вы можете помочь с переводом на ваш язык на [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
+
+
+
+
+
+
+## Скачать
+
+Вы можете посмотреть [latest release,](https://github.com/th-ch/youtube-music/releases/latest) чтобы быстро найти новую версию.
+
+### Arch Linux
+
+Установите пакет [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) из AUR. Инструкции по установке из AUR можете найти на этой [вики-странице](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
+
+### macOS
+
+Вы можете установить приложение с помощью Homebrew (сморите [cask definition](https://github.com/th-ch/homebrew-youtube-music)):
+
+```bash
+brew install th-ch/youtube-music/youtube-music
+```
+
+Если вы устанавливаете приложение вручную и получаете ошибку "is damaged and can’t be opened.", запустите в терминале следующую команду:
+
+```bash
+xattr -cr /Applications/YouTube\ Music.app
+```
+
+### Windows
+
+Вы можете использовать [пакетный менеджер Scoop](https://scoop.sh) для установки пакета `youtube-music` из [`extras` bucket](https://github.com/ScoopInstaller/Extras).
+
+```bash
+scoop bucket add extras
+scoop install extras/youtube-music
+```
+
+Также для установки вы можете использовать [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), официальный пакетный менеджер командной строки Windows 11, для установки пакета `th-ch.YouTubeMusic`.
+
+*К сведению: SmartScreen защитника Windows может блокировать установку, так как она от "неизвестного издателя". Это также применимо к методу ручной установки, когда вы пытаетесь запустить исполняемый файл(.exe) после загрузки здесь, на GitHub (тот же файл).*
+
+```bash
+winget install th-ch.YouTubeMusic
+```
+
+#### Установка без подключения к Интернету? (в Windows)
+
+- Скачайте файл `*.nsis.7z` из _архетиктура вашего устройства_ на [release page](https://github.com/th-ch/youtube-music/releases/latest).
+ - `x64` для 64-bit Windows
+ - `ia32` для 32-bit Windows
+ - `arm64` для ARM64 Windows
+- Скачайте установщик в release page. (`*-Setup.exe`)
+- Поместите их в **одной директории**.
+- Запустите установщик.
+
+## Темы
+
+Вы можете загрузить файл CSS для смены внешнего вида приложения (Настройки > Визуальные настройки > Тема).
+
+Некоторые предустановленные темы доступны здесь: https://github.com/kerichdev/themes-for-ytmdesktop-player.
+
+## Для разработчиков
+
+```bash
+git clone https://github.com/th-ch/youtube-music
+cd youtube-music
+pnpm install --frozen-lockfile
+pnpm dev
+```
+
+## Создайте свои собственные плагины
+
+Используя плагины вы можете:
+
+- Манипулировать приложением - `BrowserWindow` из electron проброшен обработчику плагинов
+- Изменять внешний вид, манипулируя HTML/CSS
+
+### Создание плагина
+
+Создайте директорию в `src/plugins/YOUR-PLUGIN-NAME`:
+
+- `index.ts`: основной файл плагина
+```typescript
+import style from './style.css?inline'; // import style as inline
+
+import { createPlugin } from '@/utils';
+
+export default createPlugin({
+ name: 'Plugin Label',
+ restartNeeded: true, // if value is true, ytmusic show restart dialog
+ config: {
+ enabled: false,
+ }, // your custom config
+ stylesheets: [style], // your custom style,
+ menu: async ({ getConfig, setConfig }) => {
+ // All *Config methods are wrapped Promise
+ const config = await getConfig();
+ return [
+ {
+ label: 'menu',
+ submenu: [1, 2, 3].map((value) => ({
+ label: `value ${value}`,
+ type: 'radio',
+ checked: config.value === value,
+ click() {
+ setConfig({ value });
+ },
+ })),
+ },
+ ];
+ },
+ backend: {
+ start({ window, ipc }) {
+ window.maximize();
+
+ // you can communicate with renderer plugin
+ ipc.handle('some-event', () => {
+ return 'hello';
+ });
+ },
+ // it fired when config changed
+ onConfigChange(newConfig) { /* ... */ },
+ // it fired when plugin disabled
+ stop(context) { /* ... */ },
+ },
+ renderer: {
+ async start(context) {
+ console.log(await context.ipc.invoke('some-event'));
+ },
+ // Only renderer available hook
+ onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
+ // set plugin config easily
+ context.setConfig({ myConfig: api.getVolume() });
+ },
+ onConfigChange(newConfig) { /* ... */ },
+ stop(_context) { /* ... */ },
+ },
+ preload: {
+ async start({ getConfig }) {
+ const config = await getConfig();
+ },
+ onConfigChange(newConfig) {},
+ stop(_context) {},
+ },
+});
+```
+
+### Примеры использования
+
+- Кастомный CSS: создайте файл `style.css` в той же директории, затем:
+
+```typescript
+// index.ts
+import style from './style.css?inline'; // import style as inline
+
+import { createPlugin } from '@/utils';
+
+export default createPlugin({
+ name: 'Plugin Label',
+ restartNeeded: true, // if value is true, ytmusic will show a restart dialog
+ config: {
+ enabled: false,
+ }, // your custom config
+ stylesheets: [style], // your custom style
+ renderer() {} // define renderer hook
+});
+```
+
+- Если вы хотите изменить HTML:
+
+```typescript
+import { createPlugin } from '@/utils';
+
+export default createPlugin({
+ name: 'Plugin Label',
+ restartNeeded: true, // if value is true, ytmusic will show the restart dialog
+ config: {
+ enabled: false,
+ }, // your custom config
+ renderer() {
+ // Remove the login button
+ document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
+ } // define renderer hook
+});
+```
+
+- обмен между фронтом и бэком может быть выполнен с помощью модуля ipcMain из electron. Смотрите файл `index.ts` и
+ пример в плагине `sponsorblock`.
+
+## Сборка
+
+1. Склонируйте репозиторий
+2. Следуйте [этой инструкции,](https://pnpm.io/installation) чтобы установить `pnpm`
+3. Запустите `pnpm install --frozen-lockfile` для установки зависимостей
+4. Запустите `pnpm build:OS`
+
+- `pnpm dist:win` - Windows
+- `pnpm dist:linux` - Linux (amd64)
+- `pnpm dist:linux:deb-arm64` - Linux (arm64 for Debian)
+- `pnpm dist:linux:rpm-arm64` - Linux (arm64 for Fedora)
+- `pnpm dist:mac` - macOS (amd64)
+- `pnpm dist:mac:arm64` - macOS (arm64)
+
+Сборка приложения для macOS, Linux, и Windows,
+используя [electron-builder](https://github.com/electron-userland/electron-builder).
+
+## Предварительный просмотр
+
+```bash
+pnpm start
+```
+
+## Тестирование
+
+```bash
+pnpm test
+```
+
+Использует [Playwright](https://playwright.dev/) для тестирования приложения.
+
+## Лицензия
+
+MIT © [th-ch](https://github.com/th-ch/youtube-music)
+
+## Часто задаваемые вопросы
+
+### Почему меня приложения не отображается?
+
+Если опция `Скрыть меню` включена - вы можете отобразить меню с помощью клавиши alt (или \` [обратный апостроф], если используете плагин "Меню в приложении")
diff --git a/package.json b/package.json
index 4cdc169dc..d095402c7 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "youtube-music",
"productName": "YouTube Music",
- "version": "3.5.1",
+ "version": "3.5.2",
"description": "YouTube Music Desktop App - including custom plugins",
"main": "./dist/main/index.js",
"license": "MIT",
@@ -94,6 +94,10 @@
"rpm": {
"depends": [
"/usr/lib64/libuuid.so.1"
+ ],
+ "fpm": [
+ "--rpm-rpmbuild-define",
+ "_build_id_links none"
]
},
"snap": {
@@ -145,7 +149,7 @@
"xml2js": "0.6.2",
"node-fetch": "3.3.2",
"@electron/universal": "2.0.1",
- "@babel/runtime": "7.25.0"
+ "@babel/runtime": "7.25.6"
},
"patchedDependencies": {
"vudio@2.1.1": "patches/vudio@2.1.1.patch",
@@ -159,7 +163,7 @@
"@electron/remote": "2.1.2",
"@ffmpeg.wasm/core-mt": "0.12.0",
"@ffmpeg.wasm/main": "0.12.0",
- "@floating-ui/dom": "1.6.8",
+ "@floating-ui/dom": "1.6.10",
"@foobar404/wave": "2.0.5",
"@jellybrick/electron-better-web-request": "1.0.4",
"@jellybrick/mpris-service": "2.1.4",
@@ -173,18 +177,18 @@
"custom-electron-prompt": "1.5.8",
"dbus-next": "0.10.2",
"deepmerge-ts": "7.1.0",
- "electron-debug": "4.0.0",
+ "electron-debug": "4.0.1",
"electron-is": "3.0.0",
"electron-localshortcut": "3.2.1",
"electron-store": "10.0.0",
"electron-unhandled": "4.0.1",
- "electron-updater": "6.3.2",
+ "electron-updater": "6.3.4",
"fast-average-color": "9.4.0",
"fast-equals": "5.0.1",
"filenamify": "6.0.0",
"howler": "2.2.4",
"html-to-text": "9.0.5",
- "i18next": "23.12.2",
+ "i18next": "23.14.0",
"keyboardevent-from-electron-accelerator": "2.0.0",
"keyboardevents-areequal": "0.2.2",
"node-html-parser": "6.1.13",
@@ -194,47 +198,47 @@
"serve": "14.2.3",
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
"solid-floating-ui": "0.3.1",
- "solid-js": "1.8.19",
+ "solid-js": "1.8.22",
"solid-styled-components": "0.28.5",
"solid-transition-group": "0.2.3",
"ts-morph": "23.0.0",
"vudio": "2.1.1",
"x11": "2.3.0",
- "youtubei.js": "10.3.0"
+ "youtubei.js": "10.4.0"
},
"devDependencies": {
- "@playwright/test": "1.45.3",
- "@total-typescript/ts-reset": "0.5.1",
+ "@playwright/test": "1.47.0",
+ "@total-typescript/ts-reset": "0.6.1",
"@types/color": "3.0.6",
"@types/electron-localshortcut": "3.1.3",
"@types/howler": "2.2.11",
"@types/html-to-text": "9.0.4",
"@types/semver": "7.5.8",
- "@typescript-eslint/eslint-plugin": "8.0.0",
- "@typescript-eslint/parser": "8.0.0",
+ "@typescript-eslint/eslint-plugin": "8.4.0",
+ "@typescript-eslint/parser": "8.4.0",
"bufferutil": "4.0.8",
"builtin-modules": "4.0.0",
"cross-env": "7.0.3",
"del-cli": "5.1.0",
- "discord-api-types": "0.37.93",
- "electron": "31.3.1",
+ "discord-api-types": "0.37.100",
+ "electron": "32.0.2",
"electron-builder": "24.13.3",
"electron-devtools-installer": "3.2.0",
"electron-vite": "2.3.0",
- "esbuild": "0.23.0",
+ "esbuild": "0.23.1",
"eslint": "8.57.0",
"eslint-import-resolver-exports": "1.0.0-beta.5",
- "eslint-import-resolver-typescript": "3.6.1",
- "eslint-plugin-import": "2.29.1",
+ "eslint-import-resolver-typescript": "3.6.3",
+ "eslint-plugin-import": "2.30.0",
"eslint-plugin-prettier": "5.2.1",
"glob": "11.0.0",
"node-gyp": "10.2.0",
- "playwright": "1.45.3",
- "rollup": "4.19.2",
+ "playwright": "1.47.0",
+ "rollup": "4.21.2",
"typescript": "5.5.4",
"utf-8-validate": "6.0.4",
- "vite": "5.3.5",
- "vite-plugin-inspect": "0.8.5",
+ "vite": "5.4.3",
+ "vite-plugin-inspect": "0.8.7",
"vite-plugin-resolve": "2.5.2",
"vite-plugin-solid": "2.10.2",
"ws": "8.18.0"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 460fe4fb9..a6110b606 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,7 +10,7 @@ overrides:
xml2js: 0.6.2
node-fetch: 3.3.2
'@electron/universal': 2.0.1
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
patchedDependencies:
app-builder-lib@24.13.3:
@@ -26,16 +26,16 @@ importers:
dependencies:
'@cliqz/adblocker-electron':
specifier: 1.27.1
- version: 1.27.1(electron@31.3.1)
+ version: 1.27.1(electron@32.0.2)
'@cliqz/adblocker-electron-preload':
specifier: 1.27.1
- version: 1.27.1(electron@31.3.1)
+ version: 1.27.1(electron@32.0.2)
'@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@31.3.1)
+ version: 2.1.2(electron@32.0.2)
'@ffmpeg.wasm/core-mt':
specifier: 0.12.0
version: 0.12.0
@@ -43,8 +43,8 @@ importers:
specifier: 0.12.0
version: 0.12.0
'@floating-ui/dom':
- specifier: 1.6.8
- version: 1.6.8
+ specifier: 1.6.10
+ version: 1.6.10
'@foobar404/wave':
specifier: 2.0.5
version: 2.0.5
@@ -77,7 +77,7 @@ importers:
version: 13.0.1
custom-electron-prompt:
specifier: 1.5.8
- version: 1.5.8(electron@31.3.1)
+ version: 1.5.8(electron@32.0.2)
dbus-next:
specifier: 0.10.2
version: 0.10.2
@@ -85,8 +85,8 @@ importers:
specifier: 7.1.0
version: 7.1.0
electron-debug:
- specifier: 4.0.0
- version: 4.0.0
+ specifier: 4.0.1
+ version: 4.0.1
electron-is:
specifier: 3.0.0
version: 3.0.0
@@ -100,8 +100,8 @@ importers:
specifier: 4.0.1
version: 4.0.1
electron-updater:
- specifier: 6.3.2
- version: 6.3.2
+ specifier: 6.3.4
+ version: 6.3.4
fast-average-color:
specifier: 9.4.0
version: 9.4.0
@@ -118,8 +118,8 @@ importers:
specifier: 9.0.5
version: 9.0.5
i18next:
- specifier: 23.12.2
- version: 23.12.2
+ specifier: 23.14.0
+ version: 23.14.0
keyboardevent-from-electron-accelerator:
specifier: 2.0.0
version: 2.0.0
@@ -146,16 +146,16 @@ importers:
version: https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6
solid-floating-ui:
specifier: 0.3.1
- version: 0.3.1(@floating-ui/dom@1.6.8)(solid-js@1.8.19)
+ version: 0.3.1(@floating-ui/dom@1.6.10)(solid-js@1.8.22)
solid-js:
- specifier: 1.8.19
- version: 1.8.19
+ specifier: 1.8.22
+ version: 1.8.22
solid-styled-components:
specifier: 0.28.5
- version: 0.28.5(solid-js@1.8.19)
+ version: 0.28.5(solid-js@1.8.22)
solid-transition-group:
specifier: 0.2.3
- version: 0.2.3(solid-js@1.8.19)
+ version: 0.2.3(solid-js@1.8.22)
ts-morph:
specifier: 23.0.0
version: 23.0.0
@@ -166,15 +166,15 @@ importers:
specifier: 2.3.0
version: 2.3.0
youtubei.js:
- specifier: 10.3.0
- version: 10.3.0
+ specifier: 10.4.0
+ version: 10.4.0
devDependencies:
'@playwright/test':
- specifier: 1.45.3
- version: 1.45.3
+ specifier: 1.47.0
+ version: 1.47.0
'@total-typescript/ts-reset':
- specifier: 0.5.1
- version: 0.5.1
+ specifier: 0.6.1
+ version: 0.6.1
'@types/color':
specifier: 3.0.6
version: 3.0.6
@@ -191,11 +191,11 @@ importers:
specifier: 7.5.8
version: 7.5.8
'@typescript-eslint/eslint-plugin':
- specifier: 8.0.0
- version: 8.0.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
+ specifier: 8.4.0
+ version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
'@typescript-eslint/parser':
- specifier: 8.0.0
- version: 8.0.0(eslint@8.57.0)(typescript@5.5.4)
+ specifier: 8.4.0
+ version: 8.4.0(eslint@8.57.0)(typescript@5.5.4)
bufferutil:
specifier: 4.0.8
version: 4.0.8
@@ -209,11 +209,11 @@ importers:
specifier: 5.1.0
version: 5.1.0
discord-api-types:
- specifier: 0.37.93
- version: 0.37.93
+ specifier: 0.37.100
+ version: 0.37.100
electron:
- specifier: 31.3.1
- version: 31.3.1
+ specifier: 32.0.2
+ version: 32.0.2
electron-builder:
specifier: 24.13.3
version: 24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
@@ -222,22 +222,22 @@ importers:
version: 3.2.0
electron-vite:
specifier: 2.3.0
- version: 2.3.0(vite@5.3.5(@types/node@20.12.5))
+ version: 2.3.0(vite@5.4.3(@types/node@20.12.5))
esbuild:
- specifier: 0.23.0
- version: 0.23.0
+ specifier: 0.23.1
+ version: 0.23.1
eslint:
specifier: 8.57.0
version: 8.57.0
eslint-import-resolver-exports:
specifier: 1.0.0-beta.5
- version: 1.0.0-beta.5(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0)
+ version: 1.0.0-beta.5(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0))(eslint@8.57.0)
eslint-import-resolver-typescript:
- specifier: 3.6.1
- version: 3.6.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
+ specifier: 3.6.3
+ version: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0)
eslint-plugin-import:
- specifier: 2.29.1
- version: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
+ specifier: 2.30.0
+ version: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
eslint-plugin-prettier:
specifier: 5.2.1
version: 5.2.1(eslint@8.57.0)(prettier@3.2.5)
@@ -248,11 +248,11 @@ importers:
specifier: 10.2.0
version: 10.2.0
playwright:
- specifier: 1.45.3
- version: 1.45.3
+ specifier: 1.47.0
+ version: 1.47.0
rollup:
- specifier: 4.19.2
- version: 4.19.2
+ specifier: 4.21.2
+ version: 4.21.2
typescript:
specifier: 5.5.4
version: 5.5.4
@@ -260,17 +260,17 @@ importers:
specifier: 6.0.4
version: 6.0.4
vite:
- specifier: 5.3.5
- version: 5.3.5(@types/node@20.12.5)
+ specifier: 5.4.3
+ version: 5.4.3(@types/node@20.12.5)
vite-plugin-inspect:
- specifier: 0.8.5
- version: 0.8.5(rollup@4.19.2)(vite@5.3.5(@types/node@20.12.5))
+ specifier: 0.8.7
+ version: 0.8.7(rollup@4.21.2)(vite@5.4.3(@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.8.19)(vite@5.3.5(@types/node@20.12.5))
+ version: 2.10.2(solid-js@1.8.22)(vite@5.4.3(@types/node@20.12.5))
ws:
specifier: 8.18.0
version: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
@@ -389,8 +389,8 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/runtime@7.25.0':
- resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==}
+ '@babel/runtime@7.25.6':
+ resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==}
engines: {node: '>=6.9.0'}
'@babel/template@7.24.7':
@@ -478,8 +478,8 @@ packages:
cpu: [ppc64]
os: [aix]
- '@esbuild/aix-ppc64@0.23.0':
- resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==}
+ '@esbuild/aix-ppc64@0.23.1':
+ resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
@@ -490,8 +490,8 @@ packages:
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.23.0':
- resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==}
+ '@esbuild/android-arm64@0.23.1':
+ resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
@@ -502,8 +502,8 @@ packages:
cpu: [arm]
os: [android]
- '@esbuild/android-arm@0.23.0':
- resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==}
+ '@esbuild/android-arm@0.23.1':
+ resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
@@ -514,8 +514,8 @@ packages:
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.23.0':
- resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==}
+ '@esbuild/android-x64@0.23.1':
+ resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
@@ -526,8 +526,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-arm64@0.23.0':
- resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==}
+ '@esbuild/darwin-arm64@0.23.1':
+ resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
@@ -538,8 +538,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@esbuild/darwin-x64@0.23.0':
- resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==}
+ '@esbuild/darwin-x64@0.23.1':
+ resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
@@ -550,8 +550,8 @@ packages:
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.23.0':
- resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==}
+ '@esbuild/freebsd-arm64@0.23.1':
+ resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
@@ -562,8 +562,8 @@ packages:
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.23.0':
- resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==}
+ '@esbuild/freebsd-x64@0.23.1':
+ resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
@@ -574,8 +574,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.23.0':
- resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==}
+ '@esbuild/linux-arm64@0.23.1':
+ resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
@@ -586,8 +586,8 @@ packages:
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.23.0':
- resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==}
+ '@esbuild/linux-arm@0.23.1':
+ resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
@@ -598,8 +598,8 @@ packages:
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.23.0':
- resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==}
+ '@esbuild/linux-ia32@0.23.1':
+ resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
@@ -610,8 +610,8 @@ packages:
cpu: [loong64]
os: [linux]
- '@esbuild/linux-loong64@0.23.0':
- resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==}
+ '@esbuild/linux-loong64@0.23.1':
+ resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
@@ -622,8 +622,8 @@ packages:
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-mips64el@0.23.0':
- resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==}
+ '@esbuild/linux-mips64el@0.23.1':
+ resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
@@ -634,8 +634,8 @@ packages:
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.23.0':
- resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==}
+ '@esbuild/linux-ppc64@0.23.1':
+ resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
@@ -646,8 +646,8 @@ packages:
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-riscv64@0.23.0':
- resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==}
+ '@esbuild/linux-riscv64@0.23.1':
+ resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
@@ -658,8 +658,8 @@ packages:
cpu: [s390x]
os: [linux]
- '@esbuild/linux-s390x@0.23.0':
- resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==}
+ '@esbuild/linux-s390x@0.23.1':
+ resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
@@ -670,8 +670,8 @@ packages:
cpu: [x64]
os: [linux]
- '@esbuild/linux-x64@0.23.0':
- resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==}
+ '@esbuild/linux-x64@0.23.1':
+ resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
@@ -682,14 +682,14 @@ packages:
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.23.0':
- resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==}
+ '@esbuild/netbsd-x64@0.23.1':
+ resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.23.0':
- resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==}
+ '@esbuild/openbsd-arm64@0.23.1':
+ resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
@@ -700,8 +700,8 @@ packages:
cpu: [x64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.23.0':
- resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==}
+ '@esbuild/openbsd-x64@0.23.1':
+ resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
@@ -712,8 +712,8 @@ packages:
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.23.0':
- resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==}
+ '@esbuild/sunos-x64@0.23.1':
+ resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
@@ -724,8 +724,8 @@ packages:
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.23.0':
- resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==}
+ '@esbuild/win32-arm64@0.23.1':
+ resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
@@ -736,8 +736,8 @@ packages:
cpu: [ia32]
os: [win32]
- '@esbuild/win32-ia32@0.23.0':
- resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==}
+ '@esbuild/win32-ia32@0.23.1':
+ resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
@@ -748,8 +748,8 @@ packages:
cpu: [x64]
os: [win32]
- '@esbuild/win32-x64@0.23.0':
- resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==}
+ '@esbuild/win32-x64@0.23.1':
+ resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -786,11 +786,11 @@ packages:
'@floating-ui/core@1.6.0':
resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==}
- '@floating-ui/dom@1.6.8':
- resolution: {integrity: sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==}
+ '@floating-ui/dom@1.6.10':
+ resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==}
- '@floating-ui/utils@0.2.5':
- resolution: {integrity: sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==}
+ '@floating-ui/utils@0.2.7':
+ resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==}
'@foobar404/wave@2.0.5':
resolution: {integrity: sha512-V/ydadtv5ObCw8aEg+Qy3YSq1eyinEWzJfRI43Ovmj7VmAvEdWAdL7MatoMbiIVYPATkNDVF7GOxX1xirxM9dA==}
@@ -860,6 +860,10 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ '@nolyfill/is-core-module@1.0.39':
+ resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
+ engines: {node: '>=12.4.0'}
+
'@nornagon/put@0.0.8':
resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}
engines: {node: '>=0.3.0'}
@@ -880,8 +884,8 @@ packages:
resolution: {integrity: sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- '@playwright/test@1.45.3':
- resolution: {integrity: sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==}
+ '@playwright/test@1.47.0':
+ resolution: {integrity: sha512-SgAdlSwYVpToI4e/IH19IHHWvoijAYH5hu2MWSXptRypLSnzj51PcGD+rsOXFayde4P9ZLi+loXVwArg6IUkCA==}
engines: {node: '>=18'}
hasBin: true
@@ -915,86 +919,89 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.19.2':
- resolution: {integrity: sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==}
+ '@rollup/rollup-android-arm-eabi@4.21.2':
+ resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.19.2':
- resolution: {integrity: sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==}
+ '@rollup/rollup-android-arm64@4.21.2':
+ resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.19.2':
- resolution: {integrity: sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==}
+ '@rollup/rollup-darwin-arm64@4.21.2':
+ resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.19.2':
- resolution: {integrity: sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==}
+ '@rollup/rollup-darwin-x64@4.21.2':
+ resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.19.2':
- resolution: {integrity: sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
+ resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.19.2':
- resolution: {integrity: sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==}
+ '@rollup/rollup-linux-arm-musleabihf@4.21.2':
+ resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.19.2':
- resolution: {integrity: sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==}
+ '@rollup/rollup-linux-arm64-gnu@4.21.2':
+ resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.19.2':
- resolution: {integrity: sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==}
+ '@rollup/rollup-linux-arm64-musl@4.21.2':
+ resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.19.2':
- resolution: {integrity: sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
+ resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.19.2':
- resolution: {integrity: sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==}
+ '@rollup/rollup-linux-riscv64-gnu@4.21.2':
+ resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.19.2':
- resolution: {integrity: sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==}
+ '@rollup/rollup-linux-s390x-gnu@4.21.2':
+ resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.19.2':
- resolution: {integrity: sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==}
+ '@rollup/rollup-linux-x64-gnu@4.21.2':
+ resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.19.2':
- resolution: {integrity: sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==}
+ '@rollup/rollup-linux-x64-musl@4.21.2':
+ resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.19.2':
- resolution: {integrity: sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==}
+ '@rollup/rollup-win32-arm64-msvc@4.21.2':
+ resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.19.2':
- resolution: {integrity: sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==}
+ '@rollup/rollup-win32-ia32-msvc@4.21.2':
+ resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.19.2':
- resolution: {integrity: sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==}
+ '@rollup/rollup-win32-x64-msvc@4.21.2':
+ resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==}
cpu: [x64]
os: [win32]
+ '@rtsao/scc@1.1.0':
+ resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+
'@sapphire/async-queue@1.5.3':
resolution: {integrity: sha512-x7zadcfJGxFka1Q3f8gCts1F0xMwCKbZweM85xECGI0hBTeIZJGGCrHgLggihBoprlQ/hBmDR5LKfIPqnmHM3w==}
engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
@@ -1037,8 +1044,8 @@ packages:
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'}
- '@total-typescript/ts-reset@0.5.1':
- resolution: {integrity: sha512-AqlrT8YA1o7Ff5wPfMOL0pvL+1X+sw60NN6CcOCqs658emD6RfiXhF7Gu9QcfKBH7ELY2nInLhKSCWVoNL70MQ==}
+ '@total-typescript/ts-reset@0.6.1':
+ resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==}
'@ts-morph/common@0.24.0':
resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==}
@@ -1136,8 +1143,8 @@ packages:
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
- '@typescript-eslint/eslint-plugin@8.0.0':
- resolution: {integrity: sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==}
+ '@typescript-eslint/eslint-plugin@8.4.0':
+ resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
@@ -1147,8 +1154,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/parser@8.0.0':
- resolution: {integrity: sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==}
+ '@typescript-eslint/parser@8.4.0':
+ resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -1157,12 +1164,12 @@ packages:
typescript:
optional: true
- '@typescript-eslint/scope-manager@8.0.0':
- resolution: {integrity: sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==}
+ '@typescript-eslint/scope-manager@8.4.0':
+ resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@8.0.0':
- resolution: {integrity: sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==}
+ '@typescript-eslint/type-utils@8.4.0':
+ resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -1170,12 +1177,12 @@ packages:
typescript:
optional: true
- '@typescript-eslint/types@8.0.0':
- resolution: {integrity: sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==}
+ '@typescript-eslint/types@8.4.0':
+ resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.0.0':
- resolution: {integrity: sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==}
+ '@typescript-eslint/typescript-estree@8.4.0':
+ resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -1183,14 +1190,14 @@ packages:
typescript:
optional: true
- '@typescript-eslint/utils@8.0.0':
- resolution: {integrity: sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==}
+ '@typescript-eslint/utils@8.4.0':
+ resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- '@typescript-eslint/visitor-keys@8.0.0':
- resolution: {integrity: sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==}
+ '@typescript-eslint/visitor-keys@8.4.0':
+ resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.2.0':
@@ -1321,19 +1328,16 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- array-buffer-byte-length@1.0.0:
- resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
-
- array-includes@3.1.7:
- resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
+ array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
engines: {node: '>= 0.4'}
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
+ array-includes@3.1.8:
+ resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
+ engines: {node: '>= 0.4'}
- array.prototype.findlastindex@1.2.3:
- resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
+ array.prototype.findlastindex@1.2.5:
+ resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
engines: {node: '>= 0.4'}
array.prototype.flat@1.3.2:
@@ -1344,8 +1348,8 @@ packages:
resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
engines: {node: '>= 0.4'}
- arraybuffer.prototype.slice@1.0.2:
- resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
+ arraybuffer.prototype.slice@1.0.3:
+ resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
engines: {node: '>= 0.4'}
arrify@1.0.1:
@@ -1380,8 +1384,8 @@ packages:
atomically@2.0.3:
resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==}
- available-typed-arrays@1.0.5:
- resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
babel-plugin-jsx-dom-expressions@0.37.16:
@@ -1498,8 +1502,9 @@ packages:
resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
engines: {node: '>=8'}
- call-bind@1.0.5:
- resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
+ call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
@@ -1684,6 +1689,18 @@ packages:
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
engines: {node: '>= 12'}
+ data-view-buffer@1.0.1:
+ resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-length@1.0.1:
+ resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-offset@1.0.0:
+ resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
+ engines: {node: '>= 0.4'}
+
dbus-next@0.10.2:
resolution: {integrity: sha512-kLNQoadPstLgKKGIXKrnRsMgtAK/o+ix3ZmcfTfvBHzghiO9yHXpoKImGnB50EXwnfSFaSAullW/7UrSkAISSQ==}
@@ -1707,8 +1724,8 @@ packages:
supports-color:
optional: true
- debug@4.3.5:
- resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
+ debug@4.3.6:
+ resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -1763,8 +1780,8 @@ packages:
resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
engines: {node: '>=10'}
- define-data-property@1.1.1:
- resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
define-lazy-prop@3.0.0:
@@ -1798,12 +1815,12 @@ packages:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
+ discord-api-types@0.37.100:
+ resolution: {integrity: sha512-a8zvUI0GYYwDtScfRd/TtaNBDTXwP5DiDVX7K5OmE+DRT57gBqKnwtOC5Ol8z0mRW8KQfETIgiB8U0YZ9NXiCA==}
+
discord-api-types@0.37.83:
resolution: {integrity: sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==}
- discord-api-types@0.37.93:
- resolution: {integrity: sha512-M5jn0x3bcXk8EI2c6F6V6LeOWq10B/cJf+YJSyqNmg7z4bdXK+Z7g9zGJwHS0h9Bfgs0nun2LQISFOzwck7G9A==}
-
dmg-builder@24.13.3:
resolution: {integrity: sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==}
@@ -1870,8 +1887,8 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
- electron-debug@4.0.0:
- resolution: {integrity: sha512-GuDHlug+EGBcZezEFzwXyal/YI28rxtSzRPNfRfc+BQ3siEkqy2voN5bI1c0cGEloK40mV/LzRMaiI84KCNvqg==}
+ electron-debug@4.0.1:
+ resolution: {integrity: sha512-PdUG3SvcK70P05z99PFLUzn0+lPZl5c4quG1bXI7OtPaXxidwh8UONcdRLsr+6J9kf5y1FycJD5nBd80dYrcsA==}
engines: {node: '>=18'}
electron-devtools-installer@3.2.0:
@@ -1909,8 +1926,8 @@ packages:
electron-unhandled@4.0.1:
resolution: {integrity: sha512-6BsLnBg+i96eUnbaIFZyYdyfNX3f80/Nlfqy34YEMxXT9JP3ddNsNnUeiOF8ezN4+et4t4D37gjghKTP0V3jyw==}
- electron-updater@6.3.2:
- resolution: {integrity: sha512-bEpuZ1IRnMtvZZaWeYi9ocX90Cnk+/impZ/08r6GQkfOMqECtKC2IjvxHcDk2VpWO8QZzK0+MUNaBiO81CGvQQ==}
+ electron-updater@6.3.4:
+ resolution: {integrity: sha512-uZUo7p1Y53G4tl6Cgw07X1yF8Jlz6zhaL7CQJDZ1fVVkOaBfE2cWtx80avwDVi8jHp+I/FWawrMgTAeCCNIfAg==}
electron-vite@2.3.0:
resolution: {integrity: sha512-lsN2FymgJlp4k6MrcsphGqZQ9fKRdJKasoaiwIrAewN1tapYI/KINLdfEL7n10LuF0pPSNf/IqjzZbB5VINctg==}
@@ -1923,8 +1940,8 @@ packages:
'@swc/core':
optional: true
- electron@31.3.1:
- resolution: {integrity: sha512-9fiuWlRhBfygtcT+auRd/WdBK/f8LZZcrpx0RjpXhH2DPTP/PfnkC4JB1PW55qCbGbh4wAgkYbf4ExIag8oGCA==}
+ electron@32.0.2:
+ resolution: {integrity: sha512-nmZblq8wW3HZ17MAyaUuiMI9Mb0Cgc7UR3To85h/rVopbfyF5s34NxtK4gvyRfYPxpDGP4k+HoQIPniPPrdE3w==}
engines: {node: '>= 12.20.55'}
hasBin: true
@@ -1969,15 +1986,27 @@ packages:
error-stack-parser-es@0.1.5:
resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==}
- es-abstract@1.22.3:
- resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
+ es-abstract@1.23.3:
+ resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
+ engines: {node: '>= 0.4'}
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
es-get-iterator@1.1.3:
resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
- es-set-tostringtag@2.0.2:
- resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
+ es-object-atoms@1.0.0:
+ resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.0.3:
+ resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
engines: {node: '>= 0.4'}
es-shim-unscopables@1.0.2:
@@ -1995,8 +2024,8 @@ packages:
engines: {node: '>=12'}
hasBin: true
- esbuild@0.23.0:
- resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==}
+ esbuild@0.23.1:
+ resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
engines: {node: '>=18'}
hasBin: true
@@ -2025,15 +2054,21 @@ packages:
eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
- eslint-import-resolver-typescript@3.6.1:
- resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
+ eslint-import-resolver-typescript@3.6.3:
+ resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
eslint: '*'
eslint-plugin-import: '*'
+ eslint-plugin-import-x: '*'
+ peerDependenciesMeta:
+ eslint-plugin-import:
+ optional: true
+ eslint-plugin-import-x:
+ optional: true
- eslint-module-utils@2.8.0:
- resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
+ eslint-module-utils@2.11.0:
+ resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
@@ -2053,8 +2088,8 @@ packages:
eslint-import-resolver-webpack:
optional: true
- eslint-plugin-import@2.29.1:
- resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
+ eslint-plugin-import@2.30.0:
+ resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
@@ -2284,8 +2319,9 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- get-intrinsic@1.2.2:
- resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
get-stream@5.2.0:
resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
@@ -2295,12 +2331,12 @@ packages:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
- get-symbol-description@1.0.0:
- resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
+ get-symbol-description@1.0.2:
+ resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
engines: {node: '>= 0.4'}
- get-tsconfig@4.7.2:
- resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==}
+ get-tsconfig@4.8.0:
+ resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==}
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -2339,10 +2375,6 @@ packages:
resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
engines: {node: '>= 0.4'}
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
globby@13.2.2:
resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -2380,23 +2412,23 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- has-property-descriptors@1.0.1:
- resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
- has-proto@1.0.1:
- resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
engines: {node: '>= 0.4'}
has-symbols@1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
- has-tostringtag@1.0.0:
- resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
- hasown@2.0.0:
- resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
he@1.2.0:
@@ -2451,8 +2483,8 @@ packages:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
- i18next@23.12.2:
- resolution: {integrity: sha512-XIeh5V+bi8SJSWGL3jqbTEBW5oD6rbP5L+E7dVQh1MNTxxYef0x15rhJVcRb7oiuq4jLtgy2SD8eFlf6P2cmqg==}
+ i18next@23.14.0:
+ resolution: {integrity: sha512-Y5GL4OdA8IU2geRrt2+Uc1iIhsjICdHZzT9tNwQ3TVqdNzgxHToGCKf/TPRP80vTCAP6svg2WbbJL+Gx5MFQVA==}
iconv-corefoundation@1.1.7:
resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==}
@@ -2503,8 +2535,8 @@ packages:
ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- internal-slot@1.0.6:
- resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
+ internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
engines: {node: '>= 0.4'}
ip-address@9.0.5:
@@ -2515,8 +2547,9 @@ packages:
resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
engines: {node: '>= 0.4'}
- is-array-buffer@3.0.2:
- resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
+ is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
@@ -2531,6 +2564,9 @@ packages:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
+ is-bun-module@1.1.0:
+ resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==}
+
is-callable@1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
@@ -2539,8 +2575,13 @@ packages:
resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
hasBin: true
- is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ is-core-module@2.15.1:
+ resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+ engines: {node: '>= 0.4'}
+
+ is-data-view@1.0.1:
+ resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
+ engines: {node: '>= 0.4'}
is-date-object@1.0.5:
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
@@ -2579,8 +2620,8 @@ packages:
is-map@2.0.2:
resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
- is-negative-zero@2.0.2:
- resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
+ is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
is-number-object@1.0.7:
@@ -2618,8 +2659,9 @@ packages:
is-set@2.0.2:
resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
- is-shared-array-buffer@1.0.2:
- resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
+ is-shared-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ engines: {node: '>= 0.4'}
is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
@@ -2633,8 +2675,8 @@ packages:
resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
engines: {node: '>= 0.4'}
- is-typed-array@1.1.12:
- resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
+ is-typed-array@1.1.13:
+ resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
engines: {node: '>= 0.4'}
is-url@1.2.4:
@@ -3100,15 +3142,16 @@ packages:
resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
engines: {node: '>= 0.4'}
- object.fromentries@2.0.7:
- resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
+ object.fromentries@2.0.8:
+ resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
engines: {node: '>= 0.4'}
- object.groupby@1.0.1:
- resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
+ object.groupby@1.0.3:
+ resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
+ engines: {node: '>= 0.4'}
- object.values@1.1.7:
- resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
+ object.values@1.2.0:
+ resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
engines: {node: '>= 0.4'}
on-headers@1.0.2:
@@ -3234,13 +3277,13 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
- playwright-core@1.45.3:
- resolution: {integrity: sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==}
+ playwright-core@1.47.0:
+ resolution: {integrity: sha512-1DyHT8OqkcfCkYUD9zzUTfg7EfTd+6a8MkD/NWOvjo0u/SCNd5YmY/lJwFvUZOxJbWNds+ei7ic2+R/cRz/PDg==}
engines: {node: '>=18'}
hasBin: true
- playwright@1.45.3:
- resolution: {integrity: sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==}
+ playwright@1.47.0:
+ resolution: {integrity: sha512-jOWiRq2pdNAX/mwLiwFYnPHpEZ4rM+fRSQpRHwEwZlP2PUANvL3+aJOF/bvISMhFD30rqMxUB4RJx9aQbfh4Ww==}
engines: {node: '>=18'}
hasBin: true
@@ -3248,8 +3291,12 @@ packages:
resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
engines: {node: '>=10.4.0'}
- postcss@8.4.39:
- resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==}
+ possible-typed-array-names@1.0.0:
+ resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+ engines: {node: '>= 0.4'}
+
+ postcss@8.4.44:
+ resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==}
engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1:
@@ -3337,8 +3384,8 @@ packages:
regenerator-runtime@0.14.1:
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
- regexp.prototype.flags@1.5.1:
- resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
+ regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
engines: {node: '>= 0.4'}
registry-auth-token@3.3.2:
@@ -3394,8 +3441,8 @@ packages:
resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==}
engines: {node: '>=8.0'}
- rollup@4.19.2:
- resolution: {integrity: sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==}
+ rollup@4.21.2:
+ resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -3406,8 +3453,8 @@ packages:
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- safe-array-concat@1.0.1:
- resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
+ safe-array-concat@1.1.2:
+ resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
engines: {node: '>=0.4'}
safe-buffer@5.1.2:
@@ -3416,8 +3463,8 @@ packages:
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- safe-regex-test@1.0.2:
- resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==}
+ safe-regex-test@1.0.3:
+ resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
engines: {node: '>= 0.4'}
safer-buffer@2.1.2:
@@ -3477,8 +3524,8 @@ packages:
engines: {node: '>= 14'}
hasBin: true
- set-function-length@1.1.1:
- resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==}
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
set-function-name@2.0.1:
@@ -3522,10 +3569,6 @@ packages:
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
engines: {node: '>= 10'}
- slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
-
slash@4.0.0:
resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
engines: {node: '>=12'}
@@ -3553,8 +3596,8 @@ packages:
'@floating-ui/dom': ^1.5
solid-js: ^1.8
- solid-js@1.8.19:
- resolution: {integrity: sha512-h8z/TvTQYsf894LM9Iau/ZW2iAKrCzAWDwjPhMcXnonmW1OIIihc28wp82b1wwei1p81fH5+gnfNOe8RzLbDRQ==}
+ solid-js@1.8.22:
+ resolution: {integrity: sha512-VBzN5j+9Y4rqIKEnK301aBk+S7fvFSTs9ljg+YEdFxjNjH0hkjXPiQRcws9tE5fUzMznSS6KToL5hwMfHDgpLA==}
solid-refresh@0.6.3:
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
@@ -3624,15 +3667,16 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
- string.prototype.trim@1.2.8:
- resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
+ string.prototype.trim@1.2.9:
+ resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
engines: {node: '>= 0.4'}
- string.prototype.trimend@1.0.7:
- resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
+ string.prototype.trimend@1.0.8:
+ resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
- string.prototype.trimstart@1.0.7:
- resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
+ string.prototype.trimstart@1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
string_decoder@1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
@@ -3783,20 +3827,21 @@ packages:
resolution: {integrity: sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==}
engines: {node: '>=16'}
- typed-array-buffer@1.0.0:
- resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
+ typed-array-buffer@1.0.2:
+ resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
engines: {node: '>= 0.4'}
- typed-array-byte-length@1.0.0:
- resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
+ typed-array-byte-length@1.0.1:
+ resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
engines: {node: '>= 0.4'}
- typed-array-byte-offset@1.0.0:
- resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
+ typed-array-byte-offset@1.0.2:
+ resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
engines: {node: '>= 0.4'}
- typed-array-length@1.0.4:
- resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
+ typed-array-length@1.0.6:
+ resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
+ engines: {node: '>= 0.4'}
typescript@5.5.4:
resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
@@ -3883,8 +3928,8 @@ packages:
resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==}
engines: {node: '>=0.6.0'}
- vite-plugin-inspect@0.8.5:
- resolution: {integrity: sha512-JvTUqsP1JNDw0lMZ5Z/r5cSj81VK2B7884LO1DC3GMBhdcjcsAnJjdWq7bzQL01Xbh+v60d3lju3g+z7eAtNew==}
+ vite-plugin-inspect@0.8.7:
+ resolution: {integrity: sha512-/XXou3MVc13A5O9/2Nd6xczjrUwt7ZyI9h8pTnUMkr5SshLcb0PJUOVq2V+XVkdeU4njsqAtmK87THZuO2coGA==}
engines: {node: '>=14'}
peerDependencies:
'@nuxt/kit': '*'
@@ -3906,8 +3951,8 @@ packages:
'@testing-library/jest-dom':
optional: true
- vite@5.3.5:
- resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==}
+ vite@5.4.3:
+ resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -3915,6 +3960,7 @@ packages:
less: '*'
lightningcss: ^1.21.0
sass: '*'
+ sass-embedded: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
@@ -3927,6 +3973,8 @@ packages:
optional: true
sass:
optional: true
+ sass-embedded:
+ optional: true
stylus:
optional: true
sugarss:
@@ -3962,8 +4010,8 @@ packages:
which-collection@1.0.1:
resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
- which-typed-array@1.1.13:
- resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==}
+ which-typed-array@1.1.15:
+ resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
engines: {node: '>= 0.4'}
which@2.0.2:
@@ -4050,8 +4098,8 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- youtubei.js@10.3.0:
- resolution: {integrity: sha512-tLmeJCECK2xF2hZZtF2nEqirdKVNLFSDpa0LhTaXY3tngtL7doQXyy7M2CLueramDTlmCnFaW+rctHirTPFaRQ==}
+ youtubei.js@10.4.0:
+ resolution: {integrity: sha512-FZahkkg5ROyH/FgJ4czy/xDNkqHbJTCUQzumQlnR+2Q7m6HaWghAFWWJUTcexemGuu7t/5EuyQz98eBgKQRMog==}
zip-stream@4.1.1:
resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==}
@@ -4092,7 +4140,7 @@ snapshots:
'@babel/traverse': 7.24.7
'@babel/types': 7.24.7
convert-source-map: 2.0.0
- debug: 4.3.5
+ debug: 4.3.6
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -4194,7 +4242,7 @@ snapshots:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.24.7
- '@babel/runtime@7.25.0':
+ '@babel/runtime@7.25.6':
dependencies:
regenerator-runtime: 0.14.1
@@ -4214,7 +4262,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.24.7
'@babel/parser': 7.24.7
'@babel/types': 7.24.7
- debug: 4.3.5
+ debug: 4.3.6
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -4229,16 +4277,16 @@ snapshots:
dependencies:
'@cliqz/adblocker-extended-selectors': 1.27.6
- '@cliqz/adblocker-electron-preload@1.27.1(electron@31.3.1)':
+ '@cliqz/adblocker-electron-preload@1.27.1(electron@32.0.2)':
dependencies:
'@cliqz/adblocker-content': 1.27.6
- electron: 31.3.1
+ electron: 32.0.2
- '@cliqz/adblocker-electron@1.27.1(electron@31.3.1)':
+ '@cliqz/adblocker-electron@1.27.1(electron@32.0.2)':
dependencies:
'@cliqz/adblocker': 1.27.6
- '@cliqz/adblocker-electron-preload': 1.27.1(electron@31.3.1)
- electron: 31.3.1
+ '@cliqz/adblocker-electron-preload': 1.27.1(electron@32.0.2)
+ electron: 32.0.2
tldts-experimental: 6.1.2
'@cliqz/adblocker-extended-selectors@1.27.6': {}
@@ -4287,7 +4335,7 @@ snapshots:
'@electron/get@2.0.3':
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
env-paths: 2.2.1
fs-extra: 8.1.0
got: 11.8.6
@@ -4301,7 +4349,7 @@ snapshots:
'@electron/notarize@2.2.1':
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
fs-extra: 9.1.0
promise-retry: 2.0.1
transitivePeerDependencies:
@@ -4310,7 +4358,7 @@ snapshots:
'@electron/osx-sign@1.0.5':
dependencies:
compare-version: 0.1.2
- debug: 4.3.5
+ debug: 4.3.6
fs-extra: 10.1.0
isbinaryfile: 4.0.10
minimist: 1.2.8
@@ -4318,15 +4366,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@electron/remote@2.1.2(electron@31.3.1)':
+ '@electron/remote@2.1.2(electron@32.0.2)':
dependencies:
- electron: 31.3.1
+ electron: 32.0.2
'@electron/universal@2.0.1':
dependencies:
'@electron/asar': 3.2.8
'@malept/cross-spawn-promise': 2.0.0
- debug: 4.3.5
+ debug: 4.3.6
dir-compare: 4.2.0
fs-extra: 11.2.0
minimatch: 9.0.4
@@ -4337,142 +4385,142 @@ snapshots:
'@esbuild/aix-ppc64@0.21.5':
optional: true
- '@esbuild/aix-ppc64@0.23.0':
+ '@esbuild/aix-ppc64@0.23.1':
optional: true
'@esbuild/android-arm64@0.21.5':
optional: true
- '@esbuild/android-arm64@0.23.0':
+ '@esbuild/android-arm64@0.23.1':
optional: true
'@esbuild/android-arm@0.21.5':
optional: true
- '@esbuild/android-arm@0.23.0':
+ '@esbuild/android-arm@0.23.1':
optional: true
'@esbuild/android-x64@0.21.5':
optional: true
- '@esbuild/android-x64@0.23.0':
+ '@esbuild/android-x64@0.23.1':
optional: true
'@esbuild/darwin-arm64@0.21.5':
optional: true
- '@esbuild/darwin-arm64@0.23.0':
+ '@esbuild/darwin-arm64@0.23.1':
optional: true
'@esbuild/darwin-x64@0.21.5':
optional: true
- '@esbuild/darwin-x64@0.23.0':
+ '@esbuild/darwin-x64@0.23.1':
optional: true
'@esbuild/freebsd-arm64@0.21.5':
optional: true
- '@esbuild/freebsd-arm64@0.23.0':
+ '@esbuild/freebsd-arm64@0.23.1':
optional: true
'@esbuild/freebsd-x64@0.21.5':
optional: true
- '@esbuild/freebsd-x64@0.23.0':
+ '@esbuild/freebsd-x64@0.23.1':
optional: true
'@esbuild/linux-arm64@0.21.5':
optional: true
- '@esbuild/linux-arm64@0.23.0':
+ '@esbuild/linux-arm64@0.23.1':
optional: true
'@esbuild/linux-arm@0.21.5':
optional: true
- '@esbuild/linux-arm@0.23.0':
+ '@esbuild/linux-arm@0.23.1':
optional: true
'@esbuild/linux-ia32@0.21.5':
optional: true
- '@esbuild/linux-ia32@0.23.0':
+ '@esbuild/linux-ia32@0.23.1':
optional: true
'@esbuild/linux-loong64@0.21.5':
optional: true
- '@esbuild/linux-loong64@0.23.0':
+ '@esbuild/linux-loong64@0.23.1':
optional: true
'@esbuild/linux-mips64el@0.21.5':
optional: true
- '@esbuild/linux-mips64el@0.23.0':
+ '@esbuild/linux-mips64el@0.23.1':
optional: true
'@esbuild/linux-ppc64@0.21.5':
optional: true
- '@esbuild/linux-ppc64@0.23.0':
+ '@esbuild/linux-ppc64@0.23.1':
optional: true
'@esbuild/linux-riscv64@0.21.5':
optional: true
- '@esbuild/linux-riscv64@0.23.0':
+ '@esbuild/linux-riscv64@0.23.1':
optional: true
'@esbuild/linux-s390x@0.21.5':
optional: true
- '@esbuild/linux-s390x@0.23.0':
+ '@esbuild/linux-s390x@0.23.1':
optional: true
'@esbuild/linux-x64@0.21.5':
optional: true
- '@esbuild/linux-x64@0.23.0':
+ '@esbuild/linux-x64@0.23.1':
optional: true
'@esbuild/netbsd-x64@0.21.5':
optional: true
- '@esbuild/netbsd-x64@0.23.0':
+ '@esbuild/netbsd-x64@0.23.1':
optional: true
- '@esbuild/openbsd-arm64@0.23.0':
+ '@esbuild/openbsd-arm64@0.23.1':
optional: true
'@esbuild/openbsd-x64@0.21.5':
optional: true
- '@esbuild/openbsd-x64@0.23.0':
+ '@esbuild/openbsd-x64@0.23.1':
optional: true
'@esbuild/sunos-x64@0.21.5':
optional: true
- '@esbuild/sunos-x64@0.23.0':
+ '@esbuild/sunos-x64@0.23.1':
optional: true
'@esbuild/win32-arm64@0.21.5':
optional: true
- '@esbuild/win32-arm64@0.23.0':
+ '@esbuild/win32-arm64@0.23.1':
optional: true
'@esbuild/win32-ia32@0.21.5':
optional: true
- '@esbuild/win32-ia32@0.23.0':
+ '@esbuild/win32-ia32@0.23.1':
optional: true
'@esbuild/win32-x64@0.21.5':
optional: true
- '@esbuild/win32-x64@0.23.0':
+ '@esbuild/win32-x64@0.23.1':
optional: true
'@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
@@ -4485,7 +4533,7 @@ snapshots:
'@eslint/eslintrc@2.1.4':
dependencies:
ajv: 6.12.6
- debug: 4.3.5
+ debug: 4.3.6
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
@@ -4510,21 +4558,21 @@ snapshots:
'@floating-ui/core@1.6.0':
dependencies:
- '@floating-ui/utils': 0.2.5
+ '@floating-ui/utils': 0.2.7
- '@floating-ui/dom@1.6.8':
+ '@floating-ui/dom@1.6.10':
dependencies:
'@floating-ui/core': 1.6.0
- '@floating-ui/utils': 0.2.5
+ '@floating-ui/utils': 0.2.7
- '@floating-ui/utils@0.2.5': {}
+ '@floating-ui/utils@0.2.7': {}
'@foobar404/wave@2.0.5': {}
'@humanwhocodes/config-array@0.11.14':
dependencies:
'@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.5
+ debug: 4.3.6
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -4578,7 +4626,7 @@ snapshots:
'@malept/flatpak-bundler@0.4.0':
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
fs-extra: 9.1.0
lodash: 4.17.21
tmp-promise: 3.0.3
@@ -4599,6 +4647,8 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.16.0
+ '@nolyfill/is-core-module@1.0.39': {}
+
'@nornagon/put@0.0.8': {}
'@npmcli/agent@2.2.2':
@@ -4620,9 +4670,9 @@ snapshots:
'@pkgr/core@0.1.0': {}
- '@playwright/test@1.45.3':
+ '@playwright/test@1.47.0':
dependencies:
- playwright: 1.45.3
+ playwright: 1.47.0
'@polka/url@1.0.0-next.24': {}
@@ -4643,62 +4693,64 @@ snapshots:
'@remusao/trie@1.4.1': {}
- '@rollup/pluginutils@5.1.0(rollup@4.19.2)':
+ '@rollup/pluginutils@5.1.0(rollup@4.21.2)':
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 4.19.2
+ rollup: 4.21.2
- '@rollup/rollup-android-arm-eabi@4.19.2':
+ '@rollup/rollup-android-arm-eabi@4.21.2':
optional: true
- '@rollup/rollup-android-arm64@4.19.2':
+ '@rollup/rollup-android-arm64@4.21.2':
optional: true
- '@rollup/rollup-darwin-arm64@4.19.2':
+ '@rollup/rollup-darwin-arm64@4.21.2':
optional: true
- '@rollup/rollup-darwin-x64@4.19.2':
+ '@rollup/rollup-darwin-x64@4.21.2':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.19.2':
+ '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.19.2':
+ '@rollup/rollup-linux-arm-musleabihf@4.21.2':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.19.2':
+ '@rollup/rollup-linux-arm64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.19.2':
+ '@rollup/rollup-linux-arm64-musl@4.21.2':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.19.2':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.19.2':
+ '@rollup/rollup-linux-riscv64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.19.2':
+ '@rollup/rollup-linux-s390x-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.19.2':
+ '@rollup/rollup-linux-x64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-x64-musl@4.19.2':
+ '@rollup/rollup-linux-x64-musl@4.21.2':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.19.2':
+ '@rollup/rollup-win32-arm64-msvc@4.21.2':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.19.2':
+ '@rollup/rollup-win32-ia32-msvc@4.21.2':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.19.2':
+ '@rollup/rollup-win32-x64-msvc@4.21.2':
optional: true
+ '@rtsao/scc@1.1.0': {}
+
'@sapphire/async-queue@1.5.3': {}
'@sapphire/snowflake@3.5.3': {}
@@ -4712,18 +4764,18 @@ snapshots:
'@skyra/jaro-winkler@1.1.1': {}
- '@solid-primitives/refs@1.0.6(solid-js@1.8.19)':
+ '@solid-primitives/refs@1.0.6(solid-js@1.8.22)':
dependencies:
- '@solid-primitives/utils': 6.2.2(solid-js@1.8.19)
- solid-js: 1.8.19
+ '@solid-primitives/utils': 6.2.2(solid-js@1.8.22)
+ solid-js: 1.8.22
- '@solid-primitives/transition-group@1.0.4(solid-js@1.8.19)':
+ '@solid-primitives/transition-group@1.0.4(solid-js@1.8.22)':
dependencies:
- solid-js: 1.8.19
+ solid-js: 1.8.22
- '@solid-primitives/utils@6.2.2(solid-js@1.8.19)':
+ '@solid-primitives/utils@6.2.2(solid-js@1.8.22)':
dependencies:
- solid-js: 1.8.19
+ solid-js: 1.8.22
'@szmarczak/http-timer@4.0.6':
dependencies:
@@ -4731,7 +4783,7 @@ snapshots:
'@tootallnate/once@2.0.0': {}
- '@total-typescript/ts-reset@0.5.1': {}
+ '@total-typescript/ts-reset@0.6.1': {}
'@ts-morph/common@0.24.0':
dependencies:
@@ -4789,7 +4841,7 @@ snapshots:
'@types/electron-localshortcut@3.1.3':
dependencies:
- electron: 31.3.1
+ electron: 32.0.2
transitivePeerDependencies:
- supports-color
@@ -4851,14 +4903,14 @@ snapshots:
'@types/node': 20.12.5
optional: true
- '@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
'@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 8.0.0(eslint@8.57.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/type-utils': 8.0.0(eslint@8.57.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.0.0
+ '@typescript-eslint/parser': 8.4.0(eslint@8.57.0)(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/type-utils': 8.4.0(eslint@8.57.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.4.0(eslint@8.57.0)(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.4.0
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.3.1
@@ -4869,29 +4921,29 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.0.0
- debug: 4.3.5
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.4.0
+ debug: 4.3.6
eslint: 8.57.0
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.0.0':
+ '@typescript-eslint/scope-manager@8.4.0':
dependencies:
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/visitor-keys': 8.0.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/visitor-keys': 8.4.0
- '@typescript-eslint/type-utils@8.0.0(eslint@8.57.0)(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@8.4.0(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.4)
- debug: 4.3.5
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.4.0(eslint@8.57.0)(typescript@5.5.4)
+ debug: 4.3.6
ts-api-utils: 1.3.0(typescript@5.5.4)
optionalDependencies:
typescript: 5.5.4
@@ -4899,14 +4951,14 @@ snapshots:
- eslint
- supports-color
- '@typescript-eslint/types@8.0.0': {}
+ '@typescript-eslint/types@8.4.0': {}
- '@typescript-eslint/typescript-estree@8.0.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/visitor-keys': 8.0.0
- debug: 4.3.5
- globby: 11.1.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/visitor-keys': 8.4.0
+ debug: 4.3.6
+ fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.4
semver: 7.6.3
@@ -4916,20 +4968,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.0.0(eslint@8.57.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.4.0(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
eslint: 8.57.0
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/visitor-keys@8.0.0':
+ '@typescript-eslint/visitor-keys@8.4.0':
dependencies:
- '@typescript-eslint/types': 8.0.0
+ '@typescript-eslint/types': 8.4.0
eslint-visitor-keys: 3.4.3
'@ungap/structured-clone@1.2.0': {}
@@ -4940,7 +4992,7 @@ snapshots:
dependencies:
'@discordjs/rest': 2.3.0
'@vladfrangu/async_event_emitter': 2.4.4
- discord-api-types: 0.37.93
+ discord-api-types: 0.37.100
ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
transitivePeerDependencies:
- bufferutil
@@ -4965,13 +5017,13 @@ snapshots:
agent-base@6.0.2:
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
transitivePeerDependencies:
- supports-color
agent-base@7.1.1:
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
transitivePeerDependencies:
- supports-color
@@ -5047,7 +5099,7 @@ snapshots:
builder-util: 24.13.1
builder-util-runtime: 9.2.4
chromium-pickle-js: 0.2.0
- debug: 4.3.5
+ debug: 4.3.6
dmg-builder: 24.13.3(electron-builder-squirrel-windows@24.13.3)
ejs: 3.1.9
electron-builder-squirrel-windows: 24.13.3(dmg-builder@24.13.3)
@@ -5110,52 +5162,53 @@ snapshots:
argparse@2.0.1: {}
- array-buffer-byte-length@1.0.0:
+ array-buffer-byte-length@1.0.1:
dependencies:
- call-bind: 1.0.5
- is-array-buffer: 3.0.2
+ call-bind: 1.0.7
+ is-array-buffer: 3.0.4
- array-includes@3.1.7:
+ array-includes@3.1.8:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
- get-intrinsic: 1.2.2
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.4
is-string: 1.0.7
- array-union@2.1.0: {}
-
- array.prototype.findlastindex@1.2.3:
+ array.prototype.findlastindex@1.2.5:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
es-shim-unscopables: 1.0.2
- get-intrinsic: 1.2.2
array.prototype.flat@1.3.2:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.23.3
es-shim-unscopables: 1.0.2
array.prototype.flatmap@1.3.2:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.23.3
es-shim-unscopables: 1.0.2
- arraybuffer.prototype.slice@1.0.2:
+ arraybuffer.prototype.slice@1.0.3:
dependencies:
- array-buffer-byte-length: 1.0.0
- call-bind: 1.0.5
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
- get-intrinsic: 1.2.2
- is-array-buffer: 3.0.2
- is-shared-array-buffer: 1.0.2
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ is-array-buffer: 3.0.4
+ is-shared-array-buffer: 1.0.3
arrify@1.0.1: {}
@@ -5182,7 +5235,9 @@ snapshots:
stubborn-fs: 1.2.5
when-exit: 2.1.2
- available-typed-arrays@1.0.5: {}
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.0.0
babel-plugin-jsx-dom-expressions@0.37.16(@babel/core@7.24.7):
dependencies:
@@ -5274,14 +5329,14 @@ snapshots:
builder-util-runtime@9.2.4:
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
sax: 1.3.0
transitivePeerDependencies:
- supports-color
builder-util-runtime@9.2.5:
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
sax: 1.3.0
transitivePeerDependencies:
- supports-color
@@ -5295,7 +5350,7 @@ snapshots:
builder-util-runtime: 9.2.4
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.5
+ debug: 4.3.6
fs-extra: 10.1.0
http-proxy-agent: 5.0.0
https-proxy-agent: 5.0.1
@@ -5315,12 +5370,12 @@ snapshots:
butterchurn-presets@3.0.0-beta.4:
dependencies:
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
butterchurn@3.0.0-beta.4:
dependencies:
'@assemblyscript/loader': 0.17.14
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
ecma-proposal-math-extensions: 0.0.2
eel-wasm: 0.0.15
@@ -5355,11 +5410,13 @@ snapshots:
normalize-url: 6.1.0
responselike: 2.0.1
- call-bind@1.0.5:
+ call-bind@1.0.7:
dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
function-bind: 1.1.2
- get-intrinsic: 1.2.2
- set-function-length: 1.1.1
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.2
callsites@3.1.0: {}
@@ -5546,12 +5603,30 @@ snapshots:
csstype@3.1.3: {}
- custom-electron-prompt@1.5.8(electron@31.3.1):
+ custom-electron-prompt@1.5.8(electron@32.0.2):
dependencies:
- electron: 31.3.1
+ electron: 32.0.2
data-uri-to-buffer@4.0.1: {}
+ data-view-buffer@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ data-view-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ data-view-byte-offset@1.0.0:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
dbus-next@0.10.2:
dependencies:
'@nornagon/put': 0.0.8
@@ -5578,7 +5653,7 @@ snapshots:
dependencies:
ms: 2.1.3
- debug@4.3.5:
+ debug@4.3.6:
dependencies:
ms: 2.1.2
@@ -5597,24 +5672,24 @@ snapshots:
deep-equal@2.2.3:
dependencies:
- array-buffer-byte-length: 1.0.0
- call-bind: 1.0.5
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
es-get-iterator: 1.1.3
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.4
is-arguments: 1.1.1
- is-array-buffer: 3.0.2
+ is-array-buffer: 3.0.4
is-date-object: 1.0.5
is-regex: 1.1.4
- is-shared-array-buffer: 1.0.2
+ is-shared-array-buffer: 1.0.3
isarray: 2.0.5
object-is: 1.1.5
object-keys: 1.1.1
object.assign: 4.1.5
- regexp.prototype.flags: 1.5.1
+ regexp.prototype.flags: 1.5.2
side-channel: 1.0.4
which-boxed-primitive: 1.0.2
which-collection: 1.0.1
- which-typed-array: 1.1.13
+ which-typed-array: 1.1.15
deep-extend@0.6.0: {}
@@ -5633,18 +5708,18 @@ snapshots:
defer-to-connect@2.0.1: {}
- define-data-property@1.1.1:
+ define-data-property@1.1.4:
dependencies:
- get-intrinsic: 1.2.2
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
gopd: 1.0.1
- has-property-descriptors: 1.0.1
define-lazy-prop@3.0.0: {}
define-properties@1.2.1:
dependencies:
- define-data-property: 1.1.1
- has-property-descriptors: 1.0.1
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
object-keys: 1.1.1
del-cli@5.1.0:
@@ -5677,9 +5752,9 @@ snapshots:
dependencies:
path-type: 4.0.0
- discord-api-types@0.37.83: {}
+ discord-api-types@0.37.100: {}
- discord-api-types@0.37.93: {}
+ discord-api-types@0.37.83: {}
dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3):
dependencies:
@@ -5780,7 +5855,7 @@ snapshots:
- electron-builder-squirrel-windows
- supports-color
- electron-debug@4.0.0:
+ electron-debug@4.0.1:
dependencies:
electron-is-dev: 3.0.1
electron-localshortcut: 3.2.1
@@ -5809,7 +5884,7 @@ snapshots:
electron-localshortcut@3.2.1:
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
electron-is-accelerator: 0.1.2
keyboardevent-from-electron-accelerator: 2.0.0
keyboardevents-areequal: 0.2.2
@@ -5843,7 +5918,7 @@ snapshots:
lodash.debounce: 4.0.8
serialize-error: 8.1.0
- electron-updater@6.3.2:
+ electron-updater@6.3.4:
dependencies:
builder-util-runtime: 9.2.5
fs-extra: 10.1.0
@@ -5856,7 +5931,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- electron-vite@2.3.0(vite@5.3.5(@types/node@20.12.5)):
+ electron-vite@2.3.0(vite@5.4.3(@types/node@20.12.5)):
dependencies:
'@babel/core': 7.24.7
'@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.7)
@@ -5864,11 +5939,11 @@ snapshots:
esbuild: 0.21.5
magic-string: 0.30.10
picocolors: 1.0.1
- vite: 5.3.5(@types/node@20.12.5)
+ vite: 5.4.3(@types/node@20.12.5)
transitivePeerDependencies:
- supports-color
- electron@31.3.1:
+ electron@32.0.2:
dependencies:
'@electron/get': 2.0.3
'@types/node': 20.12.5
@@ -5910,52 +5985,65 @@ snapshots:
error-stack-parser-es@0.1.5: {}
- es-abstract@1.22.3:
- dependencies:
- array-buffer-byte-length: 1.0.0
- arraybuffer.prototype.slice: 1.0.2
- available-typed-arrays: 1.0.5
- call-bind: 1.0.5
- es-set-tostringtag: 2.0.2
+ es-abstract@1.23.3:
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ arraybuffer.prototype.slice: 1.0.3
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ data-view-buffer: 1.0.1
+ data-view-byte-length: 1.0.1
+ data-view-byte-offset: 1.0.0
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-set-tostringtag: 2.0.3
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
- get-intrinsic: 1.2.2
- get-symbol-description: 1.0.0
+ get-intrinsic: 1.2.4
+ get-symbol-description: 1.0.2
globalthis: 1.0.3
gopd: 1.0.1
- has-property-descriptors: 1.0.1
- has-proto: 1.0.1
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
has-symbols: 1.0.3
- hasown: 2.0.0
- internal-slot: 1.0.6
- is-array-buffer: 3.0.2
+ hasown: 2.0.2
+ internal-slot: 1.0.7
+ is-array-buffer: 3.0.4
is-callable: 1.2.7
- is-negative-zero: 2.0.2
+ is-data-view: 1.0.1
+ is-negative-zero: 2.0.3
is-regex: 1.1.4
- is-shared-array-buffer: 1.0.2
+ is-shared-array-buffer: 1.0.3
is-string: 1.0.7
- is-typed-array: 1.1.12
+ is-typed-array: 1.1.13
is-weakref: 1.0.2
object-inspect: 1.13.1
object-keys: 1.1.1
object.assign: 4.1.5
- regexp.prototype.flags: 1.5.1
- safe-array-concat: 1.0.1
- safe-regex-test: 1.0.2
- string.prototype.trim: 1.2.8
- string.prototype.trimend: 1.0.7
- string.prototype.trimstart: 1.0.7
- typed-array-buffer: 1.0.0
- typed-array-byte-length: 1.0.0
- typed-array-byte-offset: 1.0.0
- typed-array-length: 1.0.4
+ regexp.prototype.flags: 1.5.2
+ safe-array-concat: 1.1.2
+ safe-regex-test: 1.0.3
+ string.prototype.trim: 1.2.9
+ string.prototype.trimend: 1.0.8
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.2
+ typed-array-byte-length: 1.0.1
+ typed-array-byte-offset: 1.0.2
+ typed-array-length: 1.0.6
unbox-primitive: 1.0.2
- which-typed-array: 1.1.13
+ which-typed-array: 1.1.15
+
+ es-define-property@1.0.0:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ es-errors@1.3.0: {}
es-get-iterator@1.1.3:
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
has-symbols: 1.0.3
is-arguments: 1.1.1
is-map: 2.0.2
@@ -5964,15 +6052,19 @@ snapshots:
isarray: 2.0.5
stop-iteration-iterator: 1.0.0
- es-set-tostringtag@2.0.2:
+ es-object-atoms@1.0.0:
dependencies:
- get-intrinsic: 1.2.2
- has-tostringtag: 1.0.0
- hasown: 2.0.0
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.0.3:
+ dependencies:
+ get-intrinsic: 1.2.4
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
es-shim-unscopables@1.0.2:
dependencies:
- hasown: 2.0.0
+ hasown: 2.0.2
es-to-primitive@1.2.1:
dependencies:
@@ -6009,32 +6101,32 @@ snapshots:
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
- esbuild@0.23.0:
+ esbuild@0.23.1:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.0
- '@esbuild/android-arm': 0.23.0
- '@esbuild/android-arm64': 0.23.0
- '@esbuild/android-x64': 0.23.0
- '@esbuild/darwin-arm64': 0.23.0
- '@esbuild/darwin-x64': 0.23.0
- '@esbuild/freebsd-arm64': 0.23.0
- '@esbuild/freebsd-x64': 0.23.0
- '@esbuild/linux-arm': 0.23.0
- '@esbuild/linux-arm64': 0.23.0
- '@esbuild/linux-ia32': 0.23.0
- '@esbuild/linux-loong64': 0.23.0
- '@esbuild/linux-mips64el': 0.23.0
- '@esbuild/linux-ppc64': 0.23.0
- '@esbuild/linux-riscv64': 0.23.0
- '@esbuild/linux-s390x': 0.23.0
- '@esbuild/linux-x64': 0.23.0
- '@esbuild/netbsd-x64': 0.23.0
- '@esbuild/openbsd-arm64': 0.23.0
- '@esbuild/openbsd-x64': 0.23.0
- '@esbuild/sunos-x64': 0.23.0
- '@esbuild/win32-arm64': 0.23.0
- '@esbuild/win32-ia32': 0.23.0
- '@esbuild/win32-x64': 0.23.0
+ '@esbuild/aix-ppc64': 0.23.1
+ '@esbuild/android-arm': 0.23.1
+ '@esbuild/android-arm64': 0.23.1
+ '@esbuild/android-x64': 0.23.1
+ '@esbuild/darwin-arm64': 0.23.1
+ '@esbuild/darwin-x64': 0.23.1
+ '@esbuild/freebsd-arm64': 0.23.1
+ '@esbuild/freebsd-x64': 0.23.1
+ '@esbuild/linux-arm': 0.23.1
+ '@esbuild/linux-arm64': 0.23.1
+ '@esbuild/linux-ia32': 0.23.1
+ '@esbuild/linux-loong64': 0.23.1
+ '@esbuild/linux-mips64el': 0.23.1
+ '@esbuild/linux-ppc64': 0.23.1
+ '@esbuild/linux-riscv64': 0.23.1
+ '@esbuild/linux-s390x': 0.23.1
+ '@esbuild/linux-x64': 0.23.1
+ '@esbuild/netbsd-x64': 0.23.1
+ '@esbuild/openbsd-arm64': 0.23.1
+ '@esbuild/openbsd-x64': 0.23.1
+ '@esbuild/sunos-x64': 0.23.1
+ '@esbuild/win32-arm64': 0.23.1
+ '@esbuild/win32-ia32': 0.23.1
+ '@esbuild/win32-x64': 0.23.1
escalade@3.1.1: {}
@@ -6044,70 +6136,73 @@ snapshots:
escape-string-regexp@5.0.0: {}
- eslint-import-resolver-exports@1.0.0-beta.5(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0):
+ eslint-import-resolver-exports@1.0.0-beta.5(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0))(eslint@8.57.0):
dependencies:
eslint: 8.57.0
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
+ eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
resolve.exports: 2.0.2
eslint-import-resolver-node@0.3.9:
dependencies:
debug: 3.2.7
- is-core-module: 2.13.1
+ is-core-module: 2.15.1
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0):
dependencies:
- debug: 4.3.5
+ '@nolyfill/is-core-module': 1.0.39
+ debug: 4.3.6
enhanced-resolve: 5.15.0
eslint: 8.57.0
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
+ eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0)
fast-glob: 3.3.2
- get-tsconfig: 4.7.2
- is-core-module: 2.13.1
+ get-tsconfig: 4.8.0
+ is-bun-module: 1.1.0
is-glob: 4.0.3
+ optionalDependencies:
+ eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.8.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0):
+ eslint-module-utils@2.11.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.0.0(eslint@8.57.0)(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.4.0(eslint@8.57.0)(typescript@5.5.4)
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0)
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
+ eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
dependencies:
- array-includes: 3.1.7
- array.prototype.findlastindex: 1.2.3
+ '@rtsao/scc': 1.1.0
+ array-includes: 3.1.8
+ array.prototype.findlastindex: 1.2.5
array.prototype.flat: 1.3.2
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
- hasown: 2.0.0
- is-core-module: 2.13.1
+ eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0)
+ hasown: 2.0.2
+ is-core-module: 2.15.1
is-glob: 4.0.3
minimatch: 3.1.2
- object.fromentries: 2.0.7
- object.groupby: 1.0.1
- object.values: 1.1.7
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.0
semver: 6.3.1
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.0.0(eslint@8.57.0)(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.4.0(eslint@8.57.0)(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -6140,7 +6235,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.5
+ debug: 4.3.6
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -6218,7 +6313,7 @@ snapshots:
extract-zip@2.0.1:
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
@@ -6370,9 +6465,9 @@ snapshots:
function.prototype.name@1.1.6:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.23.3
functions-have-names: 1.2.3
functions-have-names@1.2.3: {}
@@ -6381,12 +6476,13 @@ snapshots:
get-caller-file@2.0.5: {}
- get-intrinsic@1.2.2:
+ get-intrinsic@1.2.4:
dependencies:
+ es-errors: 1.3.0
function-bind: 1.1.2
- has-proto: 1.0.1
+ has-proto: 1.0.3
has-symbols: 1.0.3
- hasown: 2.0.0
+ hasown: 2.0.2
get-stream@5.2.0:
dependencies:
@@ -6394,12 +6490,13 @@ snapshots:
get-stream@6.0.1: {}
- get-symbol-description@1.0.0:
+ get-symbol-description@1.0.2:
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
- get-tsconfig@4.7.2:
+ get-tsconfig@4.8.0:
dependencies:
resolve-pkg-maps: 1.0.0
@@ -6458,15 +6555,6 @@ snapshots:
dependencies:
define-properties: 1.2.1
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.1
- merge2: 1.4.1
- slash: 3.0.0
-
globby@13.2.2:
dependencies:
dir-glob: 3.0.1
@@ -6481,7 +6569,7 @@ snapshots:
gopd@1.0.1:
dependencies:
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.4
got@11.8.6:
dependencies:
@@ -6509,19 +6597,19 @@ snapshots:
has-flag@4.0.0: {}
- has-property-descriptors@1.0.1:
+ has-property-descriptors@1.0.2:
dependencies:
- get-intrinsic: 1.2.2
+ es-define-property: 1.0.0
- has-proto@1.0.1: {}
+ has-proto@1.0.3: {}
has-symbols@1.0.3: {}
- has-tostringtag@1.0.0:
+ has-tostringtag@1.0.2:
dependencies:
has-symbols: 1.0.3
- hasown@2.0.0:
+ hasown@2.0.2:
dependencies:
function-bind: 1.1.2
@@ -6558,14 +6646,14 @@ snapshots:
dependencies:
'@tootallnate/once': 2.0.0
agent-base: 6.0.2
- debug: 4.3.5
+ debug: 4.3.6
transitivePeerDependencies:
- supports-color
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.1
- debug: 4.3.5
+ debug: 4.3.6
transitivePeerDependencies:
- supports-color
@@ -6577,22 +6665,22 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.5
+ debug: 4.3.6
transitivePeerDependencies:
- supports-color
https-proxy-agent@7.0.4:
dependencies:
agent-base: 7.1.1
- debug: 4.3.5
+ debug: 4.3.6
transitivePeerDependencies:
- supports-color
human-signals@2.1.0: {}
- i18next@23.12.2:
+ i18next@23.14.0:
dependencies:
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
iconv-corefoundation@1.1.7:
dependencies:
@@ -6634,10 +6722,10 @@ snapshots:
ini@1.3.8: {}
- internal-slot@1.0.6:
+ internal-slot@1.0.7:
dependencies:
- get-intrinsic: 1.2.2
- hasown: 2.0.0
+ es-errors: 1.3.0
+ hasown: 2.0.2
side-channel: 1.0.4
ip-address@9.0.5:
@@ -6647,14 +6735,13 @@ snapshots:
is-arguments@1.1.1:
dependencies:
- call-bind: 1.0.5
- has-tostringtag: 1.0.0
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
- is-array-buffer@3.0.2:
+ is-array-buffer@3.0.4:
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
- is-typed-array: 1.1.12
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
is-arrayish@0.2.1: {}
@@ -6666,8 +6753,12 @@ snapshots:
is-boolean-object@1.1.2:
dependencies:
- call-bind: 1.0.5
- has-tostringtag: 1.0.0
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-bun-module@1.1.0:
+ dependencies:
+ semver: 7.6.3
is-callable@1.2.7: {}
@@ -6675,13 +6766,17 @@ snapshots:
dependencies:
ci-info: 3.9.0
- is-core-module@2.13.1:
+ is-core-module@2.15.1:
dependencies:
- hasown: 2.0.0
+ hasown: 2.0.2
+
+ is-data-view@1.0.1:
+ dependencies:
+ is-typed-array: 1.1.13
is-date-object@1.0.5:
dependencies:
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
is-docker@2.2.1: {}
@@ -6703,11 +6798,11 @@ snapshots:
is-map@2.0.2: {}
- is-negative-zero@2.0.2: {}
+ is-negative-zero@2.0.3: {}
is-number-object@1.0.7:
dependencies:
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
is-number@7.0.0: {}
@@ -6723,28 +6818,28 @@ snapshots:
is-regex@1.1.4:
dependencies:
- call-bind: 1.0.5
- has-tostringtag: 1.0.0
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
is-set@2.0.2: {}
- is-shared-array-buffer@1.0.2:
+ is-shared-array-buffer@1.0.3:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
is-stream@2.0.1: {}
is-string@1.0.7:
dependencies:
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
is-symbol@1.0.4:
dependencies:
has-symbols: 1.0.3
- is-typed-array@1.1.12:
+ is-typed-array@1.1.13:
dependencies:
- which-typed-array: 1.1.13
+ which-typed-array: 1.1.15
is-url@1.2.4: {}
@@ -6752,12 +6847,12 @@ snapshots:
is-weakref@1.0.2:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
is-weakset@2.0.2:
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
is-what@4.1.16: {}
@@ -7142,7 +7237,7 @@ snapshots:
normalize-package-data@3.0.3:
dependencies:
hosted-git-info: 4.1.0
- is-core-module: 2.13.1
+ is-core-module: 2.15.1
semver: 7.6.3
validate-npm-package-license: 3.0.4
@@ -7162,36 +7257,36 @@ snapshots:
object-is@1.1.5:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
object-keys@1.1.1: {}
object.assign@4.1.5:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
has-symbols: 1.0.3
object-keys: 1.1.1
- object.fromentries@2.0.7:
+ object.fromentries@2.0.8:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
- object.groupby@1.0.1:
+ object.groupby@1.0.3:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
- get-intrinsic: 1.2.2
+ es-abstract: 1.23.3
- object.values@1.1.7:
+ object.values@1.2.0:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-object-atoms: 1.0.0
on-headers@1.0.2: {}
@@ -7308,11 +7403,11 @@ snapshots:
picomatch@2.3.1: {}
- playwright-core@1.45.3: {}
+ playwright-core@1.47.0: {}
- playwright@1.45.3:
+ playwright@1.47.0:
dependencies:
- playwright-core: 1.45.3
+ playwright-core: 1.47.0
optionalDependencies:
fsevents: 2.3.2
@@ -7322,7 +7417,9 @@ snapshots:
base64-js: 1.5.1
xmlbuilder: 15.1.1
- postcss@8.4.39:
+ possible-typed-array-names@1.0.0: {}
+
+ postcss@8.4.44:
dependencies:
nanoid: 3.3.7
picocolors: 1.0.1
@@ -7420,10 +7517,11 @@ snapshots:
regenerator-runtime@0.14.1: {}
- regexp.prototype.flags@1.5.1:
+ regexp.prototype.flags@1.5.2:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
+ es-errors: 1.3.0
set-function-name: 2.0.1
registry-auth-token@3.3.2:
@@ -7449,7 +7547,7 @@ snapshots:
resolve@1.22.8:
dependencies:
- is-core-module: 2.13.1
+ is-core-module: 2.15.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -7475,26 +7573,26 @@ snapshots:
sprintf-js: 1.1.3
optional: true
- rollup@4.19.2:
+ rollup@4.21.2:
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.19.2
- '@rollup/rollup-android-arm64': 4.19.2
- '@rollup/rollup-darwin-arm64': 4.19.2
- '@rollup/rollup-darwin-x64': 4.19.2
- '@rollup/rollup-linux-arm-gnueabihf': 4.19.2
- '@rollup/rollup-linux-arm-musleabihf': 4.19.2
- '@rollup/rollup-linux-arm64-gnu': 4.19.2
- '@rollup/rollup-linux-arm64-musl': 4.19.2
- '@rollup/rollup-linux-powerpc64le-gnu': 4.19.2
- '@rollup/rollup-linux-riscv64-gnu': 4.19.2
- '@rollup/rollup-linux-s390x-gnu': 4.19.2
- '@rollup/rollup-linux-x64-gnu': 4.19.2
- '@rollup/rollup-linux-x64-musl': 4.19.2
- '@rollup/rollup-win32-arm64-msvc': 4.19.2
- '@rollup/rollup-win32-ia32-msvc': 4.19.2
- '@rollup/rollup-win32-x64-msvc': 4.19.2
+ '@rollup/rollup-android-arm-eabi': 4.21.2
+ '@rollup/rollup-android-arm64': 4.21.2
+ '@rollup/rollup-darwin-arm64': 4.21.2
+ '@rollup/rollup-darwin-x64': 4.21.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.21.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.21.2
+ '@rollup/rollup-linux-arm64-gnu': 4.21.2
+ '@rollup/rollup-linux-arm64-musl': 4.21.2
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.21.2
+ '@rollup/rollup-linux-s390x-gnu': 4.21.2
+ '@rollup/rollup-linux-x64-gnu': 4.21.2
+ '@rollup/rollup-linux-x64-musl': 4.21.2
+ '@rollup/rollup-win32-arm64-msvc': 4.21.2
+ '@rollup/rollup-win32-ia32-msvc': 4.21.2
+ '@rollup/rollup-win32-x64-msvc': 4.21.2
fsevents: 2.3.3
run-applescript@7.0.0: {}
@@ -7503,10 +7601,10 @@ snapshots:
dependencies:
queue-microtask: 1.2.3
- safe-array-concat@1.0.1:
+ safe-array-concat@1.1.2:
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
has-symbols: 1.0.3
isarray: 2.0.5
@@ -7514,10 +7612,10 @@ snapshots:
safe-buffer@5.2.1: {}
- safe-regex-test@1.0.2:
+ safe-regex-test@1.0.3:
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ call-bind: 1.0.7
+ es-errors: 1.3.0
is-regex: 1.1.4
safer-buffer@2.1.2: {}
@@ -7585,18 +7683,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- set-function-length@1.1.1:
+ set-function-length@1.2.2:
dependencies:
- define-data-property: 1.1.1
- get-intrinsic: 1.2.2
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
gopd: 1.0.1
- has-property-descriptors: 1.0.1
+ has-property-descriptors: 1.0.2
set-function-name@2.0.1:
dependencies:
- define-data-property: 1.1.1
+ define-data-property: 1.1.4
functions-have-names: 1.2.3
- has-property-descriptors: 1.0.1
+ has-property-descriptors: 1.0.2
setimmediate@1.0.5: {}
@@ -7608,8 +7708,8 @@ snapshots:
side-channel@1.0.4:
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
object-inspect: 1.13.1
signal-exit@3.0.7: {}
@@ -7632,8 +7732,6 @@ snapshots:
mrmime: 2.0.0
totalist: 3.0.1
- slash@3.0.0: {}
-
slash@4.0.0: {}
slice-ansi@3.0.0:
@@ -7648,7 +7746,7 @@ snapshots:
socks-proxy-agent@8.0.3:
dependencies:
agent-base: 7.1.1
- debug: 4.3.5
+ debug: 4.3.6
socks: 2.8.1
transitivePeerDependencies:
- supports-color
@@ -7658,37 +7756,37 @@ snapshots:
ip-address: 9.0.5
smart-buffer: 4.2.0
- solid-floating-ui@0.3.1(@floating-ui/dom@1.6.8)(solid-js@1.8.19):
+ solid-floating-ui@0.3.1(@floating-ui/dom@1.6.10)(solid-js@1.8.22):
dependencies:
- '@floating-ui/dom': 1.6.8
- solid-js: 1.8.19
+ '@floating-ui/dom': 1.6.10
+ solid-js: 1.8.22
- solid-js@1.8.19:
+ solid-js@1.8.22:
dependencies:
csstype: 3.1.3
seroval: 1.1.0
seroval-plugins: 1.1.0(seroval@1.1.0)
- solid-refresh@0.6.3(solid-js@1.8.19):
+ solid-refresh@0.6.3(solid-js@1.8.22):
dependencies:
'@babel/generator': 7.24.7
'@babel/helper-module-imports': 7.24.7
'@babel/types': 7.24.7
- solid-js: 1.8.19
+ solid-js: 1.8.22
transitivePeerDependencies:
- supports-color
- solid-styled-components@0.28.5(solid-js@1.8.19):
+ solid-styled-components@0.28.5(solid-js@1.8.22):
dependencies:
csstype: 3.1.3
goober: 2.1.14(csstype@3.1.3)
- solid-js: 1.8.19
+ solid-js: 1.8.22
- solid-transition-group@0.2.3(solid-js@1.8.19):
+ solid-transition-group@0.2.3(solid-js@1.8.22):
dependencies:
- '@solid-primitives/refs': 1.0.6(solid-js@1.8.19)
- '@solid-primitives/transition-group': 1.0.4(solid-js@1.8.19)
- solid-js: 1.8.19
+ '@solid-primitives/refs': 1.0.6(solid-js@1.8.22)
+ '@solid-primitives/transition-group': 1.0.4(solid-js@1.8.22)
+ solid-js: 1.8.22
source-map-js@1.2.0: {}
@@ -7727,7 +7825,7 @@ snapshots:
stop-iteration-iterator@1.0.0:
dependencies:
- internal-slot: 1.0.6
+ internal-slot: 1.0.7
stream-combiner@0.0.4:
dependencies:
@@ -7745,23 +7843,24 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.1.0
- string.prototype.trim@1.2.8:
+ string.prototype.trim@1.2.9:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
- string.prototype.trimend@1.0.7:
+ string.prototype.trimend@1.0.8:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-object-atoms: 1.0.0
- string.prototype.trimstart@1.0.7:
+ string.prototype.trimstart@1.0.8:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-object-atoms: 1.0.0
string_decoder@1.1.1:
dependencies:
@@ -7791,7 +7890,7 @@ snapshots:
sumchecker@3.0.1:
dependencies:
- debug: 4.3.5
+ debug: 4.3.6
transitivePeerDependencies:
- supports-color
@@ -7901,32 +8000,37 @@ snapshots:
type-fest@4.20.1: {}
- typed-array-buffer@1.0.0:
+ typed-array-buffer@1.0.2:
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
- is-typed-array: 1.1.12
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-typed-array: 1.1.13
- typed-array-byte-length@1.0.0:
+ typed-array-byte-length@1.0.1:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
for-each: 0.3.3
- has-proto: 1.0.1
- is-typed-array: 1.1.12
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
- typed-array-byte-offset@1.0.0:
+ typed-array-byte-offset@1.0.2:
dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.5
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
for-each: 0.3.3
- has-proto: 1.0.1
- is-typed-array: 1.1.12
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
- typed-array-length@1.0.4:
+ typed-array-length@1.0.6:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
for-each: 0.3.3
- is-typed-array: 1.1.12
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
+ possible-typed-array-names: 1.0.0
typescript@5.5.4: {}
@@ -7934,7 +8038,7 @@ snapshots:
unbox-primitive@1.0.2:
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.7
has-bigints: 1.0.2
has-symbols: 1.0.3
which-boxed-primitive: 1.0.2
@@ -7983,7 +8087,7 @@ snapshots:
usocket@1.0.1:
dependencies:
bindings: 1.5.0
- debug: 4.3.5
+ debug: 4.3.6
nan: 2.18.0
node-gyp: 10.2.0
transitivePeerDependencies:
@@ -8016,18 +8120,18 @@ snapshots:
extsprintf: 1.4.1
optional: true
- vite-plugin-inspect@0.8.5(rollup@4.19.2)(vite@5.3.5(@types/node@20.12.5)):
+ vite-plugin-inspect@0.8.7(rollup@4.21.2)(vite@5.4.3(@types/node@20.12.5)):
dependencies:
'@antfu/utils': 0.7.10
- '@rollup/pluginutils': 5.1.0(rollup@4.19.2)
- debug: 4.3.5
+ '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
+ debug: 4.3.6
error-stack-parser-es: 0.1.5
fs-extra: 11.2.0
open: 10.1.0
perfect-debounce: 1.0.0
picocolors: 1.0.1
sirv: 2.0.4
- vite: 5.3.5(@types/node@20.12.5)
+ vite: 5.4.3(@types/node@20.12.5)
transitivePeerDependencies:
- rollup
- supports-color
@@ -8036,31 +8140,31 @@ snapshots:
dependencies:
lib-esm: 0.4.2
- vite-plugin-solid@2.10.2(solid-js@1.8.19)(vite@5.3.5(@types/node@20.12.5)):
+ vite-plugin-solid@2.10.2(solid-js@1.8.22)(vite@5.4.3(@types/node@20.12.5)):
dependencies:
'@babel/core': 7.24.7
'@types/babel__core': 7.20.5
babel-preset-solid: 1.8.12(@babel/core@7.24.7)
merge-anything: 5.1.7
- solid-js: 1.8.19
- solid-refresh: 0.6.3(solid-js@1.8.19)
- vite: 5.3.5(@types/node@20.12.5)
- vitefu: 0.2.5(vite@5.3.5(@types/node@20.12.5))
+ solid-js: 1.8.22
+ solid-refresh: 0.6.3(solid-js@1.8.22)
+ vite: 5.4.3(@types/node@20.12.5)
+ vitefu: 0.2.5(vite@5.4.3(@types/node@20.12.5))
transitivePeerDependencies:
- supports-color
- vite@5.3.5(@types/node@20.12.5):
+ vite@5.4.3(@types/node@20.12.5):
dependencies:
esbuild: 0.21.5
- postcss: 8.4.39
- rollup: 4.19.2
+ postcss: 8.4.44
+ rollup: 4.21.2
optionalDependencies:
'@types/node': 20.12.5
fsevents: 2.3.3
- vitefu@0.2.5(vite@5.3.5(@types/node@20.12.5)):
+ vitefu@0.2.5(vite@5.4.3(@types/node@20.12.5)):
optionalDependencies:
- vite: 5.3.5(@types/node@20.12.5)
+ vite: 5.4.3(@types/node@20.12.5)
vudio@2.1.1(patch_hash=7iux5msqpgl3octdmwy4uspwoe): {}
@@ -8087,13 +8191,13 @@ snapshots:
is-weakmap: 2.0.1
is-weakset: 2.0.2
- which-typed-array@1.1.13:
+ which-typed-array@1.1.15:
dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.5
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
for-each: 0.3.3
gopd: 1.0.1
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
which@2.0.2:
dependencies:
@@ -8168,7 +8272,7 @@ snapshots:
yocto-queue@0.1.0: {}
- youtubei.js@10.3.0:
+ youtubei.js@10.4.0:
dependencies:
jintr: 2.1.1
tslib: 2.6.2
diff --git a/src/i18n/resources/ca.json b/src/i18n/resources/ca.json
index 4ac786227..2ca4424a0 100644
--- a/src/i18n/resources/ca.json
+++ b/src/i18n/resources/ca.json
@@ -15,7 +15,7 @@
},
"language": {
"code": "ca",
- "local-name": "català",
+ "local-name": "Català",
"name": "Catalan"
},
"main": {
@@ -84,9 +84,9 @@
"label": "Navegació",
"submenu": {
"copy-current-url": "Copia l'URL actual",
- "go-back": "Anar enrere",
- "go-forward": "Anar endavant",
- "quit": "Sortir",
+ "go-back": "Ves enrere",
+ "go-forward": "Ves endavant",
+ "quit": "Surt",
"restart": "Reinicia l'aplicació"
}
},
@@ -102,11 +102,11 @@
"override-user-agent": "Sobreescriu l'agent d'usuari (User-Agent)",
"restart-on-config-changes": "Reinicia quan es canviï la configuració",
"set-proxy": {
- "label": "Definir proxy",
+ "label": "Definir servidor intermediari (proxy)",
"prompt": {
- "label": "Introduir l'adreça del proxy: (deixar en blanc per deshabilitar)",
+ "label": "Introduir l'adreça del servidor intermediari: (deixar en blanc per deshabilitar)",
"placeholder": "Exemple: SOCKS5://127.0.0.1:9999",
- "title": "Definir proxy"
+ "title": "Definir servidor intermediari (proxy)"
}
},
"toggle-dev-tools": "Commuta les DevTools"
@@ -144,11 +144,11 @@
"disabled": "Deshabilitat",
"enabled-and-hide-app": "Mostra la icona i amaga l'aplicació",
"enabled-and-show-app": "Mostra la icona i mostra l'aplicació",
- "play-pause-on-click": "Reproduir/Pausar en clicar"
+ "play-pause-on-click": "Reprodueix / pausa en clicar"
}
},
"visual-tweaks": {
- "label": "Configuració visual",
+ "label": "Opcions visuals",
"submenu": {
"like-buttons": {
"default": "Per defecte",
@@ -182,9 +182,9 @@
"new": "NOU"
},
"view": {
- "label": "Mostra",
+ "label": "Veure",
"submenu": {
- "force-reload": "Força recàrrega",
+ "force-reload": "Força la recàrrega",
"reload": "Recarrega",
"reset-zoom": "Mida real",
"toggle-fullscreen": "Commuta la pantalla completa",
@@ -220,7 +220,7 @@
},
"album-actions": {
"description": "Afegeix botons de «no m'agrada / retirar el no m'agrada» i «m'agrada / retirar el m'agrada» per aplicar-ho a totes les cançons en una llista de reproducció o àlbum",
- "name": "Accions de l'àlbum"
+ "name": "Accions a l'àlbum"
},
"album-color-theme": {
"description": "Aplica un tema dinàmic i efectes visuals basats en la paleta de colors de l'àlbum",
@@ -281,7 +281,7 @@
},
"audio-compressor": {
"description": "Aplica compressió a l'àudio (baixa el volum de les parts més sorolloses de la senyal d'àudio i puja el volum de les parts més fluixes)",
- "name": "Compressor d'àudio"
+ "name": "Compressió d'àudio"
},
"blur-nav-bar": {
"description": "Desenfoca i aplica transparència a la barra de navegació",
@@ -518,7 +518,7 @@
},
"no-google-login": {
"description": "Elimina els botons d'inici de sessió de Google de la interfície",
- "name": "Sense inici de sessió de Google"
+ "name": "Amaga l'inici de sessió de Google"
},
"notifications": {
"description": "Mostra una notificació quan una cançó es comença a reproduir (les notificacions interactives estan disponibles a Windows)",
@@ -602,7 +602,7 @@
}
},
"description": "Permet canviar la qualitat del vídeo amb un botó que s'hi mostra a sobre",
- "name": "Canvia la qualitat del vídeo"
+ "name": "Botó de qualitat del vídeo"
},
"scrobbler": {
"description": "Afegeix suport per scrobbling (Last.fm, ListenBrainz, etc.)",
@@ -657,8 +657,8 @@
}
},
"skip-disliked-songs": {
- "description": "Omet cançons amb «No m'agrada»",
- "name": "Omet cançons amb «No m'agrada»"
+ "description": "Salta les cançons amb «no m'agrada»",
+ "name": "Salta les cançons que no t'agraden"
},
"skip-silences": {
"description": "Omet automàticament les seccions amb silenci a les cançons",
@@ -668,6 +668,59 @@
"description": "Omet automàticament els segments dels vídeos que no son música, com la intro o el final",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "Proporciona lletres sincronitzades amb les cançons, a través de proveïdors com LRClib.",
+ "errors": {
+ "fetch": "⚠️ - Se ha produït un error en descarregar la lletra. Si us plau, intenta-ho més tard.",
+ "not-found": "⚠️ - No s'ha trobat la lletra per aquesta cançó."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Caràcter per defecte entre lletres",
+ "tooltip": "Tria el caràcter per defecte que es mostrarà a l'espai entre les lletres"
+ },
+ "line-effect": {
+ "label": "Efecte de la línia",
+ "submenu": {
+ "focus": {
+ "label": "Focus",
+ "tooltip": "Mostra tan sols la línia actual en blanc"
+ },
+ "offset": {
+ "label": "Desplaçament",
+ "tooltip": "Desplaçament a la dreta de la línia actual"
+ },
+ "scale": {
+ "label": "Escala",
+ "tooltip": "Redimensiona la línia actual"
+ }
+ },
+ "tooltip": "Tria l'efecte a aplicar a la línia actual"
+ },
+ "precise-timing": {
+ "label": "Fes que les lletres es sincronitzin a la perfecció",
+ "tooltip": "Calcula al mil·lisegon l'aparició de la següent línia (pot tenir un petit impacte en el rendiment)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Mostra la lletra tot i que sigui inexacta",
+ "tooltip": "Si no es troba la cançó, el plugin torna a intentar obtenir la lletra amb una cerca diferent.\nEl resultat d'aquesta segona cerca podria no ser exacte."
+ },
+ "show-time-codes": {
+ "label": "Mostra els codis de temps",
+ "tooltip": "Mostra els codis de temps al costat de la lletra"
+ }
+ },
+ "name": "Lletres sincronitzades",
+ "refetch-btn": {
+ "fetching": "Obtenint...",
+ "normal": "Tornar a obtenir la lletra"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - La lletra podria no estar ben sincronitzada, la durada no és coincident.",
+ "inexact": "⚠️ - La lletra d'aquesta cançó podria no ser exacta",
+ "instrumental": "⚠️ - Aquesta cançó és instrumental"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Controla la reproducció des de la barra de tasques del Windows",
"name": "Control multimèdia a la barra de tasques"
@@ -701,7 +754,7 @@
}
}
},
- "name": "Commutador de vídeo",
+ "name": "Botó de vídeo",
"templates": {
"button": "Cançó"
}
diff --git a/src/i18n/resources/de.json b/src/i18n/resources/de.json
index c85bd04c0..4b5fa72aa 100644
--- a/src/i18n/resources/de.json
+++ b/src/i18n/resources/de.json
@@ -668,6 +668,54 @@
"description": "Überspringt automatisch nicht-musikalische Teile wie Intro/Outro oder Teile von Musikvideos, in denen der Song nicht gespielt wird",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "Bietet synchronisierte Liedtexte zu Songs, verwendet Anbieter wie LRClib.",
+ "errors": {
+ "fetch": "⚠️ - Beim Abrufen des Liedtexts ist ein Fehler aufgetreten. Bitte versuchen Sie es später nochmal.",
+ "not-found": "⚠️ - Kein Text für diesen Song gefunden."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Standardzeichen zwischen Texten",
+ "tooltip": "Standardzeichen für die Lücke zwischen Songtexten auswählen"
+ },
+ "line-effect": {
+ "label": "Zeileneffekt",
+ "submenu": {
+ "focus": {
+ "label": "Fokussieren",
+ "tooltip": "Nur aktive Zeile weiß darstellen"
+ },
+ "offset": {
+ "label": "Versatz"
+ },
+ "scale": {
+ "label": "Skalieren",
+ "tooltip": "Aktuelle Zeile skalieren"
+ }
+ },
+ "tooltip": "Effekt für aktive Zeile auswählen"
+ },
+ "precise-timing": {
+ "label": "Den Songtext perfekt synchronisieren",
+ "tooltip": "Auf die Millisekunde genau berechnen, wann die nächste Zeile angezeigt werden soll (Kann Einfluss auf die Leistung haben)"
+ },
+ "show-time-codes": {
+ "label": "Zeitkodierungen anzeigen",
+ "tooltip": "Zeitkodierungen neben Songtext anzeigen"
+ }
+ },
+ "name": "Synchronisierte Texte",
+ "refetch-btn": {
+ "fetching": "Hole Songtext...",
+ "normal": "Songtext neu holen"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - Es kann sein, dass die Synchronization nicht stimmt, da die Songdauer nicht übereinstimmt.",
+ "inexact": "⚠️ - Es ist Möglich, dass der Songtext für diesen Song nicht übereinstimmt.",
+ "instrumental": "⚠️ - Das ist ein instrumentales Lied"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Wiedergabe aus der Windows Taskleiste kontrollieren",
"name": "Mediensteuerung in der Taskleiste"
diff --git a/src/i18n/resources/el.json b/src/i18n/resources/el.json
index 4311509f0..def0ce0de 100644
--- a/src/i18n/resources/el.json
+++ b/src/i18n/resources/el.json
@@ -2,7 +2,7 @@
"common": {
"console": {
"plugins": {
- "execute-failed": "Αποτυχία εκτέλεσης προσθέτου {{pluginName}}::{{contextName}}",
+ "execute-failed": "Απέτυχε η εκτέλεση του πρόσθετου {{pluginName}}::{{contextName}}",
"executed-at-ms": "Το πρόσθετο {{pluginName}}::{{contextName}} εκτελέστηκε σε {{ms}}ms",
"initialize-failed": "Απέτυχε η αρχικοποίηση του πρόσθετου \"{{pluginName}}\"",
"load-all": "Φόρτωση όλων των πρόσθετων",
@@ -36,7 +36,7 @@
"details": "Σφάλμα ανταπόκρισης!\n{{error}}"
},
"when-ready": {
- "clearing-cache-after-20s": "Εκκαθάριση της cache της εφαρμογής"
+ "clearing-cache-after-20s": "Εκκαθάριση μνήμης cache εφαρμογής"
},
"window": {
"tried-to-render-offscreen": "Το παράθυρο προσπάθησε να απεικονίσει εκτός οθόνης, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
@@ -45,23 +45,23 @@
"dialog": {
"hide-menu-enabled": {
"detail": "Το μενού είναι κρυμμένο, χρησιμοποιήστε το 'Alt' για να το εμφανίσετε (ή το 'Escape' αν χρησιμοποιείτε το μενού εφαρμογής)",
- "message": "Απόκρυψη μενού είναι ενεργοποιημένο",
- "title": "Ενεργοποιήθηκε η Απόκρυψη του Μενού"
+ "message": "Η απόκρυψη μενού είναι ενεργοποιημένη",
+ "title": "Η απόκρυψη μενού ενεργοποιήθηκε"
},
"need-to-restart": {
"buttons": {
"later": "Αργότερα",
- "restart-now": "Επανεκκίνηση Τώρα"
+ "restart-now": "Επανεκκίνηση τώρα"
},
"detail": "Το πρόσθετο \"{{pluginName}}\" απαιτεί επανεκκίνηση για να ισχύσει",
"message": "Το \"{{pluginName}}\" χρειάζεται επανεκκίνηση",
- "title": "Απαιτείται Επανεκκίνηση"
+ "title": "Απαιτείται επανεκκίνηση"
},
"unresponsive": {
"buttons": {
"quit": "Έξοδος",
"relaunch": "Επανεκκίνηση",
- "wait": "Περίμενε"
+ "wait": "Περιμένετε"
},
"detail": "Λυπούμαστε για την ταλαιπωρία! Παρακαλούμε επιλέξτε τι να κάνετε:",
"message": "Η εφαρμογή δεν ανταποκρίνεται",
@@ -69,13 +69,13 @@
},
"update-available": {
"buttons": {
- "disable": "Απενεργοποίηση Ενημερώσεων",
+ "disable": "Απενεργοποίηση ενημερώσεων",
"download": "Λήψη",
- "ok": "Εντάξει"
+ "ok": "OK"
},
"detail": "Μια νέα έκδοση είναι διαθέσιμη και μπορεί να ληφθεί από τον σύνδεσμο {{downloadLink}}",
"message": "Μια νέα έκδοση είναι διαθέσιμη",
- "title": "Υπάρχει Διαθέσιμη Ενημέρωση"
+ "title": "Υπάρχει διαθέσιμη ενημέρωση"
}
},
"menu": {
@@ -87,7 +87,7 @@
"go-back": "Πήγαινε πίσω",
"go-forward": "Πήγαινε μπροστά",
"quit": "Έξοδος",
- "restart": "Επανεκκίνηση Εφαρμογής"
+ "restart": "Επανεκκίνηση εφαρμογής"
}
},
"options": {
@@ -106,7 +106,7 @@
"prompt": {
"label": "Εισαγωγή διεύθυνσης διακομιστή μεσολάβησης (proxy): (αφήστε κενό για απενεργοποίηση)",
"placeholder": "Παράδειγμα: SOCKS5://127.0.0.1:9999",
- "title": "Ορισμός διακομιστή μεσολάβησης (proxy)"
+ "title": "Ορισμός μεσολάβησης"
}
},
"toggle-dev-tools": "Εναλλαγή DevTools"
@@ -135,8 +135,8 @@
"single-instance-lock": "Κλείδωμα Μοναδικής Εκδοχής",
"start-at-login": "Έναρξη κατά την σύνδεση",
"starting-page": {
- "label": "Σελίδα Έναρξης",
- "unset": "Κατάργηση Ορισμού"
+ "label": "Σελίδα έναρξης",
+ "unset": "Κατάργηση ορισμού"
},
"tray": {
"label": "Δίσκος",
@@ -148,13 +148,27 @@
}
},
"visual-tweaks": {
+ "label": "Τροποποιήσεις Εμφάνισης",
"submenu": {
"like-buttons": {
- "default": "Default"
+ "default": "Default",
+ "force-show": "Αναγκαστική Εμφάνιση",
+ "hide": "Απόκρυψη",
+ "label": "Μου αρέσει"
},
+ "remove-upgrade-button": "Αφαίρεση κουμπιού αναβάθμισης",
"theme": {
- "label": "Theme",
+ "dialog": {
+ "button": {
+ "cancel": "Άκυρο",
+ "remove": "Αφαίρεση"
+ },
+ "remove-theme": "Είστε βέβαιοι ότι θέλετε να αφαιρέσετε το προσαρμοσμένο θέμα;",
+ "remove-theme-message": "Αυτό θα αφαιρέσει το προσαρμοσμένο θέμα"
+ },
+ "label": "Θέμα",
"submenu": {
+ "import-css-file": "Εισαγωγή προσαρμοσμένου αρχείου CSS",
"no-theme": "No theme"
}
}
@@ -163,29 +177,68 @@
}
},
"plugins": {
- "label": "Plugins"
+ "enabled": "Ενεργοποιημένο",
+ "label": "Πρόσθετα",
+ "new": "ΝΕΟ"
},
"view": {
- "label": "View"
+ "label": "Προβολή",
+ "submenu": {
+ "force-reload": "Αναγκαστική Eπαναφόρτωση",
+ "reload": "Επαναφόρτωση",
+ "reset-zoom": "Πραγματικό μέγεθος",
+ "toggle-fullscreen": "Εναλλαγή Πλήρους Οθόνης",
+ "zoom-in": "Μεγέθυνση",
+ "zoom-out": "Σμίκρυνση"
+ }
+ }
+ },
+ "tray": {
+ "next": "Επόμενο",
+ "play-pause": "Αναπαραγωγή/Παύση",
+ "previous": "Προηγούμενο",
+ "quit": "Έξοδος",
+ "restart": "Επανεκκίνηση εφαρμογής",
+ "show": "Εμφάνιση παραθύρου",
+ "tooltip": {
+ "default": "YouTube Music",
+ "with-song-info": "YouTube Music: {{artist}} - {{title}}"
}
}
},
"plugins": {
+ "ad-speedup": {
+ "description": "Εαν παίξει διαφήμιση κάνει σίγαση του ήχου και θέτει την ταχύτητα αναπαραγωγής στο 16x",
+ "name": "Γρήγορη Προώθηση Διαφημίσεων"
+ },
"adblocker": {
"description": "Αποκλεισμός όλων των διαφημίσεων και tracker",
"menu": {
"blocker": "Μέθοδος αποκλεισμού"
},
- "name": "Adblocker"
+ "name": "Μπλοκάρισμα Διαφημίσεων"
+ },
+ "album-actions": {
+ "description": "Προσθέτει κουμπιά Like/Unlike και Dislike/Undislike που δρουν συνολικά σε όλα τα κομμάτια μιας playlist ή ενός άλμπουμ",
+ "name": "Ενέργειες σε Άλμπουμ"
},
"album-color-theme": {
"description": "Εφαρμόζει ένα δυναμικό θέμα και εφέ με βάση τη χρωματική παλέτα του άλμπουμ",
+ "menu": {
+ "color-mix-ratio": {
+ "label": "Αναλογία μίξης χρώματος",
+ "submenu": {
+ "percent": "{{ratio}}%"
+ }
+ }
+ },
"name": "Album Color Theme"
},
"ambient-mode": {
"description": "Εφαρμόζει ένα εφέ φωτισμού ρίχνοντας απαλά χρώματα από το βίντεο, στο φόντο της οθόνης σας.",
"menu": {
"blur-amount": {
+ "label": "Ένταση θαμπώματος",
"submenu": {
"pixels": "{{blurAmount}} pixels"
}
@@ -197,25 +250,30 @@
}
},
"opacity": {
- "label": "Ποσότητα αδιαφάνειας",
+ "label": "Αδιαφάνεια",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
+ "label": "Ποιότητα",
"submenu": {
"pixels": "{{quality}} pixels"
}
},
"size": {
+ "label": "Μέγεθος",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"submenu": {
- "during": "Σε {{interpolationTime}} δεύτερα"
+ "during": "Σε {{interpolationTime}} δευτερόλεπτα"
}
+ },
+ "use-fullscreen": {
+ "label": "Χρήση πλήρους οθόνης"
}
}
},
@@ -257,11 +315,14 @@
"description": "Κάνει τα τραγούδια να είναι αυτόματα σε παύση",
"menu": {
"apply-once": "Εφαρμόζεται μόνο στο πρώτο τραγούδι"
- }
+ },
+ "name": "Απενεργοποίηση αυτόματης αναπαραγωγής"
},
"discord": {
"description": "Δείξτε στους φίλους σας τι ακούτε με το Rich Presence",
"menu": {
+ "auto-reconnect": "Αυτόματη επανασύνδεση",
+ "clear-activity": "Εκκαθάριση δραστηριότητας",
"hide-duration-left": "Απόκρυψη της διάρκειας που απομένει",
"hide-github-button": "Απόκρυψη του συνδέσμου προς GitHub",
"set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας"
@@ -280,34 +341,113 @@
"buttons": {
"ok": "OK"
},
- "message": "Λήψη λίστας αναπαραγωγής {{playlistTitle}}",
- "title": "Λήψη ξεκίνησε"
+ "detail": "{{playlistSize}} τραγούδια)",
+ "message": "Λήψη της λίστας αναπαραγωγής {{playlistTitle}}",
+ "title": "Η λήψη ξεκίνησε"
}
},
"feedback": {
"conversion-progress": "Μετατροπή: {{percent}}%",
- "download-progress": "Download: {{percent}}%",
- "preparing-file": "Προετοιμασία αρχείου…"
+ "converting": "Μετατροπή…",
+ "download-info": "Λήψη του {{artist}} - {{title}} [{{videoId}}",
+ "download-progress": "Λήψη: {{percent}}%",
+ "downloading": "Λήψη…",
+ "downloading-counter": "Λήψη {{current}}/{{total}}…",
+ "downloading-playlist": "Λήψη της λίστας αναπαραγωγής \"{{playlistTitle}}\" - {{playlistSize}} τραγούδια ({{playlistId}})",
+ "folder-already-exists": "Ο φάκελος {{playlistFolder}} υπάρχει ήδη",
+ "loading": "Φόρτωση…",
+ "playlist-is-empty": "Η λίστα αναπραγωγής είναι άδεια",
+ "preparing-file": "Προετοιμασία αρχείου…",
+ "saving": "Αποθήκευση…",
+ "video-id-not-found": "Το βίντεο δεν βρέθηκε"
}
},
+ "menu": {
+ "download-finish-settings": {
+ "prompt": {
+ "last-seconds": "Τελευταία x δευτερόλεπτα"
+ },
+ "submenu": {
+ "percent": "Ποσοστό",
+ "seconds": "Δευτερόλεπτα"
+ }
+ },
+ "download-playlist": "Λήψη λίστας αναπαραγωγής",
+ "skip-existing": "Παράλειψη υπάρχοντων αρχείων"
+ },
"templates": {
- "button": "Download"
+ "button": "Λήψη"
+ }
+ },
+ "music-together": {
+ "internal": {
+ "save": "Αποθήκευση",
+ "unknown-user": "Άγνωστος χρήστης"
+ },
+ "menu": {
+ "connected-users": "Συνδεδεμένοι χρήστες"
+ },
+ "toast": {
+ "add-song-failed": "Απέτυχε η προσθήκη τραγουδιού",
+ "remove-song-failed": "Απέτυχε η αφαίρεση τραγουδιού"
}
},
"navigation": {
- "name": "Navigation"
+ "name": "Πλοήγηση"
},
"no-google-login": {
"name": "No Google Login"
},
"notifications": {
- "name": "Notifications"
+ "name": "Ειδοποιήσεις"
+ },
+ "picture-in-picture": {
+ "menu": {
+ "always-on-top": "Πάντα σε πρώτο πλάνο",
+ "hotkey": {
+ "label": "Πλήκτρο πρόσβασης",
+ "prompt": {
+ "keybind-options": {
+ "hotkey": "Πλήκτρο πρόσβασης"
+ }
+ }
+ },
+ "save-window-position": "Αποθήκευση θέσης παραθύρου",
+ "save-window-size": "Αποθήκευση μεγέθους παραθύρου"
+ }
+ },
+ "playback-speed": {
+ "name": "Ταχύτητα αναπαραγωγής",
+ "templates": {
+ "button": "Ταχύτητα"
+ }
+ },
+ "precise-volume": {
+ "prompt": {
+ "global-shortcuts": {
+ "keybind-options": {
+ "decrease": "Μείωση έντασης",
+ "increase": "Αύξηση έντασης"
+ }
+ }
+ }
+ },
+ "quality-changer": {
+ "backend": {
+ "dialog": {
+ "quality-changer": {
+ "detail": "Τρέχουσα ποιότητα: {{quality}}"
+ }
+ }
+ }
},
"shortcuts": {
"prompt": {
"keybind": {
"keybind-options": {
- "next": "Next"
+ "next": "Επόμενο",
+ "play-pause": "Αναπαραγωγή / Παύση",
+ "previous": "Προηγούμενο"
}
}
}
diff --git a/src/i18n/resources/es.json b/src/i18n/resources/es.json
index 9df946745..537f2bb64 100644
--- a/src/i18n/resources/es.json
+++ b/src/i18n/resources/es.json
@@ -668,6 +668,59 @@
"description": "Salta automáticamente las partes no musicales como la introducción/final o secciones de videos musicales donde la canción no está sonando",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "Proporciona letras de canciones sincronizadas, utilizando proveedores como LRClib.",
+ "errors": {
+ "fetch": "⚠️ - Se ha producido un error al descargar la letra. Por favor, vuelve a intentarlo más tarde.",
+ "not-found": "⚠️ - No se ha encontrado ninguna letra para esta canción."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Carácter predeterminado entre letras",
+ "tooltip": "Elige el carácter predeterminado que se utilizará para el espacio entre letras"
+ },
+ "line-effect": {
+ "label": "Efecto de la línea",
+ "submenu": {
+ "focus": {
+ "label": "Enfoque",
+ "tooltip": "Mostrar solo la línea actual en blanco"
+ },
+ "offset": {
+ "label": "Desplazamiento",
+ "tooltip": "Desplazamiento a la derecha de la línea actual"
+ },
+ "scale": {
+ "label": "Escala",
+ "tooltip": "Escala de la línea actual"
+ }
+ },
+ "tooltip": "Elige el efecto que deseas aplicar a la línea actual"
+ },
+ "precise-timing": {
+ "label": "Haz que la letra esté perfectamente sincronizada",
+ "tooltip": "Calcular al milisegundo la visualización de la línea siguiente (puede tener un pequeño impacto en el rendimiento)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Mostrar la letra aunque sea inexacta",
+ "tooltip": "Si no se encuentra la canción, el complemento vuelve a intentarlo con una búsqueda diferente.\nEl resultado del segundo intento puede no ser exacto."
+ },
+ "show-time-codes": {
+ "label": "Visualización del código de tiempo",
+ "tooltip": "Mostrar los códigos de tiempo junto a la letra"
+ }
+ },
+ "name": "Letras sincronizadas",
+ "refetch-btn": {
+ "fetching": "Recuperando...",
+ "normal": "Volver a buscar letras"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - La letra puede estar desincronizada debido a un desajuste en la duración.",
+ "inexact": "⚠️ - La letra de esta canción puede no ser exacta",
+ "instrumental": "⚠️ - Se trata de una canción instrumental"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Controla la reproducción desde la barra de tareas de Windows",
"name": "Control de medios de la barra de tareas"
diff --git a/src/i18n/resources/et.json b/src/i18n/resources/et.json
new file mode 100644
index 000000000..dcd9e5d7c
--- /dev/null
+++ b/src/i18n/resources/et.json
@@ -0,0 +1,182 @@
+{
+ "common": {
+ "console": {
+ "plugins": {
+ "execute-failed": "{{pluginName}}::{{contextName}} lisamooduli käivitamine ei õnnestunud",
+ "executed-at-ms": "{{pluginName}}::{{contextName}} lisamoodul käivitus {{ms}} millisekundiga",
+ "initialize-failed": "„{{pluginName}}“ lisamooduli töö alustamine ei õnnestunud",
+ "load-all": "Laadime kõiki lisamooduleid",
+ "load-failed": "„{{pluginName}}“ lisamooduli laadimine ei õnnestunud",
+ "loaded": "„{{pluginName}}“ lisamoodul on laaditud",
+ "unload-failed": "„{{pluginName}}“ lisamooduli mälust eemaldamine ei õnnestunud",
+ "unloaded": "„{{pluginName}}“ lisamoodul on mälust eemaldatud"
+ }
+ }
+ },
+ "language": {
+ "code": "et",
+ "local-name": "Eesti",
+ "name": "Estonian"
+ },
+ "main": {
+ "console": {
+ "did-finish-load": {
+ "dev-tools": "Laadimine lõppes, arendaja tarvikud on avatud"
+ },
+ "i18n": {
+ "loaded": "i18n on laaditud"
+ },
+ "second-instance": {
+ "receive-command": "„{{command}}“ käsk on vastu võetud"
+ },
+ "theme": {
+ "css-file-not-found": "CSS faili „{{cssFile}}“ pole olemas, seega eirame eelistust"
+ }
+ },
+ "dialog": {
+ "hide-menu-enabled": {
+ "detail": "Menüü on peidetud ja „Alt“ klahviga saad ta nähtavaks (rakenduse-siseses menüüs „Esc“ klahviga)",
+ "message": "Menüü peitmine on sisselülitatud",
+ "title": "Menüü peitmine on sisselülitatud"
+ },
+ "need-to-restart": {
+ "buttons": {
+ "later": "Hiljem",
+ "restart-now": "Taaskäivita kohe"
+ },
+ "detail": "„{{pluginName}}“ lisamooduli sisselülitamine eeldab rakenduse taaskäivitamist",
+ "message": "„{{pluginName}}“ lisamoodul eeldab rakenduse taaskäivitamist",
+ "title": "Palun käivita rakendus uuesti"
+ },
+ "unresponsive": {
+ "buttons": {
+ "quit": "Välju",
+ "relaunch": "Käivita uuesti",
+ "wait": "Oota"
+ }
+ }
+ },
+ "menu": {
+ "navigation": {
+ "label": "Liikumine",
+ "submenu": {
+ "copy-current-url": "Kopeeri esitamisel oleva pala URL",
+ "go-back": "Mine tagasi",
+ "go-forward": "Mine edasi",
+ "quit": "Välju",
+ "restart": "Käivita rakendus uuesti"
+ }
+ },
+ "plugins": {
+ "label": "Lisamoodulid",
+ "new": "UUS"
+ },
+ "view": {
+ "submenu": {
+ "zoom-in": "Suumi sisse",
+ "zoom-out": "Suumi välja"
+ }
+ }
+ },
+ "tray": {
+ "next": "Edasi",
+ "play-pause": "Esita/Peata esitus",
+ "previous": "Eelmine",
+ "quit": "Välju",
+ "restart": "Käivita rakendus uuesti",
+ "show": "Näita akent",
+ "tooltip": {
+ "default": "YouTube Music",
+ "with-song-info": "YouTube Music: {{artist}} - {{title}}"
+ }
+ }
+ },
+ "plugins": {
+ "ad-speedup": {
+ "description": "Reklaami esitamisel summutatakse heli ja keritakse edasi 16-kordse kiirusega",
+ "name": "Reklaamikiirendaja"
+ },
+ "adblocker": {
+ "description": "Blokeeri kõik reklaamid ja jälitajad",
+ "menu": {
+ "blocker": "Blokeerijad"
+ },
+ "name": "Reklaamiblokeerija"
+ },
+ "ambient-mode": {
+ "menu": {
+ "opacity": {
+ "submenu": {
+ "percent": "{{opacity}}%"
+ }
+ },
+ "quality": {
+ "label": "Kvaliteet",
+ "submenu": {
+ "pixels": "{{quality}} pikslit"
+ }
+ }
+ }
+ },
+ "blur-nav-bar": {
+ "description": "Muudab navigatsiooniriba läbipaistavaks ja hägusaks",
+ "name": "Hägus navigatsiooniriba"
+ },
+ "lyrics-genius": {
+ "description": "Lisa enamustele lugudele laulusõnad",
+ "menu": {
+ "romanized-lyrics": "Latiniseeritud laulusõnad"
+ },
+ "name": "Lyrics Genius",
+ "renderer": {
+ "fetched-lyrics": "Leidsime Geeniuse jaoks ühed laulusõnad"
+ }
+ },
+ "navigation": {
+ "name": "Liikumine"
+ },
+ "scrobbler": {
+ "description": "Lisa kraasimise tugi (last.fm, Listenbrainz, jne)",
+ "dialog": {
+ "lastfm": {
+ "auth-failed": {
+ "message": "Last.fm'i autentimine ei õnnestunud\nPeida hüpikaken järgmise taaskäivituseni.",
+ "title": "Autentimine ei õnnestunud"
+ }
+ }
+ },
+ "menu": {
+ "lastfm": {
+ "api-settings": "Last.fm API seadistused"
+ },
+ "listenbrainz": {
+ "token": "Sisesta ListenBrainz'i kasutaja tunnusluba"
+ },
+ "scrobble-other-media": "Kraasi muud meediat"
+ },
+ "name": "Kraasija",
+ "prompt": {
+ "lastfm": {
+ "api-key": "Last.fm API võti",
+ "api-secret": "Last.fm API saladus"
+ },
+ "listenbrainz": {
+ "token": {
+ "label": "Sisesta oma ListenBrainz'i tunnusluba:",
+ "title": "ListenBrainz'i tunnusluba"
+ }
+ }
+ }
+ },
+ "synced-lyrics": {
+ "menu": {
+ "show-lyrics-even-if-inexact": {
+ "tooltip": "Kui lugu ei leidu, siis lisamoodul üritab uut otsingut teistsuguse päringuga.\nTeise katse puhul tulemused ei pruugi olla väga täpsed."
+ }
+ }
+ },
+ "tuna-obs": {
+ "description": "Lõimimine OBSi Tuna lisamooduliga"
+ }
+ }
+}
diff --git a/src/i18n/resources/fil.json b/src/i18n/resources/fil.json
index e23e78bbd..770257b0a 100644
--- a/src/i18n/resources/fil.json
+++ b/src/i18n/resources/fil.json
@@ -207,10 +207,12 @@
},
"plugins": {
"ad-speedup": {
- "description": "Pag mag-play ng ad, I-mute ang audio at i-set ang bilis ng playback ng 16x"
+ "description": "Pag mag-play ng ad, I-mute ang audio at i-set ang bilis ng playback ng 16x",
+ "name": "Pagbilis ng Ad"
},
"adblocker": {
- "description": "I-block ang lahat ng ad at tracking"
+ "description": "I-block ang lahat ng ad at tracking",
+ "name": "Pag-block ng Ad"
},
"album-actions": {
"description": "Idadagdag ang Undislike, Dislike, Like, at Unlike na button para ilapat ito sa lahat ng kanta sa isang playlist o album",
@@ -392,6 +394,8 @@
"download-finish-settings": {
"label": "Kung natapos ang download",
"prompt": {
+ "last-percent": "Tapos ng x na porsyento",
+ "last-seconds": "Huling x na segundo",
"title": "I-configure kung kailan magda-download"
},
"submenu": {
@@ -406,6 +410,9 @@
},
"renderer": {
"can-not-update-progress": "Hindi ma-update ang progress"
+ },
+ "templates": {
+ "button": "Mag download"
}
},
"exponential-volume": {
@@ -475,7 +482,8 @@
"name": "Nabigasyon"
},
"no-google-login": {
- "description": "Tanggalin ang mga Google login na button at mga link mula sa interface"
+ "description": "Tanggalin ang mga Google login na button at mga link mula sa interface",
+ "name": "Walang Google na Login"
},
"notifications": {
"description": "Magpakita ng notification kapag nagsimulang tumugtog ang kanta (magagamit ang mga interactive na notification sa Windows)",
@@ -491,7 +499,8 @@
},
"priority": "Prioridad ng Notification",
"unpause-notification": "Ipakita ang notification sa pag-unpause"
- }
+ },
+ "name": "Mga Abiso"
},
"picture-in-picture": {
"description": "Payagan ang pag-palit ng app sa picture-in-picture mode",
@@ -580,6 +589,7 @@
"shortcuts": {
"description": "Nagbibigay-daan sa pagtatakda ng mga global hotkey para sa playback (play/pause/susunod/nakaraan) at pag-off ng media OSD sa pamamagitan ng pag-override sa mga media key, pag-on sa Ctrl/CMD + F para maghanap, pag-on sa suporta ng Linux MPRIS para sa mga media key, at mga custom na hotkey para sa mga advanced na user",
"menu": {
+ "override-media-keys": "I-override ang mga Media Key",
"set-keybinds": "I-set ang Global Song Control"
},
"name": "Mga shortcut (at MPRIS)",
@@ -587,6 +597,7 @@
"keybind": {
"keybind-options": {
"next": "Susunod",
+ "play-pause": "Mag-play / Mag-pause",
"previous": "Nakaraan"
},
"label": "Pumili ng Global na Keybind para sa Songs Control:"
@@ -594,14 +605,65 @@
}
},
"skip-disliked-songs": {
- "description": "Laktawan ang na-dislike na kanta"
+ "description": "Laktawan ang na-dislike na kanta",
+ "name": "I-skip ang mga Na-dislike na Kanta"
},
"skip-silences": {
- "description": "Automatikong laktawan ang mga tahimik na mga seksyon sa kanta"
+ "description": "Automatikong laktawan ang mga tahimik na mga seksyon sa kanta",
+ "name": "I-skip ang mga Katahimikan"
},
"sponsorblock": {
"description": "Automatikong Laktawan ang di part ng kanta tulad ng intro/outro o part ng mga music video na ang kanta ay di nagple-play"
},
+ "synced-lyrics": {
+ "description": "Nagbibigay ng naka-sync na lyrics sa mga kanta, gamit ang mga provider tulad ng LRClib.",
+ "errors": {
+ "fetch": "⚠️ - Nagkaroon ng error habang kinukuha ang lyrics. Subukang muli mamaya.",
+ "not-found": "⚠️ - Walang nakitang lyrics para sa kantang ito."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Default na character sa pagitan ng lyrics",
+ "tooltip": "Pumili ng default na character na gagamitin sa pagitan ng lyrics"
+ },
+ "line-effect": {
+ "label": "Effect ng Linya",
+ "submenu": {
+ "focus": {
+ "tooltip": "Gawing puti lamang ang kasalukuyang linya"
+ },
+ "offset": {
+ "tooltip": "I-offset sa kanan ang kasalukuyang linya"
+ },
+ "scale": {
+ "tooltip": "I-scale ang kasalukuyang linya"
+ }
+ },
+ "tooltip": "Pumili ng effect na ilalapat sa kasalukuyang linya"
+ },
+ "precise-timing": {
+ "label": "Gawing perpektong naka-sync ang lyrics",
+ "tooltip": "Kalkulahin sa millisecond ang pagpapakita ng susunod na linya (maaaring magkaroon ng maliit na epekto sa performance)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Ipakita ang lyrics kahit di-eksakto",
+ "tooltip": "Kung hindi matagpuan ang kanta, susubukan muli ng plugin gamit ang ibang query sa paghahanap.\nAng resulta mula sa pangalawang pagsubok ay maaaring hindi eksakto."
+ },
+ "show-time-codes": {
+ "label": "Ipakita ang mga time code",
+ "tooltip": "Ipakita ang mga time code kasunod sa lyrics"
+ }
+ },
+ "refetch-btn": {
+ "fetching": "Nag-fe-fetch...",
+ "normal": "I-fetch muli ang lyrics"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - Maaaring hindi naka-sync ang lyrics dahil sa hindi pagkakatugma ng duration.",
+ "inexact": "⚠️ - Maaaring hindi eksakto ang lyrics para sa kantang ito",
+ "instrumental": "⚠️ - Ito ay isang instrumental na kanta"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Kontrolin ang pag-play mula sa iyong taskbar ng Windows"
},
diff --git a/src/i18n/resources/fr.json b/src/i18n/resources/fr.json
index 28b9ff990..90c928a6b 100644
--- a/src/i18n/resources/fr.json
+++ b/src/i18n/resources/fr.json
@@ -668,6 +668,59 @@
"description": "Saute automatiquement les parties non musicales comme l'intro/outro ou les parties de clips vidéo où la chanson n'est pas lue",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "Ajoute des paroles synchronisées aux chansons, grâce à LRClib par exemple.",
+ "errors": {
+ "fetch": "⚠️ - Une erreur s'est produite en allant chercher les paroles. Merci de réessayer plus tard.",
+ "not-found": "⚠️ - Aucune paroles trouvées pour cette musique."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Caractère par défaut entre les paroles",
+ "tooltip": "Choisi le caractère par défaut à utiliser pour l'espace entre les paroles"
+ },
+ "line-effect": {
+ "label": "Effet de ligne",
+ "submenu": {
+ "focus": {
+ "label": "Focus",
+ "tooltip": "Rend seulement la ligne actuelle blanche"
+ },
+ "offset": {
+ "label": "Décalage",
+ "tooltip": "Décale sur la droite la ligne actuelle"
+ },
+ "scale": {
+ "label": "Grossissement",
+ "tooltip": "Agrandis la ligne actuelle"
+ }
+ },
+ "tooltip": "Choisi l'effet à appliquer sur la ligne actuelle"
+ },
+ "precise-timing": {
+ "label": "Rend les paroles parfaitement synchronisées",
+ "tooltip": "Calcul à la milliseconde près l'affichage de la ligne suivante (peut avoir un faible impact sur les performances)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Afficher les paroles même si inexactes",
+ "tooltip": "Si la musique n'est pas trouvé, le plugin essaye à nouveau avec une différence requête.\nLe résultat du deuxième essais peut ne pas être exacte."
+ },
+ "show-time-codes": {
+ "label": "Afficher les timecodes",
+ "tooltip": "Affiche à côté de chaque paroles son timecode"
+ }
+ },
+ "name": "Paroles Synchronisées",
+ "refetch-btn": {
+ "fetching": "Chargement...",
+ "normal": "Rafraîchir les paroles"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - Les paroles peuvent ne pas être synchronisées à cause d'une différence de durée.",
+ "inexact": "⚠️ - Les paroles de cette chanson peuvent ne pas être exactes",
+ "instrumental": "⚠️ - Cette musique n'a pas de paroles"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Contrôlez la lecture depuis votre barre des tâches Windows",
"name": "Contrôle multimédia de la barre des tâches"
diff --git a/src/i18n/resources/he.json b/src/i18n/resources/he.json
index 9a0d46c69..6676e1f20 100644
--- a/src/i18n/resources/he.json
+++ b/src/i18n/resources/he.json
@@ -2,13 +2,14 @@
"common": {
"console": {
"plugins": {
- "execute-failed": "נכשל ביצוע תוסף {{pluginName}}::{{contextName}}",
+ "execute-failed": "שגיאה בהרצת התוסף {{pluginName}}::{{contextName}}",
"executed-at-ms": "התוסף {{pluginName}}:{{contextName}} בוצע ב {{ms}}ms",
"initialize-failed": "טעינת התוסף \"{{pluginName}}\" נכשלה",
"load-all": "טוען את כל התוספים",
- "load-failed": "טעינת התוסף \"{{pluginName}}\" נכשלה",
+ "load-failed": "לא ניתן לטעון את התוסף {{pluginName}}",
"loaded": "התוסף \"{{pluginName}}\" נטען",
- "unload-failed": "הסרת התוסף \"{{pluginName}} נכשלה"
+ "unload-failed": "הסרת התוסף \"{{pluginName}} נכשלה",
+ "unloaded": "תוסף {{pluginName}} הורד"
}
}
},
@@ -25,14 +26,28 @@
"i18n": {
"loaded": "i18n נטען"
},
+ "second-instance": {
+ "receive-command": "התקבלה פקודה מעבר פרוטוקל: {{command}}"
+ },
"theme": {
"css-file-not-found": "קובץ ה-CSS \"{{cssFile}}\" לא קיים. מדלג"
},
+ "unresponsive": {
+ "details": "שגיאה ללא תגובה\n{{error}}"
+ },
"when-ready": {
"clearing-cache-after-20s": "מוחק קבצי מתמון"
+ },
+ "window": {
+ "tried-to-render-offscreen": "ווינדוס ניסה להציג תוכן מחוץ למסך, גודל חלון={{windowSize}}, גודל מסך={{displaySize}}, מיקום={{position}}"
}
},
"dialog": {
+ "hide-menu-enabled": {
+ "detail": "התפריט מוחבא, השתמש \"Alt\" על להציג אותו (או \"Esacpe\" אם משתמשים בתפריט בתוך האפליקציה)",
+ "message": "הסתרת התפריט מופעלת",
+ "title": "הסתרת התפריט הופעלה"
+ },
"need-to-restart": {
"buttons": {
"later": "אחר כך",
diff --git a/src/i18n/resources/hu.json b/src/i18n/resources/hu.json
index 24ae52707..4d1a80348 100644
--- a/src/i18n/resources/hu.json
+++ b/src/i18n/resources/hu.json
@@ -7,8 +7,8 @@
"initialize-failed": "Nem sikerült inicializálni a \"{{pluginName}}\" plugint",
"load-all": "Összes bővítmény betöltése",
"load-failed": "Nem sikerült betölteni a \"{{pluginName}}\" plugint",
- "loaded": "\"{{pluginName}}\" nevű plugin betöltve",
- "unload-failed": "Nem sikerült a \"{{pluginName}}\" bővítményt letölteni",
+ "loaded": "\"{{pluginName}}\" plugin betöltve",
+ "unload-failed": "Nem sikerült a \"{{pluginName}}\" bővítményt kikapcsolni",
"unloaded": "A \"{{pluginName}}\" bővítmény kikapcsolva"
}
}
@@ -567,7 +567,7 @@
"menu": {
"arrows-shortcuts": "Helyi nyíl-billentyűkkel való vezérlés",
"custom-volume-steps": "Egyedi hangerőléptetés beállítása",
- "global-shortcuts": "Globális gyorsbillentyűk"
+ "global-shortcuts": "Globális Gyorsbillentyűk"
},
"name": "Precíz hangerő",
"prompt": {
diff --git a/src/i18n/resources/id.json b/src/i18n/resources/id.json
index 96754bb98..42d78b8a3 100644
--- a/src/i18n/resources/id.json
+++ b/src/i18n/resources/id.json
@@ -207,6 +207,10 @@
}
},
"plugins": {
+ "ad-speedup": {
+ "description": "Jika iklan diputar, audio akan dimatikan dan kecepatan pemutaran akan diatur ke 16x",
+ "name": "Percepatan Iklan"
+ },
"adblocker": {
"description": "Blokir semua iklan dan pelacakan di luar kotak",
"menu": {
@@ -410,6 +414,21 @@
"description": "Unduh MP3 / sumber suara secara langsung via antarmuka",
"menu": {
"choose-download-folder": "Pilih folder unduhan",
+ "download-finish-settings": {
+ "label": "Unduh setelah selesai",
+ "prompt": {
+ "last-percent": "x persen terakhir",
+ "last-seconds": "x detik terakhir",
+ "title": "Konfigurasikan kapan akan mengunduh"
+ },
+ "submenu": {
+ "advanced": "Lanjutan",
+ "enabled": "Diaktifkan",
+ "mode": "Mode waktu",
+ "percent": "Persen",
+ "seconds": "Detik"
+ }
+ },
"download-playlist": "Unduh daftar putar",
"presets": "Prasetel",
"skip-existing": "Lewati berkas yang sudah ada"
@@ -649,6 +668,59 @@
"description": "Otomatis Melewati bagian yang bukan musik seperti intro/outro atau bagian dari video musik di mana lagu tidak dimainkan",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "Menyediakan lirik lagu yang disinkronkan, menggunakan penyedia seperti LRClib.",
+ "errors": {
+ "fetch": "⚠️ - Terjadi kesalahan saat mengambil lirik. Coba lagi nanti.",
+ "not-found": "⚠️ - Tidak ada lirik yang ditemukan untuk lagu ini."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Karakter default antara lirik",
+ "tooltip": "Pilih karakter default yang akan digunakan untuk celah antar lirik"
+ },
+ "line-effect": {
+ "label": "Efek garis",
+ "submenu": {
+ "focus": {
+ "label": "Fokus",
+ "tooltip": "Jadikan hanya baris saat ini berwarna putih"
+ },
+ "offset": {
+ "label": "Offset",
+ "tooltip": "Mengimbangi garis saat ini di sebelah kanan"
+ },
+ "scale": {
+ "label": "Skala",
+ "tooltip": "Skala garis saat ini"
+ }
+ },
+ "tooltip": "Pilih efek yang akan diterapkan ke baris saat ini"
+ },
+ "precise-timing": {
+ "label": "Buat liriknya tersinkronisasi dengan sempurna",
+ "tooltip": "Hitung hingga milidetik tampilan baris berikutnya (dapat berdampak kecil pada kinerja)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Tampilkan lirik meskipun tidak tepat",
+ "tooltip": "Jika lagu tidak ditemukan, plugin akan mencoba lagi dengan kueri pencarian yang berbeda.\nHasil dari percobaan kedua mungkin tidak tepat."
+ },
+ "show-time-codes": {
+ "label": "Tampilkan kode waktu",
+ "tooltip": "Tampilkan kode waktu di samping lirik"
+ }
+ },
+ "name": "Lirik yang Disinkronkan",
+ "refetch-btn": {
+ "fetching": "Mengambil...",
+ "normal": "Ambil ulang lirik"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - Liriknya mungkin tidak sinkron karena ketidakcocokan durasi.",
+ "inexact": "⚠️ - Lirik lagu ini mungkin tidak tepat",
+ "instrumental": "⚠️ - Ini adalah lagu instrumental"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Kendalikan pemutaran dari bilah alat Windows",
"name": "Pengendali Media di Bilah Alat"
diff --git a/src/i18n/resources/ja.json b/src/i18n/resources/ja.json
index 9017527d3..cf7640e4e 100644
--- a/src/i18n/resources/ja.json
+++ b/src/i18n/resources/ja.json
@@ -65,7 +65,7 @@
},
"detail": "ご不便をおかけして申し訳ございません! 何をするか選んでください:",
"message": "アプリケーションは応答していません",
- "title": "ウィンドウが応答しません"
+ "title": "ウィンドウが応答していません"
},
"update-available": {
"buttons": {
@@ -207,6 +207,10 @@
}
},
"plugins": {
+ "ad-speedup": {
+ "description": "広告が再生されると、自動的にミュートされ、再生速度が16倍に設定されます",
+ "name": "広告のスピードを上げる"
+ },
"adblocker": {
"description": "すべての広告とトラッカーをブロックj",
"menu": {
@@ -410,6 +414,21 @@
"description": "UIから直にMP3・ソースオーディオをダウンロードします",
"menu": {
"choose-download-folder": "ダウンロードフォルダ",
+ "download-finish-settings": {
+ "label": "完了時にダウンロード",
+ "prompt": {
+ "last-percent": "x パーセント後",
+ "last-seconds": "最後の x 秒",
+ "title": "保存するタイミング"
+ },
+ "submenu": {
+ "advanced": "高度な設定",
+ "enabled": "有効",
+ "mode": "時間モード",
+ "percent": "パーセント",
+ "seconds": "秒"
+ }
+ },
"download-playlist": "プレイリストをダウンロード",
"presets": "プリセット",
"skip-existing": "存在するファイルをスキップ"
@@ -649,6 +668,59 @@
"description": "イントロ/アウトロなどの音楽以外の部分や、曲が再生されていないミュージック ビデオの部分を自動的にスキップします",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "LRClibのようなプロバイダを使って、楽曲に同期した歌詞を使用する。",
+ "errors": {
+ "fetch": "⚠️ - 歌詞の取得中にエラーが発生しました。 後でもう一度お試しください。",
+ "not-found": "⚠️ - この曲の歌詞は見つかりませんでした。"
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "デフォルトの歌詞間の文字",
+ "tooltip": "歌詞と歌詞の間に使用するデフォルトの文字を選択してください"
+ },
+ "line-effect": {
+ "label": "歌詞表示のエフェクト",
+ "submenu": {
+ "focus": {
+ "label": "フォーカス",
+ "tooltip": "現在の行だけを白くする"
+ },
+ "offset": {
+ "label": "オフセット",
+ "tooltip": "オフセットを現在の行の右側にする"
+ },
+ "scale": {
+ "label": "サイズ",
+ "tooltip": "現在の行のサイズ変更をする"
+ }
+ },
+ "tooltip": "現在の行に適用するエフェクトを選択"
+ },
+ "precise-timing": {
+ "label": "歌詞を完璧に同期させる",
+ "tooltip": "次の行の表示をミリ秒単位で計算する(パフォーマンスに若干の影響を与える可能性があります)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "歌詞が不正確でも表示する",
+ "tooltip": "曲が見つからなかった場合、プラグインは別の検索クエリで再試行します。\nただし、再試行の結果は正確でない可能性があります。"
+ },
+ "show-time-codes": {
+ "label": "タイムコードを表示",
+ "tooltip": "歌詞の横にタイムコードを表示"
+ }
+ },
+ "name": "歌詞を同期",
+ "refetch-btn": {
+ "fetching": "取得中...",
+ "normal": "歌詞を再取得"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - タイミングが合わないため、歌詞が同期されていない可能性があります。",
+ "inexact": "⚠️ - この曲の歌詞は正確ではないかもしれません",
+ "instrumental": "⚠️ - これは演奏のみの曲です"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Windowsタスクバーから再生をコントロール",
"name": "タスクバーメディアコントロール"
diff --git a/src/i18n/resources/ms.json b/src/i18n/resources/ms.json
index 0667bcca4..f2449ea64 100644
--- a/src/i18n/resources/ms.json
+++ b/src/i18n/resources/ms.json
@@ -5,6 +5,7 @@
"execute-failed": "Pelaksaan plugin gagal {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} dilaksanakan pada {{ms}}ms",
"initialize-failed": "Gagal untuk memulakan plugin \"{{pluginName}}\"",
+ "load-all": "Memuatkan semua plugin",
"loaded": "Plugin \"{{pluginName}}\" dimuatkan",
"unload-failed": "Gagal untuk memunggah plugin \"{{pluginName}}\"",
"unloaded": "Plugin \"{{pluginName}}\" dipunggahkan"
@@ -39,15 +40,22 @@
"detail": "Menu telah disembunyikan, guna 'Alt' untuk menunjukkannya (atau 'Escape' jika menggunakan In-App Menu)"
},
"need-to-restart": {
+ "buttons": {
+ "later": "Nanti",
+ "restart-now": "Restart Sekarang"
+ },
"message": "\"{{pluginName}}\" perlu dimulakan semula",
"title": "Mulakan Semula Diperlukan"
},
"unresponsive": {
"buttons": {
+ "quit": "Berhenti",
"relaunch": "Lancar Semula",
"wait": "Tunggu"
},
- "detail": "Kami memohon maaf atas kesulitan! sila pilih apa yang perlu dilakukan:"
+ "detail": "Kami memohon maaf atas kesulitan! sila pilih apa yang perlu dilakukan:",
+ "message": "Aplikasi Tidak Responsif",
+ "title": "Window Tidak Responsif"
},
"update-available": {
"buttons": {
@@ -58,16 +66,137 @@
}
},
"menu": {
+ "about": "Mengenai",
"navigation": {
"label": "Navigasi",
"submenu": {
"copy-current-url": "Salin URL semasa",
- "go-back": "Pulang",
+ "go-back": "Belakang",
+ "go-forward": "Depan",
"quit": "Keluar"
}
},
"options": {
- "label": "Pilihan"
+ "label": "Tetapan",
+ "submenu": {
+ "advanced-options": {
+ "label": "Tetapan Lanjutan",
+ "submenu": {
+ "set-proxy": {
+ "prompt": {
+ "placeholder": "Contoh: SOCKS5://127.0.0.1:9999",
+ "title": "Set proksi"
+ }
+ }
+ }
+ },
+ "always-on-top": "Sentiasa di atas",
+ "auto-update": "Kemas Kini Automatik",
+ "hide-menu": {
+ "dialog": {
+ "message": "Menu akan disembunyikan pada pelancaran seterusnya, gunakan [Alt] untuk menunjukkannya (atau backtick [`] jika menggunakan dalam aplikasi-menu)"
+ }
+ },
+ "language": {
+ "dialog": {
+ "message": "Bahasa akan ditukar selepas dimulakan semula",
+ "title": "Bahasa Berubah"
+ },
+ "label": "Bahasa",
+ "submenu": {
+ "to-help-translate": "Ingin membantu menterjemah? Klik di sini"
+ }
+ },
+ "resume-on-start": "Mulakan semula lagu terakhir apabila aplikasi dimulakan",
+ "start-at-login": "Mulakan semasa log masuk",
+ "starting-page": {
+ "label": "Halaman Permulaan"
+ },
+ "tray": {
+ "submenu": {
+ "play-pause-on-click": "Main / Hentikan pada klik"
+ }
+ },
+ "visual-tweaks": {
+ "label": "Pembaikan Visual",
+ "submenu": {
+ "like-buttons": {
+ "default": "Lalai",
+ "hide": "Sembunyi"
+ },
+ "theme": {
+ "dialog": {
+ "button": {
+ "cancel": "Batalkan",
+ "remove": "Padam"
+ }
+ },
+ "label": "Tema"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tray": {
+ "next": "Seterusnya",
+ "play-pause": "Main / Jeda",
+ "previous": "Sebelumnya",
+ "quit": "Keluar",
+ "restart": "Mulakan Semula Aplikasi"
+ }
+ },
+ "plugins": {
+ "ambient-mode": {
+ "menu": {
+ "quality": {
+ "label": "Kualiti"
+ },
+ "size": {
+ "label": "Saiz"
+ }
+ }
+ },
+ "captions-selector": {
+ "prompt": {
+ "selector": {
+ "title": "Pilih bahasa kapsyen"
+ }
+ }
+ },
+ "synced-lyrics": {
+ "menu": {
+ "show-lyrics-even-if-inexact": {
+ "label": "Tunjukkan lirik walaupun tidak tepat",
+ "tooltip": "Jika lagu tidak ditemui, plugin cuba lagi dengan pertanyaan carian yang berbeza. \nHasil dari percubaan kedua mungkin tidak tepat."
+ },
+ "show-time-codes": {
+ "tooltip": "Tunjukkan kod masa di sebelah lirik"
+ }
+ }
+ },
+ "taskbar-mediacontrol": {
+ "description": "Kawalan main balik dari bar tugas Windows anda",
+ "name": "Kawalan Media Bar Tugas"
+ },
+ "video-toggle": {
+ "menu": {
+ "align": {
+ "submenu": {
+ "left": "Kiri",
+ "middle": "Tengah",
+ "right": "Kanan"
+ }
+ },
+ "force-hide": "Alih Keluar Tab Video",
+ "mode": {
+ "submenu": {
+ "disabled": "Tidak Aktif"
+ }
+ }
+ },
+ "templates": {
+ "button": "Lagu"
}
}
}
diff --git a/src/i18n/resources/nl.json b/src/i18n/resources/nl.json
index a7ac8bc0e..75f13c467 100644
--- a/src/i18n/resources/nl.json
+++ b/src/i18n/resources/nl.json
@@ -158,6 +158,14 @@
},
"remove-upgrade-button": "Upgrade-knop verwijderen",
"theme": {
+ "dialog": {
+ "button": {
+ "cancel": "Annuleren",
+ "remove": "Verwijderen"
+ },
+ "remove-theme": "Weet je zeker dat je het aangepaste thema wilt verwijderen?",
+ "remove-theme-message": "Dit verwijderd het aangepaste thema"
+ },
"label": "Thema",
"submenu": {
"import-css-file": "Aangepast CSS-bestand importeren",
@@ -199,6 +207,10 @@
}
},
"plugins": {
+ "ad-speedup": {
+ "description": "Wanneer een advertentie afspeelt, dempt het geluid en versnelt de playback naar 16x",
+ "name": "Snellere advertenties"
+ },
"adblocker": {
"description": "Blokkeer alle advertenties en tracking vanuit de doos",
"menu": {
@@ -402,6 +414,21 @@
"description": "Download MP3 / bron-audio rechtstreeks vanuit de interface",
"menu": {
"choose-download-folder": "Kies de downloadmap",
+ "download-finish-settings": {
+ "label": "Downloaden bij voltooiing",
+ "prompt": {
+ "last-percent": "Na x procent",
+ "last-seconds": "Laatste x seconden",
+ "title": "Configureren wanneer te downloaden"
+ },
+ "submenu": {
+ "advanced": "Geavanceerd",
+ "enabled": "Ingeschakeld",
+ "mode": "Tijd-modus",
+ "percent": "Procent",
+ "seconds": "Seconden"
+ }
+ },
"download-playlist": "Afspeellijst downloaden",
"presets": "Voorinstellingen",
"skip-existing": "Bestaande bestanden overslaan"
@@ -523,8 +550,20 @@
"save-window-size": "Sla schermgrootte op"
}
},
+ "video-toggle": {
+ "menu": {
+ "mode": {
+ "submenu": {
+ "disabled": "Uitgeschakeld"
+ }
+ }
+ }
+ },
"visualizer": {
"description": "Voeg een visuele equalizer toe",
+ "menu": {
+ "visualizer-type": "Type visualisator"
+ },
"name": "Visualisator"
}
}
diff --git a/src/i18n/resources/pl.json b/src/i18n/resources/pl.json
index 7e4369298..02d7711e9 100644
--- a/src/i18n/resources/pl.json
+++ b/src/i18n/resources/pl.json
@@ -668,6 +668,22 @@
"description": "Automatycznie pomija fragmenty niebędące muzyką, takie jak wstęp/zakończenie lub fragmenty teledysków, w których utwór nie jest odtwarzany",
"name": "Pomiń nieistotne fragmenty"
},
+ "synced-lyrics": {
+ "description": "Dodaje zsynchronizowane napisy do utworów używając między innymi LRClib.",
+ "errors": {
+ "fetch": "⚠️ - Wystąpił błąd podczas pobierania tekstu utworu. Spróbuj ponownie później.",
+ "not-found": "⚠️ - Nie znaleziono napisów dla tego utworu."
+ },
+ "name": "Napisy zsynchronizowane",
+ "refetch-btn": {
+ "fetching": "Pobieranie napisów...",
+ "normal": "Odśwież napisy"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - Napisy mogą nie być zsynchronizowane z powodu różnicy w czasie trwania.",
+ "instrumental": "⚠️ - To jest utwór instrumentalny"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Steruj odtwarzaniem z paska zadań systemu Windows",
"name": "Kontroler odtwarzania z paska zadań"
diff --git a/src/i18n/resources/pt.json b/src/i18n/resources/pt.json
index ba02fa8b1..6d36cee68 100644
--- a/src/i18n/resources/pt.json
+++ b/src/i18n/resources/pt.json
@@ -668,6 +668,59 @@
"description": "Ignora automaticamente partes não musicais, como introdução/final ou partes de videoclipes onde a música não está tocando",
"name": "SponsorBlock (bloqueador de patrocínios)"
},
+ "synced-lyrics": {
+ "description": "Fornece letras sincronizadas de músicas, utilizando fornecedores como o LRClib.",
+ "errors": {
+ "fetch": "⚠️ - Ocorreu um erro ao obter as letras da música. Por favor, tenta novamente mais tarde.",
+ "not-found": "⚠️ - Não foram encontradas letras para esta música."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Caractere padrão entre as letras",
+ "tooltip": "Escolha o caractere padrão para usar no espaço entre as letras"
+ },
+ "line-effect": {
+ "label": "Efeito de linha",
+ "submenu": {
+ "focus": {
+ "label": "Foco",
+ "tooltip": "Deixe apenas a linha atual branca"
+ },
+ "offset": {
+ "label": "Deslocamento",
+ "tooltip": "Desloque a linha atual para a direita"
+ },
+ "scale": {
+ "label": "Escala",
+ "tooltip": "Escalar a linha atual"
+ }
+ },
+ "tooltip": "Escolha o efeito a ser aplicado à linha atual"
+ },
+ "precise-timing": {
+ "label": "Sincronize perfeitamente as letras",
+ "tooltip": "Calcule até o milissegundo a exibição da próxima linha (pode ter um pequeno impacto no desempenho)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Mostrar letras mesmo que imprecisas",
+ "tooltip": "Se a música não for encontrada, o plugin tenta novamente com uma consulta de pesquisa diferente.\nO resultado da segunda tentativa pode não ser exato."
+ },
+ "show-time-codes": {
+ "label": "Mostrar códigos de tempo",
+ "tooltip": "Mostrar os códigos de tempo ao lado das letras"
+ }
+ },
+ "name": "Letras Sincronizadas",
+ "refetch-btn": {
+ "fetching": "Buscando...",
+ "normal": "Buscar as letras novamente"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - As letras da música pode estar dessincronizada devido a um erro de duração.",
+ "inexact": "⚠️ - As letras desta música podem não ser exactas.",
+ "instrumental": "⚠️ - Esta é uma música instrumental."
+ }
+ },
"taskbar-mediacontrol": {
"description": "Controle a reprodução na barra de tarefas do Windows",
"name": "Controle de mídia da barra de tarefas"
diff --git a/src/i18n/resources/ru.json b/src/i18n/resources/ru.json
index 004ff7922..36e1c0f84 100644
--- a/src/i18n/resources/ru.json
+++ b/src/i18n/resources/ru.json
@@ -207,6 +207,10 @@
}
},
"plugins": {
+ "ad-speedup": {
+ "description": "Если воспроизводится реклама, аудио заглушается и скорость воспроизведения устанавливается на 16х",
+ "name": "Ускоренная перемотка"
+ },
"adblocker": {
"description": "Блокируйте всю рекламу и трекинг сразу после установки",
"menu": {
@@ -277,7 +281,7 @@
},
"audio-compressor": {
"description": "Применяет компрессию к аудио (уменьшает громкость самых громких частей сигнала и повышает громкость самых тихих частей)",
- "name": "Аудио компрессор"
+ "name": "Нормализация аудио"
},
"blur-nav-bar": {
"description": "Делает панель навигации прозрачной и размытой",
@@ -649,6 +653,58 @@
"description": "Автоматически пропускает не музыкальные фрагменты, например интро/аутро или фрагменты музыкальных клипов, в которых песня не звучит (тишина)",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "Предоставляет синхронизированные слова для песен из таких источников, как LRClib.",
+ "errors": {
+ "fetch": "⚠️ - Возникла ошибка во время получения слов. Повторите попытку позже.",
+ "not-found": "⚠️ - Для этой песни не найдено слов."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Стандартный символ между словами",
+ "tooltip": "Выберите стандартный символ для заполнения пространства между словами"
+ },
+ "line-effect": {
+ "label": "Эффект строки",
+ "submenu": {
+ "focus": {
+ "label": "Фокусировка",
+ "tooltip": "Делает только текущую строку белой"
+ },
+ "offset": {
+ "label": "Сдвиг",
+ "tooltip": "Сдвигает текущую строку вправо"
+ },
+ "scale": {
+ "label": "Увеличение",
+ "tooltip": "Увеличивает текущую строку"
+ }
+ },
+ "tooltip": "Выберите эффект применяемый к текущей строке"
+ },
+ "precise-timing": {
+ "label": "Идеально синхронизировать слова",
+ "tooltip": "До миллисекунды рассчитывает отображение следующей строки(может оказать небольшое влияние на производительность)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Показывать слова, даже если неточные",
+ "tooltip": "Если песня не найдена, плагин попытается снова с другим поисковым запросом.\nСо второй попытки результат может быть неточным."
+ },
+ "show-time-codes": {
+ "label": "Показывать временные метки",
+ "tooltip": "Показывает временные метки рядом со словами"
+ }
+ },
+ "refetch-btn": {
+ "fetching": "Сбор данных...",
+ "normal": "Обновить слова"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - Слова могут быть неточно синхронизированы из-за несовпадения длины трека.",
+ "inexact": "⚠️ - Слова для этой песни могут быть неточными",
+ "instrumental": "⚠️ - Это инструментальная музыка"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Управляйте воспроизведением с панели задач Windows",
"name": "Управление мультимедиа на панели задач"
@@ -692,7 +748,7 @@
"menu": {
"visualizer-type": "Вид визуализации"
},
- "name": "Визуалайзер"
+ "name": "Визуализатор"
}
}
}
diff --git a/src/i18n/resources/tr.json b/src/i18n/resources/tr.json
index a66e5c264..b6cd97697 100644
--- a/src/i18n/resources/tr.json
+++ b/src/i18n/resources/tr.json
@@ -207,6 +207,10 @@
}
},
"plugins": {
+ "ad-speedup": {
+ "description": "Bir reklam oynatılırsa sesi kapatır ve oynatma hızını 16x olarak ayarlar",
+ "name": "Hızlandırma"
+ },
"adblocker": {
"description": "Tüm reklamları ve izleyicileri engelle",
"menu": {
@@ -664,6 +668,59 @@
"description": "Giriş/Çıkış gibi müzik olmayan kısımları veya müzik videolarında şarkının çalmadığı kısımları otomatik olarak atlar",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "LRClib gibi sağlayıcıları kullanarak şarkılara senkronize şarkı sözleri sağlar.",
+ "errors": {
+ "fetch": "⚠️ - Şarkı sözleri getirilirken bir hata oluştu. Lütfen daha sonra tekrar deneyin.",
+ "not-found": "⚠️ - Bu şarkı için şarkı sözü bulunamadı."
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "Şarkı sözleri arasında varsayılan karakter",
+ "tooltip": "Şarkı sözleri arasındaki boşluk için kullanılacak varsayılan karakteri seçin"
+ },
+ "line-effect": {
+ "label": "Çizgi etkisi",
+ "submenu": {
+ "focus": {
+ "label": "odak",
+ "tooltip": "Yalnızca geçerli satırı beyaz yapın"
+ },
+ "offset": {
+ "label": "telafi etmek,ofset",
+ "tooltip": "Geçerli satırın sağındaki ofset"
+ },
+ "scale": {
+ "label": "ölçek",
+ "tooltip": "Geçerli satırı ölçeklendirir"
+ }
+ },
+ "tooltip": "Geçerli satıra uygulanacak efekti seçin"
+ },
+ "precise-timing": {
+ "label": "Şarkı sözlerini mükemmel şekilde senkronize edin",
+ "tooltip": "Bir sonraki satırın görüntülenmesini milisaniyesine kadar hesaplayın (performans üzerinde küçük bir etkisi olabilir)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Kesin olmasa bile şarkı sözlerini gösterin",
+ "tooltip": "Şarkı bulunamazsa, eklenti farklı bir arama sorgusuyla tekrar dener. \nİkinci denemenin sonucu tam olmayabilir."
+ },
+ "show-time-codes": {
+ "label": "Zaman kodlarını göster",
+ "tooltip": "Şarkı sözlerinin yanında zaman kodlarını gösterin"
+ }
+ },
+ "name": "Senkronize Şarkı Sözleri",
+ "refetch-btn": {
+ "fetching": "Getiriliyor...",
+ "normal": "Refetch şarkı sözleri"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - Süre uyuşmazlığı nedeniyle şarkı sözleri senkronize olmayabilir.",
+ "inexact": "⚠️ - Bu şarkının sözleri tam olmayabilir",
+ "instrumental": "⚠️ - Bu enstrümantal bir şarkıdır"
+ }
+ },
"taskbar-mediacontrol": {
"description": "Windows görev çubuğu üzerinden oynatmayı kontrol edebilmenize olanak sağlar",
"name": "Görev Çubuğu Medya Kontrolü"
diff --git a/src/i18n/resources/vi.json b/src/i18n/resources/vi.json
index 204f4777c..b328fa94c 100644
--- a/src/i18n/resources/vi.json
+++ b/src/i18n/resources/vi.json
@@ -674,6 +674,38 @@
"fetch": "⚠️ - Đã xảy ra lỗi khi tìm nạp lời bài hát, Vui lòng thử lại sau.",
"not-found": "⚠️ - Không tìm thấy lời cho bài hát này."
},
+ "menu": {
+ "default-text-string": {
+ "label": "Kí tự mặc định giữa các lời bài hát",
+ "tooltip": "Chọn kí tự mặc định cho khoảng trống giữa các lời bài hát"
+ },
+ "line-effect": {
+ "label": "Kiểu đường thẳng",
+ "submenu": {
+ "focus": {
+ "label": "Tập trung",
+ "tooltip": "Chỉ làm cho dòng hiện tại có màu trắng"
+ },
+ "scale": {
+ "label": "Tỉ lệ",
+ "tooltip": "Áp dụng tỉ lệ cho dòng hiện tại"
+ }
+ },
+ "tooltip": "Chọn kiểu để áp dụng cho dòng hiện tại"
+ },
+ "precise-timing": {
+ "label": "Làm cho lời bài hát được đồng bộ hoàn hảo",
+ "tooltip": "Tính toán chính xác đến mili giây thời gian hiển thị dòng tiếp theo (có thể có tác động nhỏ đến hiệu suất)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "Hiển thị lời bài hát ngay cả khi không chính xác",
+ "tooltip": "Nếu không tìm thấy bài hát, plugin sẽ thử lại bằng truy vấn tìm kiếm khác.\nKết quả từ lần thử thứ hai có thể không chính xác."
+ },
+ "show-time-codes": {
+ "label": "Hiện mốc thời gian",
+ "tooltip": "Hiện mốc thời gian bên cạnh lời bài hát"
+ }
+ },
"name": "Lời bài hát được đồng bộ hoá",
"refetch-btn": {
"fetching": "Đang tìm nạp...",
diff --git a/src/i18n/resources/zh-CN.json b/src/i18n/resources/zh-CN.json
index 14cd32799..e851b98ca 100644
--- a/src/i18n/resources/zh-CN.json
+++ b/src/i18n/resources/zh-CN.json
@@ -207,6 +207,10 @@
}
},
"plugins": {
+ "ad-speedup": {
+ "description": "使用静音以及 16 倍速播放跳过广告片段",
+ "name": "广告加速跳过"
+ },
"adblocker": {
"description": "屏蔽所有广告与跟踪器",
"menu": {
@@ -664,6 +668,59 @@
"description": "自动跳过非音乐部分,如 MV 的介绍/结语以及歌曲未开始的部分",
"name": "SponsorBlock"
},
+ "synced-lyrics": {
+ "description": "透过 LRClib 等服务提供滚动歌词显示。",
+ "errors": {
+ "fetch": "⚠️ - 获取歌词时发生错误。请稍后再试。",
+ "not-found": "⚠️ - 未找到此歌曲的歌词。"
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "默认的歌词行间字符",
+ "tooltip": "选择在歌词间隙期间默认显示的字符"
+ },
+ "line-effect": {
+ "label": "歌词行特效",
+ "submenu": {
+ "focus": {
+ "label": "高亮",
+ "tooltip": "仅将当前歌词行显示为白色"
+ },
+ "offset": {
+ "label": "偏移",
+ "tooltip": "将当前歌词行向右偏移"
+ },
+ "scale": {
+ "label": "放大",
+ "tooltip": "放大当前歌词行"
+ }
+ },
+ "tooltip": "选择当前歌词行应用的特效"
+ },
+ "precise-timing": {
+ "label": "让滚动歌词完全同步",
+ "tooltip": "以毫秒精度估算下句歌词的显示时间(可能对性能有小幅影响)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "即使时值不精确依然显示歌词",
+ "tooltip": "若首次搜索未找到该歌曲的歌词,插件将尝试用不同的查询方式重新获取。\n重试查询的结果可能不精确。"
+ },
+ "show-time-codes": {
+ "label": "显示时值",
+ "tooltip": "在歌词旁显示时值"
+ }
+ },
+ "name": "滚动歌词",
+ "refetch-btn": {
+ "fetching": "正在获取…",
+ "normal": "重新获取歌词"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️ - 由于持续时间不对应,滚动歌词可能不同步。",
+ "inexact": "⚠️ - 此曲目的歌词可能不准确",
+ "instrumental": "⚠️ - 此曲目为纯音乐"
+ }
+ },
"taskbar-mediacontrol": {
"description": "从 Windows 任务栏控制音乐回放",
"name": "任务栏媒体控件"
diff --git a/src/i18n/resources/zh-TW.json b/src/i18n/resources/zh-TW.json
index d869aa2f0..90a431bbd 100644
--- a/src/i18n/resources/zh-TW.json
+++ b/src/i18n/resources/zh-TW.json
@@ -207,6 +207,10 @@
}
},
"plugins": {
+ "ad-speedup": {
+ "description": "使用 16 倍速播放及靜音來跳過廣告片段",
+ "name": "加速略過"
+ },
"adblocker": {
"description": "阻擋所有廣告",
"menu": {
@@ -341,10 +345,10 @@
"discord": {
"backend": {
"already-connected": "已嘗試可用連接",
- "connected": "已連接至Discord",
- "disconnected": "與Discord斷開連接"
+ "connected": "已連接至 Discord",
+ "disconnected": "與 Discord 斷開連接"
},
- "description": "使用Discord狀態與你的好友分享你正在收聽的音樂",
+ "description": "使用 Discord 狀態與你的好友分享你正在收聽的音樂",
"menu": {
"auto-reconnect": "自動重新連接",
"clear-activity": "清除狀態",
@@ -352,11 +356,11 @@
"connected": "已連接",
"disconnected": "已斷開連接",
"hide-duration-left": "隱藏音樂剩餘時間狀態",
- "hide-github-button": "隱藏Github頁面按鈕",
- "play-on-youtube-music": "顯示Play on YouTube Music按鈕",
+ "hide-github-button": "隱藏 Github 頁面按鈕",
+ "play-on-youtube-music": "顯示 Play on YouTube Music 按鈕",
"set-inactivity-timeout": "設定閒置狀態時長"
},
- "name": "Discord狀態",
+ "name": "Discord 狀態",
"prompt": {
"set-inactivity-timeout": {
"label": "設定多少秒後清除狀態:",
@@ -513,8 +517,8 @@
"name": "導覽列"
},
"no-google-login": {
- "description": "移除Google登入按鈕及連結",
- "name": "停用Google登入"
+ "description": "移除 Google 登入按鈕及連結",
+ "name": "停用 Google 登入"
},
"notifications": {
"description": "在歌曲播放時發送一個系統通知 (可互動通知僅限Windows)",
@@ -664,6 +668,59 @@
"description": "自動跳過贊助片段",
"name": "贊助阻擋"
},
+ "synced-lyrics": {
+ "description": "使用 LRClib 等管道提供歌詞同步顯示。",
+ "errors": {
+ "fetch": "⚠️擷取歌詞時發生錯誤。請稍後再試。",
+ "not-found": "⚠️未找到該首歌曲的歌詞。"
+ },
+ "menu": {
+ "default-text-string": {
+ "label": "預設歌詞中間隔的符號",
+ "tooltip": "選擇歌詞中間隔要使用的符號"
+ },
+ "line-effect": {
+ "label": "歌詞顯示效果",
+ "submenu": {
+ "focus": {
+ "label": "高亮",
+ "tooltip": "高亮當前的歌詞"
+ },
+ "offset": {
+ "label": "凸行",
+ "tooltip": "凸行當前的歌詞"
+ },
+ "scale": {
+ "label": "放大",
+ "tooltip": "放大當前的歌詞"
+ }
+ },
+ "tooltip": "選擇要使用的歌詞顯示效果"
+ },
+ "precise-timing": {
+ "label": "使歌詞完美同步",
+ "tooltip": "更精確的計算下一行歌詞的顯示(將會降低些許效能)"
+ },
+ "show-lyrics-even-if-inexact": {
+ "label": "即使不精確依然強制顯示歌詞",
+ "tooltip": "當找不到符合該歌曲的歌詞時,該功能會嘗試不同的搜尋方式\n使用不同的搜尋方式會導致不精確的結果。"
+ },
+ "show-time-codes": {
+ "label": "顯示時間線",
+ "tooltip": "在歌詞旁顯示時間線"
+ }
+ },
+ "name": "歌詞同步",
+ "refetch-btn": {
+ "fetching": "擷取中...",
+ "normal": "重新擷取歌詞"
+ },
+ "warnings": {
+ "duration-mismatch": "⚠️歌詞可能會出現不同步的情況。",
+ "inexact": "⚠️該歌曲的歌詞可能並不精確",
+ "instrumental": "⚠️該首歌曲並無人聲"
+ }
+ },
"taskbar-mediacontrol": {
"description": "允許工作列應用程式預覽介面顯示媒體控制相關按鈕",
"name": "工作列媒體控制"
diff --git a/src/index.ts b/src/index.ts
index 15019c917..982a6fee9 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -56,6 +56,7 @@ import { loadI18n, setLanguage, t } from '@/i18n';
import ErrorHtmlAsset from '@assets/error.html?asset';
import type { PluginConfig } from '@/types/plugins';
+import BrowserWindowConstructorOptions = Electron.BrowserWindowConstructorOptions;
if (!is.macOS()) {
delete allPlugins['touchbar'];
@@ -286,6 +287,23 @@ async function createMainWindow() {
height: 32,
};
+ const decorations: Partial = {
+ frame: !is.macOS() && !useInlineMenu,
+ titleBarOverlay: defaultTitleBarOverlayOptions,
+ titleBarStyle: useInlineMenu
+ ? 'hidden'
+ : is.macOS()
+ ? 'hiddenInset'
+ : 'default',
+ autoHideMenuBar: config.get('options.hideMenu'),
+ };
+
+ // Note: on linux, for some weird reason, having these extra properties with 'frame: false' does not work
+ if (is.linux() && useInlineMenu) {
+ delete decorations.titleBarOverlay;
+ delete decorations.titleBarStyle;
+ }
+
const win = new BrowserWindow({
icon,
width: windowSize.width,
@@ -303,14 +321,7 @@ async function createMainWindow() {
sandbox: false,
}),
},
- frame: !is.macOS() && !useInlineMenu,
- titleBarOverlay: defaultTitleBarOverlayOptions,
- titleBarStyle: useInlineMenu
- ? 'hidden'
- : is.macOS()
- ? 'hiddenInset'
- : 'default',
- autoHideMenuBar: config.get('options.hideMenu'),
+ ...decorations,
});
initHook(win);
initTheme(win);
diff --git a/src/plugins/adblocker/index.ts b/src/plugins/adblocker/index.ts
index 9deb74c86..8469a62c2 100644
--- a/src/plugins/adblocker/index.ts
+++ b/src/plugins/adblocker/index.ts
@@ -10,11 +10,11 @@ import {
import injectCliqzPreload from './injectors/inject-cliqz-preload';
import { inject, isInjected } from './injectors/inject';
+import { loadAdSpeedup } from './adSpeedup';
import { t } from '@/i18n';
import type { BrowserWindow } from 'electron';
-import { loadAdSpeedup } from './adSpeedup';
interface AdblockerConfig {
/**
@@ -74,7 +74,7 @@ export default createPlugin({
];
},
renderer: {
- async onPlayerApiReady(_, {getConfig}) {
+ async onPlayerApiReady(_, { getConfig }) {
const config = await getConfig();
if (config.blocker === blockers.AdSpeedup) {
await loadAdSpeedup();
@@ -118,7 +118,19 @@ export default createPlugin({
},
},
preload: {
- script: 'window.JSON.parse = window._proxyJsonParse; window._proxyJsonParse = undefined; window.Response.prototype.json = window._proxyResponseJson; window._proxyResponseJson = undefined; 0',
+ // see #1478
+ script: `const _prunerFn = window._pruner;
+ window._pruner = undefined;
+ JSON.parse = new Proxy(JSON.parse, {
+ apply() {
+ return _prunerFn(Reflect.apply(...arguments));
+ },
+ });
+ Response.prototype.json = new Proxy(Response.prototype.json, {
+ apply() {
+ return Reflect.apply(...arguments).then((o) => _prunerFn(o));
+ },
+ }); 0`,
async start({ getConfig }) {
const config = await getConfig();
diff --git a/src/plugins/adblocker/injectors/inject.js b/src/plugins/adblocker/injectors/inject.js
index f5c8a420d..6e6219fe9 100644
--- a/src/plugins/adblocker/injectors/inject.js
+++ b/src/plugins/adblocker/injectors/inject.js
@@ -37,19 +37,9 @@ export const inject = (contextBridge) => {
//
return o;
- };
+ }
- contextBridge.exposeInMainWorld('_proxyJsonParse', new Proxy(JSON.parse, {
- apply() {
- return pruner(Reflect.apply(...arguments));
- },
- }));
-
- contextBridge.exposeInMainWorld('_proxyResponseJson', new Proxy(Response.prototype.json, {
- apply() {
- return Reflect.apply(...arguments).then((o) => pruner(o));
- },
- }));
+ contextBridge.exposeInMainWorld('_pruner', pruner);
}
const chains = [
diff --git a/src/plugins/downloader/main/index.ts b/src/plugins/downloader/main/index.ts
index 84b4f1e8c..d4b667290 100644
--- a/src/plugins/downloader/main/index.ts
+++ b/src/plugins/downloader/main/index.ts
@@ -261,12 +261,12 @@ async function downloadSongUnsafe(
let playabilityStatus = info.playability_status;
let bypassedResult = null;
- if (playabilityStatus.status === 'LOGIN_REQUIRED') {
+ if (playabilityStatus?.status === 'LOGIN_REQUIRED') {
// Try to bypass the age restriction
bypassedResult = await getAndroidTvInfo(id);
playabilityStatus = bypassedResult.playability_status;
- if (playabilityStatus.status === 'LOGIN_REQUIRED') {
+ if (playabilityStatus?.status === 'LOGIN_REQUIRED') {
throw new Error(
`[${playabilityStatus.status}] ${playabilityStatus.reason}`,
);
@@ -275,7 +275,7 @@ async function downloadSongUnsafe(
info = bypassedResult;
}
- if (playabilityStatus.status === 'UNPLAYABLE') {
+ if (playabilityStatus?.status === 'UNPLAYABLE') {
const errorScreen =
playabilityStatus.error_screen as PlayerErrorMessage | null;
throw new Error(
diff --git a/src/plugins/in-app-menu/renderer/IconButton.tsx b/src/plugins/in-app-menu/renderer/IconButton.tsx
index e1c6bc5f2..b3301b814 100644
--- a/src/plugins/in-app-menu/renderer/IconButton.tsx
+++ b/src/plugins/in-app-menu/renderer/IconButton.tsx
@@ -1,9 +1,9 @@
import { JSX } from 'solid-js';
import { css } from 'solid-styled-components';
-import { cache } from '@/providers/decorators';
+import { cacheNoArgs } from '@/providers/decorators';
-const iconButton = cache(() => css`
+const iconButton = cacheNoArgs(() => css`
-webkit-app-region: none;
background: transparent;
diff --git a/src/plugins/in-app-menu/renderer/MenuButton.tsx b/src/plugins/in-app-menu/renderer/MenuButton.tsx
index ae6ac9f80..c208b3320 100644
--- a/src/plugins/in-app-menu/renderer/MenuButton.tsx
+++ b/src/plugins/in-app-menu/renderer/MenuButton.tsx
@@ -1,9 +1,9 @@
import { JSX, splitProps } from 'solid-js';
import { css } from 'solid-styled-components';
-import { cache } from '@/providers/decorators';
+import { cacheNoArgs } from '@/providers/decorators';
-const menuStyle = cache(() => css`
+const menuStyle = cacheNoArgs(() => css`
-webkit-app-region: none;
display: flex;
diff --git a/src/plugins/in-app-menu/renderer/Panel.tsx b/src/plugins/in-app-menu/renderer/Panel.tsx
index 20c74ba17..f1f4f26cb 100644
--- a/src/plugins/in-app-menu/renderer/Panel.tsx
+++ b/src/plugins/in-app-menu/renderer/Panel.tsx
@@ -5,9 +5,9 @@ import { Transition } from 'solid-transition-group';
import { autoUpdate, flip, offset, OffsetOptions, size } from '@floating-ui/dom';
import { useFloating } from 'solid-floating-ui';
-import { cache } from '@/providers/decorators';
+import { cacheNoArgs } from '@/providers/decorators';
-const panelStyle = cache(() => css`
+const panelStyle = cacheNoArgs(() => css`
position: fixed;
top: var(--offset-y, 0);
left: var(--offset-x, 0);
@@ -36,7 +36,7 @@ const panelStyle = cache(() => css`
transform-origin: var(--origin-x, 50%) var(--origin-y, 50%);
`);
-const animationStyle = cache(() => ({
+const animationStyle = cacheNoArgs(() => ({
enter: css`
opacity: 0;
transform: scale(0.9);
diff --git a/src/plugins/in-app-menu/renderer/PanelItem.tsx b/src/plugins/in-app-menu/renderer/PanelItem.tsx
index 68bdd67e7..c54a0ae4f 100644
--- a/src/plugins/in-app-menu/renderer/PanelItem.tsx
+++ b/src/plugins/in-app-menu/renderer/PanelItem.tsx
@@ -8,9 +8,9 @@ import { useFloating } from 'solid-floating-ui';
import { autoUpdate, offset, size } from '@floating-ui/dom';
import { Panel } from './Panel';
-import { cache } from '@/providers/decorators';
+import { cacheNoArgs } from '@/providers/decorators';
-const itemStyle = cache(() => css`
+const itemStyle = cacheNoArgs(() => css`
position: relative;
-webkit-app-region: none;
@@ -47,18 +47,18 @@ const itemStyle = cache(() => css`
}
`);
-const itemIconStyle = cache(() => css`
+const itemIconStyle = cacheNoArgs(() => css`
height: 32px;
padding: 4px;
color: white;
`);
-const itemLabelStyle = cache(() => css`
+const itemLabelStyle = cacheNoArgs(() => css`
font-size: 12px;
color: white;
`);
-const itemChipStyle = cache(() => css`
+const itemChipStyle = cacheNoArgs(() => css`
display: flex;
justify-content: center;
align-items: center;
@@ -76,7 +76,7 @@ const itemChipStyle = cache(() => css`
line-height: 1;
`);
-const toolTipStyle = cache(() => css`
+const toolTipStyle = cacheNoArgs(() => css`
min-width: 32px;
width: 100%;
height: 100%;
@@ -92,7 +92,7 @@ const toolTipStyle = cache(() => css`
font-size: 10px;
`);
-const popupStyle = cache(() => css`
+const popupStyle = cacheNoArgs(() => css`
position: fixed;
top: var(--offset-y, 0);
left: var(--offset-x, 0);
@@ -105,7 +105,7 @@ const popupStyle = cache(() => css`
`);
-const animationStyle = cache(() => ({
+const animationStyle = cacheNoArgs(() => ({
enter: css`
opacity: 0;
transform: scale(0.9);
diff --git a/src/plugins/in-app-menu/renderer/TitleBar.tsx b/src/plugins/in-app-menu/renderer/TitleBar.tsx
index c9db62500..f92089224 100644
--- a/src/plugins/in-app-menu/renderer/TitleBar.tsx
+++ b/src/plugins/in-app-menu/renderer/TitleBar.tsx
@@ -9,12 +9,12 @@ import { PanelItem } from './PanelItem';
import { IconButton } from './IconButton';
import { WindowController } from './WindowController';
-import { cache } from '@/providers/decorators';
+import { cacheNoArgs } from '@/providers/decorators';
import type { RendererContext } from '@/types/contexts';
import type { InAppMenuConfig } from '../constants';
-const titleStyle = cache(() => css`
+const titleStyle = cacheNoArgs(() => css`
-webkit-app-region: drag;
box-sizing: border-box;
@@ -50,7 +50,7 @@ const titleStyle = cache(() => css`
}
`);
-const separatorStyle = cache(() => css`
+const separatorStyle = cacheNoArgs(() => css`
min-height: 1px;
height: 1px;
margin: 4px 0;
@@ -58,7 +58,7 @@ const separatorStyle = cache(() => css`
background-color: rgba(255, 255, 255, 0.2);
`);
-const animationStyle = cache(() => ({
+const animationStyle = cacheNoArgs(() => ({
enter: css`
opacity: 0;
transform: translateX(-50%) scale(0.8);
@@ -271,19 +271,18 @@ export const TitleBar = (props: TitleBarProps) => {
// tracking mouse position
window.addEventListener('mousemove', listener);
const ytmusicAppLayout = document.querySelector('#layout');
- ytmusicAppLayout?.addEventListener("scroll",()=>{
+ ytmusicAppLayout?.addEventListener('scroll', () => {
const scrollValue = ytmusicAppLayout.scrollTop;
if (scrollValue > 20){
- ytmusicAppLayout.classList.add("content-scrolled");
+ ytmusicAppLayout.classList.add('content-scrolled');
}
else{
- ytmusicAppLayout.classList.remove("content-scrolled");
+ ytmusicAppLayout.classList.remove('content-scrolled');
}
- })
-
+ });
});
-
+
createEffect(() => {
if (!menu() && data()) {
diff --git a/src/plugins/in-app-menu/renderer/WindowController.tsx b/src/plugins/in-app-menu/renderer/WindowController.tsx
index 63ae1345a..44c703ecf 100644
--- a/src/plugins/in-app-menu/renderer/WindowController.tsx
+++ b/src/plugins/in-app-menu/renderer/WindowController.tsx
@@ -2,9 +2,9 @@ import { css } from 'solid-styled-components';
import { Show } from 'solid-js';
import { IconButton } from './IconButton';
-import { cache } from '@/providers/decorators';
+import { cacheNoArgs } from '@/providers/decorators';
-const containerStyle = cache(() => css`
+const containerStyle = cacheNoArgs(() => css`
display: flex;
justify-content: flex-end;
align-items: center;
diff --git a/src/plugins/shortcuts/main.ts b/src/plugins/shortcuts/main.ts
index 84c298990..89ce111e4 100644
--- a/src/plugins/shortcuts/main.ts
+++ b/src/plugins/shortcuts/main.ts
@@ -1,4 +1,4 @@
-import { BrowserWindow, ipcMain, globalShortcut } from 'electron';
+import { BrowserWindow, globalShortcut } from 'electron';
import is from 'electron-is';
import { register as registerElectronLocalShortcut } from 'electron-localshortcut';
@@ -48,9 +48,7 @@ export const onMainLoad = async ({
_registerLocalShortcut(window, 'CommandOrControl+L', search);
if (is.linux()) {
- ipcMain.once('ytmd:video-src-changed', (_) => {
- registerMPRIS(window);
- });
+ registerMPRIS(window);
}
const { global, local } = config;
diff --git a/src/plugins/synced-lyrics/renderer/index.ts b/src/plugins/synced-lyrics/renderer/index.ts
index cf3555b77..3a2f5908a 100644
--- a/src/plugins/synced-lyrics/renderer/index.ts
+++ b/src/plugins/synced-lyrics/renderer/index.ts
@@ -16,10 +16,9 @@ export let _ytAPI: YoutubePlayer | null = null;
export const renderer = createRenderer<{
observerCallback: MutationCallback;
- hasAddedEvents: boolean;
observer?: MutationObserver;
videoDataChange: () => Promise;
- progressCallback: (evt: Event) => void;
+ updateTimestampInterval?: NodeJS.Timeout | string | number;
}, SyncedLyricsPluginConfig>({
onConfigChange(newConfig) {
setConfig(newConfig);
@@ -50,15 +49,12 @@ export const renderer = createRenderer<{
await this.videoDataChange();
},
- hasAddedEvents: false,
-
async videoDataChange() {
- if (!this.hasAddedEvents) {
- const video = document.querySelector('video');
-
- video?.addEventListener('timeupdate', this.progressCallback);
-
- if (video) this.hasAddedEvents = true;
+ if (!this.updateTimestampInterval) {
+ this.updateTimestampInterval = setInterval(
+ () => setCurrentTime((_ytAPI?.getCurrentTime() ?? 0) * 1000),
+ 100,
+ );
}
this.observer ??= new MutationObserver(
@@ -73,16 +69,6 @@ export const renderer = createRenderer<{
header.removeAttribute('disabled');
},
- progressCallback(evt: Event) {
- switch (evt.type) {
- case 'timeupdate': {
- const video = evt.target as HTMLVideoElement;
- setCurrentTime(video.currentTime * 1000);
- break;
- }
- }
- },
-
async start(ctx: RendererContext) {
setConfig(await ctx.getConfig());
diff --git a/src/plugins/synced-lyrics/renderer/lyrics/fetch.ts b/src/plugins/synced-lyrics/renderer/lyrics/fetch.ts
index 877ca6591..97ece7814 100644
--- a/src/plugins/synced-lyrics/renderer/lyrics/fetch.ts
+++ b/src/plugins/synced-lyrics/renderer/lyrics/fetch.ts
@@ -17,14 +17,6 @@ export const [hadSecondAttempt, setHadSecondAttempt] = createSignal(false);
// prettier-ignore
export const [differentDuration, setDifferentDuration] = createSignal(false);
// eslint-disable-next-line prefer-const
-export let foundPlainTextLyrics = false;
-
-export type SongData = {
- title: string;
- artist: string;
- album: string;
- songDuration: number;
-};
export const extractTimeAndText = (
line: string,
@@ -33,7 +25,7 @@ export const extractTimeAndText = (
const groups = /\[(\d+):(\d+)\.(\d+)\](.+)/.exec(line);
if (!groups) return null;
- const [_, rMinutes, rSeconds, rMillis, text] = groups;
+ const [, rMinutes, rSeconds, rMillis, text] = groups;
const [minutes, seconds, millis] = [
parseInt(rMinutes),
parseInt(rSeconds),
@@ -46,7 +38,7 @@ export const extractTimeAndText = (
return {
index,
timeInMs,
- time: `${minutes}:${seconds}:${millis}`,
+ time: `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}:${millis}`,
text: text?.trim() ?? config()!.defaultTextString,
status: 'upcoming',
duration: 0,
@@ -54,22 +46,31 @@ export const extractTimeAndText = (
};
export const makeLyricsRequest = async (extractedSongInfo: SongInfo) => {
+ setIsFetching(true);
setLineLyrics([]);
- const songData: SongData = {
+
+ const songData: Parameters[0] = {
title: `${extractedSongInfo.title}`,
artist: `${extractedSongInfo.artist}`,
- album: `${extractedSongInfo.album}`,
songDuration: extractedSongInfo.songDuration,
};
- const lyrics = await getLyricsList(songData);
+ if (extractedSongInfo.album) {
+ songData.album = extractedSongInfo.album;
+ }
+
+ let lyrics;
+ try {
+ lyrics = await getLyricsList(songData);
+ } catch {}
+
setLineLyrics(lyrics ?? []);
+ setIsFetching(false);
};
export const getLyricsList = async (
- songData: SongData,
+ songData: Pick,
): Promise => {
- setIsFetching(true);
setIsInstrumental(false);
setHadSecondAttempt(false);
setDifferentDuration(false);
@@ -80,7 +81,8 @@ export const getLyricsList = async (
track_name: songData.title,
});
- if (songData.album?.length ?? 0 > 1) {
+
+ if (songData.album) {
query.set('album_name', songData.album);
}
@@ -88,18 +90,12 @@ export const getLyricsList = async (
let response = await fetch(url);
if (!response.ok) {
- setIsFetching(false);
setDebugInfo('Got non-OK response from server.');
return null;
}
- let data = (await response.json().catch((e: Error) => {
- setDebugInfo(`Error: ${e.message}\n\n${e.stack}`);
-
- return null;
- })) as LRCLIBSearchResponse | null;
+ let data = await response.json() as LRCLIBSearchResponse;
if (!data || !Array.isArray(data)) {
- setIsFetching(false);
setDebugInfo('Unexpected server response.');
return null;
}
@@ -115,14 +111,12 @@ export const getLyricsList = async (
response = await fetch(url);
if (!response.ok) {
- setIsFetching(false);
setDebugInfo('Got non-OK response from server. (2)');
return null;
}
data = (await response.json()) as LRCLIBSearchResponse;
if (!Array.isArray(data)) {
- setIsFetching(false);
setDebugInfo('Unexpected server response. (2)');
return null;
}
@@ -132,15 +126,18 @@ export const getLyricsList = async (
const filteredResults = [];
for (const item of data) {
- if (!item.syncedLyrics) continue;
-
const { artist } = songData;
const { artistName } = item;
- const ratio = jaroWinkler(artist.toLowerCase(), artistName.toLowerCase());
+ const artists = artist.split(/[&,]/g).map((i) => i.trim());
+ const itemArtists = artistName.split(/[&,]/g).map((i) => i.trim());
- if (ratio <= 0.9) continue;
- filteredResults.push(item);
+ const permutations = artists.flatMap((artistA) =>
+ itemArtists.map((artistB) => [artistA.toLowerCase(), artistB.toLowerCase()])
+ );
+
+ const ratio = Math.max(...permutations.map(([x, y]) => jaroWinkler(x, y)));
+ if (ratio > 0.9) filteredResults.push(item);
}
const duration = songData.songDuration;
@@ -153,35 +150,43 @@ export const getLyricsList = async (
const closestResult = filteredResults[0];
if (!closestResult) {
- setIsFetching(false);
setDebugInfo('No search result matched the criteria.');
return null;
}
- // setDebugInfo(JSON.stringify(closestResult, null, 4));
+ setDebugInfo(JSON.stringify(closestResult, null, 4));
+
+ if (Math.abs(closestResult.duration - duration) > 15) {
+ return null;
+ }
- if (Math.abs(closestResult.duration - duration) > 15) return null;
if (Math.abs(closestResult.duration - duration) > 5) {
// show message that the timings may be wrong
setDifferentDuration(true);
}
setIsInstrumental(closestResult.instrumental);
+ if (closestResult.instrumental) {
+ return null;
+ }
// Separate the lyrics into lines
- const raw = closestResult.syncedLyrics.split('\n');
+ const raw = closestResult.syncedLyrics?.split('\n') ?? [];
+ if (!raw.length) {
+ return null;
+ }
// Add a blank line at the beginning
raw.unshift('[0:0.0] ');
- const syncedLyricList = [];
-
- for (let idx = 0; idx < raw.length; idx++) {
- const syncedLine = extractTimeAndText(raw[idx], idx);
+ const syncedLyricList = raw.reduce((acc, line, index) => {
+ const syncedLine = extractTimeAndText(line, index);
if (syncedLine) {
- syncedLyricList.push(syncedLine);
+ acc.push(syncedLine);
}
- }
+
+ return acc;
+ }, []);
for (const line of syncedLyricList) {
const next = syncedLyricList[line.index + 1];
@@ -193,6 +198,5 @@ export const getLyricsList = async (
line.duration = next.timeInMs - line.timeInMs;
}
- setIsFetching(false);
return syncedLyricList;
};
diff --git a/src/providers/decorators.ts b/src/providers/decorators.ts
index f0746b266..805a1d579 100644
--- a/src/providers/decorators.ts
+++ b/src/providers/decorators.ts
@@ -40,6 +40,16 @@ export function cache R, P extends never[], R>(
}) as T;
}
+export function cacheNoArgs(fn: () => R): () => R {
+ let cached: R;
+ return () => {
+ if (cached === undefined) {
+ cached = fn();
+ }
+ return cached;
+ };
+}
+
/*
The following are currently unused, but potentially useful in the future
*/
diff --git a/src/providers/song-info-front.ts b/src/providers/song-info-front.ts
index b4cbdc9e7..63149d4ea 100644
--- a/src/providers/song-info-front.ts
+++ b/src/providers/song-info-front.ts
@@ -200,6 +200,26 @@ export default (api: YoutubePlayer) => {
for (const status of ['playing', 'pause'] as const) {
video.addEventListener(status, playPausedHandlers[status]);
}
+
+ if (!isNaN(video.duration)) {
+ const {
+ title, author,
+ video_id: videoId,
+ list: playlistId
+ } = api.getVideoData();
+
+ const { playerOverlays } = api.getWatchNextResponse();
+
+ sendSongInfo({
+ title, author, videoId, playlistId,
+
+ isUpcoming: false,
+ lengthSeconds: video.duration,
+ loading: true,
+
+ uhhh: { playerOverlays }
+ });
+ }
}
function sendSongInfo(videoData: VideoDataChangeValue) {
diff --git a/src/providers/song-info.ts b/src/providers/song-info.ts
index d5fd8b9f5..d502f0276 100644
--- a/src/providers/song-info.ts
+++ b/src/providers/song-info.ts
@@ -214,14 +214,14 @@ const suffixesToRemove = [
/\s*vevo$/i,
// Video titles
- /\s*[(|\[]official(.*?)[)|\]]/i, // (Official Music Video), [Official Visualizer], etc...
- /\s*[(|\[]((lyrics?|visualizer|audio)\s*(video)?)[)|\]]/i,
- /\s*[(|\[](performance video)[)|\]]/i,
- /\s*[(|\[](clip official)[)|\]]/i,
- /\s*[(|\[](video version)[)|\]]/i,
- /\s*[(|\[](HD|HQ)\s*?(?:audio)?[)|\]]$/i,
- /\s*[(|\[](live)[)|\]]$/i,
- /\s*[(|\[]4K\s*?(?:upgrade)?[)|\]]$/i,
+ /\s*[(|[]official(.*?)[)|\]]/i, // (Official Music Video), [Official Visualizer], etc...
+ /\s*[(|[]((lyrics?|visualizer|audio)\s*(video)?)[)|\]]/i,
+ /\s*[(|[](performance video)[)|\]]/i,
+ /\s*[(|[](clip official)[)|\]]/i,
+ /\s*[(|[](video version)[)|\]]/i,
+ /\s*[(|[](HD|HQ)\s*?(?:audio)?[)|\]]$/i,
+ /\s*[(|[](live)[)|\]]$/i,
+ /\s*[(|[]4K\s*?(?:upgrade)?[)|\]]$/i,
];
export function cleanupName(name: string): string {
diff --git a/src/renderer.ts b/src/renderer.ts
index c1960fd74..fade81473 100644
--- a/src/renderer.ts
+++ b/src/renderer.ts
@@ -172,10 +172,19 @@ async function onApiLoaded() {
// Remove upgrade button
if (window.mainConfig.get('options.removeUpgradeButton')) {
+ const itemsSelector = 'ytmusic-guide-section-renderer #items';
+ let selector = 'ytmusic-guide-entry-renderer:last-child';
+
+ const upgradeBtnIcon = document.querySelector('iron-iconset-svg[name="yt-sys-icons"] #youtube_music_monochrome');
+ if (upgradeBtnIcon) {
+ const path = upgradeBtnIcon.firstChild as SVGPathElement;
+ const data = path.getAttribute('d')!.substring(0, 15);
+ selector = `ytmusic-guide-entry-renderer:has(> tp-yt-paper-item > yt-icon path[d^="${data}"])`;
+ }
+
const styles = document.createElement('style');
- styles.innerHTML = `ytmusic-guide-section-renderer #items ytmusic-guide-entry-renderer:last-child {
- display: none;
- }`;
+ styles.textContent = `${itemsSelector} ${selector} { display: none; }`;
+
document.head.appendChild(styles);
}
diff --git a/src/types/youtube-music-desktop-internal.ts b/src/types/youtube-music-desktop-internal.ts
index 75852658e..68e5fd3c8 100644
--- a/src/types/youtube-music-desktop-internal.ts
+++ b/src/types/youtube-music-desktop-internal.ts
@@ -5,3 +5,17 @@ export interface QueueResponse {
autoPlaying?: boolean;
continuation?: string;
}
+
+export interface WatchNextResponse {
+ playerOverlays: {
+ playerOverlayRenderer: {
+ browserMediaSession: {
+ browserMediaSessionRenderer: {
+ album: {
+ runs: { text: string; }[]
+ }
+ }
+ }
+ }
+ };
+}
diff --git a/src/types/youtube-player.ts b/src/types/youtube-player.ts
index 96c448cfe..995f62fe1 100644
--- a/src/types/youtube-player.ts
+++ b/src/types/youtube-player.ts
@@ -3,6 +3,7 @@
import { VideoDetails } from './video-details';
import { GetPlayerResponse } from './get-player-response';
import { PlayerAPIEvents } from './player-api-events';
+import { WatchNextResponse } from '@/types/youtube-music-desktop-internal';
export interface YoutubePlayer {
getInternalApiInterface: (
@@ -427,4 +428,6 @@ export interface YoutubePlayer {
addEmbedsConversionTrackingParams: (
...params: Parameters
) => Return;
+
+ getWatchNextResponse(): WatchNextResponse;
}