From c28a0e8324568510834b4edecfbba526723d4c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=8E=8B=E5=8F=AB=E6=88=91=E6=9D=A5=E5=B7=A1?= =?UTF-8?q?=E5=B1=B1?= Date: Tue, 3 Sep 2024 00:10:22 +0000 Subject: [PATCH 01/74] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/ --- static/locales/zh-CN.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 53221192ec985..f1f081a003fcd 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -849,6 +849,7 @@ Video: Playback will resume automatically when your connection comes back: 网络连接恢复时,将自动继续播放。 TranslatedCaptionTemplate: '{language} (翻译自 "{originalLanguage}")' Exit Theatre Mode: 推出影院模式 + Skipped segment: 跳过了 {segmentCategory} 部分 Videos: #& Sort By Sort By: @@ -885,6 +886,7 @@ Change Format: Use Audio Formats: '使用音频格式' Audio formats are not available for this video: 这个视频没有音频格式 Dash formats are not available for this video: 这个视频没有Dash格式 + Legacy formats are not available for this video: 旧格式对这个视频不可用 Share: Share Video: '分享视频' Share Playlist: '分享播放列表' From 1f68475a1869c8715849d67fd87a4be7f99019f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20W=C3=B3jcicki?= Date: Tue, 3 Sep 2024 00:41:48 +0000 Subject: [PATCH 02/74] Translated using Weblate (Polish) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/ --- static/locales/pl.yaml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index 213b51911f357..b318f6514f821 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -938,6 +938,35 @@ Video: Unhide Channel: Pokaż kanał Hide Channel: Ukryj kanał More Options: Więcej opcji + Player: + TranslatedCaptionTemplate: '{language} (przetłumaczono z: "{originalLanguage}")' + Audio Tracks: Ścieżki audio + Theatre Mode: Tryb kina + Exit Theatre Mode: Wyłącz tryb kina + Exit Full Window: Wyłącz pełny ekran + Take Screenshot: Zrób zrzut ekranu + Show Stats: Pokaż statystyki + Hide Stats: Schowaj statystyki + Stats: + Stats: Statystyki + Video ID: 'ID filmu: {videoId}' + Player Dimensions: 'Rozmiary odtwarzacza: {width}x{height}' + Bitrate: 'Bitrate: {bitrate} kbps' + Volume: 'Głośność: {volumePercentage}%' + Bandwidth: 'Szerokość pasma: {bandwidth} kbps' + Buffered: 'Zbuforowano: {bufferedPercentage}%' + Dropped Frames / Total Frames: 'Zgubione klatki: {droppedFrames} / Wszystkie + klatki: {totalFrames}' + CodecAudio: 'Kodek: {audioCodec} ({audioItag})' + CodecsVideoAudio: 'Kodeki: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + CodecsVideoAudioNoItags: 'Kodeki: {videoCodec} / {audioCodec}' + Media Formats: 'Formaty ścieżek: {formats}' + Resolution: 'Rozdzielczość: {width}x{height}@{frameRate}' + You appear to be offline: Zdaje się, że jesteś rozłączony. + Playback will resume automatically when your connection comes back: Odtwarzanie + zostanie wznowione, jak tylko połączenie zostanie odzyskane. + Skipped segment: Pominięto segment {segmentCategory} + Full Window: Pełny ekran Videos: #& Sort By Sort By: @@ -976,6 +1005,8 @@ Change Format: tego filmu Dash formats are not available for this video: Formaty DASH nie są dostępne dla tego filmu + Legacy formats are not available for this video: Ten film nie jest dostępny w starych + formatach Share: Share Video: 'Podziel się filmem' Share Playlist: 'Podziel się playlistą' From 37a528e62b0ff72e826a7da32c48b82a3b7d19f7 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Tue, 3 Sep 2024 02:16:18 +0000 Subject: [PATCH 03/74] Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/ --- static/locales/zh-TW.yaml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index c1e725d47dd48..09372ed86b17a 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -832,6 +832,33 @@ Video: Unhide Channel: 顯示頻道 Hide Channel: 隱藏頻道 More Options: 更多選項 + Player: + TranslatedCaptionTemplate: '{language}(翻譯自「{originalLanguage}」)' + Audio Tracks: 音訊軌 + Theatre Mode: 劇院模式 + Exit Theatre Mode: 離開劇院模式 + Full Window: 全視窗 + Exit Full Window: 離開全視窗 + Take Screenshot: 拍攝螢幕截圖 + Show Stats: 顯示統計資料 + Hide Stats: 隱藏統計資料 + Stats: + Stats: 統計資料 + Video ID: 影片 ID:{videoId} + Media Formats: 媒體格式:{formats} + Resolution: 解析度:{width}x{height}@{frameRate} + Player Dimensions: 播放器尺寸:{width}x{height} + Bitrate: 位元速率:{bitrate} kbps + Volume: 音量:{volumePercentage}% + Bandwidth: 頻寬:{bandwidth} kbps + Buffered: 已緩衝:{bufferedPercentage}% + Dropped Frames / Total Frames: 丟棄的畫面數:{droppedFrames} / 總畫面數:{totalFrames} + CodecAudio: 編解碼器:{audioCodec} ({audioItag}) + CodecsVideoAudio: 編解碼器:{videoCodec} ({videoItag}) / {audioCodec} ({audioItag}) + CodecsVideoAudioNoItags: 編解碼器:{videoCodec} / {audioCodec} + You appear to be offline: 您似乎已離線。 + Playback will resume automatically when your connection comes back: 當您的連線恢復時,將會自動繼續播放。 + Skipped segment: 已跳過 {segmentCategory} 段 Videos: #& Sort By Sort By: @@ -868,6 +895,7 @@ Change Format: Use Audio Formats: '使用音訊格式' Audio formats are not available for this video: 這個影片沒有音訊格式 Dash formats are not available for this video: 這個影片沒有 DASH 格式 + Legacy formats are not available for this video: 舊格式不適用於該影片 Share: Share Video: '分享影片' Share Playlist: '分享播放清單' From c8d0041af9709ff01073e8363a2dcd546a67ee26 Mon Sep 17 00:00:00 2001 From: Jose Delvani Date: Tue, 3 Sep 2024 03:16:12 +0000 Subject: [PATCH 04/74] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index c676dfcaf8a66..d3ca87be128bc 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -18,8 +18,8 @@ Reload: 'Recarregar' Force Reload: 'Forçar recarregamento' Toggle Developer Tools: 'Alternar ferramentas de desenvolvedor' Actual size: 'Tamanho atual' -Zoom in: 'Aumentar zoom' -Zoom out: 'Diminuir zoom' +Zoom in: 'Ampliar' +Zoom out: 'Reduzir' Toggle fullscreen: 'Alternar tela cheia' Window: 'Janela' Minimize: 'Minimizar' @@ -927,6 +927,35 @@ Video: Unhide Channel: Mostrar canal Hide Channel: Ocultar canal More Options: Mais opções + Player: + Audio Tracks: Faixas de áudio + Theatre Mode: Modo Teatro + Exit Theatre Mode: Sair do modo Teatro + Take Screenshot: Capturar tela + Hide Stats: Ocultar estatísticas + Stats: + Stats: Estatísticas + Video ID: 'ID do vídeo: {videoId}' + Media Formats: 'Formatos de mídia: {formats}' + Resolution: 'Resolução: {width}x{height}@{frameRate}' + Player Dimensions: 'Dimensões do player: {width}x{height}' + Bitrate: 'Taxa de bits: {bitrate} kbps' + Volume: 'Volume: {volumePercentage}%' + Dropped Frames / Total Frames: 'Quadros descartados: {droppedFrames} / Total + de quadros: {totalFrames}' + CodecAudio: 'Codec: {audioCodec} ({audioItag})' + CodecsVideoAudioNoItags: 'Codecs: {videoCodec} / {audioCodec}' + Buffered: 'Transferência: {bufferedPercentage}%' + Bandwidth: 'Transmissão de dados: {bandwidth} kbps' + CodecsVideoAudio: 'Codecs: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + You appear to be offline: Parece que você está offline. + Playback will resume automatically when your connection comes back: A reprodução + será retomada automaticamente quando a conexão for restabelecida. + Skipped segment: Segmento {segmentCategory} ignorado + Full Window: Preencher janela + TranslatedCaptionTemplate: '{language} (traduzido do "{originalLanguage}")' + Show Stats: Mostrar estatísticas + Exit Full Window: Sair do preenchimento de janela Videos: #& Sort By Sort By: @@ -965,6 +994,8 @@ Change Format: para este vídeo Dash formats are not available for this video: Formatos DASH não disponíveis para este vídeo + Legacy formats are not available for this video: Os formatos antigos não estão disponíveis + para este vídeo Share: Share Video: 'Compartilhar vídeo' Share Playlist: 'Compartilhar playlist' From 90ae9beee71a51544dbefac5c728ed75b21e2414 Mon Sep 17 00:00:00 2001 From: summoner001 Date: Tue, 3 Sep 2024 05:03:04 +0000 Subject: [PATCH 05/74] Translated using Weblate (Hungarian) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/ --- static/locales/hu.yaml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index 364d04881b419..b318f270c1e22 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -981,6 +981,35 @@ Video: Unhide Channel: Csatorna megjelenítése Hide Channel: Csatorna elrejtése More Options: További beállítások + Player: + Audio Tracks: Hangsávok + Exit Theatre Mode: Kilépés a színházmódból + Theatre Mode: Színházmód + Full Window: Teljes ablak + Exit Full Window: Kilépés a teljes ablakból + Take Screenshot: Képernyőkép készítése + Hide Stats: Statisztika elrejtése + Stats: + Stats: Statisztikák + Video ID: 'Videó azonosító: {videoId}' + Media Formats: 'Média formátum: {formats}' + Player Dimensions: 'Lejátszó mérete: {width}x{height}' + Bitrate: 'Bitsebesség: {bitrate} kbps' + Volume: 'Hangerő: {volumePercentage}%' + Bandwidth: 'Sávszélesség: {bandwidth} kbps' + Buffered: 'Pufferolt: {bufferedPercentage}%' + CodecAudio: 'Kodek: {audioCodec} ({audioItag})' + CodecsVideoAudioNoItags: 'Kodekek: {videoCodec} / {audioCodec}' + Dropped Frames / Total Frames: 'Kihagyott képkockák: {droppedFrames} / Összes + képkocka: {totalFrames}' + Resolution: 'Felbontás: {width}x{height}@{frameRate}' + CodecsVideoAudio: 'Kodekek: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + You appear to be offline: Úgy tűnik, hogy jelenleg nem kapcsolódsz a hálózathoz. + Skipped segment: Kihagyott {segmentCategory} szakasz + TranslatedCaptionTemplate: '{language} (fordítva erről: "{originalLanguage}")' + Show Stats: Statisztika megjelenítése + Playback will resume automatically when your connection comes back: A lejátszás + automatikusan folytatódik, amikor a kapcsolat helyreáll. Videos: #& Sort By Sort By: @@ -1021,6 +1050,8 @@ Change Format: a videóhoz' Audio formats are not available for this video: 'Hangformátumok nem érhetők el ehhez a videóhoz' + Legacy formats are not available for this video: A régebbi formátumok nem állnak + rendelkezésre ehhez a videóhoz Share: Share Video: 'Videó megosztása' Share Playlist: 'Lejátszási lista megosztása' From 7bbf2d5cc216718b1747cf86c4f766b70dbb0bc4 Mon Sep 17 00:00:00 2001 From: Riki Shinozaki Date: Tue, 3 Sep 2024 08:15:18 +0000 Subject: [PATCH 06/74] Translated using Weblate (Japanese) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/ --- static/locales/ja.yaml | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index c677cd16ab59b..f366651e5649c 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -123,7 +123,7 @@ Playlists: '再生リスト' User Playlists: Your Playlists: 'あなたの再生リスト' Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 保存した動画はありません。一覧に表示させるには、ビデオの角にある保存ボタンをクリックします - Playlist Message: + Playlist Message: このページは完全に機能する再生リストを反映していません。保存した動画やお気に入りの動画のみが表示されます。作業が完了すると、現在ここにあるすべての動画は「Favorites」の再生リストに移行されます。 Search bar placeholder: 再生リストの検索 Empty Search Message: この再生リストに、検索に一致する動画はありません @@ -595,7 +595,7 @@ Settings: Experimental Settings: Replace HTTP Cache: HTTP キャッシュの置換 Experimental Settings: 実験中の設定 - Warning: + Warning: これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください! Password Settings: Password Settings: パスワードの設定 @@ -830,6 +830,33 @@ Video: Hide Channel: チャンネルを非表示 Unhide Channel: チャンネルを表示 More Options: その他の設定 + Player: + Stats: + Dropped Frames / Total Frames: 'コマ落ち: {droppedFrames} / 総フレーム: {totalFrames}' + CodecAudio: 'コーデック: {audioCodec} ({audioItag})' + CodecsVideoAudio: 'コーデック: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + CodecsVideoAudioNoItags: 'コーデック: {videoCodec} / {audioCodec}' + Video ID: '動画 ID: {videoId}' + Media Formats: 'メディア形式: {formats}' + Resolution: '解像度: {width}x{height}@{frameRate}' + Player Dimensions: 'プレーヤー寸法: {width}x{height}' + Bitrate: 'ビットレート: {bitrate} kbps' + Volume: '音量: {volumePercentage}%' + Bandwidth: '帯域幅: {bandwidth} kbps' + Buffered: 'バッファ済み: {bufferedPercentage}%' + Stats: 統計 + You appear to be offline: オフラインのようです。 + Playback will resume automatically when your connection comes back: ネットワーク接続が回復すると再生が自動的に再開されます。 + Skipped segment: '{segmentCategory} セグメントをスキップしました' + TranslatedCaptionTemplate: '{language}(「{originalLanguage}」から翻訳)' + Audio Tracks: オーディオ トラック + Theatre Mode: シアターモード + Exit Theatre Mode: シアターモードを終了 + Exit Full Window: フルウィンドウを終了 + Full Window: フルウィンドウ + Hide Stats: 統計を隠す + Take Screenshot: スクリーンショットを撮る + Show Stats: 統計を表示 Videos: #& Sort By Sort By: @@ -866,6 +893,7 @@ Change Format: Use Audio Formats: '音声形式の使用' Audio formats are not available for this video: この動画には音声形式はありません Dash formats are not available for this video: この動画には DASH 形式はありません + Legacy formats are not available for this video: この動画には旧形式を使用できません Share: Share Video: '動画の共有' Share Playlist: '再生リストの共有' @@ -1015,11 +1043,11 @@ Tooltips: Replace HTTP Cache: Electron のディスクに基づく HTTP キャッシュを無効化し、メモリ内で独自の画像キャッシュを使用します。このことにより RAM の使用率は増加します。 Distraction Free Settings: - Hide Channels: チャンネル ID を入力すると、すべてのビデオ、再生リスト、チャンネル自体が検索や人気、およびおすすめに表示されなくなります。入力するチャンネル + Hide Channels: チャンネル ID を入力すると、すべての動画、再生リスト、チャンネル自体が検索や人気、およびおすすめに表示されなくなります。入力するチャンネル ID は、大文字と小文字を区別するので完全に一致させてください。 Hide Subscriptions Live: この設定は、アプリ全体の "{appWideSetting}" 設定により上書きされます。"{settingsSection}" 項目の "{subsection}" にあります - Hide Videos and Playlists Containing Text: FreeTube + Hide Videos and Playlists Containing Text: FreeTube 全体での履歴やあなたの再生リストと再生リスト内の動画を除き、元のタイトルにその単語を含む動画や単語の一部または、フレーズ(大文字と小文字を区別しない)が含まれているすべての動画と再生リストを非表示にします。 SponsorBlock Settings: UseDeArrowTitles: 動画のタイトルを DeArrow からユーザーが投稿したタイトルに置き換えます。 From 4aac2f77dae1596e1b105e6c8503626f9b855d12 Mon Sep 17 00:00:00 2001 From: Cloud Esp Date: Tue, 3 Sep 2024 07:31:31 +0000 Subject: [PATCH 07/74] Translated using Weblate (French) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 1626f188d4225..23d5d2da5d785 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -986,6 +986,8 @@ Video: CodecAudio: 'Codec : {audioCodec} ({audioItag})' CodecsVideoAudioNoItags: 'Codecs : {videoCodec} / {audioCodec}' CodecsVideoAudio: 'Codecs : {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + Dropped Frames / Total Frames: 'Images perdues : {droppedFrames} / Images totales : + {totalFrames}' Skipped segment: Segment {segmentCategory} ignoré TranslatedCaptionTemplate: '{language} (traduit depuis : {originalLanguage})' Exit Full Window: Quitter la fenêtre pleine From b79d5d6e3cc2b3007135905d389f556b184e62b7 Mon Sep 17 00:00:00 2001 From: Riki Shinozaki Date: Tue, 3 Sep 2024 12:01:33 +0000 Subject: [PATCH 08/74] Translated using Weblate (Japanese) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/ --- static/locales/ja.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index f366651e5649c..bff57fcb200eb 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -832,18 +832,18 @@ Video: More Options: その他の設定 Player: Stats: - Dropped Frames / Total Frames: 'コマ落ち: {droppedFrames} / 総フレーム: {totalFrames}' - CodecAudio: 'コーデック: {audioCodec} ({audioItag})' - CodecsVideoAudio: 'コーデック: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' - CodecsVideoAudioNoItags: 'コーデック: {videoCodec} / {audioCodec}' - Video ID: '動画 ID: {videoId}' - Media Formats: 'メディア形式: {formats}' - Resolution: '解像度: {width}x{height}@{frameRate}' - Player Dimensions: 'プレーヤー寸法: {width}x{height}' - Bitrate: 'ビットレート: {bitrate} kbps' - Volume: '音量: {volumePercentage}%' - Bandwidth: '帯域幅: {bandwidth} kbps' - Buffered: 'バッファ済み: {bufferedPercentage}%' + Dropped Frames / Total Frames: 'コマ落ち: {droppedFrames} / 総フレーム: {totalFrames}' + CodecAudio: 'コーデック: {audioCodec} ({audioItag})' + CodecsVideoAudio: 'コーデック: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + CodecsVideoAudioNoItags: 'コーデック: {videoCodec} / {audioCodec}' + Video ID: '動画 ID: {videoId}' + Media Formats: 'メディア形式: {formats}' + Resolution: '解像度: {width}x{height}@{frameRate}' + Player Dimensions: 'プレーヤーの寸法: {width}x{height}' + Bitrate: 'ビットレート: {bitrate} kbps' + Volume: '音量: {volumePercentage}%' + Bandwidth: '帯域幅: {bandwidth} kbps' + Buffered: 'バッファ済み: {bufferedPercentage}%' Stats: 統計 You appear to be offline: オフラインのようです。 Playback will resume automatically when your connection comes back: ネットワーク接続が回復すると再生が自動的に再開されます。 From 62b4a5d2dff87378848efe83f551a0a0526650fc Mon Sep 17 00:00:00 2001 From: Fjuro Date: Tue, 3 Sep 2024 12:42:43 +0000 Subject: [PATCH 09/74] Translated using Weblate (Czech) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index 0bcc9ee6b87ed..080dac4d4b36a 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -955,6 +955,35 @@ Video: Unhide Channel: Zobrazit kanál Hide Channel: Skrýt kanál More Options: Další možnosti + Player: + Stats: + Player Dimensions: Rozměry přehrávače {width}x{height} + Bitrate: 'Datový tok: {bitrate} kb/s' + Volume: 'Hlasitost: {volumePercentage} %' + CodecsVideoAudioNoItags: 'Kodeky: {videoCodec} / {audioCodec}' + Stats: Statistiky + Video ID: 'ID videa: {videoId}' + Media Formats: 'Formáty médií: {formats}' + Resolution: 'Rozlišení: {width}x{height}@{frameRate}' + Bandwidth: 'Šířka pásma: {bandwidth} kb/s' + Buffered: 'Načteno: {bufferedPercentage} %' + Dropped Frames / Total Frames: 'Vypuštěno snímků: {droppedFrames} / Celkem snímků: + {totalFrames}' + CodecAudio: 'Kodek: {audioCodec} ({audioItag})' + CodecsVideoAudio: 'Kodeky: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + Skipped segment: Přeskočen segment {segmentCategory} + TranslatedCaptionTemplate: '{language} (přeloženo z jazyka {originalLanguage})' + Audio Tracks: Zvukové stopy + Theatre Mode: Režim kina + Exit Theatre Mode: Opustit režim kina + Full Window: Celé okno + Exit Full Window: Opustit celé okno + Take Screenshot: Pořídit snímek + Show Stats: Zobrazit statistiky + Hide Stats: Skrýt statistiky + You appear to be offline: Zdá se, že jste offline. + Playback will resume automatically when your connection comes back: Přehrávání + bude automaticky pokračovat, jakmile budete opět připojeni. Videos: #& Sort By Sort By: @@ -993,6 +1022,8 @@ Change Format: dostupné' Audio formats are not available for this video: 'Zvukové formáty nejsou pro toto video dostupné' + Legacy formats are not available for this video: Starší formáty nejsou pro toto + video dostupné Share: Share Video: 'Sdílet video' Share Playlist: 'Sdílet playlist' From 1bc9c5833e976b8fc0e9d6920fb1940df9b6d10d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Tue, 3 Sep 2024 16:51:41 +0000 Subject: [PATCH 10/74] Translated using Weblate (Turkish) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/ --- static/locales/tr.yaml | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index 6e1a17298fe2f..789f2074828e4 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -980,6 +980,36 @@ Video: Unhide Channel: Kanalı Göster Hide Channel: Kanalı Gizle More Options: Daha Fazla Seçenek + Player: + TranslatedCaptionTemplate: '{language} ("{originalLanguage}" dilinden çevrildi)' + Audio Tracks: Ses Parçaları + Stats: + Media Formats: 'Medya Biçimleri: {formats}' + Bitrate: 'Bit Hızı: {bitrate} kbps' + CodecsVideoAudioNoItags: 'Kod Çözücüler: {videoCodec} / {audioCodec}' + Stats: İstatistikler + Video ID: 'Video Kimliği: {videoId}' + Resolution: 'Çözünürlük: {width}x{height}@{frameRate}' + Player Dimensions: 'Oynatıcı Boyutları: {width}x{height}' + Volume: 'Ses Düzeyi: {volumePercentage}%' + Bandwidth: 'Bant Genişliği: {bandwidth} kbps' + Buffered: 'Ara Belleğe Alınan: {bufferedPercentage}%' + Dropped Frames / Total Frames: 'Kaybedilen Çerçeve: {droppedFrames} / Toplam + Çerçeve: {totalFrames}' + CodecAudio: 'Kod Çözücü: {audioCodec} ({audioItag})' + CodecsVideoAudio: 'Kod Çözücüler: {videoCodec} ({videoItag}) / {audioCodec} + ({audioItag})' + Theatre Mode: Tiyatro Modu + Exit Theatre Mode: Tiyatro Modundan Çık + Full Window: Tam Pencere + Exit Full Window: Tam Pencereden Çık + Take Screenshot: Ekran Görüntüsü Al + Show Stats: İstatistikleri Göster + Hide Stats: İstatistikleri Gizle + You appear to be offline: Çevrim dışı görünüyorsunuz. + Playback will resume automatically when your connection comes back: Bağlantınız + geri geldiğinde oynatma otomatik olarak devam edecektir. + Skipped segment: '{segmentCategory} bölümü atlandı' Videos: #& Sort By Sort By: @@ -1010,7 +1040,7 @@ Playlist: Custom: Özel Toggle Theatre Mode: 'Tiyatro Modunu Aç/Kapat' Change Format: - Change Media Formats: 'Video Biçimlerini Değiştir' + Change Media Formats: 'Medya Biçimlerini Değiştir' Use Dash Formats: 'DASH Biçimlerini Kullan' Use Legacy Formats: 'Eski Biçimleri Kullan' Use Audio Formats: 'Ses Biçimlerini Kullan' @@ -1018,6 +1048,8 @@ Change Format: değil' Audio formats are not available for this video: 'Ses biçimleri bu video için kullanılabilir değil' + Legacy formats are not available for this video: Eski biçimler bu video için kullanılabilir + değil Share: Share Video: 'Videoyu Paylaş' Share Playlist: 'Oynatma Listesini Paylaş' From d3dd8582be5ae0e431df23199a35e7a8e6ba5961 Mon Sep 17 00:00:00 2001 From: Jose Delvani Date: Wed, 4 Sep 2024 02:37:59 +0000 Subject: [PATCH 11/74] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index d3ca87be128bc..95384532e5746 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -113,7 +113,7 @@ Subscriptions: Subscriptions Tabs: Guias de inscrições All Subscription Tabs Hidden: Todas as guias de inscrição estão ocultas. Para ver o conteúdo aqui, desoculte algumas guias na seção "{subsection}" em "{settingsSection}". - Load More Posts: Carregar mais posts + Load More Posts: Carregar mais postagens Empty Posts: Atualmente, os canais em que você está inscrito não possuem postagens. Trending: Trending: 'Em alta' @@ -141,7 +141,7 @@ User Playlists: Create New Playlist: Criar nova playlist Add to Playlist: Adicionar à playlist Move Video Up: Mover vídeo para cima - Remove from Playlist: Remover da Playlist + Remove from Playlist: Remover da playlist CreatePlaylistPrompt: Create: Criar New Playlist Name: Novo nome da playlist @@ -155,16 +155,16 @@ User Playlists: Add to Favorites: Adicionar a "{playlistName}" Remove from Favorites: Remover de "{playlistName}" Move Video Down: Mover vídeo para baixo - Playlist Name: Nome da Playlist - Playlist Description: Descrição da Playlist + Playlist Name: Nome da playlist + Playlist Description: Descrição da playlist Save Changes: Salvar alterações Cancel: Cancelar - Edit Playlist Info: Editar informação da Playlist - Copy Playlist: Copiar Playlist + Edit Playlist Info: Editar informação da playlist + Copy Playlist: Copiar playlist Enable Quick Bookmark With This Playlist: Habilitar "Favoritos Rápidos" para esta playlist Disable Quick Bookmark: Desativar Favoritos Rápidos - Delete Playlist: Excluir Playlist + Delete Playlist: Excluir playlist Are you sure you want to delete this playlist? This cannot be undone: Tem certeza de que deseja excluir esta playlist? Isto não pode ser desfeito. Sort By: From ace94584fd5fb91ca133894123aee2356572ae6f Mon Sep 17 00:00:00 2001 From: Jose Delvani Date: Wed, 4 Sep 2024 02:54:12 +0000 Subject: [PATCH 12/74] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (875 of 875 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 83 +++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 95384532e5746..3bd907edc4742 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -161,8 +161,7 @@ User Playlists: Cancel: Cancelar Edit Playlist Info: Editar informação da playlist Copy Playlist: Copiar playlist - Enable Quick Bookmark With This Playlist: Habilitar "Favoritos Rápidos" para esta - playlist + Enable Quick Bookmark With This Playlist: Habilitar "Quick Bookmark" para esta playlist Disable Quick Bookmark: Desativar Favoritos Rápidos Delete Playlist: Excluir playlist Are you sure you want to delete this playlist? This cannot be undone: Tem certeza @@ -180,16 +179,16 @@ User Playlists: SinglePlaylistView: Toast: This playlist is now used for quick bookmark: Esta playlist agora é usada como - "Favoritos Rápidos" + "Quick Bookmark" Quick bookmark disabled: Favoritos Rápidos desativado This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo: Esta - playlist agora é usada como "Favoritos Rápidos" em vez de {oldPlaylistName}. + playlist agora é usada como "Quick Bookmark" em vez de "{oldPlaylistName}". Clique aqui para desfazer There was an issue with updating this playlist.: Ocorreu um problema ao atualizar esta playlist. This video cannot be moved down.: Este vídeo não pode ser movido para baixo. - Reverted to use {oldPlaylistName} for quick bookmark: Revertido para usar {oldPlaylistName} - como "Favoritos Rápidos" + Reverted to use {oldPlaylistName} for quick bookmark: Revertido para usar "{oldPlaylistName}" + como "Quick Bookmark" Some videos in the playlist are not loaded yet. Click here to copy anyway.: Alguns vídeos da playlist ainda não foram carregados. Clique aqui para copiar mesmo assim. @@ -208,9 +207,9 @@ User Playlists: Playlist has been updated.: Playlist atualizada. Video has been removed: Vídeo removido This playlist is already being used for quick bookmark.: Esta playlist já está - sendo usada em "Favoritos Rápidos". + sendo usada como "Quick Bookmark". Playlist {playlistName} is the new quick bookmark playlist.: Playlist "{playlistName}" - é a nova playlist em "Favoritos Rápidos". + é a nova playlist em "Quick Bookmark". Search for Videos: Pesquisar vídeos AddVideoPrompt: Toast: @@ -236,9 +235,9 @@ User Playlists: não pode ser desfeito. Remove Watched Videos: Remove vídeos assistidos Playlists with Matching Videos: Playlists com vídeos correspondentes - Quick Bookmark Enabled: Favoritos Rápidos ativado + Quick Bookmark Enabled: Quick Bookmark ativado Cannot delete the quick bookmark target playlist.: Não é possível excluir a playlist - de destino em "Favoritos Rápidos". + de destino do "Quick Bookmark". Remove Duplicate Videos: Remover vídeos duplicados Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Tem certeza de que deseja remover 1 vídeo duplicado desta playlist? Isso não pode @@ -303,7 +302,7 @@ Settings: No Action: Nenhuma ação Ask Before Opening Link: Perguntar antes de abrir o link Open Link: Abrir link - External Link Handling: Ação de link externo + External Link Handling: Ação de links externos Auto Load Next Page: Label: Carregamento automático da próxima página Tooltip: Carregar páginas e comentários adicionais automaticamente. @@ -411,7 +410,7 @@ Settings: Next Video Interval: Intervalo para o próximo vídeo Display Play Button In Video Player: Mostrar botão "Reproduzir" no centro do player Scroll Volume Over Video Player: Alterar volume ao rolar sobre o player - Fast-Forward / Rewind Interval: Intervalo para avançar/retroceder rápido + Fast-Forward / Rewind Interval: Intervalo para avançar/retroceder rapidamente Scroll Playback Rate Over Video Player: Alterar taxa de reprodução ao rolar sobre o player Max Video Playback Rate: Taxa máxima de reprodução de vídeo @@ -530,18 +529,18 @@ Settings: All watched history has been successfully imported: O histórico de exibição foi importado com sucesso History object has insufficient data, skipping item: O histórico tem dados insuficientes, - pulando item + ignorando item This might take a while, please wait: Este processo pode demorar, por favor aguarde Invalid subscriptions file: Arquivo de inscrições inválido All subscriptions and profiles have been successfully imported: Todas as inscrições e perfis foram importados com sucesso Profile object has insufficient data, skipping item: O perfil tem dados insuficientes, ignorando o item - Manage Subscriptions: Administrar inscrições + Manage Subscriptions: Gerenciar inscrições Import Playlists: Importar playlists Export Playlists: Exportar playlists Playlist insufficient data: Dados insuficientes para a playlist "{playlist}", - pulando item + ignorando item All playlists has been successfully exported: Todas as playlists foram exportadas com sucesso All playlists has been successfully imported: Todas as playlists foram importadas @@ -566,7 +565,7 @@ Settings: Distraction Free Settings: Configurações de distrações Hide Channel Subscribers: Ocultar número de inscritos Hide Video Likes And Dislikes: Ocultar "curtidas" em vídeo - Hide Video Views: Ocultar visualizações de vídeo + Hide Video Views: Ocultar visualizações do vídeo Hide Active Subscriptions: Ocultar inscrições ativas Hide Playlists: Ocultar playlist Hide Video Description: Ocultar descrição do vídeo @@ -591,20 +590,20 @@ Settings: Hide Channel Shorts: Ocultar "Shorts" do canal Hide Channel Podcasts: Ocultar podcasts do canal Hide Channel Releases: Ocultar lançamentos do canal - Hide Subscriptions Videos: Ocultar vídeos de inscrições - Hide Subscriptions Shorts: Ocultar "Shorts" de inscrições - Hide Subscriptions Live: Ocultar transmissões ao vivo de inscrições + Hide Subscriptions Videos: Ocultar vídeos de suas inscrições + Hide Subscriptions Shorts: Ocultar "Shorts" de suas inscrições + Hide Subscriptions Live: Ocultar transmissões ao vivo de suas inscrições Hide Profile Pictures in Comments: Ocultar foto do perfil nos comentários Blur Thumbnails: Desfocar Miniaturas - Hide Subscriptions Community: Ocultar comunidade de inscrições + Hide Subscriptions Community: Ocultar comunidade de suas inscrições Hide Channels Invalid: ID do canal fornecido é inválido Hide Channels Disabled Message: Alguns canais foram bloqueados por ID e não foram - processados. O recurso é bloqueado enquanto esses IDs estão sendo atualizados + processados. A função está bloqueada enquanto esses IDs estão sendo atualizados Hide Channels Already Exists: ID do canal já existe Hide Channels API Error: Erro ao recuperar o usuário com o ID fornecido. Por favor, verifique novamente se o ID está correto. - Hide Videos and Playlists Containing Text Placeholder: Palavra, trecho de palavra - ou frase + Hide Videos and Playlists Containing Text Placeholder: Palavra, trecho de uma + palavra ou frase Hide Videos and Playlists Containing Text: Ocultar vídeos e playlists que contenham texto The app needs to restart for changes to take effect. Restart and apply change?: O @@ -638,12 +637,12 @@ Settings: Prompt To Skip: Solicitar para pular Do Nothing: Não fazer nada Auto Skip: Pular automaticamente - Skip Option: Opção de pular + Skip Option: Opção para pular Category Color: Cor da categoria - UseDeArrowTitles: Utilizar títulos de vídeo DeArrow - UseDeArrowThumbnails: Usar DeArrow para miniaturas + UseDeArrowTitles: Usar títulos de vídeo estilo DeArrow + UseDeArrowThumbnails: Usar miniaturas estilo DeArrow 'DeArrow Thumbnail Generator API Url (Default is https://dearrow-thumb.ajay.app)': URL - da API do gerador de miniatura DeArrow (o padrão é https://dearrow-thumb.ajay.app) + da API para gerar miniaturas estilo DeArrow (o padrão é https://dearrow-thumb.ajay.app) External Player Settings: Custom External Player Arguments: Argumentos do player externo personalizados External Player: Player externo @@ -662,7 +661,7 @@ Settings: Download in app: Baixar no aplicativo Download Behavior: Comportamento de download Parental Control Settings: - Show Family Friendly Only: Mostrar apenas conteúdo adequado para toda a família + Show Family Friendly Only: Mostrar apenas conteúdo adequado para todos os públicos Hide Search Bar: Ocultar barra de pesquisa Parental Control Settings: Configurações de Controle Parental Hide Unsubscribe Button: Ocultar botão "Cancelar inscrição" @@ -893,8 +892,8 @@ Video: Sponsor Block category: music offtopic: Música fora do contexto interaction: Interação - self-promotion: Auto-Promoção - outro: Conclusão + self-promotion: Auto-promoção + outro: Cartões finais e créditos intro: Introdução sponsor: Patrocinador filler: Preenchimento @@ -1001,8 +1000,8 @@ Share: Share Playlist: 'Compartilhar playlist' Copy Link: 'Copiar link' Open Link: 'Abrir link' - Copy Embed: 'Copiar incorporado' - Open Embed: 'Abrir incorporado' + Copy Embed: 'Copiar link incorporado' + Open Embed: 'Abrir link incorporado' # On Click Invidious URL copied to clipboard: 'URL Invidious copiado para a área de transferência' Invidious Embed URL copied to clipboard: 'URL incorporado do Invidious copiado para @@ -1039,9 +1038,9 @@ Comments: Show More Replies: Mostrar mais respostas Pinned by: Fixado por And others: e outros - From {channelName}: de {channelName} + From {channelName}: A partir de {channelName} Member: Membro - Hearted: Coração + Hearted: Recebeu um coração View {replyCount} replies: Exibir {replyCount} respostas Subscribed: Inscrito Up Next: 'Próximo' @@ -1092,7 +1091,7 @@ Profile: No channel(s) have been selected: Nenhum canal foi selecionado Add Selected To Profile: Adicionar selecionado ao perfil Delete Selected: Excluir selecionados - Select None: Cancelar seleção + Select None: Desfazer seleção Select All: Selecionar todos '{number} selected': '{number} selecionado(s)' Other Channels: Outros canais @@ -1144,11 +1143,11 @@ Tooltips: retornados por ela, em vez dos retornados pelo Invidious. Ajuda quando os vídeos retornados pelo Invidious não são reproduzidos devido a restrições do país. Scroll Playback Rate Over Video Player: Com o cursor sobre o vídeo, pressione - e segure a tecla Control (tecla Command no Mac) e role a roda do mouse para - frente ou para trás para controlar a taxa de reprodução. Pressione e segure - a tecla Control (tecla Command no Mac) e clique com o botão esquerdo do mouse - para retornar rapidamente à taxa de reprodução padrão (1x a menos que tenha - sido alterada nas configurações). + e segure a tecla Ctrl (tecla Command no Mac) e role a roda do mouse para frente + ou para trás para controlar a taxa de reprodução. Pressione e segure a tecla + Ctrl (tecla Command no Mac) e clique com o botão esquerdo do mouse para retornar + rapidamente à taxa de reprodução padrão (1x a menos que tenha sido alterada + nas configurações). Skip by Scrolling Over Video Player: Use a roda de rolagem para pular o vídeo, estilo MPV. General Settings: @@ -1203,7 +1202,7 @@ Tooltips: UseDeArrowThumbnails: Substitua as miniaturas de vídeo pelas miniaturas do DeArrow. More: Mais Playing Next Video Interval: A reproduzir o próximo vídeo imediatamente. Clique para - cancelar. | A reproduzir o próximo vídeo em {nextVideoInterval} segundo(s). Clique + cancelar. | A reproduzir o próximo vídeo em {nextVideoInterval} segundo. Clique para cancelar. | A reproduzir o próximo vídeo em {nextVideoInterval} segundos. Clique para cancelar. Hashtags have not yet been implemented, try again later: Hashtags ainda não foram @@ -1256,7 +1255,7 @@ Playlist will not pause when current video is finished: A playlist não será pa quando o vídeo atual terminar Channel Hidden: '{channel} adicionado ao filtro de canais' Go to page: Ir para {page} -Channel Unhidden: '{channel} removido do filtro do canal' +Channel Unhidden: '{channel} removido do filtro de canais' Trimmed input must be at least N characters long: A entrada cortada deve ter pelo menos 1 caractere | A entrada cortada precisa ter pelo menos {length} caracteres Tag already exists: A tag "{tagName}" já existe From 45c8cafa5b23b9d4564e4a4872c77a934b5eb50b Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Wed, 4 Sep 2024 12:53:33 +0200 Subject: [PATCH 13/74] Fix incorrect/translated placeholders in locale files (#5628) * Fix incorrect/translated placeholders in locale files * Fix "{videoCount} video(s) added to 1 playlist" in zh-CN.yaml --- .../ft-playlist-add-video-prompt.js | 1 - static/locales/ar.yaml | 10 ++++---- static/locales/el.yaml | 8 +++--- static/locales/es.yaml | 8 +++--- static/locales/eu.yaml | 6 ++--- static/locales/fa.yaml | 4 +-- static/locales/fr-FR.yaml | 2 +- static/locales/ko.yaml | 2 +- static/locales/pt-PT.yaml | 2 +- static/locales/pt.yaml | 2 +- static/locales/ru.yaml | 25 +++++++++---------- static/locales/sv.yaml | 2 +- static/locales/vi.yaml | 2 +- static/locales/zh-CN.yaml | 2 +- 14 files changed, 37 insertions(+), 39 deletions(-) diff --git a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js index c1808e6a52ed9..0753f7ff1e608 100644 --- a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js +++ b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js @@ -289,7 +289,6 @@ export default defineComponent({ if (addedPlaylistIds.size === 1) { message = this.$tc('User Playlists.AddVideoPrompt.Toast.{videoCount} video(s) added to 1 playlist', this.toBeAddedToPlaylistVideoCount, { videoCount: this.toBeAddedToPlaylistVideoCount, - playlistCount: addedPlaylistIds.size, }) } else { message = this.$tc('User Playlists.AddVideoPrompt.Toast.{videoCount} video(s) added to {playlistCount} playlists', this.toBeAddedToPlaylistVideoCount, { diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index d8ed78dfaa17f..e30ac80720ab5 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -110,7 +110,7 @@ Subscriptions: لرؤيتها هنا. Empty Channels: لا تحتوي قنواتك التي اشتركت فيها حاليا على أي مقاطع فيديو. All Subscription Tabs Hidden: جميع علامات تبويب الاشتراك مخفية. لمشاهدة المحتوى - هنا ، يرجى إظهار بعض علامات التبويب في قسم "{subection}" في "{settingsSection}". + هنا ، يرجى إظهار بعض علامات التبويب في قسم "{subsection}" في "{settingsSection}". Subscriptions Tabs: تبويب الاشتراكات Load More Posts: تحميل المزيد من المشاركات Empty Posts: القنوات التي اشتركت بها حاليا لا تحتوي على أي مشاركات. @@ -226,8 +226,8 @@ User Playlists: لديك قوائم تشغيل. انقر على زر إنشاء قائمة تشغيل جديدة لإنشاء قائمة تشغيل جديدة. Are you sure you want to delete this playlist? This cannot be undone: هل أنت متأكد أنك تريد حذف قائمة التشغيل هذه؟ هذا لا يمكن التراجع عنه. - Add to Favorites: إضافة إلى {اسم قائمة التشغيل} - Remove from Favorites: إزالة من {اسم قائمة التشغيل} + Add to Favorites: إضافة إلى {playlistName} + Remove from Favorites: إزالة من {playlistName} Enable Quick Bookmark With This Playlist: تمكين الإشارة المرجعية السريعة مع قائمة التشغيل هذه Disable Quick Bookmark: تعطيل الإشارة المرجعية السريعة @@ -1171,9 +1171,9 @@ Clipboard: Chapters: Chapters: الفصول 'Chapters list hidden, current chapter: {chapterName}': 'قائمة الفصول مخفية ، الفصل - الحالي: {sectionName}' + الحالي: {chapterName}' 'Chapters list visible, current chapter: {chapterName}': 'قائمة الفصول المرئية ، - الفصل الحالي: {sectionName}' + الفصل الحالي: {chapterName}' Preferences: التفضيلات Ok: موافق Hashtag: diff --git a/static/locales/el.yaml b/static/locales/el.yaml index df458fcec39d2..c9298eed7f102 100644 --- a/static/locales/el.yaml +++ b/static/locales/el.yaml @@ -1040,12 +1040,12 @@ Channels: Title: Λίστα Καναλιών Search bar placeholder: Αναζήτηση Καναλιών Unsubscribe: Απεγγραφή - Count: $ κανάλι(α) βρέθηκαν. + Count: '{number} κανάλι(α) βρέθηκαν.' Empty: Η λίστα καναλιών σας είναι άδεια. - Unsubscribed: $ αφαιρέθηκε από τις Συνδρομές σας - Unsubscribe Prompt: Θέλετε σίγουρα να απεγγραφείτε από το "$"? + Unsubscribed: '{channelName} αφαιρέθηκε από τις Συνδρομές σας' + Unsubscribe Prompt: Θέλετε σίγουρα να απεγγραφείτε από το "{channelName}"? New Window: Νέο Παράθυρο -Screenshot Error: Λήψη στιγμιότυπου απέτυχε. $ +Screenshot Error: 'Λήψη στιγμιότυπου απέτυχε. {error}' Clipboard: Copy failed: Η αντιγραφή στο πρόχειρο απέτυχε Cannot access clipboard without a secure connection: Δεν είναι δυνατή η πρόσβαση diff --git a/static/locales/es.yaml b/static/locales/es.yaml index ecbcaeabdb3af..8c9c43afcd5be 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -154,9 +154,9 @@ User Playlists: sus {videoCount} vídeos N playlists selected: '{playlistCount} seleccionada' Added {count} Times: Ya añadido | Añadido {count} veces - "{videoCount}/{totalVideoCount} Videos Already Added": '{VideoCount}/{totalVideoCount} + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} Vídeos ya añadidos' - "{videoCount}/{totalVideoCount} Videos Will Be Added": '{VideoCount}/{totalVideoCount} + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} Se añadirán vídeos' Allow Adding Duplicate Video(s): Permitir añadir vídeos duplicados SinglePlaylistView: @@ -1243,9 +1243,9 @@ Clipboard: sin una conexión segura Chapters: 'Chapters list visible, current chapter: {chapterName}': 'Lista de los capítulos - visibles, capítulo actual: {nombredelcapítulo}' + visibles, capítulo actual: {chapterName}' 'Chapters list hidden, current chapter: {chapterName}': 'Lista de los capítulos - ocultos, capítulo actual: {nombredelcapítulo}' + ocultos, capítulo actual: {chapterName}' Chapters: Capítulos Preferences: Preferencias Ok: De acuerdo diff --git a/static/locales/eu.yaml b/static/locales/eu.yaml index ccc8b01c0e64b..be23af18ea723 100644 --- a/static/locales/eu.yaml +++ b/static/locales/eu.yaml @@ -42,7 +42,7 @@ Global: Live: Zuzenekoa Shorts: Laburrak Input Tags: - Length Requirement: Etiketak {zenbaki} karaktere izan behar ditu gutxienez + Length Requirement: Etiketak {number} karaktere izan behar ditu gutxienez Community: Komunitatea Version {versionNumber} is now available! Click for more details: '{versionNumber} bertsioa erabilgarri! Klikatu azalpen gehiagorako' @@ -119,7 +119,7 @@ Subscriptions: Load More Posts: Kargatu mezu gehiago Subscriptions Tabs: Harpidetzen fitxak All Subscription Tabs Hidden: Harpidetza fitxa guztiak ezkutatuta daude. Hemen edukia - ikusteko, erakutsi fitxa batzuk "{azpisection}" ataleko "{settingsSection}"-ean. + ikusteko, erakutsi fitxa batzuk "{subsection}" ataleko "{settingsSection}"-ean. More: 'Gehiago' Trending: Trending: 'Joerak' @@ -1078,7 +1078,7 @@ Tooltips: zure erreprodukzio-zerrendak eta erreprodukzio-zerrenden barneko bideoak soilik kenduta. Hide Subscriptions Live: Ezarpen hau aplikazio osorako "{appWideSetting}" ezarpenak - ordezkatzen du, "{settingsSection}" ataleko "{azpisekzioa}" atalean + ordezkatzen du, "{settingsSection}" ataleko "{subsection}" atalean Experimental Settings: Replace HTTP Cache: Electron-en diskoan oinarritutako HTTP cachea desgaitzen du eta memoriako irudien cache pertsonalizatua gaitu. RAM erabilera handitzea ekarriko diff --git a/static/locales/fa.yaml b/static/locales/fa.yaml index 9539aad8df1db..6cbc878476129 100644 --- a/static/locales/fa.yaml +++ b/static/locales/fa.yaml @@ -491,7 +491,7 @@ Channel: ای ندارد Community: Community: انجمن - votes: '{رای} رأی' + votes: '{votes} رأی' Reveal Answers: پاسخ ها را فاش کن This channel currently does not have any posts: این کانال در حال حاضر هیچ پستی ندارد @@ -800,7 +800,7 @@ Hashtag: Hashtag: هشتگ External link opening has been disabled in the general settings: باز کردن پیوند خارجی در تنظیمات عمومی غیرفعال شده است -Screenshot Error: اسکرین شات ناموفق بود. {خطا} +Screenshot Error: اسکرین شات ناموفق بود. {error} 'The playlist has ended. Enable loop to continue playing': لیست پخش به پایان رسیده است. حلقه را برای ادامه بازی فعال کنید Playing Next Video: پخش ویدیوی بعدی diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 23d5d2da5d785..66fb327c20f89 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -1328,7 +1328,7 @@ Yes, Delete: Oui, effacer Yes, Restart: Oui, redémarrer Yes, Open Link: Oui, ouvrir le lien Cancel: Annuler -Search character limit: La recherche dépasse le nombre de caractères impartis +Search character limit: La recherche dépasse le nombre de caractères impartis {searchCharacterLimit} Search Listing: Label: 4K: 4K diff --git a/static/locales/ko.yaml b/static/locales/ko.yaml index 0f38e5aa3e4b9..f72996bc05102 100644 --- a/static/locales/ko.yaml +++ b/static/locales/ko.yaml @@ -686,7 +686,7 @@ Comments: And others: 및 기타 Member: 구성원 Hearted: 좋아요 표시한 - View {replyCount} replies: '{reply Count} 개의 답글 보기' + View {replyCount} replies: '{replyCount} 개의 답글 보기' Up Next: '다음 위로' #Tooltips diff --git a/static/locales/pt-PT.yaml b/static/locales/pt-PT.yaml index 3f30b7fcef357..5e40388ddf546 100644 --- a/static/locales/pt-PT.yaml +++ b/static/locales/pt-PT.yaml @@ -40,7 +40,7 @@ Global: Counts: Video Count: 1 vídeo | {count} vídeos Subscriber Count: 1 subscritor | {count} subscritores - View Count: 1 visualização | {contagem} visualizações + View Count: 1 visualização | {count} visualizações Watching Count: 1 a assistir | {count} a assistir Channel Count: 1 canal | {count} canais Input Tags: diff --git a/static/locales/pt.yaml b/static/locales/pt.yaml index aa2f646aaccdf..85fcbfa04e38e 100644 --- a/static/locales/pt.yaml +++ b/static/locales/pt.yaml @@ -40,7 +40,7 @@ Global: Channel Count: 1 canal | {count} canais Video Count: 1 vídeo | {count} vídeos Subscriber Count: 1 subscritor | {count} subscritores - View Count: 1 visualização | {contagem} visualizações + View Count: 1 visualização | {count} visualizações Watching Count: 1 a assistir | {count} a assistir Input Tags: Length Requirement: A etiqueta tem que ter, pelo menos, {number} caracteres diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index 2506b51c48aee..925e476e1d35f 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -42,7 +42,7 @@ Global: Watching Count: 1 смотрящий | {count} смотрящих Channel Count: 1 канал | {count} канала(ов) Input Tags: - Length Requirement: Длина тега должна составлять не менее {числа} символов + Length Requirement: Длина тега должна составлять не менее {number} символов Search / Go to URL: 'Поиск / Перейти по адресу' # In Filter Button Search Filters: @@ -176,15 +176,15 @@ User Playlists: This video cannot be moved down.: Это видео нельзя передвинуть вниз. Video has been removed: Видео было удалено Reverted to use {oldPlaylistName} for quick bookmark: Переход на использование - {старого имени плейлиста} для быстрого создания закладок + {oldPlaylistName} для быстрого создания закладок This playlist is now used for quick bookmark: Этот список воспроизведения теперь используется для быстрого создания закладок This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo: Этот - плейлист теперь используется для быстрой закладки вместо {старого имени плейлиста}. + плейлист теперь используется для быстрой закладки вместо {oldPlaylistName}. Нажмите здесь, чтобы отменить This playlist is already being used for quick bookmark.: Этот плейлист уже используется для быстрого создания закладок. - Playlist {playlistName} is the new quick bookmark playlist.: Плейлист {плейлистНазвание} + Playlist {playlistName} is the new quick bookmark playlist.: Плейлист {playlistName} - это новый плейлист быстрых закладок. Search for Videos: Поиск видео AddVideoPrompt: @@ -196,11 +196,11 @@ User Playlists: "{videoCount} video(s) added to 1 playlist": 1 видео добавлено в 1 подборку | {videoCount} видео добавлено в 1 подборку "{videoCount} video(s) added to {playlistCount} playlists": 1 видео добавлено - в {плейлистКоличество} плейлистов | {видеоКоличество} видео добавлено в {плейлистКоличество} + в {videoCount} плейлистов | {playlistCount} видео добавлено в {videoCount} плейлистов Select a playlist to add your N videos to: Выбери подборку на добавление видео | Выбери подборку на добавление {videoCount} видео в неё - Added {count} Times: Добавлено {количество} Время | Добавлено {количество} Времени + Added {count} Times: Добавлено {count} Время | Добавлено {count} Времени Allow Adding Duplicate Video(s): Разрешить добавление дубликатов видео "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} Видео будут добавлены' @@ -1216,22 +1216,21 @@ Age Restricted: This channel is age restricted: Канал с возрастным ограничением This video is age restricted: Видео с возрастным ограничением Tag already exists: «{tagName}» метка уже существует -Search character limit: Поисковый запрос превышает лимит символов {поискОграничение - символов} +Search character limit: Поисковый запрос превышает лимит символов {searchCharacterLimit} Moments Ago: несколько минут назад Yes, Delete: Да, удалить Yes, Restart: Да, перезагрузка Yes, Open Link: Да, открытая ссылка Cancel: Отмена checkmark: ✓ -Display Label: '{метка}: {значение}' -Go to page: Перейти на {страницу} +Display Label: '{label}: {value}' +Go to page: Перейти на {page} Close Banner: Закрыть баннер Feed: - Feed Last Updated: '{фидНазвание} фид последний раз обновлялся: {дата}' - Refresh Feed: Обновить {имя подписки} + Feed Last Updated: '{feedName} фид последний раз обновлялся: {date}' + Refresh Feed: Обновить {subscriptionName} Trimmed input must be at least N characters long: Обрезанный ввод должен быть длиной - не менее 1 символа | Обрезанный ввод должен быть длиной не менее {длина} символов + не менее 1 символа | Обрезанный ввод должен быть длиной не менее {length} символов Search Listing: Label: 4K: 4K diff --git a/static/locales/sv.yaml b/static/locales/sv.yaml index fdbb61c63f928..d0ccbb8b0ad52 100644 --- a/static/locales/sv.yaml +++ b/static/locales/sv.yaml @@ -1069,7 +1069,7 @@ Channels: Preferences: Preferenser Ok: Okej Screenshot Success: Sparade skärmdump som "{filePath}" -Screenshot Error: Skärmdump misslyckades {felkod} +Screenshot Error: Skärmdump misslyckades {error} Clipboard: Cannot access clipboard without a secure connection: Har inte tillgång till urklipp utan en säker anslutning diff --git a/static/locales/vi.yaml b/static/locales/vi.yaml index fe8fd69fb88ce..d74189933cb97 100644 --- a/static/locales/vi.yaml +++ b/static/locales/vi.yaml @@ -43,7 +43,7 @@ Global: Video Count: 1 video | {count} video Watching Count: 1 lượt xem | {count} lượt xem Input Tags: - Length Requirement: 1 đang xem | {count} đang xem + Length Requirement: 1 đang xem | {number} đang xem Search / Go to URL: 'Tìm kiếm / Đi đến URL' # In Filter Button Search Filters: diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index f1f081a003fcd..ed729d8c1af2d 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -133,7 +133,7 @@ User Playlists: Toast: "{videoCount} video(s) added to {playlistCount} playlists": 添加了 1 则视频到 {playlistCount} 个播放列表 | 添加了 {videoCount} 则视频到 {playlistCount} 个播放列表 - "{videoCount} video(s) added to 1 playlist": 添加了1 则视频到 1 个播放列表 | 添加了 {playlistCount} + "{videoCount} video(s) added to 1 playlist": 添加了1 则视频到 1 个播放列表 | 添加了 {videoCount} 则视频到 1 个播放列表 You haven't selected any playlist yet.: 你尚未选中任何播放列表。 Select a playlist to add your N videos to: 选择一个播放列表来添加你的视频 | 选择一个播放列表来添加你的 {videoCount} From f1e14bfb7db012aa303c7ace2899472d344b96d4 Mon Sep 17 00:00:00 2001 From: Emma Date: Wed, 4 Sep 2024 17:53:40 -0400 Subject: [PATCH 14/74] Change the hls manifest type to match the parser name shaka player registers (#5648) --- src/renderer/views/Watch/Watch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index a8c6ccb589c82..788a7a33b837a 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -38,7 +38,7 @@ import { } from '../../helpers/api/invidious' const MANIFEST_TYPE_DASH = 'application/dash+xml' -const MANIFEST_TYPE_HLS = 'application/x-mpegURL' +const MANIFEST_TYPE_HLS = 'application/x-mpegurl' export default defineComponent({ name: 'Watch', From d8703e84fb46317e3306fe62f16a2ef5020ad558 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Thu, 5 Sep 2024 10:06:23 +0200 Subject: [PATCH 15/74] Remove "Force Local Backend for Legacy Formats" setting (#5650) --- .../general-settings/general-settings.js | 5 --- .../player-settings/player-settings.js | 5 --- .../player-settings/player-settings.vue | 8 ----- src/renderer/store/modules/settings.js | 1 - src/renderer/views/Watch/Watch.js | 31 ++----------------- static/locales/ar.yaml | 7 ----- static/locales/be.yaml | 2 -- static/locales/bg.yaml | 6 ---- static/locales/ca.yaml | 2 -- static/locales/ckb.yaml | 2 -- static/locales/cs.yaml | 5 --- static/locales/cy.yaml | 2 -- static/locales/da.yaml | 5 --- static/locales/de-DE.yaml | 6 ---- static/locales/el.yaml | 7 ----- static/locales/en-US.yaml | 5 --- static/locales/en_GB.yaml | 5 --- static/locales/es-MX.yaml | 6 ---- static/locales/es.yaml | 6 ---- static/locales/es_AR.yaml | 1 - static/locales/et.yaml | 7 ----- static/locales/eu.yaml | 6 ---- static/locales/fa.yaml | 6 ---- static/locales/fi.yaml | 6 ---- static/locales/fr-FR.yaml | 7 ----- static/locales/gl.yaml | 6 ---- static/locales/he.yaml | 5 --- static/locales/hi.yaml | 5 --- static/locales/hr.yaml | 6 ---- static/locales/hu.yaml | 7 ----- static/locales/id.yaml | 6 ---- static/locales/is.yaml | 7 ----- static/locales/it.yaml | 6 ---- static/locales/ja.yaml | 9 ++---- static/locales/ko.yaml | 4 --- static/locales/lt.yaml | 6 ---- static/locales/lv.yaml | 3 -- static/locales/nb_NO.yaml | 6 ---- static/locales/nl.yaml | 6 ---- static/locales/nn.yaml | 6 ---- static/locales/pl.yaml | 5 --- static/locales/pt-BR.yaml | 6 ---- static/locales/pt-PT.yaml | 6 ---- static/locales/pt.yaml | 6 ---- static/locales/ro.yaml | 7 ----- static/locales/ru.yaml | 7 ----- static/locales/sk.yaml | 6 ---- static/locales/sl.yaml | 2 -- static/locales/sm.yaml | 2 -- static/locales/sr.yaml | 6 ---- static/locales/sv.yaml | 6 ---- static/locales/tr.yaml | 7 ----- static/locales/uk.yaml | 6 ---- static/locales/ur.yaml | 5 --- static/locales/vi.yaml | 6 ---- static/locales/zh-CN.yaml | 3 -- static/locales/zh-TW.yaml | 3 -- 57 files changed, 5 insertions(+), 321 deletions(-) diff --git a/src/renderer/components/general-settings/general-settings.js b/src/renderer/components/general-settings/general-settings.js index 64b53ff387ca6..1ddbf2c1d4607 100644 --- a/src/renderer/components/general-settings/general-settings.js +++ b/src/renderer/components/general-settings/general-settings.js @@ -242,10 +242,6 @@ export default defineComponent({ handlePreferredApiBackend: function (backend) { this.updateBackendPreference(backend) - - if (backend === 'local') { - this.updateForceLocalBackendForLegacy(false) - } }, handleThumbnailPreferenceChange: function (value) { @@ -270,7 +266,6 @@ export default defineComponent({ 'updateRegion', 'updateListType', 'updateThumbnailPreference', - 'updateForceLocalBackendForLegacy', 'updateCurrentLocale', 'updateExternalLinkHandling', 'updateGeneralAutoLoadMorePaginatedItemsEnabled', diff --git a/src/renderer/components/player-settings/player-settings.js b/src/renderer/components/player-settings/player-settings.js index 969815225d5e1..3713b69c0563d 100644 --- a/src/renderer/components/player-settings/player-settings.js +++ b/src/renderer/components/player-settings/player-settings.js @@ -83,10 +83,6 @@ export default defineComponent({ return this.$store.getters.getEnableSubtitlesByDefault }, - forceLocalBackendForLegacy: function () { - return this.$store.getters.getForceLocalBackendForLegacy - }, - proxyVideos: function () { return this.$store.getters.getProxyVideos }, @@ -284,7 +280,6 @@ export default defineComponent({ 'updateAutoplayPlaylists', 'updatePlayNextVideo', 'updateEnableSubtitlesByDefault', - 'updateForceLocalBackendForLegacy', 'updateProxyVideos', 'updateDefaultTheatreMode', 'updateDefaultSkipInterval', diff --git a/src/renderer/components/player-settings/player-settings.vue b/src/renderer/components/player-settings/player-settings.vue index bd0915cf27ceb..08ac730953d21 100644 --- a/src/renderer/components/player-settings/player-settings.vue +++ b/src/renderer/components/player-settings/player-settings.vue @@ -4,14 +4,6 @@ >
- typeof stream.size === 'string') - if (process.env.SUPPORTS_LOCAL_API && this.forceLocalBackendForLegacy) { - const legacyFormats = await this.getLocalLegacyFormats() - - if (legacyFormats !== null) { - this.legacyFormats = legacyFormats - } else { - this.legacyFormats = result.formatStreams.map(format => mapInvidiousLegacyFormat(format, trustApiResponse)) - } - } else { - this.legacyFormats = result.formatStreams.map(format => mapInvidiousLegacyFormat(format, trustApiResponse)) - } + this.legacyFormats = result.formatStreams.map(format => mapInvidiousLegacyFormat(format, trustApiResponse)) - if (!process.env.SUPPORTS_LOCAL_API || (this.proxyVideos && !this.forceLocalBackendForLegacy)) { + if (!process.env.SUPPORTS_LOCAL_API || this.proxyVideos) { this.legacyFormats.forEach(format => { format.url = getProxyUrl(format.url) }) @@ -1125,20 +1112,6 @@ export default defineComponent({ this.timestamp = isNaN(timestamp) || timestamp < 0 ? null : timestamp }, - getLocalLegacyFormats: async function () { - try { - const result = await getLocalVideoInfo(this.videoId) - return result.streaming_data.formats.map(mapLocalLegacyFormat) - } catch (err) { - const errorMessage = this.$t('Local API Error (Click to copy)') - showToast(`${errorMessage}: ${err}`, 10000, () => { - copyToClipboard(err) - }) - console.error(err) - return null - } - }, - handleFormatChange: function (format) { switch (format) { case 'dash': diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index e30ac80720ab5..8bfed56ff13e1 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -374,8 +374,6 @@ Settings: Hide FreeTube Header Logo: إخفاء شعار رأس FreeTube Player Settings: Player Settings: 'إعدادات المشغل' - Force Local Backend for Legacy Formats: 'فرض الواجهة الخلفية المحلية للتنسيقات - القديمة' Play Next Video: 'شغل الفيديو التالي' Turn on Subtitles by Default: 'شغّل الترجمات بشكل افتراضي' Autoplay Videos: 'شغًل الفيديوهات تلقائياً' @@ -1076,11 +1074,6 @@ Tooltips: Player Settings: Proxy Videos Through Invidious: سيتم الاتصال ب Invidious لتقديم مقاطع الفيديو بدلاً من إجراء اتصال مباشر مع يوتيوب. يلغي تفضيل الواجهة البرمجية. - Force Local Backend for Legacy Formats: تعمل فقط عندما تكون واجهة Invidious البرمجية - هي الاختيار الافتراضي . عند تفعيل هذا الخيار ، ستعمل الواجهة البرمجية المحلية - باستخدام التنسيقات القديمة التي تم إرجاعها من قبلها بدلاً من أن تستخدم الصيغ - التي تم إرجاعها من قبل Invidious . يساعد هذا الخيار عندما لا تعمل الفيديوهات - التي تم إرجاعها من قبل Invidious بسبب قيود البلد. Default Video Format: حدّد التنسيقات المستخدمة عند تشغيل الفيديو. تنسيق داش (التدفق الميكانيكي المتكيّف عبر بروتوكول نقل النص التشعبي) يمكنها أن تُشغِّل جودات أعلى. التنسيقات القديمة محدودة بجودة 720p كحدّ أقصى لكنها تستخدم عرضًا أقل للنطاق. diff --git a/static/locales/be.yaml b/static/locales/be.yaml index 4b43bbe8276b0..2b6dae35ff4fe 100644 --- a/static/locales/be.yaml +++ b/static/locales/be.yaml @@ -242,7 +242,6 @@ Settings: #* Main Color Theme Player Settings: Player Settings: '' - Force Local Backend for Legacy Formats: '' Play Next Video: '' Turn on Subtitles by Default: '' Autoplay Videos: '' @@ -760,7 +759,6 @@ Tooltips: Region for Trending: '' External Link Handling: | Player Settings: - Force Local Backend for Legacy Formats: '' Proxy Videos Through Invidious: '' Default Video Format: '' Scroll Playback Rate Over Video Player: '' diff --git a/static/locales/bg.yaml b/static/locales/bg.yaml index 7a9e190cae362..39043e62854a0 100644 --- a/static/locales/bg.yaml +++ b/static/locales/bg.yaml @@ -386,8 +386,6 @@ Settings: Hide FreeTube Header Logo: Скриване логото на FreeTube Player Settings: Player Settings: 'Настройки на плейъра' - Force Local Backend for Legacy Formats: 'Принудително връщане към локалния интерфейс - при стари формати' Play Next Video: 'Пускане на следващото видео' Turn on Subtitles by Default: 'Включване на субтитрите по подразбиране' Autoplay Videos: 'Автоматично пускане на видеата' @@ -1093,10 +1091,6 @@ Tooltips: Proxy Videos Through Invidious: Ще се свърже с Invidious, за да изтегли видеото, вместо да прави дирекна връзка с YouTube. Пренебрегва настройките на локалния интерфейс. - Force Local Backend for Legacy Formats: Действа само когато по подразбиране е - избран Invidious интерфейс. Когато е активиран, локалният интерфейс ще използва - старите формати вместо тези на Invidious. Това помага когато видеата, получавани - от Invidious не вървят поради регионални ограничения. Scroll Playback Rate Over Video Player: Докато курсорът е върху видеото, натиснете и задръжте клавиша Control (Command Key за Mac) и превъртете колелцето на мишката напред или назад, за да контролирате скоростта на възпроизвеждане. Натиснете diff --git a/static/locales/ca.yaml b/static/locales/ca.yaml index 1348fd0dc0529..b0ec4fc4b0b7c 100644 --- a/static/locales/ca.yaml +++ b/static/locales/ca.yaml @@ -211,8 +211,6 @@ Settings: Hide Side Bar Labels: Oculta les etiquetes de la barra lateral Player Settings: Player Settings: 'Configuració del reproductor' - Force Local Backend for Legacy Formats: 'Força el motor local per als formats - heretats' Play Next Video: 'Reprodueix el vídeo següent' Turn on Subtitles by Default: 'Activa els subtítols per defecte' Autoplay Videos: 'Reprodueix automàticament els vídeos' diff --git a/static/locales/ckb.yaml b/static/locales/ckb.yaml index b2b2333796c32..524d79ab76411 100644 --- a/static/locales/ckb.yaml +++ b/static/locales/ckb.yaml @@ -246,7 +246,6 @@ Settings: #* Main Color Theme Player Settings: Player Settings: 'ڕێکخستنەکانی لێدەر' - Force Local Backend for Legacy Formats: '' Play Next Video: 'لێدانی ڤیدیۆی دواتر' Turn on Subtitles by Default: 'هەڵکردنی بنەڕەتی ژێرنووس' Autoplay Videos: 'خۆلێدانی ڤیدیۆ' @@ -776,7 +775,6 @@ Tooltips: Region for Trending: '' External Link Handling: | Player Settings: - Force Local Backend for Legacy Formats: '' Proxy Videos Through Invidious: '' Default Video Format: '' Scroll Playback Rate Over Video Player: '' diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index 080dac4d4b36a..29d00d810c199 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -387,7 +387,6 @@ Settings: Hide FreeTube Header Logo: Skrýt logo FreeTube v záhlaví Player Settings: Player Settings: 'Nastavení přehrávače' - Force Local Backend for Legacy Formats: 'Vynutit místní backend pro starší formáty' Play Next Video: 'Přehrát další video' Turn on Subtitles by Default: 'Ve výchozím nastavení zapnout titulky' Autoplay Videos: 'Automaticky přehrávat videa' @@ -1094,10 +1093,6 @@ Tooltips: otevřít ve FreeTube.\nVe výchozím nastavení otevře FreeTube odkaz ve vašem výchozím prohlížeči.\n" Player Settings: - Force Local Backend for Legacy Formats: 'Funguje pouze v případě, že je jako výchozí - nastaveno API Invidious. Je-li povoleno, spustí se místní API a použije starší - formáty místo těch, které vrátí Invidious. Může pomoci, pokud videa z Invidious - nemohou být přehrána z důvodu regionálních omezení.' Proxy Videos Through Invidious: 'Připojí se k Invidious, aby poskytoval videa namísto přímého připojení k YouTube. Toto přepíše předvolby API.' Default Video Format: 'Nastavte formáty použité při přehrávání videa. Formáty diff --git a/static/locales/cy.yaml b/static/locales/cy.yaml index e22f0cb8fd58c..143ff1e776c41 100644 --- a/static/locales/cy.yaml +++ b/static/locales/cy.yaml @@ -249,7 +249,6 @@ Settings: #* Main Color Theme Player Settings: Player Settings: 'Gosodiadau Chwaraewr' - Force Local Backend for Legacy Formats: '' Play Next Video: '' Turn on Subtitles by Default: '' Autoplay Videos: 'Awto-chwarae Fideos' @@ -778,7 +777,6 @@ Tooltips: Region for Trending: '' External Link Handling: | Player Settings: - Force Local Backend for Legacy Formats: '' Proxy Videos Through Invidious: '' Default Video Format: '' Scroll Playback Rate Over Video Player: '' diff --git a/static/locales/da.yaml b/static/locales/da.yaml index 6eabec8d5027f..1282ebc97989d 100644 --- a/static/locales/da.yaml +++ b/static/locales/da.yaml @@ -314,7 +314,6 @@ Settings: Hide FreeTube Header Logo: Skjul FreeTube Overskriftslogo Player Settings: Player Settings: 'Afspilningsindstillinger' - Force Local Backend for Legacy Formats: 'Tving Lokal Backend til Ældre Formater' Play Next Video: 'Afspil Næste Video' Turn on Subtitles by Default: 'Slå Undertekster til som Standard' Autoplay Videos: 'Autospil Videoer' @@ -947,10 +946,6 @@ Tooltips: men bruger mindre båndbredde. Lydformater er lydstrømme kun med lyd. Proxy Videos Through Invidious: Vil forbinde til Invidious for at vise videoer i stedet for at oprette en direkte forbindelse til YouTube. Tilsidesætter API-præference. - Force Local Backend for Legacy Formats: Virker kun når Invidious-API'en er din - standard. Når det er aktiveret, vil den lokale API køre og bruge de gamle formater, - den giver, i stedet for dem Invidious giver. Hjælper når de videoer, der gives - af Invidious, ikke spiller på grund af landerestriktioner. Scroll Playback Rate Over Video Player: Mens markøren er over videoen, tryk og hold Control-tasten (Command-tast på Mac) nede og scroll musehjulet fremad og bagud for at kontrollere afspilningshastigheden. Tryk og hold Control-tasten diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index fc9f29044886c..c3c4db39c523b 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -394,7 +394,6 @@ Settings: Hide FreeTube Header Logo: FreeTube-Titellogo ausblenden Player Settings: Player Settings: Videoabspieler-Einstellungen - Force Local Backend for Legacy Formats: Lokales Backend für alte Formate erzwingen Remember History: Verlauf speichern Play Next Video: Nächstes Video abspielen Turn on Subtitles by Default: Untertitel standardmäßig aktivieren @@ -1177,11 +1176,6 @@ Tooltips: Proxy Videos Through Invidious: Stellt eine Verbindung zu Invidious her, um Videos bereitzustellen, anstatt eine direkte Verbindung zu YouTube herzustellen. Setzt die API-Einstellung außer Kraft. - Force Local Backend for Legacy Formats: Funktioniert nur, wenn du die Invidious-API - als Standard ausgewählt hast. Wenn aktiviert, wird die lokale API ausgeführt - und verwendet die von ihr zurückgegebenen Altformate anstelle der von Invidious - zurückgegebenen Formate. Dies hilft, wenn die von Invidious zurückgegebenen - Videos aufgrund von Länderbeschränkungen nicht abgespielt werden können. Scroll Playback Rate Over Video Player: Während sich der Cursor über dem Video befindet, halte die Strg-Taste (Befehlstaste auf dem Mac) gedrückt und bewege das Mausrad vorwärts oder rückwärts, um die Abspielgeschwindigkeit zu steuern. diff --git a/static/locales/el.yaml b/static/locales/el.yaml index c9298eed7f102..33fad40a67b11 100644 --- a/static/locales/el.yaml +++ b/static/locales/el.yaml @@ -245,8 +245,6 @@ Settings: Hide FreeTube Header Logo: Απόκρυψη Λογότυπου Κεφαλίδας FreeTube Player Settings: Player Settings: 'Ρυθμίσεις προγράμματος αναπαραγωγής' - Force Local Backend for Legacy Formats: 'Εξαναγκασμένη τοπική υποστήριξη για Προηγούμενες - Διαμορφώσεις' Play Next Video: 'Αναπαραγωγή επόμενου Βίντεο' Turn on Subtitles by Default: 'Ενεργοποίηση υπότιτλων από προεπιλογή' Autoplay Videos: 'Αυτόματη αναπαραγωγή βίντεο' @@ -952,11 +950,6 @@ Tooltips: Proxy Videos Through Invidious: Θα συνδεθεί με το Invidious για να εξυπηρετήσει τα βίντεο αντί να κάνει μια άμεση σύνδεση με το YouTube. Παράκαμψη προτίμησης API. - Force Local Backend for Legacy Formats: Λειτουργεί μόνο όταν το Invidious API - είναι η προεπιλογή σας. Όταν ενεργοποιηθεί, το τοπικό API θα χρησιμοποιήσει - τις μορφές παλαιού τύπου που επιστρέφονται από αυτό αντί για αυτές που επιστρέφονται - από το Invidious. Βοηθά όταν τα βίντεο που επιστρέφονται από το Invidious δεν - αναπαράγονται λόγω περιορισμών χώρας. Scroll Playback Rate Over Video Player: Ενώ ο δρομέας βρίσκεται πάνω από το βίντεο, πατήστε και κρατήστε πατημένο το πλήκτρο Control (Command Key σε Mac) και μετακινηθείτε με τον τροχό του ποντικιού προς τα εμπρός ή προς τα πίσω για να ελέγξετε το diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index ab1e3c2d11dd9..4d8d6f80ccaaf 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -387,7 +387,6 @@ Settings: #* Main Color Theme Player Settings: Player Settings: Player Settings - Force Local Backend for Legacy Formats: Force Local Backend for Legacy Formats Play Next Video: Play Next Video Turn on Subtitles by Default: Turn on Subtitles by Default Autoplay Videos: Autoplay Videos @@ -1016,10 +1015,6 @@ Tooltips: Choose the default behavior when a link, which cannot be opened in FreeTube, is clicked. By default FreeTube will open the clicked link in your default browser. Player Settings: - Force Local Backend for Legacy Formats: Only works when the Invidious API is your - default. When enabled, the Local API will run and use the legacy formats returned - by that instead of the ones returned by Invidious. Helps when the videos returned - by Invidious don't play due to country restrictions. Proxy Videos Through Invidious: Will connect to Invidious to serve videos instead of making a direct connection to YouTube. Overrides API preference. Default Video Format: Set the formats used when a video plays. DASH formats can diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml index 56e55ff944956..14537d979b4e0 100644 --- a/static/locales/en_GB.yaml +++ b/static/locales/en_GB.yaml @@ -383,7 +383,6 @@ Settings: Hide FreeTube Header Logo: Hide FreeTube header logo Player Settings: Player Settings: 'Player settings' - Force Local Backend for Legacy Formats: 'Force local back-end for legacy formats' Play Next Video: 'Play next video' Turn on Subtitles by Default: 'Turn on subtitles by default' Autoplay Videos: 'Autoplay Videos' @@ -1096,10 +1095,6 @@ Tooltips: bandwidth. Audio formats are audio only streams. Proxy Videos Through Invidious: Will connect to Invidious to serve videos instead of making a direct connection to YouTube. Overrides API preference. - Force Local Backend for Legacy Formats: Only works when the Invidious API is your - default. When enabled, the Local API will run and use the legacy formats returned - by that instead of the ones returned by Invidious. Helps when the videos returned - by Invidious don’t play due to country restrictions. Scroll Playback Rate Over Video Player: While the cursor is over the video, press and hold the Control key (Command Key on Mac) and scroll the mouse wheel forwards or backwards to control the playback rate. Press and hold the Control key (Command diff --git a/static/locales/es-MX.yaml b/static/locales/es-MX.yaml index 31e2a00af94d9..b5fbc0c445940 100644 --- a/static/locales/es-MX.yaml +++ b/static/locales/es-MX.yaml @@ -199,7 +199,6 @@ Settings: Hide Side Bar Labels: Ocultar etiquetas de la barra lateral Player Settings: Player Settings: 'Ajustes del reproductor' - Force Local Backend for Legacy Formats: 'Forzar motor local para el formato heredado' Remember History: 'Recordar historial' Play Next Video: 'Reproducir el video siguiente' Turn on Subtitles by Default: 'Activar subtitulos por defecto' @@ -763,11 +762,6 @@ Tooltips: Los formatos DASH pueden alcanzar mejores calidades. Los formatos heredados están limitados a un máximo de 720 píxeles de ancho, pero usan menos ancho de banda. Los formatos de audio permiten escuchar solamente el audio. - Force Local Backend for Legacy Formats: Sólo funcionará si la API de Invidious - está por defecto. Si se habilita, la API local ejecutará los formatos heredados - que encuentre en lugar de los que le dé Invidious. Esto ayuda a que los videos - proporcionados por Invidious puedan ser reproducidos sin impedimentos debidos - a la región. Scroll Playback Rate Over Video Player: Mientras el cursor esté sobre el video, mantenga presionada la tecla Ctrl (tecla Comando en Mac) y use la rueda del ratón hacia adelante o atrás para controlar la velocidad de reproducción. Mantenga diff --git a/static/locales/es.yaml b/static/locales/es.yaml index 8c9c43afcd5be..fcfeba940eb70 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -385,7 +385,6 @@ Settings: Hide FreeTube Header Logo: Ocultar el logotipo de Freetube de la parte superior Player Settings: Player Settings: 'Configuración del reproductor' - Force Local Backend for Legacy Formats: 'Forzar backend local para formatos heredados' Play Next Video: 'Reproducción continua' Turn on Subtitles by Default: 'Activar subtítulos por defecto' Autoplay Videos: 'Reproducción automática de vídeos' @@ -1137,11 +1136,6 @@ Tooltips: Proxy Videos Through Invidious: Se conectará a Invidious para obtener vídeos en lugar de conectar directamente con YouTube. Sobreescribirá la preferencia de API. - Force Local Backend for Legacy Formats: Sólo funciona cuando la API de Invidious - es la predeterminada. Si está activada, la API local se ejecutará y utilizará - los formatos heredados devueltos por ella en lugar de los devueltos por Invidious. - Es útil cuando los vídeos devueltos por Invidious no se reproducen debido a - restricciones nacionales. Scroll Playback Rate Over Video Player: Cuando el cursor esté sobre el vídeo, presiona y mantén la tecla Control (Comando en Mac) y desplaza la rueda del ratón hacia arriba o abajo para cambiar la velocidad de reproducción. Presiona diff --git a/static/locales/es_AR.yaml b/static/locales/es_AR.yaml index 5f0761041f2b0..ac0c5dd906a41 100644 --- a/static/locales/es_AR.yaml +++ b/static/locales/es_AR.yaml @@ -229,7 +229,6 @@ Settings: Hide FreeTube Header Logo: Ocultar el logo de FreeTube del encabezado Player Settings: Player Settings: 'Configuraciones del reproductor' - Force Local Backend for Legacy Formats: 'Forzar el uso local para formatos antiguos' Play Next Video: 'Reproducir siguiente video' Turn on Subtitles by Default: 'Activar subtítulos por defecto' Autoplay Videos: 'Reproducción automática' diff --git a/static/locales/et.yaml b/static/locales/et.yaml index 104369051e3a2..9be4e0eeef80a 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -384,8 +384,6 @@ Settings: Hide FreeTube Header Logo: Peida FreeTube'i päise logo Player Settings: Player Settings: 'Videomängija seadistused' - Force Local Backend for Legacy Formats: 'Pärandvormingute puhul kasuta sundkorras - kohalikku taustateenust' Play Next Video: 'Esita ka järgmist videot' Turn on Subtitles by Default: 'Vaikimisi näita subtiitreid' Autoplay Videos: 'Esita videod automaatselt' @@ -1059,11 +1057,6 @@ Tooltips: nad vähem ribalaiust. Helivormingud kehtivad vaid helifailide jaoks. Proxy Videos Through Invidious: Kasutab videote esitamiseks Invidious'e teenust ega tee päringuid otse YouTube serveri pihta. Asendab API eelistuse. - Force Local Backend for Legacy Formats: See lahendus toimib, kui Invidious'e API - on esimene eelistus. Kui see väärtus on sisselülitatud, siis toimib ka kohalik - API ning kasutab pärandvorminguid ning ei kasuta neid mida Invidious'e server - võimaldab kasutada. See seadistus on kasulik siis, kui Invidious'e API alusel - laaditud videote esitamine riigipiirangute tõttu ei toimi. Scroll Playback Rate Over Video Player: Kui kursor on video kohal, siis vajuta Ctrl klahvi (Mac'is ⌘ klahvi) ja taasesituse kiiruse muutmiseks keri hiireratast edasi ja tagasi. Tavakiiruse taastamiseks (kui sa seda seadistustest pole muutnud, diff --git a/static/locales/eu.yaml b/static/locales/eu.yaml index be23af18ea723..74f2e30307dbf 100644 --- a/static/locales/eu.yaml +++ b/static/locales/eu.yaml @@ -389,7 +389,6 @@ Settings: Hide FreeTube Header Logo: Ezkutatu FreeTube goiburuko logotipoa Player Settings: Player Settings: 'Erreprodukzioaren ezarpenak' - Force Local Backend for Legacy Formats: 'Behartu backend lokala Legacy formatuentzat' Play Next Video: 'Hurrengo bideoa erreproduzitu' Turn on Subtitles by Default: 'Aktibatu Azpitituluak lehenespenez' Autoplay Videos: 'Bideoen erreprodukzio automatikoa' @@ -1023,11 +1022,6 @@ Tooltips: den esteka bat klikatua izan denean.\nLehentasunez, Freetube-k lehenetsitako nabigatazailean irekiko du klikatutako esteka.\n" Player Settings: - Force Local Backend for Legacy Formats: 'Soilik funtzionatzen du Individious-en - APIa zure lehenetsitakoa denean. Aukera dagoenean, tokiko APIa eta azken honek - bidalitako legacy formatuak ibiliko dira, Individious-ek bidalitakoak baino. - Lagungarria da herrialdeek ezarritako mugen ondorioz Individious-eko bideoak - ezin direnean ikusi.' Proxy Videos Through Invidious: 'Bideoak hornitzeko Invidious-era konektatuko da, YouTube-ra zuzeneko konexioa egin beharrean. APIaren hobespena gainidazten du.' diff --git a/static/locales/fa.yaml b/static/locales/fa.yaml index 6cbc878476129..40497447abd68 100644 --- a/static/locales/fa.yaml +++ b/static/locales/fa.yaml @@ -233,7 +233,6 @@ Settings: Hide FreeTube Header Logo: لوگوی سربرگ FreeTube را مخفی کنید Player Settings: Player Settings: 'تنظیمات پخش کننده' - Force Local Backend for Legacy Formats: 'اجبار پشتیبان داخلی به فرمت‌های قدیمی' Play Next Video: 'پخش ویدیو بعدی' Turn on Subtitles by Default: 'فعال کردن زیرنویس به عنوان پیشفرض' Autoplay Videos: 'پخش خودکار ویدیو ها' @@ -666,11 +665,6 @@ Tooltips: اینکه در تنظیمات تغییر نکرده باشد). Proxy Videos Through Invidious: به جای اتصال مستقیم به YouTube، به Invidious متصل می شود تا ویدیوها را ارائه دهد. اولویت API را لغو می کند. - Force Local Backend for Legacy Formats: فقط زمانی کار می کند که Invidious API - پیش فرض شما باشد. وقتی فعال باشد، API محلی اجرا می‌شود و از قالب‌های قدیمی بازگردانده - شده توسط آن به جای قالب‌هایی که توسط Invidious بازگردانده شده است استفاده می‌کند. - کمک می‌کند ویدیوهای بازگردانده شده توسط Invidious به دلیل محدودیت‌های کشور پخش - نشود. Default Video Format: فرمت های مورد استفاده هنگام پخش ویدیو را تنظیم کنید. فرمت های DASH می توانند کیفیت های بالاتری را پخش کنند. فرمت های قدیمی به حداکثر 720p محدود می شوند اما از پهنای باند کمتری استفاده می کنند. فرمت های صوتی فقط جریان diff --git a/static/locales/fi.yaml b/static/locales/fi.yaml index 1df85d33bc9fe..696e3d49ea890 100644 --- a/static/locales/fi.yaml +++ b/static/locales/fi.yaml @@ -307,8 +307,6 @@ Settings: Hide FreeTube Header Logo: Piilota FreeTube-otsikkologo Player Settings: Player Settings: 'Soittimen asetukset' - Force Local Backend for Legacy Formats: 'Pakota paikallinen taustaohjelma vanhoille - formaateille' Remember History: 'Muista historia' Play Next Video: 'Toista seuraava video' Turn on Subtitles by Default: 'Ota tekstitys käyttöön oletusarvoisesti' @@ -995,10 +993,6 @@ Tooltips: mutta käyttävät vähemmän dataa. Audioformaatit ovat vain äänistriimeihin. Proxy Videos Through Invidious: Yhdistää Invidious-palvelimeen suoran YouTuben-yhteyden sijaan. Ohittaa API-valinnan. - Force Local Backend for Legacy Formats: Toimii vain kun Invidious API on oletuksena. - Kun valittuna, paikallinen API käyttää vanhoja formaatteja Invidiousin käyttämien - sijaan. Tämä auttaa, jos Invidiousin palauttamat videot eivät toimi maarajoituksien - takia. Scroll Playback Rate Over Video Player: Kursorin ollessa videon päällä, paina CTRL (Komentopainike MAC-tietokoneessa) pohjaan ja käytä hiiren rullaa muuttaaksesi toiston nopeutta. Palataksesi alkuperäiseen toistonopeuteen (1x ellei toisin diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 66fb327c20f89..a41be20a63c16 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -397,8 +397,6 @@ Settings: Hide FreeTube Header Logo: Masquer le logo d'en-tête de FreeTube Player Settings: Player Settings: 'Paramètres du lecteur' - Force Local Backend for Legacy Formats: 'Forcer le backend local pour le format - Legacy' Remember History: 'Se souvenir de l''historique' Play Next Video: 'Lire la vidéo suivante' Turn on Subtitles by Default: 'Activer les sous-titres par défaut' @@ -1182,11 +1180,6 @@ Tooltips: Proxy Videos Through Invidious: Se connectera à Invidious pour lire des vidéos au lieu d'établir une connexion directe avec YouTube. Remplace les préférences de l'API. - Force Local Backend for Legacy Formats: Ne fonctionne que lorsque l'API Invidious - est activée par défaut. Lorsqu'elle est activée, l'API locale s'exécute et utilise - les formats Legacy renvoyés par celle-ci au lieu de ceux renvoyés par Invidious. - Utile lorsque les vidéos renvoyées par Invidious ne sont pas lues en raison - de restrictions pays. Scroll Playback Rate Over Video Player: Lorsque le curseur se trouve sur la vidéo, maintenez la touche Contrôle (touche Commande sur Mac) enfoncée et faites défiler la molette de la souris vers l'avant ou l'arrière pour contrôler la vitesse diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index fc84e88386cd0..095316a70ad41 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -234,8 +234,6 @@ Settings: Hide FreeTube Header Logo: Ocultalo logotipo de Freetube na cabeceira Player Settings: Player Settings: 'Axustes do reprodutor' - Force Local Backend for Legacy Formats: 'Forzar API local para formatos antigos - (Legacy)' Play Next Video: 'Reproducir próximo vídeo' Turn on Subtitles by Default: 'Activar subtítulos por defecto' Autoplay Videos: 'Reproducir vídeos automaticamente' @@ -827,10 +825,6 @@ Tooltips: nunha ligazón, que non se pode abrir en FreeTube.\nDe forma predeterminada, FreeTube abrirá a ligazón na que premeches no teu navegador predeterminado.\n" Player Settings: - Force Local Backend for Legacy Formats: 'Só funcionará se a API de Invidious está - escollida por defecto. Cando estea activa, a API local usará formatos antigos - (Legacy) no canto dos de Invidious. Axuda cando Invidious non pode reproducir - un vídeo por causa das restricións rexionais.' Proxy Videos Through Invidious: 'Conectarase a Invidious para obter vídeos no canto de recorrer directamente a YouTube. Sobrescribirá a preferencia de API.' Default Video Format: 'Establecelos formatos utilizados cando se reproduce un diff --git a/static/locales/he.yaml b/static/locales/he.yaml index 985a9f82acf2e..92098281455e1 100644 --- a/static/locales/he.yaml +++ b/static/locales/he.yaml @@ -290,7 +290,6 @@ Settings: Hide FreeTube Header Logo: הסתרת הלוגו התחתון של FreeTube Player Settings: Player Settings: 'הגדרת נגן' - Force Local Backend for Legacy Formats: 'כפיית המנגנון לניגון בפורמטים ישנים' Play Next Video: 'ניגון הסרטון הבא' Turn on Subtitles by Default: 'הפעלת כתוביות כברירת מחדל' Autoplay Videos: 'הפעלה אוטומטית לסרטונים' @@ -926,10 +925,6 @@ Tooltips: Region for Trending: מגמות אזוריות מאפשרות לך לבחור סרטונים חמים של איזו מדינה שמעניין אותך לראות. Player Settings: - Force Local Backend for Legacy Formats: עובד רק כאשר ה־API של Invidious הוא ברירת - המחדל שלך. כאשר האפשרות פעילה, ה־API המקומי יופעל וישתמש בתצורות המיושנות שהוחזרו - על ידיו במקום באלו שהוחזרו על ידי Invidious. מועיל כאשר הסרטונים שמוחזרים על - ידי Invidious לא מתנגנים עקב מגבלות חוקיות במדינה. Proxy Videos Through Invidious: יתבצע חיבור ל־Invidious כדי להגיש סרטונים במקום להתחבר ישירות ל־YouTube. דורס את העדפת ה־API. Default Video Format: קביעת התסדירים בעת ניגון סרטונים. תסדירי DASH יכולים להתנגן diff --git a/static/locales/hi.yaml b/static/locales/hi.yaml index 707c61dd41700..7a5fa624e6781 100644 --- a/static/locales/hi.yaml +++ b/static/locales/hi.yaml @@ -195,11 +195,6 @@ Tooltips: Invidious Instance: 'वह इनविडियस इंस्टेंस जिससे FreeTube API कॉल के लिए कनेक्ट होगा।' Player Settings: - Force Local Backend for Legacy Formats: 'केवल तभी काम करता है जब Invidious API - आपका डिफ़ॉल्ट हो। जब सक्षम किया जाता है, तो स्थानीय एपीआई चलेगा और इसके द्वारा - लौटाए गए लीगेसी प्रारूपों का उपयोग करेगा, बजाय इसके कि इनविदियस द्वारा लौटाए - गए। मदद करता है जब Invidious द्वारा लौटाए गए वीडियो देश प्रतिबंधों के कारण नहीं - चलते हैं।' Proxy Videos Through Invidious: 'YouTube से सीधा संबंध बनाने के बजाय वीडियो परोसने के लिए Invidious से जुड़ेंगे। एपीआई वरीयता को ओवरराइड करता है।' External Player Settings: diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index 645dc095588b1..145fd6d0f5a54 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -375,8 +375,6 @@ Settings: Hide FreeTube Header Logo: Sakrij FreeTube logotip u zaglavlju Player Settings: Player Settings: 'Postavke playera' - Force Local Backend for Legacy Formats: 'Koristi lokalni pozadinski sustav za - stare formate' Play Next Video: 'Reproduciraj sljedeći video' Turn on Subtitles by Default: 'Standardno uključi titlove' Autoplay Videos: 'Automatski reproduciraj videa' @@ -1082,10 +1080,6 @@ Tooltips: su zato brži. Audioformati sadrže samo prijenose audiosnimaka. Proxy Videos Through Invidious: Za reprodukciju videa povezat će se s Invidiousom umjesto izravnog povezivanja s YouTubeom. Zanemaruje postavke sučelja. - Force Local Backend for Legacy Formats: Radi samo, kad se Invidious postavi kao - standardno sučelje. Kada je aktivirano, lokalno API sučelje će pokretati i koristiti - stare formate umjesto onih koje dostavlja Invidious. Pomaže u slučajevima, kad - je reprodukcija videa koje dostavlja Invidious u zemlji zabranjena/ograničena. Scroll Playback Rate Over Video Player: Dok se pokazivač nalazi na videu, pritisni i drži tipku Control (Command tipka na Macu) i pomiči kotačić miša naprijed ili natrag za upravljanje brzine reprodukcije. Pritisni i drži tipku Control diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index b318f270c1e22..e7aea2c11fe48 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -393,8 +393,6 @@ Settings: Hide FreeTube Header Logo: FreeTube logo elrejtése a fejlécből Player Settings: Player Settings: 'Lejátszó beállításai' - Force Local Backend for Legacy Formats: 'Helyi háttéralkalmazás kényszerítése - örökölt formátumokra' Play Next Video: 'Következő videó lejátszása' Turn on Subtitles by Default: 'Alapértelmezetten a feliratok megjelenítése' Autoplay Videos: 'Videók automatikus lejátszása' @@ -1156,11 +1154,6 @@ Tooltips: Proxy Videos Through Invidious: Csatlakozik az Invidious szolgáltatáshoz, hogy videókat szolgáltasson, ahelyett, hogy közvetlen kapcsolatot létesítene a YouTube szolgáltatással. Felülbírálja az API beállítást. - Force Local Backend for Legacy Formats: Csak akkor működik, ha az Invidious API - az alapértelmezett. Ha engedélyezve van, a helyi API fut, és az általa visszaadott - régi formátumokat használja az Invidious által visszaadottak helyett. Segít, - ha az Invidious által visszaküldött videók nem játszódnak le az országos korlátozások - miatt. Scroll Playback Rate Over Video Player: Amíg a kurzor a videó felett van, nyomja meg és tartsa lenyomva a Control billentyűt (Mac gépen a Command billentyű), és görgesse az egér görgőjét előre vagy hátra a lejátszási sebesség szabályozásához. diff --git a/static/locales/id.yaml b/static/locales/id.yaml index 9564474a02421..43bda4a7187f1 100644 --- a/static/locales/id.yaml +++ b/static/locales/id.yaml @@ -282,7 +282,6 @@ Settings: Hide FreeTube Header Logo: Sembunyikan Logo Header FreeTube Player Settings: Player Settings: 'Pengaturan Pemutar' - Force Local Backend for Legacy Formats: 'Paksa Layanan Lokal untuk Format Lama' Play Next Video: 'Putar Video Selanjutnya' Turn on Subtitles by Default: 'Nyalakan Takarir' Autoplay Videos: 'Putar-Otomatis Video' @@ -925,11 +924,6 @@ Tooltips: lebih rendah. Format audio hanya berisi stream audio. Proxy Videos Through Invidious: Akan menyambung ke Invidious daripada YouTube. Menimpa preferensi API. - Force Local Backend for Legacy Formats: Hanya bekerja jika API Invidious diatur - sebagai default. Ketika diaktifkan, API lokal akan berjalan dan menggunakan - format lama yang dihasilkan oleh API lokal daripada yang dihasilkan oleh API - Invidious. Membantu saat video yang ditampilkan oleh Invidious tidak bisa diputar - karena dibatasi oleh wilayah pemutaran. Scroll Playback Rate Over Video Player: Ketika kursor berada di atas video, tekan dan tahan tombol Control (tombol Command di Mac) dan scroll roda mouse ke depan atau ke belakang untuk mengontrol laju pemutaran. Tekan dan tahan tombol Control diff --git a/static/locales/is.yaml b/static/locales/is.yaml index 52d7bf814c3d6..8770f083edde4 100644 --- a/static/locales/is.yaml +++ b/static/locales/is.yaml @@ -392,8 +392,6 @@ Settings: Hide FreeTube Header Logo: Fela táknmynd FreeTube í haus Player Settings: Player Settings: 'Stillingar spilara' - Force Local Backend for Legacy Formats: 'Þvinga notkun staðværs bakenda fyrir - eldri skráasnið' Play Next Video: 'Spila næsta myndskeið' Turn on Subtitles by Default: 'Sjálfgefið kveikja á skjátextum' Autoplay Videos: 'Spila myndskeið sjálfkrafa' @@ -1024,11 +1022,6 @@ Tooltips: ekki er hægt að opna í FreeTube.\nSjálfgefið mun FreeTube opna viðkomandi tengil í sjálfgefna vafranum þínum.\n" Player Settings: - Force Local Backend for Legacy Formats: 'Virkar bara þegar Invidious API-kerfisviðmótið - er sjálfgefið hjá þér. Þegar þetta er virkt, mun staðværa API-kerfisviðmótið - keyra og nota þau eldri skráasnið sem finnast í stað þeirra sem Invidious gefur - upp. Hjálpar til þegar myndskeið sem Invidious gefur upp spilast ekki vegna - landsháðra takmarkana.' Proxy Videos Through Invidious: 'Mun tengjast við Invidious til að miðla myndskeiðum í stað þess að tengjast beint við YouTube. Tekur fram fyrir valin API-kerfisviðmót.' Default Video Format: 'Stillu skráasniðin sem notuð eru við afspilun myndskeiða. diff --git a/static/locales/it.yaml b/static/locales/it.yaml index 7782f54c441a5..2053c0d21308e 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -385,8 +385,6 @@ Settings: Hide FreeTube Header Logo: Nascondi il logo dell'intestazione di FreeTube Player Settings: Player Settings: 'Impostazioni del lettore' - Force Local Backend for Legacy Formats: 'Forza il backend locale per i formati - obsoleti' Play Next Video: 'Riproduci il prossimo video' Turn on Subtitles by Default: 'Abilita i sottotitoli per impostazione predefinita' Autoplay Videos: 'Riproduci i video automaticamente' @@ -1132,10 +1130,6 @@ This video is unavailable because of missing formats. This can happen due to cou in caso di mancata disponibilità della nazione. Tooltips: Player Settings: - Force Local Backend for Legacy Formats: Funziona solo quando Invidious è l'API - predefinita. Se abilitate, le API locali useranno i formati obsoleti al posto - di quelli di Invidious. Utile quando i video di Invidious non vengono riprodotti - a causa di restrizioni geografiche. Default Video Format: Imposta i formati usati quando un video viene riprodotto. I formati DASH possono riprodurre qualità maggiore. I formati obsoleti sono limitati ad un massimo di 720p ma usano meno banda. I formati audio riproducono diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index bff57fcb200eb..c9cde59cdbdeb 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -123,7 +123,7 @@ Playlists: '再生リスト' User Playlists: Your Playlists: 'あなたの再生リスト' Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 保存した動画はありません。一覧に表示させるには、ビデオの角にある保存ボタンをクリックします - Playlist Message: + Playlist Message: このページは完全に機能する再生リストを反映していません。保存した動画やお気に入りの動画のみが表示されます。作業が完了すると、現在ここにあるすべての動画は「Favorites」の再生リストに移行されます。 Search bar placeholder: 再生リストの検索 Empty Search Message: この再生リストに、検索に一致する動画はありません @@ -345,7 +345,6 @@ Settings: Hide FreeTube Header Logo: FreeTube ヘッダー ロゴの非表示 Player Settings: Player Settings: 'プレーヤーの設定' - Force Local Backend for Legacy Formats: '旧形式であれば内部 API の適用' Remember History: '履歴を記憶' Play Next Video: '次の動画の自動再生' Turn on Subtitles by Default: 'デフォルトで字幕を有効にする' @@ -595,7 +594,7 @@ Settings: Experimental Settings: Replace HTTP Cache: HTTP キャッシュの置換 Experimental Settings: 実験中の設定 - Warning: + Warning: これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください! Password Settings: Password Settings: パスワードの設定 @@ -1014,8 +1013,6 @@ Tooltips: フィードを自動的に取得します。 Player Settings: Default Video Format: 動画再生で使用する形式の設定です。DASH 形式であれば高品質で再生できます。旧形式だと、最大 720p に制限されますが、使用する帯域幅を減らせます。音声形式は音声のみです。 - Force Local Backend for Legacy Formats: これは、Invidious API が有効の場合にのみ機能します。有効にすると内部APIが実行され、Invidiousが返す形式ではなく、その内部APIが返す旧形式を使用します。Invidious - から返された動画が国の制限で再生できない場合に役立ちます。 Proxy Videos Through Invidious: YouTube に直接接続せず、Invidious に接続します。これによりAPIの設定が上書きされます。 Scroll Playback Rate Over Video Player: カーソルが動画上にあるとき、Ctrl キー(Mac では Command キー)を押したまま、マウスホイールを前後にスクロールして再生速度を調整します。Control キー(Mac では Command キー)を押したままマウスを左クリックすると、すぐにデフォルトの再生速度(設定を変更していない場合は 1 x)に戻ります。 @@ -1047,7 +1044,7 @@ Tooltips: ID は、大文字と小文字を区別するので完全に一致させてください。 Hide Subscriptions Live: この設定は、アプリ全体の "{appWideSetting}" 設定により上書きされます。"{settingsSection}" 項目の "{subsection}" にあります - Hide Videos and Playlists Containing Text: FreeTube + Hide Videos and Playlists Containing Text: FreeTube 全体での履歴やあなたの再生リストと再生リスト内の動画を除き、元のタイトルにその単語を含む動画や単語の一部または、フレーズ(大文字と小文字を区別しない)が含まれているすべての動画と再生リストを非表示にします。 SponsorBlock Settings: UseDeArrowTitles: 動画のタイトルを DeArrow からユーザーが投稿したタイトルに置き換えます。 diff --git a/static/locales/ko.yaml b/static/locales/ko.yaml index f72996bc05102..37d10467d5aca 100644 --- a/static/locales/ko.yaml +++ b/static/locales/ko.yaml @@ -221,7 +221,6 @@ Settings: Hide FreeTube Header Logo: FreeTube 헤더 로고 숨기기 Player Settings: Player Settings: '플레이어 설정' - Force Local Backend for Legacy Formats: '레거시 포멧에 로컬 백엔드 강제적용' Play Next Video: '다음 동영상 재생' Turn on Subtitles by Default: '기본으로 자막켜기' Autoplay Videos: '동영상 자동재생' @@ -702,9 +701,6 @@ Tooltips: External Link Handling: "FreeTube에서 열 수 없는 링크를 클릭할 때 기본 동작을 선택합니다.\n기본적으로 FreeTube는 기본 브라우저에서 클릭한 링크를 엽니다.\n" Player Settings: - Force Local Backend for Legacy Formats: 'Invidious API가 기본값인 경우에만 작동합니다. 활성화되면 - 로컬 API가 실행되고 Invidious에서 반환된 형식 대신 해당 형식에서 반환된 레거시 형식을 사용합니다. Invidious에서 반환한 - 동영상이 국가 제한으로 인해 재생되지 않을 때 도움이 됩니다.' Proxy Videos Through Invidious: 'YouTube에 직접 연결하는 대신 Invidious에 연결하여 동영상을 제공합니다. API 기본 설정을 재정의합니다.' Default Video Format: '동영상 재생 시 사용되는 형식을 설정합니다. DASH 형식은 더 높은 품질을 재생할 수 있습니다. diff --git a/static/locales/lt.yaml b/static/locales/lt.yaml index 3722847d1bcda..61e3cf539ddf7 100644 --- a/static/locales/lt.yaml +++ b/static/locales/lt.yaml @@ -240,8 +240,6 @@ Settings: Hide FreeTube Header Logo: Slėpti FreeTube logotipą antraštėje Player Settings: Player Settings: 'Grotuvo nustatymai' - Force Local Backend for Legacy Formats: 'Priverstinai naudoti vietinę posistemę - seniesiems formatams' Play Next Video: 'Leisti sekanti vaizdo įrašą' Turn on Subtitles by Default: 'Įjungti subtitrus automatiškai' Autoplay Videos: 'Automatinis vaizdo įrašų paleidimas' @@ -760,10 +758,6 @@ Tooltips: kurios negalima atidaryti „FreeTube“.\nPagal numatytuosius nustatymus „FreeTube“ atidarys spustelėtą nuorodą numatytojoje naršyklėje.\n" Player Settings: - Force Local Backend for Legacy Formats: 'Veikia tik tada, kai numatytasis nustatymas - yra „Invidious“ API. Kai įgalinta, vietinė API veiks ir naudos senus, o ne „Invidious“ - grąžintus formatus. Padeda, kuomet „Invidious“ grąžinti vaizdo įrašai nėra leidžiami - dėl šalies apribojimų.' Proxy Videos Through Invidious: 'Bus prisijungęs prie „Invidious“, kad galėtų teikti vaizdo įrašus, užuot užmezgęs tiesioginį ryšį su „YouTube“. Nepaiso API nuostatų.' diff --git a/static/locales/lv.yaml b/static/locales/lv.yaml index 22254e18bfc88..42d4b3a67a3b3 100644 --- a/static/locales/lv.yaml +++ b/static/locales/lv.yaml @@ -242,8 +242,6 @@ Settings: #* Main Color Theme Player Settings: Player Settings: 'Atskaņotāja iestatījumi' - Force Local Backend for Legacy Formats: 'Piespiest vietējo aizmugursistēmu priekš - mantojuma formātiem' Play Next Video: 'Atskaņot nākamo video' Turn on Subtitles by Default: '' Autoplay Videos: 'Autoatskaņot video' @@ -775,7 +773,6 @@ Tooltips: Region for Trending: '' External Link Handling: | Player Settings: - Force Local Backend for Legacy Formats: '' Proxy Videos Through Invidious: '' Default Video Format: '' Scroll Playback Rate Over Video Player: '' diff --git a/static/locales/nb_NO.yaml b/static/locales/nb_NO.yaml index 2fe61c785d2da..b20d54d3af515 100644 --- a/static/locales/nb_NO.yaml +++ b/static/locales/nb_NO.yaml @@ -223,7 +223,6 @@ Settings: Hide FreeTube Header Logo: Skjul FreeTube-tittellogo Player Settings: Player Settings: 'Videoavspillingsinnstillinger' - Force Local Backend for Legacy Formats: 'Påtving lokal bakende for forelede formater' Play Next Video: 'Spill av neste video' Turn on Subtitles by Default: 'Undertekster som forvalg' Autoplay Videos: 'Spill av videoer automatisk' @@ -845,11 +844,6 @@ Tooltips: Default Video Format: Sett formater brukt når en video spilles. DASH-formater kan spille høyere kvaliteter. Foreldede formater er begrenset til maks. 720p, men bruker mindre båndbredde. Lydformater er kun lydstrømmer. - Force Local Backend for Legacy Formats: Fungerer kun med Invidious-API-et som - forvalg. Når det er påslått, vil det lokale API-et kjøre og bruke de foreldede - formatene som returneres derfra, istedenfor dem som blir returnert av Invidious. - Dette hjelper når videoer som blir returnert av Invidious, ikke kan spilles - av som følge av regionsbegrensninger. Proxy Videos Through Invidious: Kobler til Invidious for å servere videoer istedenfor å koble direkte til YouTube. Overstyrer API-innstillinger. Skip by Scrolling Over Video Player: Bruk rullehjulet for å hoppe deg gjennom diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 39cf61a532eb5..92e768ef061e2 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -383,7 +383,6 @@ Settings: Hide FreeTube Header Logo: FreeTube-koplogo verbergen Player Settings: Player Settings: 'Videospelerinstellingen' - Force Local Backend for Legacy Formats: 'Lokale backend voor oudere formaten forceren' Play Next Video: 'Volgende video afspelen' Turn on Subtitles by Default: 'Ondertiteling standaard inschakelen' Autoplay Videos: 'Video''s automatisch afspelen' @@ -1091,11 +1090,6 @@ Tooltips: een video afspeelt. DASH kan video's afspelen met hogere kwaliteitsinstellingen. Legacy gaat niet hoger dan 720p maar gebruikt minder bandbreedte. Audio zal alleen het geluid streamen. - Force Local Backend for Legacy Formats: Dit zal alleen werken wanneer Invidious - is geselecteerd als de standaard-API. Wanneer ingeschakeld zal de lokale API - legacy video­indelingen gebruiken in plaats van de video­indeling die worden - terug­gegeven door Invidious. Dit kan helpen wanneer een video die wordt gestreamed - via Invidious niet afspeelt in verband met regio­restricties. Proxy Videos Through Invidious: FreeTube zal verbinden met Invidious en daar de video's downloaden in de plaats van de video's rechtstreeks bij YouTube vandaan te halen. Dit overschrijft de ingestelde API voorkeur. diff --git a/static/locales/nn.yaml b/static/locales/nn.yaml index 40adc864feffa..0bece6af5fc0f 100644 --- a/static/locales/nn.yaml +++ b/static/locales/nn.yaml @@ -229,7 +229,6 @@ Settings: Hide FreeTube Header Logo: Skjul FreeTube-tittellogo Player Settings: Player Settings: 'Videoavspelingsinnstillingar' - Force Local Backend for Legacy Formats: 'Påtving lokal bakende for utdaterte format' Play Next Video: 'Spel av neste video' Turn on Subtitles by Default: 'Slå på undertekst som standard' Autoplay Videos: 'Spel av videoar automatisk' @@ -751,11 +750,6 @@ Tooltips: som ikkje kan bli opna av FreeTube. \nFreeTube vil vanlegvis opne lenka i din standardnettlesar.\n" Player Settings: - Force Local Backend for Legacy Formats: 'Fungerer berre med Invidious-API-et som - standard. Når det er påslått, vil det lokale API-et køyre og bruke dei utdaterte - formata som returnerast derifrå, i staden for dei som blir returnert av Invidious. - Dette hjelper når videoar som blir returnert av Invidious, ikkje kan spelast - av som følgje av regionsavgrensingar.' Proxy Videos Through Invidious: 'Koplar til Invidious for å servere videoar i staden for å kople direkte til YouTube. Overstyrar API-innstillingar.' Default Video Format: 'Sett format som blir brukt når ein video spelast. DASH-format diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index b318f6514f821..79367916c0039 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -382,7 +382,6 @@ Settings: Hide FreeTube Header Logo: Schowaj logo FreeTube z paska górnego Player Settings: Player Settings: 'Ustawienia odtwarzacza' - Force Local Backend for Legacy Formats: 'Wymuś lokalny back-end dla starych formatów' Play Next Video: 'Odtwórz następny film' Turn on Subtitles by Default: 'Domyślnie odtwarzaj z napisami' Autoplay Videos: 'Autoodtwarzanie filmów' @@ -1158,10 +1157,6 @@ Tooltips: może zostać otworzony w FreeTube, został kliknięty.\nDomyślnie FreeTube otworzy kliknięty odnośnik w domyślnej przeglądarce.\n" Player Settings: - Force Local Backend for Legacy Formats: Działa tylko, kiedy API Invidious jest - ustawiony jako domyślny. Gdy opcja jest włączona, do odtwarzania starych formatów - zostanie użyty lokalny API, zamiast API Invidious. Pomaga w przypadkach, gdy - filmy zwracane przez Invidious nie odtwarzają się z powodu blokady regionalnej. Default Video Format: Ustaw formaty, które zostaną użyte do odtwarzania filmów. Formaty DASH obsługują wyższe rozdzielczości. Stare formaty są ograniczone do 720p, ale zużywają mniej przepustowości. Formaty audio odtwarzają tylko dźwięk. diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 3bd907edc4742..5c114ed7743cb 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -378,8 +378,6 @@ Settings: Hide FreeTube Header Logo: Ocultar logotipo FreeTube na barra superior Player Settings: Player Settings: 'Configurações de reprodução' - Force Local Backend for Legacy Formats: 'Forçar processamento local para formatos - antigos' Remember History: 'Lembrar do histórico' Play Next Video: 'Reproduzir próximo vídeo' Turn on Subtitles by Default: 'Ativar legendas por padrão' @@ -1138,10 +1136,6 @@ Tooltips: Proxy Videos Through Invidious: Estabelece uma conexão ao Invidious para obter vídeos em vez de fazer uma conexão direta com o YouTube. Ignora a preferência da API. - Force Local Backend for Legacy Formats: Funciona apenas quando a API do Invidious - é o padrão. Quando ativada, a API Local será executada e usará os formatos herdados - retornados por ela, em vez dos retornados pelo Invidious. Ajuda quando os vídeos - retornados pelo Invidious não são reproduzidos devido a restrições do país. Scroll Playback Rate Over Video Player: Com o cursor sobre o vídeo, pressione e segure a tecla Ctrl (tecla Command no Mac) e role a roda do mouse para frente ou para trás para controlar a taxa de reprodução. Pressione e segure a tecla diff --git a/static/locales/pt-PT.yaml b/static/locales/pt-PT.yaml index 5e40388ddf546..52c99cf8a8d97 100644 --- a/static/locales/pt-PT.yaml +++ b/static/locales/pt-PT.yaml @@ -369,8 +369,6 @@ Settings: Hide FreeTube Header Logo: Ocultar logotipo FreeTube no topo Player Settings: Player Settings: Definições do reprodutor - Force Local Backend for Legacy Formats: Forçar sistema de ligação local para formatos - antigos Remember History: Lembrar Histórico Play Next Video: Reproduzir vídeo seguinte Turn on Subtitles by Default: Ativar legendas automaticamente @@ -1012,10 +1010,6 @@ Tooltips: não pode ser aberta no FreeTube, é clicada.\nPor definição, FreeTube abrirá a ligação no seu navegador de Internet.\n" Player Settings: - Force Local Backend for Legacy Formats: Apenas funciona quando a API Invidious - é sistema usado. Se ativa, a API local será executada para usar os formatos - antigos em vez dos usados pelo Invidious. Útil quando os vídeos Invidious não - funcionam devido a restrições geográficas. Proxy Videos Through Invidious: Estabelece uma ligação a Invidious para obter vídeos em vez de fazer uma ligação direta ao YouTube. Ignora a preferência de API. diff --git a/static/locales/pt.yaml b/static/locales/pt.yaml index 85fcbfa04e38e..cd0a698e02368 100644 --- a/static/locales/pt.yaml +++ b/static/locales/pt.yaml @@ -378,8 +378,6 @@ Settings: Hide FreeTube Header Logo: Ocultar logotipo FreeTube no topo Player Settings: Player Settings: 'Definições do reprodutor' - Force Local Backend for Legacy Formats: 'Forçar sistema de ligação local para - formatos antigos' Play Next Video: 'Reproduzir vídeo seguinte' Turn on Subtitles by Default: 'Ativar legendas automaticamente' Autoplay Videos: 'Reproduzir vídeos automaticamente' @@ -1126,10 +1124,6 @@ Tooltips: Proxy Videos Through Invidious: Estabelece uma ligação a Invidious para obter vídeos em vez de fazer uma ligação direta ao YouTube. Ignora a preferência de API. - Force Local Backend for Legacy Formats: Apenas funciona quando a API Invidious - é sistema usado. Se ativa, a API local será executada para usar os formatos - antigos em vez dos usados pelo Invidious. Útil quando os vídeos Invidious não - funcionam devido a restrições geográficas. Scroll Playback Rate Over Video Player: Com o cursor sobre o vídeo, prima e mantenha premida a tecla Ctrl (Comando em Mac) e desloque a roda do rato para controlar a taxa de reprodução. Prima e mantenha premida a tecla Ctrl (Comando em Mac) diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml index 20e2a609b3e80..913e59f4f8e5a 100644 --- a/static/locales/ro.yaml +++ b/static/locales/ro.yaml @@ -371,8 +371,6 @@ Settings: Hide FreeTube Header Logo: Ascundeți logo-ul FreeTube Header Player Settings: Player Settings: 'Setări player' - Force Local Backend for Legacy Formats: 'Forțați backend-ul local pentru formatele - vechi' Play Next Video: 'Redă următorul video' Turn on Subtitles by Default: 'Activați subtitrările în mod implicit' Autoplay Videos: 'Redare automată de videoclipuri' @@ -1027,11 +1025,6 @@ Tooltips: audio. Proxy Videos Through Invidious: Se va conecta la Invidious pentru a servi videoclipuri în loc să facă o conexiune directă la YouTube. Anulează preferințele API. - Force Local Backend for Legacy Formats: Funcționează numai atunci când API-ul - Invidious este implicit. Atunci când este activat, API-ul local va rula și va - utiliza formatele vechi returnate de acesta în locul celor returnate de Invidious. - Ajută atunci când videoclipurile returnate de Invidious nu sunt redate din cauza - restricțiilor de țară. Scroll Playback Rate Over Video Player: În timp ce cursorul se află deasupra videoclipului, țineți apăsată tasta Control (tasta Command pe Mac) și derulați rotița mouse-ului înainte sau înapoi pentru a controla rata de redare. Țineți apăsată tasta Control diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index 925e476e1d35f..e993a9ad0f34a 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -373,8 +373,6 @@ Settings: Hide FreeTube Header Logo: Скрыть значок FreeTube Player Settings: Player Settings: 'Настройки проигрывателя' - Force Local Backend for Legacy Formats: 'Принудительно использовать локальный - движок для устаревших форматов' Remember History: 'Запоминать историю' Play Next Video: 'Воспроизводить следующее видео' Turn on Subtitles by Default: 'Субтитры по умолчанию включены' @@ -1112,11 +1110,6 @@ Tooltips: форматы — только звуковые потоки. Proxy Videos Through Invidious: Будет подключаться к Invidious для показа видео вместо прямого подключения к YouTube. Переопределяет предпочтения набора функций. - Force Local Backend for Legacy Formats: Работает, только если по умолчанию используется - набор функций Invidious. Если эта настройка включена, локальный набор функций - будет работать и использовать устаревшие форматы вместо форматов Invidious. - Помогает, когда видео, возвращённые Invidious, не воспроизводятся из-за ограничений - страны. Scroll Playback Rate Over Video Player: Пока указатель мыши находится над видео, нажмите и удерживайте клавишу Control (клавиша Command на Mac) и прокрутите колесо мыши вперед или назад, чтобы изменять скорость воспроизведения. Нажмите diff --git a/static/locales/sk.yaml b/static/locales/sk.yaml index 0f83473bedcb3..b6c0e0f005cbb 100644 --- a/static/locales/sk.yaml +++ b/static/locales/sk.yaml @@ -196,8 +196,6 @@ Settings: Hide Side Bar Labels: Skryť označenia v bočnom paneli Player Settings: Player Settings: 'Nastavenia Prehrávača' - Force Local Backend for Legacy Formats: 'Pre staré formáty predvolene používať - lokálny backend' Play Next Video: 'Prehrať nasledujúce video' Turn on Subtitles by Default: 'Zapínať titulky predvolene' Autoplay Videos: 'Automaticky prehrávať nasledujúce video' @@ -655,10 +653,6 @@ Tooltips: využívajú menej dát. Zvukové formáty sú iba zvukové streamy. Proxy Videos Through Invidious: Namiesto priameho pripojenia k YouTube sa pripojí k Invidious, aby poskytoval videá. Prepíše preferenciu API. - Force Local Backend for Legacy Formats: Funguje, iba ak je predvolené rozhranie - Invidious API. Ak je zapnuté, miestne API sa spustí a bude používať pôvodné - formáty, namiesto tých, ktoré vráti Invidious. Pomáha, keď sa videá vrátené - Invidious neprehrávajú kvôli obmedzeniam krajiny. Scroll Playback Rate Over Video Player: Keď je kurzor nad videom, stlačte a podržte kláves Control (kláves Command na Macu) a posúvaním kolieska myši dopredu alebo dozadu ovládajte rýchlosť prehrávania. Stlačte a podržte kláves Control (kláves diff --git a/static/locales/sl.yaml b/static/locales/sl.yaml index e8c2a82468749..bbf549da3c2c6 100644 --- a/static/locales/sl.yaml +++ b/static/locales/sl.yaml @@ -228,8 +228,6 @@ Settings: Hide Side Bar Labels: Skrij oznake na stranski vrstici Player Settings: Player Settings: 'Nastavitve predvajalnika' - Force Local Backend for Legacy Formats: 'Vedno uporabi lokalni zaledni sistem - za zapuščinske oblike' Play Next Video: 'Predvajaj naslednji videoposnetek' Turn on Subtitles by Default: 'Samodejno vklopi podnapise' Autoplay Videos: 'Samodejno predvajaj naslednji videoposnetek' diff --git a/static/locales/sm.yaml b/static/locales/sm.yaml index ea15eefd03df5..d66af6dc4d2c3 100644 --- a/static/locales/sm.yaml +++ b/static/locales/sm.yaml @@ -243,7 +243,6 @@ Settings: #* Main Color Theme Player Settings: Player Settings: '' - Force Local Backend for Legacy Formats: '' Play Next Video: '' Turn on Subtitles by Default: '' Autoplay Videos: '' @@ -761,7 +760,6 @@ Tooltips: Region for Trending: '' External Link Handling: | Player Settings: - Force Local Backend for Legacy Formats: '' Proxy Videos Through Invidious: '' Default Video Format: '' Scroll Playback Rate Over Video Player: '' diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index 0383a0c13cd87..4eeb9975cd477 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -391,8 +391,6 @@ Settings: Hide Side Bar Labels: Сакриј ознаке бочне траке Player Settings: Player Settings: 'Подешавања плејера' - Force Local Backend for Legacy Formats: 'Присили локални бек-енд за застареле - формате' Play Next Video: 'Пусти следећи видео снимак' Turn on Subtitles by Default: 'Подразумевано укључи титлове' Autoplay Videos: 'Аутоматски пусти видео снимак' @@ -1005,10 +1003,6 @@ Tooltips: тастер „Control“ (тастер „Command„ на Mac-у) и кликните левим тастером миша да бисте се брзо вратили на подразумевану брзину репродукције (1x, осим ако није промењено у подешавањима). - Force Local Backend for Legacy Formats: Ради само када је Invidious API подразумевани. - Када је омогућено, локални API ће се покренути и користити застареле формате - које је вратио, уместо оних које је вратио Invidious. Помаже када се видео снимци - које је вратио Invidious не пуштају због ограничења у држави. Skip by Scrolling Over Video Player: Користите точкић миша да бисте прескакали кроз видео снимак, MPV стил. Experimental Settings: diff --git a/static/locales/sv.yaml b/static/locales/sv.yaml index d0ccbb8b0ad52..f7f734174aaf0 100644 --- a/static/locales/sv.yaml +++ b/static/locales/sv.yaml @@ -326,7 +326,6 @@ Settings: Hide FreeTube Header Logo: Dölj FreeTubelogga Player Settings: Player Settings: 'Spelarinställningar' - Force Local Backend for Legacy Formats: 'Tvinga lokal resurser för äldre format' Play Next Video: 'Spela nästa video' Turn on Subtitles by Default: 'Aktivera undertexter som standard' Autoplay Videos: 'Autospela video' @@ -987,11 +986,6 @@ Tooltips: Proxy Videos Through Invidious: Kommer att ansluta till Invidious för att hämta videor istället för att göra en direkt anslutning till YouTube. Åsidosätter API-preferens. - Force Local Backend for Legacy Formats: Fungerar bara när Invidious API är din - standard. När det är aktiverat kommer det lokala API:et att köras och använda - de äldre formaten som returneras av det i stället för de som returneras av Invidious. - Hjälper när videorna som returneras av Invidious inte spelas upp på grund av - landsbegränsningar. Skip by Scrolling Over Video Player: Använd skrollhjulet för att snappspola igenom videon, MPV-stil. Scroll Playback Rate Over Video Player: När muspekaren är över videon, håll nere diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index 789f2074828e4..f6810ae6ef8fe 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -386,8 +386,6 @@ Settings: Hide FreeTube Header Logo: FreeTube Başlık Logosunu Gizle Player Settings: Player Settings: 'Oynatıcı Ayarları' - Force Local Backend for Legacy Formats: 'Eski Biçimler için Yerel Arka Ucu Kullanmaya - Zorla' Play Next Video: 'Sonraki Videoyu Oynat' Turn on Subtitles by Default: 'Alt Yazıları Öntanımlı Olarak Aç' Autoplay Videos: 'Videoları Otomatik Başlat' @@ -1134,11 +1132,6 @@ Tooltips: akışlarıdır. Proxy Videos Through Invidious: Videoları sunmak için YouTube ile doğrudan bağlantı kurmak yerine Invidious'a bağlanılacak. API tercihini geçersiz kılar. - Force Local Backend for Legacy Formats: Yalnızca Invidious API'si öntanımlı seçeneğiniz - olduğunda çalışır. Etkinleştirildiğinde, yerel API çalışacak ve Invidious tarafından - döndürülen biçimler yerine onun döndürdüğü eski biçimler kullanılacaktır. Invidious - tarafından döndürülen videolar ülke kısıtlamaları nedeniyle oynatılmadığında - yardımcı olur. Scroll Playback Rate Over Video Player: Oynatma hızını denetlemek için, imleç videonun üzerindeyken Ctrl tuşunu (Mac'te Komut tuşu) basılı tutun ve oynatma hızını denetlemek için fare tekerleğini ileri veya geri kaydırın. Öntanımlı diff --git a/static/locales/uk.yaml b/static/locales/uk.yaml index 78b53f1912afe..916625e1abce3 100644 --- a/static/locales/uk.yaml +++ b/static/locales/uk.yaml @@ -267,8 +267,6 @@ Settings: Hide FreeTube Header Logo: Сховати логотип FreeTube із заголовка Player Settings: Player Settings: 'Налаштування програвача' - Force Local Backend for Legacy Formats: 'Примусово використовувати локальний сервер - для застарілих форматів' Play Next Video: 'Грати наступне відео' Turn on Subtitles by Default: 'Увімкнути субтитри за замовченням' Autoplay Videos: 'Автоматичне відтворення відео' @@ -858,10 +856,6 @@ Tooltips: яке не можна відкрити у FreeTube.\nТипово FreeTube відкриває натиснуте посилання у вашому типовому переглядачі.\n" Player Settings: - Force Local Backend for Legacy Formats: 'Працює, лише якщо API Invidious використовується - типовим. Якщо увімкнено, локальний API буде запущено і використовуватиме застарілі - формати, які було повернуто Invidious. Допомагає, коли відео, повернуті Invidious, - не відтворюються через обмеження в країні.' Proxy Videos Through Invidious: 'Під’єднається до Invidious, щоб дивитися відео, а не встановлювати пряме з’єднання з YouTube. Замінює налаштування API.' Default Video Format: 'Встановіть формати, що використовуються під час відтворення diff --git a/static/locales/ur.yaml b/static/locales/ur.yaml index 12809cac6bcc0..18a7637daa28d 100644 --- a/static/locales/ur.yaml +++ b/static/locales/ur.yaml @@ -163,11 +163,6 @@ Tooltips: 'جب کوئی لنک، جسے FreeTube میں نہیں کھولا جا سکتا، پر کلک کیا جاتا ہے تو پہلے سے طے شدہ طرز عمل کا انتخاب کریں۔ بطور ڈیفالٹ FreeTube آپ کے ڈیفالٹ براؤزر میں کلک کردہ لنک کو کھول دے گا۔' Player Settings: - Force Local Backend for Legacy Formats: 'صرف اس وقت کام کرتا ہے جب Invidious API - آپ کا ہو۔ پہلے سے طے شدہ فعال ہونے پر، مقامی API چلائے گا اور لوٹے گئے لیگیسی - فارمیٹس کا استعمال کرے گا۔ اس کے بجائے Invidious کی طرف سے واپس آنے والوں کی - بجائے۔ ویڈیوز واپس آنے پر مدد کرتا ہے۔ ملک کی پابندیوں کی وجہ سے Invidious نہ - کھیلیں۔' Proxy Videos Through Invidious: 'اس کی بجائے ویڈیوز پیش کرنے کے لیے Invidious سے منسلک ہوں گے۔ یوٹیوب سے براہ راست کنکشن بنانے کا۔ API کی ترجیح کو اوور رائیڈ کرتا ہے۔' diff --git a/static/locales/vi.yaml b/static/locales/vi.yaml index d74189933cb97..a685c03d89563 100644 --- a/static/locales/vi.yaml +++ b/static/locales/vi.yaml @@ -329,8 +329,6 @@ Settings: Hide FreeTube Header Logo: Ẩn logo FreeTube trên thanh trên Player Settings: Player Settings: 'Cài đặt trình phát' - Force Local Backend for Legacy Formats: 'Bắt buộc Local Backend cho định dạng - cũ' Remember History: 'Nhớ lịch sử' Play Next Video: 'Phát video tiếp theo' Turn on Subtitles by Default: 'Bật phụ đề theo mặc định' @@ -1044,10 +1042,6 @@ Tooltips: Region for Trending: Xu hướng khu vực cho phép bạn chọn các video thịnh hành của quốc gia mà bạn muốn hiển thị. Player Settings: - Force Local Backend for Legacy Formats: Chỉ hoạt động khi API Invidious là mặc - định của bạn. Khi được bật lên, API cục bộ sẽ chạy và sử dụng các định dạng - kế thừa được trả về thay vì các định dạng được trả về bởi Invidious. Điều này - có ích khi các video do Invidious trả về không phát được do giới hạn quốc gia. Proxy Videos Through Invidious: Sẽ kết nối với Invidious để cung cấp video thay vì kết nối trực tiếp với YouTube. Ghi đè tùy chọn API. Default Video Format: Cài đặt các định dạng được dùng khi phát video. Định dạng diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index ed729d8c1af2d..5699a44427a7d 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -341,7 +341,6 @@ Settings: Hide FreeTube Header Logo: 隐藏 FreeTube 标题徽标 Player Settings: Player Settings: '播放器选项' - Force Local Backend for Legacy Formats: '强制本地后端给传统格式' Remember History: '记住历史' Play Next Video: '播放下一视频' Turn on Subtitles by Default: '默认开启字幕' @@ -1007,8 +1006,6 @@ Tooltips: Default Video Format: 设置播放视频时使用的格式。DASH 格式可以播放更高质量的视频。 传统格式限制为最大 720p,但使用较少的带宽。 音频格式是纯音频流。 Proxy Videos Through Invidious: 将连接到 Invidious而非直接连接到 YouTube 来提供影片。覆盖 API 偏好。 - Force Local Backend for Legacy Formats: 仅当 Invidious API是您默认 API 时才有效。启用后,本地API - 将执行并使用由其回传的的传统格式,而非 Invidious 回传的格式。对因为国家地区限制而不能播放 Invidious回传的影片时有帮助。 Scroll Playback Rate Over Video Player: 当光标位于视频上方时,按住 Control 键(Mac 上的 Command 键),前后滚动鼠标滚轮,控制播放速度。按住 Control 键(Mac 上的 Command 键),左键点击鼠标快速返回到默认播放速率(1x,除非在设置中改变了数值)。 Skip by Scrolling Over Video Player: 使用滚轮跳过视频,MPV 风格。 diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index 09372ed86b17a..3d43f08955dba 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -342,7 +342,6 @@ Settings: Hide FreeTube Header Logo: 隱藏 FreeTube 標題圖示 Player Settings: Player Settings: '播放器選項' - Force Local Backend for Legacy Formats: '強制使用傳統格式的區域伺服器' Remember History: '記住曆史' Play Next Video: '播放下一部影片' Turn on Subtitles by Default: '預設開啟字幕' @@ -1017,8 +1016,6 @@ Tooltips: Player Settings: Default Video Format: 設定要用於影片播放的格式。DASH 格式有更高的畫質。傳統格式會限制在 720p 但頻寬需求更低。音訊格式為僅有音訊的串流。 Proxy Videos Through Invidious: 將連線到 Invidious 而非直接連線到 YouTube 來提供影片。覆寫 API 偏好。 - Force Local Backend for Legacy Formats: 僅當 Invidious API 是您預設 API 時才有效。啟用後,區域 - API 將會執行並使用由其回傳的的傳統格式,而非 Invidious 回傳的格式。對因為國家地區限制而無法播放 Invidious 回傳的影片時有幫助。 Scroll Playback Rate Over Video Player: 當游標停在影片上時,按住 Ctrl 鍵(Mac 的話則是 Command 鍵),然後向前或向後滾動滑鼠滾輪來控制播放速度。按住 Ctrl 鍵(Mac 的話則是 Command 鍵)並點擊滑鼠左鍵以快速回到預設的播放速度(1x,除非在設定中更改)。 Skip by Scrolling Over Video Player: 使用滾輪跳過影片,MPV 風格。 From 696315d6d904319699a93729d97eb69a1ec328c1 Mon Sep 17 00:00:00 2001 From: Gideon Wentink Date: Fri, 6 Sep 2024 12:57:15 +0200 Subject: [PATCH 16/74] Added translation using Weblate (Afrikaans) --- static/locales/af.yaml | 1037 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1037 insertions(+) create mode 100644 static/locales/af.yaml diff --git a/static/locales/af.yaml b/static/locales/af.yaml new file mode 100644 index 0000000000000..363ddb7dd0051 --- /dev/null +++ b/static/locales/af.yaml @@ -0,0 +1,1037 @@ +# Put the name of your locale in the same language +Locale Name: '' +# Currently on Subscriptions, Playlists, and History +'This part of the app is not ready yet. Come back later when progress has been made.': > + +# Webkit Menu Bar +File: '' +New Window: '' +Preferences: '' +Quit: '' +Edit: '' +Undo: '' +Redo: '' +Cut: '' +Copy: '' +Paste: '' +Delete: '' +Select all: '' +Reload: '' +Force Reload: '' +Toggle Developer Tools: '' +Actual size: '' +Zoom in: '' +Zoom out: '' +Toggle fullscreen: '' +Window: '' +Minimize: '' +Close: '' +Back: '' +Forward: '' +Open New Window: '' +Go to page: '' +Close Banner: '' + +Version {versionNumber} is now available! Click for more details: '' +Download From Site: '' +A new blog is now available, {blogTitle}. Click to view more: '' +Are you sure you want to open this link?: '' + +# Global +# Anything shared among components / views should be put here +Global: + Videos: '' + Shorts: '' + Live: '' + Community: '' + Counts: + Video Count: '' + Channel Count: '' + Subscriber Count: '' + View Count: '' + Watching Count: '' + Input Tags: + Length Requirement: '' + +# Search Bar +Search / Go to URL: '' +Search Bar: + Clear Input: '' +Search character limit: '' +Search Listing: + Label: + 4K: '' + Subtitles: '' + # Aria labels + Closed Captions: '' + # In Filter Button +Search Filters: + Search Filters: '' + Sort By: + Sort By: '' + Most Relevant: '' + Rating: '' + Upload Date: '' + View Count: '' + Time: + Time: '' + Any Time: '' + Last Hour: '' + Today: '' + This Week: '' + This Month: '' + This Year: '' + Type: + Type: '' + All Types: '' + Videos: '' + Channels: '' + Movies: '' + #& Playlists + Duration: + Duration: '' + All Durations: '' + Short (< 4 minutes): '' + Medium (4 - 20 minutes): '' + Long (> 20 minutes): '' + Features: + Features: '' + HD: '' + Subtitles: '' + Creative Commons: '' + 3D: '' + Live: '' + 4K: '' + 360 Video: '' + Location: '' + HDR: '' + VR180: '' + # On Search Page + Search Results: '' + Fetching results. Please wait: '' + Fetch more results: '' + There are no more results for this search: '' +# Sidebar +Subscriptions: + # On Subscriptions Page + Subscriptions: '' + # channels that were likely deleted + Error Channels: '' + Latest Subscriptions: '' + This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '' + 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '' + Disabled Automatic Fetching: '' + Empty Channels: '' + 'Getting Subscriptions. Please wait.': '' + Empty Posts: '' + Load More Videos: '' + Load More Posts: '' + Subscriptions Tabs: '' + All Subscription Tabs Hidden: '' +More: '' +Channels: + Channels: '' + Title: '' + Search bar placeholder: '' + Count: '' + Empty: '' + Unsubscribe: '' + Unsubscribed: '' + Unsubscribe Prompt: '' +Trending: + Trending: '' + Default: '' + Music: '' + Gaming: '' + Movies: '' + Trending Tabs: '' +Most Popular: '' +Feed: + Feed Last Updated: '' + Refresh Feed: '' +Playlists: '' +User Playlists: + Your Playlists: '' + Playlist Message: '' + Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: '' + You have no playlists. Click on the create new playlist button to create a new one.: '' + Empty Search Message: '' + Search bar placeholder: '' + Playlists with Matching Videos: '' + + This playlist currently has no videos.: '' + + Create New Playlist: '' + + Add to Playlist: '' + Add to Favorites: '' + Remove from Favorites: '' + + Move Video Up: '' + Move Video Down: '' + Remove from Playlist: '' + + Playlist Name: '' + Playlist Description: '' + + Save Changes: '' + Cancel: '' + Edit Playlist Info: '' + Copy Playlist: '' + Remove Duplicate Videos: '' + Remove Watched Videos: '' + Enable Quick Bookmark With This Playlist: '' + Quick Bookmark Enabled: '' + Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: '' + Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: '' + Delete Playlist: '' + Cannot delete the quick bookmark target playlist.: '' + Are you sure you want to delete this playlist? This cannot be undone: '' + + Sort By: + Sort By: '' + + NameAscending: '' + NameDescending: '' + + LatestCreatedFirst: '' + EarliestCreatedFirst: '' + + LatestUpdatedFirst: '' + EarliestUpdatedFirst: '' + + LatestPlayedFirst: '' + EarliestPlayedFirst: '' + SinglePlaylistView: + Search for Videos: '' + + Toast: + This video cannot be moved up.: '' + This video cannot be moved down.: '' + Video has been removed: '' + There was a problem with removing this video: '' + + This playlist is already being used for quick bookmark.: '' + This playlist is now used for quick bookmark: '' + This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo: '' + Reverted to use {oldPlaylistName} for quick bookmark: '' + + Some videos in the playlist are not loaded yet. Click here to copy anyway.: '' + Playlist name cannot be empty. Please input a name.: '' + Playlist has been updated.: '' + There was an issue with updating this playlist.: '' + "{videoCount} video(s) have been removed": "" + There were no videos to remove.: '' + This playlist is protected and cannot be removed.: '' + Playlist {playlistName} has been deleted.: '' + Playlist {playlistName} is the new quick bookmark playlist.: '' + + This playlist does not exist: '' + AddVideoPrompt: + Select a playlist to add your N videos to: '' + N playlists selected: '' + Search in Playlists: '' + Allow Adding Duplicate Video(s): '' + Save: '' + + Added {count} Times: '' + "{videoCount}/{totalVideoCount} Videos Will Be Added": '' + "{videoCount}/{totalVideoCount} Videos Already Added": '' + + Toast: + You haven't selected any playlist yet.: '' + "{videoCount} video(s) added to 1 playlist": "" + "{videoCount} video(s) added to {playlistCount} playlists": "" + CreatePlaylistPrompt: + New Playlist Name: '' + Create: '' + + Toast: + There is already a playlist with this name. Please pick a different name.: '' + Playlist {playlistName} has been successfully created.: '' + There was an issue with creating the playlist.: '' +History: + # On History Page + History: '' + Watch History: '' + Your history list is currently empty.: '' + Empty Search Message: '' + Search bar placeholder: "" + Case Sensitive Search: '' +Settings: + # On Settings Page + Settings: '' + Expand All Settings Sections: '' + Sort Settings Sections (A-Z): '' + The app needs to restart for changes to take effect. Restart and apply change?: '' + General Settings: + General Settings: '' + Check for Updates: '' + Check for Latest Blog Posts: '' + Fallback to Non-Preferred Backend on Failure: '' + Enable Search Suggestions: '' + Auto Load Next Page: + Label: '' + Tooltip: '' + Default Landing Page: '' + Locale Preference: '' + System Default: '' + Preferred API Backend: + Preferred API Backend: '' + Local API: '' + Invidious API: '' + Video View Type: + Video View Type: '' + Grid: '' + List: '' + Thumbnail Preference: + Thumbnail Preference: '' + Default: '' + Beginning: '' + Middle: '' + End: '' + Hidden: '' + Blur: '' + Current Invidious Instance: '' + The currently set default instance is {instance}: '' + No default instance has been set: '' + Current instance will be randomized on startup: '' + Set Current Instance as Default: '' + Clear Default Instance: '' + View all Invidious instance information: '' + Region for Trending: '' + #! List countries + External Link Handling: + External Link Handling: '' + Open Link: '' + Ask Before Opening Link: '' + No Action: '' + Theme Settings: + Theme Settings: '' + Match Top Bar with Main Color: '' + Expand Side Bar by Default: '' + Disable Smooth Scrolling: '' + UI Scale: '' + Hide Side Bar Labels: '' + Hide FreeTube Header Logo: '' + Base Theme: + Base Theme: '' + Black: '' + Dark: '' + System Default: '' + Light: '' + Dracula: '' + Catppuccin Mocha: '' + Pastel Pink: '' + Hot Pink: '' + Nordic: '' + Solarized Dark: '' + Solarized Light: '' + Main Color Theme: + Main Color Theme: '' + Red: '' + Pink: '' + Purple: '' + Deep Purple: '' + Indigo: '' + Blue: '' + Light Blue: '' + Cyan: '' + Teal: '' + Green: '' + Light Green: '' + Lime: '' + Yellow: '' + Amber: '' + Orange: '' + Deep Orange: '' + Dracula Cyan: '' + Dracula Green: '' + Dracula Orange: '' + Dracula Pink: '' + Dracula Purple: '' + Dracula Red: '' + Dracula Yellow: '' + Catppuccin Mocha Rosewater: '' + Catppuccin Mocha Flamingo: '' + Catppuccin Mocha Pink: '' + Catppuccin Mocha Mauve: '' + Catppuccin Mocha Red: '' + Catppuccin Mocha Maroon: '' + Catppuccin Mocha Peach: '' + Catppuccin Mocha Yellow: '' + Catppuccin Mocha Green: '' + Catppuccin Mocha Teal: '' + Catppuccin Mocha Sky: '' + Catppuccin Mocha Sapphire: '' + Catppuccin Mocha Blue: '' + Catppuccin Mocha Lavender: '' + Solarized Yellow: '' + Solarized Orange: '' + Solarized Red: '' + Solarized Magenta: '' + Solarized Violet: '' + Solarized Blue: '' + Solarized Cyan: '' + Solarized Green: '' + Secondary Color Theme: '' + #* Main Color Theme + Player Settings: + Player Settings: '' + Play Next Video: '' + Turn on Subtitles by Default: '' + Autoplay Videos: '' + Proxy Videos Through Invidious: '' + Autoplay Playlists: '' + Enable Theatre Mode by Default: '' + Scroll Volume Over Video Player: '' + Scroll Playback Rate Over Video Player: '' + Skip by Scrolling Over Video Player: '' + Display Play Button In Video Player: '' + Enter Fullscreen on Display Rotate: '' + Next Video Interval: '' + Fast-Forward / Rewind Interval: '' + Default Volume: '' + Default Playback Rate: '' + Max Video Playback Rate: '' + Video Playback Rate Interval: '' + Default Video Format: + Default Video Format: '' + Dash Formats: '' + Legacy Formats: '' + Audio Formats: '' + Default Quality: + Default Quality: '' + Auto: '' + 144p: '' + 240p: '' + 360p: '' + 480p: '' + 720p: '' + 1080p: '' + 1440p: '' + 4k: '' + 8k: '' + Screenshot: + Enable: '' + Format Label: '' + Quality Label: '' + Ask Path: '' + Folder Label: '' + Folder Button: '' + File Name Label: '' + File Name Tooltip: '' + Error: + Forbidden Characters: '' + Empty File Name: '' + External Player Settings: + External Player Settings: '' + External Player: '' + Ignore Unsupported Action Warnings: '' + Ignore Default Arguments: '' + Custom External Player Executable: '' + Custom External Player Arguments: '' + Players: + None: + Name: '' + Privacy Settings: + Privacy Settings: '' + Remember History: '' + Save Watched Progress: '' + Save Watched Videos With Last Viewed Playlist: '' + Clear Search Cache: '' + Are you sure you want to clear out your search cache?: '' + Search cache has been cleared: '' + Remove Watch History: '' + Are you sure you want to remove your entire watch history?: '' + Watch history has been cleared: '' + Remove All Subscriptions / Profiles: '' + Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '' + Remove All Playlists: '' + All playlists have been removed: '' + Are you sure you want to remove all your playlists?: '' + Subscription Settings: + Subscription Settings: '' + Hide Videos on Watch: '' + Fetch Feeds from RSS: '' + Manage Subscriptions: '' + Fetch Automatically: '' + Only Show Latest Video for Each Channel: '' + Confirm Before Unsubscribing: '' + Distraction Free Settings: + Distraction Free Settings: '' + Sections: + Side Bar: '' + Subscriptions Page: '' + Channel Page: '' + Watch Page: '' + General: '' + Hide Video Views: '' + Hide Video Likes And Dislikes: '' + Hide Channel Subscribers: '' + Hide Comment Likes: '' + Hide Recommended Videos: '' + Hide Trending Videos: '' + Hide Popular Videos: '' + Hide Playlists: '' + Hide Live Chat: '' + Hide Active Subscriptions: '' + Hide Video Description: '' + Hide Comments: '' + Hide Profile Pictures in Comments: '' + Display Titles Without Excessive Capitalisation: '' + Hide Live Streams: '' + Hide Upcoming Premieres: '' + Hide Sharing Actions: '' + Hide Chapters: '' + Hide Channels: '' + Hide Channels Disabled Message: '' + Hide Channels Placeholder: '' + Hide Channels Invalid: '' + Hide Channels API Error: '' + Hide Channels Already Exists: '' + Hide Featured Channels: '' + Hide Channel Playlists: '' + Hide Channel Community: '' + Hide Channel Shorts: '' + Hide Channel Podcasts: '' + Hide Channel Releases: '' + Hide Videos and Playlists Containing Text: '' + Hide Videos and Playlists Containing Text Placeholder: '' + Hide Subscriptions Videos: '' + Hide Subscriptions Shorts: '' + Hide Subscriptions Live: '' + Hide Subscriptions Community: '' + Data Settings: + Data Settings: '' + Select Import Type: '' + Select Export Type: '' + Import Subscriptions: '' + Subscription File: '' + History File: '' + Playlist File: '' + Check for Legacy Subscriptions: '' + Export Subscriptions: '' + Export FreeTube: '' + Export YouTube: '' + Export NewPipe: '' + Import History: '' + Export History: '' + Import Playlists: '' + Export Playlists: '' + Export Playlists For Older FreeTube Versions: + Label: '' + # |- = Keep newlines, No newline at end + Tooltip: | + Profile object has insufficient data, skipping item: '' + All subscriptions and profiles have been successfully imported: '' + All subscriptions have been successfully imported: '' + Invalid subscriptions file: '' + Invalid history file: '' + Subscriptions have been successfully exported: '' + History object has insufficient data, skipping item: '' + All watched history has been successfully imported: '' + All watched history has been successfully exported: '' + Playlist insufficient data: '' + All playlists has been successfully imported: '' + All playlists has been successfully exported: '' + Unable to read file: '' + Unable to write file: '' + Unknown data key: '' + How do I import my subscriptions?: '' + Manage Subscriptions: '' + Proxy Settings: + Proxy Settings: '' + Enable Tor / Proxy: '' + Proxy Protocol: '' + Proxy Host: '' + Proxy Port Number: '' + Clicking on Test Proxy will send a request to: '' + Test Proxy: '' + Your Info: '' + Ip: '' + Country: '' + Region: '' + City: '' + Error getting network information. Is your proxy configured properly?: '' + SponsorBlock Settings: + SponsorBlock Settings: '' + Enable SponsorBlock: '' + 'SponsorBlock API Url (Default is https://sponsor.ajay.app)': '' + Notify when sponsor segment is skipped: '' + UseDeArrowTitles: '' + UseDeArrowThumbnails: '' + 'DeArrow Thumbnail Generator API Url (Default is https://dearrow-thumb.ajay.app)': '' + Skip Options: + Skip Option: '' + Auto Skip: '' + Show In Seek Bar: '' + Prompt To Skip: '' + Do Nothing: '' + Category Color: '' + Parental Control Settings: + Parental Control Settings: '' + Hide Unsubscribe Button: '' + Show Family Friendly Only: '' + Hide Search Bar: '' + Download Settings: + Download Settings: '' + Ask Download Path: '' + Choose Path: '' + Download Behavior: '' + Download in app: '' + Open in web browser: '' + Experimental Settings: + Experimental Settings: '' + Warning: '' + Replace HTTP Cache: '' + Password Dialog: + Password: '' + Enter Password To Unlock: '' + Password Incorrect: '' + Unlock: '' + Password Settings: + Password Settings: '' + Set Password To Prevent Access: '' + Set Password: '' + Remove Password: '' +About: + #On About page + About: '' + Beta: '' + Source code: '' + Licensed under the: '' + AGPLv3: '' + Downloads / Changelog: '' + GitHub releases: '' + Help: '' + FreeTube Wiki: '' + FAQ: '' + Discussions: '' + Report a problem: '' + GitHub issues: '' + Please check for duplicates before posting: '' + Website: '' + Blog: '' + Email: '' + Mastodon: '' + Chat on Matrix: '' + Please read the: '' + room rules: '' + Translate: '' + Credits: '' + FreeTube is made possible by: '' + these people and projects: '' + Donate: '' + +Profile: + Profile Settings: '' + Toggle Profile List: '' + Profile Select: '' + Profile Filter: '' + All Channels: '' + Profile Manager: '' + Create New Profile: '' + Edit Profile: '' + Edit Profile Name: '' + Create Profile Name: '' + Profile Name: '' + Color Picker: '' + Custom Color: '' + Profile Preview: '' + Create Profile: '' + Update Profile: '' + Make Default Profile: '' + Delete Profile: '' + Are you sure you want to delete this profile?: '' + All subscriptions will also be deleted.: '' + Profile could not be found: '' + Your profile name cannot be empty: '' + Profile has been created: '' + Profile has been updated: '' + Your default profile has been set to {profile}: '' + Removed {profile} from your profiles: '' + Your default profile has been changed to your primary profile: '' + '{profile} is now the active profile': '' + Subscription List: '' + Other Channels: '' + '{number} selected': '' + Select All: '' + Select None: '' + Delete Selected: '' + Add Selected To Profile: '' + No channel(s) have been selected: '' + ? This is your primary profile. Are you sure you want to delete the selected channels? The + same channels will be deleted in any profile they are found in. + : '' + Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: '' + Close Profile Dropdown: '' + Open Profile Dropdown: '' +#On Channel Page +Channel: + Subscribe: '' + Unsubscribe: '' + Channel has been removed from your subscriptions: '' + Removed subscription from {count} other channel(s): '' + Added channel to your subscriptions: '' + Search Channel: '' + Your search results have returned 0 results: '' + Sort By: '' + This channel does not exist: '' + This channel does not allow searching: '' + This channel is age-restricted and currently cannot be viewed in FreeTube.: '' + Channel Tabs: '' + Videos: + Videos: '' + This channel does not currently have any videos: '' + Sort Types: + Newest: '' + Oldest: '' + Most Popular: '' + Shorts: + This channel does not currently have any shorts: '' + Live: + Live: '' + This channel does not currently have any live streams: '' + Playlists: + Playlists: '' + This channel does not currently have any playlists: '' + Sort Types: + Last Video Added: '' + Newest: '' + Oldest: '' + Podcasts: + Podcasts: '' + This channel does not currently have any podcasts: '' + Releases: + Releases: '' + This channel does not currently have any releases: '' + About: + About: '' + Channel Description: '' + Tags: + Tags: '' + Search for: '' + Details: '' + Joined: '' + Location: '' + Featured Channels: '' + Community: + This channel currently does not have any posts: '' + votes: '' + Reveal Answers: '' + Hide Answers: '' + Video hidden by FreeTube: '' +Video: + More Options: '' + Mark As Watched: '' + Remove From History: '' + Video has been marked as watched: '' + Video has been removed from your history: '' + Save Video: '' + Video has been saved: '' + Video has been removed from your saved list: '' + Open in YouTube: '' + Copy YouTube Link: '' + Open YouTube Embedded Player: '' + Copy YouTube Embedded Player Link: '' + Open in Invidious: '' + Copy Invidious Link: '' + Open Channel in YouTube: '' + Copy YouTube Channel Link: '' + Open Channel in Invidious: '' + Copy Invidious Channel Link: '' + Hide Channel: '' + Unhide Channel: '' + Views: '' + Loop Playlist: '' + Shuffle Playlist: '' + Reverse Playlist: '' + Play Next Video: '' + Play Previous Video: '' + Pause on Current Video: '' + Watched: '' + Autoplay: '' + Starting soon, please refresh the page to check again: '' + # As in a Live Video + Premieres on: '' + Premieres: '' + Upcoming: '' + Live: '' + Live Now: '' + Live Chat: '' + Enable Live Chat: '' + Live Chat is currently not supported in this build.: '' + 'Chat is disabled or the Live Stream has ended.': '' + Live chat is enabled. Chat messages will appear here once sent.: '' + 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': '' + 'Live Chat is unavailable for this stream. It may have been disabled by the uploader.': '' + Show Super Chat Comment: '' + Scroll to Bottom: '' + Download Video: '' + video only: '' + audio only: '' + Published: + Jan: '' + Feb: '' + Mar: '' + Apr: '' + May: '' + Jun: '' + Jul: '' + Aug: '' + Sep: '' + Oct: '' + Nov: '' + Dec: '' + Second: '' + Seconds: '' + Minute: '' + Minutes: '' + Hour: '' + Hours: '' + Day: '' + Days: '' + Week: '' + Weeks: '' + Month: '' + Months: '' + Year: '' + Years: '' + Ago: '' + Upcoming: '' + In less than a minute: '' + Published on: '' + Streamed on: '' + Started streaming on: '' + Publicationtemplate: '' + Sponsor Block category: + sponsor: '' + intro: '' + outro: '' + self-promotion: '' + interaction: '' + music offtopic: '' + recap: '' + filler: '' + External Player: + OpenInTemplate: '' + video: '' + playlist: '' + OpeningTemplate: '' + UnsupportedActionTemplate: '' + Unsupported Actions: + starting video at offset: '' + setting a playback rate: '' + opening playlists: '' + opening specific video in a playlist (falling back to opening the video): '' + reversing playlists: '' + shuffling playlists: '' + looping playlists: '' + Player: + TranslatedCaptionTemplate: '' + Audio Tracks: '' + Theatre Mode: '' + Exit Theatre Mode: '' + Full Window: '' + Exit Full Window: '' + Take Screenshot: '' + Show Stats: '' + Hide Stats: '' + Stats: + Stats: '' + Video ID: '' + Media Formats: '' + Resolution: '' + Player Dimensions: '' + Bitrate: '' + Volume: '' + Bandwidth: '' + Buffered: '' + Dropped Frames / Total Frames: '' + CodecAudio: '' + CodecsVideoAudio: '' + CodecsVideoAudioNoItags: '' + You appear to be offline: '' + Playback will resume automatically when your connection comes back: '' + Skipped segment: '' +#& Videos +Videos: + #& Sort By + Sort By: + Newest: '' + Oldest: '' + #& Most Popular +#& Playlists +Playlist: + #& About + Playlist: '' + View Full Playlist: '' + Videos: '' + View: '' + Views: '' + Last Updated On: '' + Sort By: + Sort By: '' + DateAddedNewest: '' + DateAddedOldest: '' + AuthorAscending: '' + AuthorDescending: '' + VideoTitleAscending: '' + VideoTitleDescending: '' + Custom: '' + +# On Video Watch Page +#* Published +#& Views +Toggle Theatre Mode: '' +Change Format: + Change Media Formats: '' + Use Dash Formats: '' + Use Legacy Formats: '' + Use Audio Formats: '' + Dash formats are not available for this video: '' + Audio formats are not available for this video: '' + Legacy formats are not available for this video: '' +Share: + Share Video: '' + Share Channel: '' + Share Playlist: '' + Include Timestamp: '' + Copy Link: '' + Open Link: '' + Copy Embed: '' + Open Embed: '' + # On Click + Invidious URL copied to clipboard: '' + Invidious Embed URL copied to clipboard: '' + Invidious Channel URL copied to clipboard: '' + YouTube URL copied to clipboard: '' + YouTube Embed URL copied to clipboard: '' + YouTube Channel URL copied to clipboard: '' +Clipboard: + Copy failed: '' + Cannot access clipboard without a secure connection: '' + +Chapters: + Chapters: '' + 'Chapters list visible, current chapter: {chapterName}': '' + 'Chapters list hidden, current chapter: {chapterName}': '' + +Mini Player: '' +Comments: + Comments: '' + Click to View Comments: '' + Getting comment replies, please wait: '' + There are no more comments for this video: '' + Show Comments: '' + Hide Comments: '' + Sort by: '' + Top comments: '' + Newest first: '' + View {replyCount} replies: '' + # Context: View 10 Replies, View 1 Reply, View 1 Reply from Owner, View 2 Replies from Owner and others + View: '' + Hide: '' + Replies: '' + Show More Replies: '' + Reply: '' + From {channelName}: '' + And others: '' + There are no comments available for this video: '' + Load More Comments: '' + No more comments available: '' + Pinned by: '' + Member: '' + Subscribed: '' + Hearted: '' +Up Next: '' + +#Tooltips +Tooltips: + General Settings: + Preferred API Backend: '' + Fallback to Non-Preferred Backend on Failure: '' + Thumbnail Preference: '' + Invidious Instance: '' + Region for Trending: '' + External Link Handling: | + Player Settings: + Proxy Videos Through Invidious: '' + Default Video Format: '' + Scroll Playback Rate Over Video Player: '' + Skip by Scrolling Over Video Player: '' + External Player Settings: + External Player: '' + Custom External Player Executable: '' + Ignore Warnings: '' + Ignore Default Arguments: '' + Custom External Player Arguments: '' + DefaultCustomArgumentsTemplate: "" + Distraction Free Settings: + Hide Channels: '' + Hide Subscriptions Live: '' + Hide Videos and Playlists Containing Text: '' + Subscription Settings: + Fetch Feeds from RSS: '' + Fetch Automatically: '' + Experimental Settings: + Replace HTTP Cache: '' + SponsorBlock Settings: + UseDeArrowTitles: '' + UseDeArrowThumbnails: '' + +# Toast Messages +Local API Error (Click to copy): '' +Invidious API Error (Click to copy): '' +Falling back to Invidious API: '' +Falling back to Local API: '' +This video is unavailable because of missing formats. This can happen due to country unavailability.: '' +Subscriptions have not yet been implemented: '' +Unknown YouTube url type, cannot be opened in app: '' +Hashtags have not yet been implemented, try again later: '' +Loop is now disabled: '' +Loop is now enabled: '' +Shuffle is now disabled: '' +Shuffle is now enabled: '' +The playlist has been reversed: '' +Playing Next Video: '' +Playing Previous Video: '' +Playlist will not pause when current video is finished: '' +Playlist will pause when current video is finished: '' +Playing Next Video Interval: '' +Canceled next video autoplay: '' + +Default Invidious instance has been set to {instance}: '' +Default Invidious instance has been cleared: '' +'The playlist has ended. Enable loop to continue playing': '' +Age Restricted: + This channel is age restricted: '' + This video is age restricted: '' +External link opening has been disabled in the general settings: '' +'Blocked opening potentially unsafe URL': '' +Downloading has completed: '' +Starting download: '' +Downloading failed: '' +Screenshot Success: '' +Screenshot Error: '' +Channel Hidden: '' +Channel Unhidden: '' +Trimmed input must be at least N characters long: '' +Tag already exists: '' + +Hashtag: + Hashtag: '' + This hashtag does not currently have any videos: '' +Moments Ago: '' +Yes: '' +No: '' +Ok: '' +Yes, Delete: '' +Yes, Restart: '' +Yes, Open Link: '' +Cancel: '' +# symbol used to indicate that an item is correct +checkmark: '' +# French is the only language that should change this (they have a space before the colon) +Display Label: '' From f05549d1f51b25818cbf9572dc17bf79da30d9f3 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:43:40 +0200 Subject: [PATCH 17/74] Specify locale for strings that may differ from the chosen display locale (#5624) --- src/renderer/App.vue | 1 + src/renderer/components/ft-select/ft-select.js | 4 ++++ src/renderer/components/ft-select/ft-select.vue | 1 + src/renderer/components/general-settings/general-settings.vue | 1 + src/renderer/views/About/About.js | 2 +- 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/renderer/App.vue b/src/renderer/App.vue index 93d14723725e7..a0235a5854898 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -23,6 +23,7 @@ > diff --git a/src/renderer/components/ft-select/ft-select.js b/src/renderer/components/ft-select/ft-select.js index 60cdebcaf7cac..80cd726b73a25 100644 --- a/src/renderer/components/ft-select/ft-select.js +++ b/src/renderer/components/ft-select/ft-select.js @@ -47,6 +47,10 @@ export default defineComponent({ iconColor: { type: String, default: null + }, + isLocaleSelector: { + type: Boolean, + default: false } }, emits: ['change'], diff --git a/src/renderer/components/ft-select/ft-select.vue b/src/renderer/components/ft-select/ft-select.vue index 8b6acb20b2316..77f466625b8e3 100644 --- a/src/renderer/components/ft-select/ft-select.vue +++ b/src/renderer/components/ft-select/ft-select.vue @@ -15,6 +15,7 @@ v-for="(name, index) in selectNames" :key="index" :value="selectValues[index]" + :lang="isLocaleSelector && selectValues[index] !== 'system' ? selectValues[index].replace('_', '-') : null" > {{ name }} diff --git a/src/renderer/components/general-settings/general-settings.vue b/src/renderer/components/general-settings/general-settings.vue index 536aa22461f73..2a77422f45959 100644 --- a/src/renderer/components/general-settings/general-settings.vue +++ b/src/renderer/components/general-settings/general-settings.vue @@ -81,6 +81,7 @@ :select-names="localeNames" :select-values="localeOptions" :icon="['fas', 'language']" + is-locale-selector @change="updateCurrentLocale" /> GitHub: FreeTubeApp/FreeTube
${this.$t('About.Licensed under the')} ${this.$t('About.AGPLv3')}` + content: `GitHub: FreeTubeApp/FreeTube
${this.$t('About.Licensed under the')} ${this.$t('About.AGPLv3')}` }, { icon: ['fas', 'file-download'], From eba8cb81e62d7c826bd7832307f1f70b5f7c1f59 Mon Sep 17 00:00:00 2001 From: Rusi Dimitrov Date: Fri, 6 Sep 2024 19:23:05 +0000 Subject: [PATCH 18/74] Translated using Weblate (Bulgarian) Currently translated at 100.0% (873 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bg/ --- static/locales/bg.yaml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/static/locales/bg.yaml b/static/locales/bg.yaml index 39043e62854a0..30d7fc1c3e2c4 100644 --- a/static/locales/bg.yaml +++ b/static/locales/bg.yaml @@ -262,6 +262,7 @@ History: Your history list is currently empty.: 'Плейлиста с история на гледанията е празен.' Search bar placeholder: Търсене в историята Empty Search Message: В историята няма видеа, които да отговарят на търсенето ви + Case Sensitive Search: Главни / малки букви Settings: # On Settings Page Settings: 'Настройки' @@ -970,6 +971,35 @@ Video: Unhide Channel: Показване на канала Hide Channel: Скриване на канала More Options: Още опции + Player: + Audio Tracks: Аудио пътеки + Exit Full Window: Изход от цял екран + Take Screenshot: Екранна снимка + Show Stats: Показване на статистика + Exit Theatre Mode: Изход от широкоекранния режим + Stats: + Stats: Статистика + Video ID: 'Видео ID: {videoId}' + Media Formats: 'Медиен формат: {formats}' + Volume: 'Сила на звука: {volumePercentage}%' + Bandwidth: 'Честотна лента: {bandwidth} kbps' + Buffered: 'Буферирани: {bufferedPercentage}%' + CodecAudio: 'Кодек: {audioCodec} ({audioItag})' + CodecsVideoAudio: 'Кодеци: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + CodecsVideoAudioNoItags: 'Кодеци: {videoCodec} / {audioCodec}' + Resolution: 'Резолюция: {width}x{height}@{frameRate}' + Player Dimensions: 'Размери на плейъра: {width}x{height}' + Bitrate: 'Скорост на предаване: {bitrate} kbps' + Dropped Frames / Total Frames: 'Изпуснати кадри: {droppedFrames} / Общо кадри: + {totalFrames}' + You appear to be offline: Изглежда, че сте офлайн. + Playback will resume automatically when your connection comes back: Възпроизвеждането + ще се възобнови автоматично, когато връзката ви се възстанови. + Skipped segment: Пропуснат сегмент {segmentCategory} + TranslatedCaptionTemplate: '{language} (преведено от "{originalLanguage}")' + Theatre Mode: Широкоекранен режим + Full Window: Цял екран + Hide Stats: Скриване на статистиката Videos: #& Sort By Sort By: @@ -1008,6 +1038,8 @@ Change Format: това видео' Audio formats are not available for this video: 'Аудио форматите не са достъпни за това видео' + Legacy formats are not available for this video: За това видео не са налични наследени + формати Share: Share Video: 'Споделяне на видео' Share Playlist: 'Споделяне на плейлиста' From 32f7587d7ce11e19525c7f038d3e31df102b3c61 Mon Sep 17 00:00:00 2001 From: Riki Shinozaki Date: Sat, 7 Sep 2024 03:43:30 +0000 Subject: [PATCH 19/74] Translated using Weblate (Japanese) Currently translated at 100.0% (873 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/ --- static/locales/ja.yaml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index c9cde59cdbdeb..45fa9ddffbbbf 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -123,7 +123,7 @@ Playlists: '再生リスト' User Playlists: Your Playlists: 'あなたの再生リスト' Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 保存した動画はありません。一覧に表示させるには、ビデオの角にある保存ボタンをクリックします - Playlist Message: + Playlist Message: このページは完全に機能する再生リストを反映していません。保存した動画やお気に入りの動画のみが表示されます。作業が完了すると、現在ここにあるすべての動画は「Favorites」の再生リストに移行されます。 Search bar placeholder: 再生リストの検索 Empty Search Message: この再生リストに、検索に一致する動画はありません @@ -594,7 +594,7 @@ Settings: Experimental Settings: Replace HTTP Cache: HTTP キャッシュの置換 Experimental Settings: 実験中の設定 - Warning: + Warning: これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください! Password Settings: Password Settings: パスワードの設定 @@ -642,7 +642,7 @@ About: Credits: クレジット Translate: 翻訳 room rules: ルームの規則 - Please read the: '次をお読みください:' + Please read the: '次をお読みください:' Chat on Matrix: Matrix でチャット Mastodon: マストドン Email: メールアドレス @@ -814,7 +814,7 @@ Video: opening playlists: 再生リストを開く setting a playback rate: 再生レートの設定 starting video at offset: オフセットで動画の再生 - UnsupportedActionTemplate: '{externalPlayer} はサポートしていません: {action}' + UnsupportedActionTemplate: '{externalPlayer} はサポートしていません: {action}' playlist: 再生リスト video: 動画 OpenInTemplate: '{externalPlayer} で開く' @@ -831,7 +831,7 @@ Video: More Options: その他の設定 Player: Stats: - Dropped Frames / Total Frames: 'コマ落ち: {droppedFrames} / 総フレーム: {totalFrames}' + Dropped Frames / Total Frames: 'コマ落ち: {droppedFrames} / 総コマ数: {totalFrames}' CodecAudio: 'コーデック: {audioCodec} ({audioItag})' CodecsVideoAudio: 'コーデック: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' CodecsVideoAudioNoItags: 'コーデック: {videoCodec} / {audioCodec}' @@ -846,7 +846,7 @@ Video: Stats: 統計 You appear to be offline: オフラインのようです。 Playback will resume automatically when your connection comes back: ネットワーク接続が回復すると再生が自動的に再開されます。 - Skipped segment: '{segmentCategory} セグメントをスキップしました' + Skipped segment: '{segmentCategory} 区分をスキップしました' TranslatedCaptionTemplate: '{language}(「{originalLanguage}」から翻訳)' Audio Tracks: オーディオ トラック Theatre Mode: シアターモード @@ -930,7 +930,7 @@ Comments: Sort by: 並べ替え Show More Replies: 返信をもっと見る And others: その他 - Pinned by: ピン留め + Pinned by: 固定 From {channelName}: '{channelName} から' Member: メンバー Hearted: ハート @@ -1034,7 +1034,7 @@ Tooltips: パスをここで設定できます。 External Player: 外部プレーヤーを選択すると、動画(対応している場合は再生リスト)を開くためのアイコンがサムネイルに表示されます。警告:Invidious の設定は、外部プレーヤーには影響しません。 - DefaultCustomArgumentsTemplate: "(デフォルト: '{defaultCustomArguments}')" + DefaultCustomArgumentsTemplate: "(デフォルト: '{defaultCustomArguments}')" Ignore Default Arguments: 動画の URL 以外のデフォルトの引数(再生速度、再生リストの URL など)を外部プレーヤーに送信しないでください。カスタム引数はそのまま引き継がれます。 Experimental Settings: Replace HTTP Cache: Electron のディスクに基づく HTTP キャッシュを無効化し、メモリ内で独自の画像キャッシュを使用します。このことにより @@ -1044,7 +1044,7 @@ Tooltips: ID は、大文字と小文字を区別するので完全に一致させてください。 Hide Subscriptions Live: この設定は、アプリ全体の "{appWideSetting}" 設定により上書きされます。"{settingsSection}" 項目の "{subsection}" にあります - Hide Videos and Playlists Containing Text: FreeTube + Hide Videos and Playlists Containing Text: FreeTube 全体での履歴やあなたの再生リストと再生リスト内の動画を除き、元のタイトルにその単語を含む動画や単語の一部または、フレーズ(大文字と小文字を区別しない)が含まれているすべての動画と再生リストを非表示にします。 SponsorBlock Settings: UseDeArrowTitles: 動画のタイトルを DeArrow からユーザーが投稿したタイトルに置き換えます。 @@ -1081,9 +1081,9 @@ Clipboard: Cannot access clipboard without a secure connection: 安全な接続でなければクリップボードにはアクセスできません Chapters: Chapters: チャプター - 'Chapters list visible, current chapter: {chapterName}': 'チャプター リストを表示、現在のチャプター: + 'Chapters list visible, current chapter: {chapterName}': 'チャプター リストを表示、現在のチャプター: {chapterName}' - 'Chapters list hidden, current chapter: {chapterName}': 'チャプター リストを非表示、現在のチャプター: + 'Chapters list hidden, current chapter: {chapterName}': 'チャプター リストを非表示、現在のチャプター: {chapterName}' Preferences: 環境設定 Ok: オーケー @@ -1096,7 +1096,7 @@ Close Banner: バナーを閉じる Go to page: '{page} を表示' Search character limit: 検索クエリが {searchCharacterLimit} 文字の制限を超えています Feed: - Feed Last Updated: '{feedName} フィードの最終更新日時: {date}' + Feed Last Updated: '{feedName} フィードの最終更新日時: {date}' Refresh Feed: '{subscriptionName} の更新' Channel Hidden: '{channel} をチャンネルフィルターに追加しました' Channel Unhidden: '{channel} をチャンネルフィルターから削除しました' @@ -1117,5 +1117,5 @@ Age Restricted: This channel is age restricted: このチャンネルには年齢制限があります Trimmed input must be at least N characters long: トリミングされた入力は少なくとも1文字以上でなければなりません | トリミングされた入力は少なくとも {length} 文字以上でなければなりません -'Blocked opening potentially unsafe URL': '安全でない可能性のあるURLをブロックしました: "{url}"。' -Display Label: '{label}: {value}' +'Blocked opening potentially unsafe URL': '安全でない可能性のあるURLをブロックしました: "{url}"。' +Display Label: '{label}:{value}' From 41fe47877a50ccd73f289aef92b048236f4aba44 Mon Sep 17 00:00:00 2001 From: Rusi Dimitrov Date: Sat, 7 Sep 2024 07:28:14 +0000 Subject: [PATCH 20/74] Translated using Weblate (Bulgarian) Currently translated at 100.0% (873 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bg/ --- static/locales/bg.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/static/locales/bg.yaml b/static/locales/bg.yaml index 30d7fc1c3e2c4..14fc00ab3f5aa 100644 --- a/static/locales/bg.yaml +++ b/static/locales/bg.yaml @@ -973,7 +973,7 @@ Video: More Options: Още опции Player: Audio Tracks: Аудио пътеки - Exit Full Window: Изход от цял екран + Exit Full Window: Изход от цял прозорец Take Screenshot: Екранна снимка Show Stats: Показване на статистика Exit Theatre Mode: Изход от широкоекранния режим @@ -987,7 +987,7 @@ Video: CodecAudio: 'Кодек: {audioCodec} ({audioItag})' CodecsVideoAudio: 'Кодеци: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' CodecsVideoAudioNoItags: 'Кодеци: {videoCodec} / {audioCodec}' - Resolution: 'Резолюция: {width}x{height}@{frameRate}' + Resolution: 'Разделителна способност: {width}x{height}@{frameRate}' Player Dimensions: 'Размери на плейъра: {width}x{height}' Bitrate: 'Скорост на предаване: {bitrate} kbps' Dropped Frames / Total Frames: 'Изпуснати кадри: {droppedFrames} / Общо кадри: @@ -998,7 +998,7 @@ Video: Skipped segment: Пропуснат сегмент {segmentCategory} TranslatedCaptionTemplate: '{language} (преведено от "{originalLanguage}")' Theatre Mode: Широкоекранен режим - Full Window: Цял екран + Full Window: Цял прозорец Hide Stats: Скриване на статистиката Videos: #& Sort By From 42781ecb6194495ef89afd3abc85d8878f2f815b Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Sat, 7 Sep 2024 14:57:44 +0200 Subject: [PATCH 21/74] Fix playback of VOD/non-live videos with Invidious (#5654) --- src/renderer/views/Watch/Watch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 60c1fb97712f1..b5edb524224a9 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -1383,7 +1383,7 @@ export default defineComponent({ if (localFormat.has_audio) { audioFormats.push(localFormat) - if (localFormat.is_dubbed || localFormat.is_descriptive || localFormat.is_drc || localFormat.is_secondary) { + if (localFormat.is_dubbed || localFormat.is_descriptive || localFormat.is_secondary) { hasMultipleAudioTracks = true } } From 467f38f6c736a126802d977a81c64d5071064acb Mon Sep 17 00:00:00 2001 From: Amir Miniahmetov Date: Sun, 8 Sep 2024 08:32:19 +0000 Subject: [PATCH 22/74] Translated using Weblate (Russian) Currently translated at 95.8% (837 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/ --- static/locales/ru.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index e993a9ad0f34a..8775ef476a28a 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -81,7 +81,7 @@ Search Filters: # Sidebar There are no more results for this search: Больше выдачи по этому запросу нет Features: - Features: Особенности + Features: Функции HD: HD Subtitles: Субтитры Creative Commons: Creative Commons From a70cc6d509732778eab65d8f0ea11628aeb65ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliaksandr=20Tru=C5=A1?= Date: Sun, 8 Sep 2024 07:56:38 +0000 Subject: [PATCH 23/74] Translated using Weblate (Belarusian) Currently translated at 2.6% (23 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/be/ --- static/locales/be.yaml | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/static/locales/be.yaml b/static/locales/be.yaml index 2b6dae35ff4fe..0bb6a9dea19c3 100644 --- a/static/locales/be.yaml +++ b/static/locales/be.yaml @@ -10,14 +10,14 @@ New Window: 'Новае акно' Preferences: 'Параметры' Quit: 'Выйсці' Edit: 'Рэдагаваць' -Undo: '' -Redo: '' -Cut: '' -Copy: '' -Paste: '' -Delete: '' -Select all: '' -Reload: '' +Undo: 'Адрабіць' +Redo: 'Паўтарыць' +Cut: 'Выразаць' +Copy: 'Скапіяваць' +Paste: 'Уставіць' +Delete: 'Выдаліць' +Select all: 'Вылучыць усё' +Reload: 'Абнавіць' Force Reload: '' Toggle Developer Tools: '' Actual size: '' @@ -26,10 +26,10 @@ Zoom out: '' Toggle fullscreen: '' Window: '' Minimize: '' -Close: '' -Back: '' -Forward: '' -Open New Window: '' +Close: 'Закрыць' +Back: 'Назад' +Forward: 'Наперад' +Open New Window: 'Адкрыць новае акно' Version {versionNumber} is now available! Click for more details: '' Download From Site: '' @@ -39,10 +39,10 @@ Are you sure you want to open this link?: '' # Global # Anything shared among components / views should be put here Global: - Videos: '' + Videos: 'Відэа' Shorts: '' - Live: '' - Community: '' + Live: 'Ужывую' + Community: 'Супольнасць' Counts: Video Count: '' Channel Count: '' @@ -817,3 +817,6 @@ Hashtag: Yes: '' No: '' Ok: '' +Search Listing: + Label: + Subtitles: Субцітры From 4aca4050ec44f2daadb5b80e290d7861569875f4 Mon Sep 17 00:00:00 2001 From: Ettore Atalan Date: Sun, 8 Sep 2024 09:55:20 +0000 Subject: [PATCH 24/74] Translated using Weblate (German) Currently translated at 99.8% (872 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index c3c4db39c523b..2da84c06c983e 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -968,11 +968,16 @@ Video: Bitrate: 'Bitrate: {bitrate} kb/s' Volume: 'Lautstärke: {volumePercentage} %' Bandwidth: 'Bandbreite: {bandwidth} kb/s' - Buffered: 'Pufferspeichern: {bufferedPercentage} %' + Buffered: 'Gepuffert: {bufferedPercentage} %' + CodecAudio: 'Codec: {audioCodec} ({audioItag})' + CodecsVideoAudio: 'Codecs: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + Dropped Frames / Total Frames: 'Ausgelassene Einzelbilder: {droppedFrames} / + Einzelbilder insgesamt: {totalFrames}' + CodecsVideoAudioNoItags: 'Codecs: {videoCodec} / {audioCodec}' You appear to be offline: Sie scheinen offline zu sein. Playback will resume automatically when your connection comes back: Die Wiedergabe wird automatisch wieder aufgenommen, wenn Ihre Verbindung zurückkommt. - Skipped segment: '{segmentCategory}-Segment ausgelassen' + Skipped segment: 'Segment {segmentCategory} übersprungen' TranslatedCaptionTemplate: '{language} (übersetzt von {originalLanguage})' Exit Full Window: Vollständiges Fenster beenden Hide Stats: Statistiken ausblenden @@ -1014,8 +1019,8 @@ Change Format: nicht verfügbar Dash formats are not available for this video: DASH-Formate sind für dieses Video nicht verfügbar - Legacy formats are not available for this video: Legacy-Formate sind nicht verfügbar - für dieses Video + Legacy formats are not available for this video: Ältere Formate sind für dieses + Video nicht verfügbar Share: Share Video: Video teilen Share Playlist: Wiedergabeliste teilen From cfa8457cc8f9c01f2a04ee8654ef5b122e2b50ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliaksandr=20Tru=C5=A1?= Date: Sun, 8 Sep 2024 11:07:58 +0000 Subject: [PATCH 25/74] Translated using Weblate (Belarusian) Currently translated at 8.2% (72 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/be/ --- static/locales/be.yaml | 85 ++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 32 deletions(-) diff --git a/static/locales/be.yaml b/static/locales/be.yaml index 0bb6a9dea19c3..c578636e2fc38 100644 --- a/static/locales/be.yaml +++ b/static/locales/be.yaml @@ -67,19 +67,19 @@ Search Filters: Time: '' Any Time: '' Last Hour: '' - Today: '' + Today: 'Сёння' This Week: '' This Month: '' This Year: '' Type: Type: '' - All Types: '' - Videos: '' - Channels: '' - Movies: '' + All Types: 'Усе тыпы' + Videos: 'Відэа' + Channels: 'Каналы' + Movies: 'Фільмы' #& Playlists Duration: - Duration: '' + Duration: 'Працягласць' All Durations: '' Short (< 4 minutes): '' Medium (4 - 20 minutes): '' @@ -90,12 +90,18 @@ Search Filters: Fetch more results: '' There are no more results for this search: '' # Sidebar + Features: + HD: HD + Subtitles: Субцітры + 3D: 3D + 4K: 4K + HDR: HDR Subscriptions: # On Subscriptions Page - Subscriptions: '' + Subscriptions: 'Падпіскі' # channels that were likely deleted - Error Channels: '' - Latest Subscriptions: '' + Error Channels: 'Каналы з памылкамі' + Latest Subscriptions: 'Апошнія падпіскі' This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '' 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '' Disabled Automatic Fetching: '' @@ -107,44 +113,53 @@ Subscriptions: Load More Posts: '' Subscriptions Tabs: '' All Subscription Tabs Hidden: '' -More: '' +More: 'Больш' Channels: - Channels: '' + Channels: 'Каналы' Title: '' Search bar placeholder: '' Count: '' Empty: '' - Unsubscribe: '' + Unsubscribe: 'Адпісацца' Unsubscribed: '' Unsubscribe Prompt: '' Trending: Trending: '' Default: '' - Music: '' - Gaming: '' - Movies: '' + Music: 'Музыка' + Gaming: 'Гульні' + Movies: 'Фільмы' Trending Tabs: '' Most Popular: '' -Playlists: '' +Playlists: 'Плэй-лісты' User Playlists: - Your Playlists: '' + Your Playlists: 'Вашы плэй-лісты' Playlist Message: '' Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: '' Empty Search Message: '' Search bar placeholder: '' + Create New Playlist: Стварыць новы плэй-ліст + Add to Playlist: Дадаць у плэй-ліст + Add to Favorites: Дадаць у {playlistName} + Remove from Favorites: Выдаліць з {playlistName} + Cancel: Адмена + AddVideoPrompt: + Save: Захаваць + CreatePlaylistPrompt: + Create: Стварыць History: # On History Page - History: '' + History: 'Гісторыя' Watch History: '' Your history list is currently empty.: '' Empty Search Message: '' Search bar placeholder: "" Settings: # On Settings Page - Settings: '' + Settings: 'Налады' The app needs to restart for changes to take effect. Restart and apply change?: '' General Settings: - General Settings: '' + General Settings: 'Агульныя налады' Check for Updates: '' Check for Latest Blog Posts: '' Fallback to Non-Preferred Backend on Failure: '' @@ -267,15 +282,15 @@ Settings: Default Quality: Default Quality: '' Auto: '' - 144p: '' - 240p: '' - 360p: '' - 480p: '' - 720p: '' - 1080p: '' - 1440p: '' - 4k: '' - 8k: '' + 144p: '144p' + 240p: '240p' + 360p: '360p' + 480p: '480p' + 720p: '720p' + 1080p: '1080p' + 1440p: '1440p' + 4k: '4k' + 8k: '8k' Screenshot: Enable: '' Format Label: '' @@ -814,9 +829,15 @@ Screenshot Error: '' Hashtag: Hashtag: '' This hashtag does not currently have any videos: '' -Yes: '' -No: '' -Ok: '' +Yes: 'Так' +No: 'Не' +Ok: 'Ок' Search Listing: Label: Subtitles: Субцітры +Yes, Delete: Так, выдаліць +Feed: + Refresh Feed: Абнавіць {subscriptionName} +Display Label: '{label}: {value}' +Cancel: Адмена +checkmark: ✓ From 1a36dabdabc689fb5eac1c0a02920482dd6ba30b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliaksandr=20Tru=C5=A1?= Date: Sun, 8 Sep 2024 11:27:27 +0000 Subject: [PATCH 26/74] Translated using Weblate (Belarusian) Currently translated at 10.0% (88 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/be/ --- static/locales/be.yaml | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/static/locales/be.yaml b/static/locales/be.yaml index c578636e2fc38..735ec3cc91f76 100644 --- a/static/locales/be.yaml +++ b/static/locales/be.yaml @@ -44,16 +44,16 @@ Global: Live: 'Ужывую' Community: 'Супольнасць' Counts: - Video Count: '' - Channel Count: '' - Subscriber Count: '' - View Count: '' - Watching Count: '' + Video Count: '1 відэа | {count} відэа' + Channel Count: '1 канал | {count} каналы(аў)' + Subscriber Count: '1 падпісчык | {count} падпісчыкі(аў)' + View Count: '1 прагляд | {count} прагляды(аў)' + Watching Count: '1 гледач | {count} гледачы(оў)' # Search Bar -Search / Go to URL: '' +Search / Go to URL: 'Пошук / Перайсці да URL' Search Bar: - Clear Input: '' + Clear Input: 'Ачысціць увод' # In Filter Button Search Filters: Search Filters: '' @@ -460,23 +460,23 @@ Settings: Remove Password: '' About: #On About page - About: '' + About: 'Пра FreeTube' Beta: '' Source code: '' Licensed under the AGPLv3: '' View License: '' Downloads / Changelog: '' GitHub releases: '' - Help: '' - FreeTube Wiki: '' + Help: 'Даведка' + FreeTube Wiki: 'FreeTube Вікі' FAQ: '' Discussions: '' Report a problem: '' GitHub issues: '' Please check for duplicates before posting: '' - Website: '' - Blog: '' - Email: '' + Website: 'Вэб-сайт' + Blog: 'Блог' + Email: 'Электронная пошта' Mastodon: '' Chat on Matrix: '' Please read the: '' @@ -487,6 +487,7 @@ About: these people and projects: '' Donate: '' + AGPLv3: AGPLv3 Profile: Profile Settings: '' Toggle Profile List: '' @@ -835,9 +836,11 @@ Ok: 'Ок' Search Listing: Label: Subtitles: Субцітры + 4K: 4K Yes, Delete: Так, выдаліць Feed: Refresh Feed: Абнавіць {subscriptionName} Display Label: '{label}: {value}' Cancel: Адмена checkmark: ✓ +Close Banner: Закрыць банер From 4c1a5b038b90beb89091aa6d0eb42d74876b2121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Sun, 8 Sep 2024 20:02:43 +0000 Subject: [PATCH 27/74] Translated using Weblate (Estonian) Currently translated at 100.0% (873 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/ --- static/locales/et.yaml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/static/locales/et.yaml b/static/locales/et.yaml index 9be4e0eeef80a..72bb9f3f46e58 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -903,6 +903,35 @@ Video: Unhide Channel: Näita kanalit Hide Channel: Peida kanal More Options: Veel valikuid + Player: + Audio Tracks: Heliribad + Theatre Mode: Teatrivaade + Exit Theatre Mode: Välju teatrivaatest + Full Window: Täisekraanivaade + Take Screenshot: Tee ekraanitõmmis + Show Stats: Näita statistikat + Stats: + Video ID: 'Video tunnus: {videoId}' + Media Formats: 'Meediavormingud: {formats}' + Bitrate: 'Bitikiirus: {bitrate} kbps' + Volume: 'Valjus: {volumePercentage}%' + Bandwidth: 'Ribalaius: {bandwidth} kbps' + Buffered: 'Puhverdatud: {bufferedPercentage}%' + CodecAudio: 'Koodek: {audioCodec} ({audioItag})' + CodecsVideoAudio: 'Koodekid: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})' + CodecsVideoAudioNoItags: 'Koodekid: {videoCodec} / {audioCodec}' + Stats: Statistika + Resolution: 'Mõõdud ja kaadrisagedus: {width}x{height}@{frameRate}' + Player Dimensions: 'Meediamängija mõõdud: {width}x{height}' + Dropped Frames / Total Frames: 'Vahelejäetud kaadreid: {droppedFrames} / Kaadreid + kokku: {totalFrames}' + Skipped segment: Vahelejäetud {segmentCategory} segment + TranslatedCaptionTemplate: '{language} (algne keel „{originalLanguage}“)' + Exit Full Window: Välju täisekraanivaatest + Hide Stats: Peida statistika + Playback will resume automatically when your connection comes back: Taasesitus + jätkub automaatselt niipea, kui sinu seadme võrguühendus taastub. + You appear to be offline: Sa ei tundu olema võrgus. Videos: #& Sort By Sort By: @@ -941,6 +970,8 @@ Change Format: jaoks saadaval' Audio formats are not available for this video: 'Helivormingud ei ole selle video jaoks saadaval' + Legacy formats are not available for this video: Pärandvormingud pole selle video + jaoks saadaval Share: Share Video: 'Jaga videot' Share Playlist: 'Jaga esitusloendit' From afa4fc059f1972feb46e8c53e830334fd75f07b1 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 9 Sep 2024 11:17:59 +0200 Subject: [PATCH 28/74] Use nextTick instead of setTimeout to wait until Vue has rendered changes (#5664) --- src/renderer/components/ft-icon-button/ft-icon-button.js | 4 ++-- .../components/ft-profile-selector/ft-profile-selector.js | 4 ++-- src/renderer/components/ft-toast/ft-toast.js | 4 ++-- .../components/watch-video-info/watch-video-info.js | 4 ++-- .../watch-video-live-chat/watch-video-live-chat.js | 6 +++--- .../components/watch-video-playlist/watch-video-playlist.js | 4 ++-- src/renderer/views/Playlist/Playlist.js | 4 ++-- src/renderer/views/Trending/Trending.js | 6 +++--- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/renderer/components/ft-icon-button/ft-icon-button.js b/src/renderer/components/ft-icon-button/ft-icon-button.js index 90ca0fb20f555..6c12092874425 100644 --- a/src/renderer/components/ft-icon-button/ft-icon-button.js +++ b/src/renderer/components/ft-icon-button/ft-icon-button.js @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { defineComponent, nextTick } from 'vue' import FtPrompt from '../ft-prompt/ft-prompt.vue' import { sanitizeForHtmlId } from '../../helpers/accessibility' @@ -102,7 +102,7 @@ export default defineComponent({ if (this.dropdownShown && !this.useModal) { // wait until the dropdown is visible // then focus it so we can hide it automatically when it loses focus - setTimeout(() => { + nextTick(() => { this.$refs.dropdown?.focus() }) } diff --git a/src/renderer/components/ft-profile-selector/ft-profile-selector.js b/src/renderer/components/ft-profile-selector/ft-profile-selector.js index 3dc775de48391..3e8eeffeb8e93 100644 --- a/src/renderer/components/ft-profile-selector/ft-profile-selector.js +++ b/src/renderer/components/ft-profile-selector/ft-profile-selector.js @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { defineComponent, nextTick } from 'vue' import { mapActions } from 'vuex' import FtCard from '../../components/ft-card/ft-card.vue' @@ -53,7 +53,7 @@ export default defineComponent({ if (this.profileListShown) { // wait until the profile list is visible // then focus it so we can hide it automatically when it loses focus - setTimeout(() => { + nextTick(() => { this.$refs.profileList?.$el?.focus() }) } diff --git a/src/renderer/components/ft-toast/ft-toast.js b/src/renderer/components/ft-toast/ft-toast.js index c85fbf55f65cc..15697ca25061d 100644 --- a/src/renderer/components/ft-toast/ft-toast.js +++ b/src/renderer/components/ft-toast/ft-toast.js @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { defineComponent, nextTick } from 'vue' import FtToastEvents from './ft-toast-events.js' let id = 0 @@ -38,7 +38,7 @@ export default defineComponent({ id: id++ } toast.timeout = setTimeout(this.close, time || 3000, toast) - setTimeout(() => { toast.isOpen = true }) + nextTick(() => { toast.isOpen = true }) if (this.toasts.length > 4) { this.remove(0) } diff --git a/src/renderer/components/watch-video-info/watch-video-info.js b/src/renderer/components/watch-video-info/watch-video-info.js index cab55a969e06c..ed57aa9f23d86 100644 --- a/src/renderer/components/watch-video-info/watch-video-info.js +++ b/src/renderer/components/watch-video-info/watch-video-info.js @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { defineComponent, nextTick } from 'vue' import { mapActions } from 'vuex' import FtCard from '../ft-card/ft-card.vue' import FtIconButton from '../ft-icon-button/ft-icon-button.vue' @@ -274,7 +274,7 @@ export default defineComponent({ if (dropdownShown && window.innerWidth >= 901) { // adds a slight delay so we know that the dropdown has shown up // and won't mess up our scrolling - setTimeout(() => { + nextTick(() => { this.$emit('scroll-to-info-area') }) } diff --git a/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js b/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js index 6a6daaefab93f..973eaddc551a9 100644 --- a/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js +++ b/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { defineComponent, nextTick } from 'vue' import FtLoader from '../ft-loader/ft-loader.vue' import FtCard from '../ft-card/ft-card.vue' import FtButton from '../ft-button/ft-button.vue' @@ -169,7 +169,7 @@ export default defineComponent({ this.isLoading = false - setTimeout(() => { + nextTick(() => { this.$refs.liveChatComments?.scrollTo({ top: this.$refs.liveChatComments.scrollHeight, behavior: 'instant' @@ -278,7 +278,7 @@ export default defineComponent({ this.comments.push(comment) if (!this.isLoading && this.stayAtBottom) { - setTimeout(() => { + nextTick(() => { this.$refs.liveChatComments?.scrollTo({ top: this.$refs.liveChatComments.scrollHeight, behavior: this.scrollingBehaviour diff --git a/src/renderer/components/watch-video-playlist/watch-video-playlist.js b/src/renderer/components/watch-video-playlist/watch-video-playlist.js index e9fad636e8999..ec0ccd27cfc1c 100644 --- a/src/renderer/components/watch-video-playlist/watch-video-playlist.js +++ b/src/renderer/components/watch-video-playlist/watch-video-playlist.js @@ -289,9 +289,9 @@ export default defineComponent({ // Create a new array to avoid changing array in data store state // it could be user playlist or cache playlist this.playlistItems = this.playlistItems.toReversed() - setTimeout(() => { + nextTick(() => { this.isLoading = false - }, 1) + }) }, togglePauseOnCurrentVideo: function () { diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js index fc7c8c798b431..7e838e955c0b0 100644 --- a/src/renderer/views/Playlist/Playlist.js +++ b/src/renderer/views/Playlist/Playlist.js @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { defineComponent, nextTick } from 'vue' import { mapActions, mapMutations } from 'vuex' import debounce from 'lodash.debounce' import FtLoader from '../../components/ft-loader/ft-loader.vue' @@ -427,7 +427,7 @@ export default defineComponent({ // Stop users from spamming the load more button, by replacing it with a loading symbol until the newly added items are renderered this.isLoadingMore = true - setTimeout(() => { + nextTick(() => { if (this.userPlaylistVisibleLimit + 100 < this.videoCount) { this.userPlaylistVisibleLimit += 100 } else { diff --git a/src/renderer/views/Trending/Trending.js b/src/renderer/views/Trending/Trending.js index a8717845ada1f..533f9cf8b56e5 100644 --- a/src/renderer/views/Trending/Trending.js +++ b/src/renderer/views/Trending/Trending.js @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { defineComponent, nextTick } from 'vue' import { mapActions, mapMutations } from 'vuex' import FtCard from '../../components/ft-card/ft-card.vue' import FtLoader from '../../components/ft-loader/ft-loader.vue' @@ -110,7 +110,7 @@ export default defineComponent({ this.trendingInstance = instance this.$store.commit('setTrendingCache', { value: results, page: this.currentTab }) - setTimeout(() => { + nextTick(() => { this.$refs[this.currentTab]?.focus() }) } catch (err) { @@ -158,7 +158,7 @@ export default defineComponent({ this.shownResults = returnData this.isLoading = false this.$store.commit('setTrendingCache', { value: returnData, page: this.currentTab }) - setTimeout(() => { + nextTick(() => { this.$refs[this.currentTab]?.focus() }) }).catch((err) => { From d9b4d13233658a10746374ee82ead03d19ee7ece Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 9 Sep 2024 11:32:17 +0200 Subject: [PATCH 29/74] Cleanup a few vue-i18n usages (#5663) --- src/renderer/helpers/player/utils.js | 2 +- src/renderer/views/Channel/Channel.js | 4 ++-- src/renderer/views/Watch/Watch.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/renderer/helpers/player/utils.js b/src/renderer/helpers/player/utils.js index 9aeb4509486ef..59134b998d7c7 100644 --- a/src/renderer/helpers/player/utils.js +++ b/src/renderer/helpers/player/utils.js @@ -104,7 +104,7 @@ export function translateSponsorBlockCategory(category) { case 'outro': return i18n.t('Video.Sponsor Block category.outro') case 'recap': - return this.$t('Video.Sponsor Block category.recap') + return i18n.t('Video.Sponsor Block category.recap') case 'selfpromo': return i18n.t('Video.Sponsor Block category.self-promotion') case 'interaction': diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index 8116dbb705fe6..453beae69f301 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -328,7 +328,7 @@ export default defineComponent({ if (this.id === '@@@') { this.showShareMenu = false - this.setErrorMessage(this.$i18n.t('Channel.This channel does not exist')) + this.setErrorMessage(this.$t('Channel.This channel does not exist')) return } @@ -427,7 +427,7 @@ export default defineComponent({ if (this.id === '@@@') { this.showShareMenu = false - this.setErrorMessage(this.$i18n.t('Channel.This channel does not exist')) + this.setErrorMessage(this.$t('Channel.This channel does not exist')) return } diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index b5edb524224a9..f25e22cd92de0 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -1497,7 +1497,7 @@ export default defineComponent({ let translationName, translationCode // otherwise just fallback to the FreeTube display language and hope that YouTube will be able to handle it if (!translationLanguage) { - translationName = this.$i18n.t('Locale Name') + translationName = this.$t('Locale Name') translationCode = userLanguages.values().next() } else { translationName = translationLanguage.language_name.text From c542a0d5a4e5f359a4989aaa255971ccb087683c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 07:06:04 -0400 Subject: [PATCH 30/74] Bump the eslint group with 2 updates (#5668) Bumps the eslint group with 2 updates: [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) and [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue). Updates `eslint-plugin-import` from 2.29.1 to 2.30.0 - [Release notes](https://github.com/import-js/eslint-plugin-import/releases) - [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md) - [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.29.1...v2.30.0) Updates `eslint-plugin-vue` from 9.27.0 to 9.28.0 - [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases) - [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v9.27.0...v9.28.0) --- updated-dependencies: - dependency-name: eslint-plugin-import dependency-type: direct:development update-type: version-update:semver-minor dependency-group: eslint - dependency-name: eslint-plugin-vue dependency-type: direct:development update-type: version-update:semver-minor dependency-group: eslint ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 4 +- yarn.lock | 557 ++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 486 insertions(+), 75 deletions(-) diff --git a/package.json b/package.json index cf93e6ce8a487..369fe121f6bff 100644 --- a/package.json +++ b/package.json @@ -92,13 +92,13 @@ "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import": "^2.30.0", "eslint-plugin-jsonc": "^2.16.0", "eslint-plugin-n": "^17.10.2", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-promise": "^7.1.0", "eslint-plugin-unicorn": "^55.0.0", - "eslint-plugin-vue": "^9.27.0", + "eslint-plugin-vue": "^9.28.0", "eslint-plugin-vuejs-accessibility": "^2.4.1", "eslint-plugin-yml": "^1.14.0", "html-webpack-plugin": "^5.6.0", diff --git a/yarn.lock b/yarn.lock index 25c09d9bcaec0..b8136c9375e6f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1544,6 +1544,11 @@ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + "@seald-io/binary-search-tree@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@seald-io/binary-search-tree/-/binary-search-tree-1.0.3.tgz#165a9a456eaa30d15885b25db83861bcce2c6a74" @@ -2228,20 +2233,29 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-includes@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== +array-includes@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" is-string "^1.0.7" array-union@^2.1.0: @@ -2249,16 +2263,17 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== +array.prototype.findlastindex@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" array.prototype.flat@^1.3.2: version "1.3.2" @@ -2293,6 +2308,20 @@ arraybuffer.prototype.slice@^1.0.2: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" @@ -2335,6 +2364,13 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + babel-loader@^9.1.3: version "9.1.3" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" @@ -2597,6 +2633,17 @@ call-bind@^1.0.4, call-bind@^1.0.5: get-intrinsic "^1.2.1" set-function-length "^1.1.1" +call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -3100,6 +3147,33 @@ csstype@^3.1.0: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3167,6 +3241,15 @@ define-data-property@^1.0.1, define-data-property@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" @@ -3188,6 +3271,15 @@ define-properties@^1.2.0: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -3637,11 +3729,82 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.13" +es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + 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.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + 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.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.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-module-lexer@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -3651,6 +3814,15 @@ es-set-tostringtag@^2.0.1: has "^1.0.3" has-tostringtag "^1.0.0" +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -3658,6 +3830,13 @@ es-shim-unscopables@^1.0.0: dependencies: has "^1.0.3" +es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3738,10 +3917,10 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== +eslint-module-utils@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz#b99b211ca4318243f09661fae088f373ad5243c4" + integrity sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ== dependencies: debug "^3.2.7" @@ -3754,26 +3933,27 @@ eslint-plugin-es-x@^7.5.0: "@eslint-community/regexpp" "^4.6.0" eslint-compat-utils "^0.1.2" -eslint-plugin-import@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== +eslint-plugin-import@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" + integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== 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-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" + eslint-module-utils "^2.9.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" @@ -3839,17 +4019,17 @@ eslint-plugin-unicorn@^55.0.0: semver "^7.6.1" strip-indent "^3.0.0" -eslint-plugin-vue@^9.27.0: - version "9.27.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz#c22dae704a03d9ecefa81364ff89f60ce0481f94" - integrity sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA== +eslint-plugin-vue@^9.28.0: + version "9.28.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz#e4412f0c1024bafd15ffeaa6f76f4c99152e2765" + integrity sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g== dependencies: "@eslint-community/eslint-utils" "^4.4.0" globals "^13.24.0" natural-compare "^1.4.0" nth-check "^2.1.1" postcss-selector-parser "^6.0.15" - semver "^7.6.0" + semver "^7.6.3" vue-eslint-parser "^9.4.3" xml-name-validator "^4.0.0" @@ -4421,6 +4601,17 @@ get-intrinsic@^1.2.2: has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -4441,6 +4632,15 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + get-tsconfig@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.0.tgz#06ce112a1463e93196aa90320c35df5039147e34" @@ -4649,11 +4849,23 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -4666,6 +4878,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -4678,10 +4897,10 @@ hash-sum@^1.0.2: resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" @@ -4956,6 +5175,15 @@ internal-slot@^1.0.5: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + interpret@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" @@ -4997,6 +5225,14 @@ is-array-buffer@^3.0.2: get-intrinsic "^1.2.0" is-typed-array "^1.1.10" +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -5048,12 +5284,19 @@ is-ci@^3.0.0: dependencies: ci-info "^3.2.0" -is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== +is-core-module@^2.13.0, is-core-module@^2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" + +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" is-date-object@^1.0.1: version "1.0.5" @@ -5115,6 +5358,11 @@ is-negative-zero@^2.0.2: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-network-error@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.0.1.tgz#a68061a20387e9144e145571bea693056a370b92" @@ -5174,6 +5422,13 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" +is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -5211,6 +5466,13 @@ is-typed-array@^1.1.12: dependencies: which-typed-array "^1.1.11" +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-typed-array@^1.1.3, is-typed-array@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" @@ -6058,33 +6320,43 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== +object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" -object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== +object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" -object.values@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== +object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.values@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" @@ -6377,6 +6649,11 @@ portal-vue@^2.1.7: resolved "https://registry.yarnpkg.com/portal-vue/-/portal-vue-2.1.7.tgz#ea08069b25b640ca08a5b86f67c612f15f4e4ad4" integrity sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss-calc@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-10.0.0.tgz#aca29a1c66dd481ca30d08f6932b1274a1003716" @@ -6905,6 +7182,16 @@ regexp.prototype.flags@^1.5.1: define-properties "^1.2.0" set-function-name "^2.0.0" +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + regexpu-core@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" @@ -7100,6 +7387,16 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -7119,6 +7416,15 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -7199,10 +7505,10 @@ semver@^6.2.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.1: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== +semver@^7.3.2, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.1, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== send@0.18.0: version "0.18.0" @@ -7270,6 +7576,18 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + 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.2" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -7279,6 +7597,16 @@ set-function-name@^2.0.0: functions-have-names "^1.2.3" has-property-descriptors "^1.0.0" +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -7542,6 +7870,16 @@ string.prototype.trim@^1.2.8: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -7560,6 +7898,15 @@ string.prototype.trimend@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" @@ -7578,6 +7925,15 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -7995,6 +8351,15 @@ typed-array-buffer@^1.0.0: get-intrinsic "^1.2.1" is-typed-array "^1.1.10" +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + typed-array-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" @@ -8005,6 +8370,17 @@ typed-array-byte-length@^1.0.0: has-proto "^1.0.1" is-typed-array "^1.1.10" +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + typed-array-byte-offset@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" @@ -8016,6 +8392,18 @@ typed-array-byte-offset@^1.0.0: has-proto "^1.0.1" is-typed-array "^1.1.10" +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -8025,6 +8413,18 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + typescript@^4.0.2: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" @@ -8417,6 +8817,17 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.13: gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + which-typed-array@^1.1.2: version "1.1.8" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" From 45557d081d7753e58353f6a09a8ec0f9bd2a59fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 07:06:22 -0400 Subject: [PATCH 31/74] Bump postcss from 8.4.44 to 8.4.45 in the stylelint group (#5669) Bumps the stylelint group with 1 update: [postcss](https://github.com/postcss/postcss). Updates `postcss` from 8.4.44 to 8.4.45 - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.44...8.4.45) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:development update-type: version-update:semver-patch dependency-group: stylelint ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 369fe121f6bff..3c4204d047697 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "lefthook": "^1.7.15", "mini-css-extract-plugin": "^2.9.1", "npm-run-all2": "^6.2.2", - "postcss": "^8.4.44", + "postcss": "^8.4.45", "postcss-scss": "^4.0.9", "prettier": "^2.8.8", "rimraf": "^6.0.1", diff --git a/yarn.lock b/yarn.lock index b8136c9375e6f..5db16cd0ae936 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6919,10 +6919,10 @@ postcss@^7.0.36: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.41, postcss@^8.4.44: - version "8.4.44" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.44.tgz#d56834ef6508610ba224bb22b2457b2169ed0480" - integrity sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw== +postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.41, postcss@^8.4.45: + version "8.4.45" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603" + integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q== dependencies: nanoid "^3.3.7" picocolors "^1.0.1" From f7df30c023d795feec679b7f3b47c3f9a7d2ac88 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 07:06:47 -0400 Subject: [PATCH 32/74] Bump marked from 14.1.0 to 14.1.2 (#5670) Bumps [marked](https://github.com/markedjs/marked) from 14.1.0 to 14.1.2. - [Release notes](https://github.com/markedjs/marked/releases) - [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json) - [Commits](https://github.com/markedjs/marked/compare/v14.1.0...v14.1.2) --- updated-dependencies: - dependency-name: marked dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3c4204d047697..b82aa333904bf 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "autolinker": "^4.0.0", "electron-context-menu": "^4.0.4", "lodash.debounce": "^4.0.8", - "marked": "^14.1.0", + "marked": "^14.1.2", "path-browserify": "^1.0.1", "portal-vue": "^2.1.7", "process": "^0.11.10", diff --git a/yarn.lock b/yarn.lock index 5db16cd0ae936..bd8f85c5fac18 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5950,10 +5950,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -marked@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-14.1.0.tgz#736ae774ff06ddf03e55a071f9322fe240cb89cb" - integrity sha512-P93GikH/Pde0hM5TAXEd8I4JAYi8IB03n8qzW8Bh1BIEFpEyBoYxi/XWZA53LSpTeLBiMQOoSMj0u5E/tiVYTA== +marked@^14.1.2: + version "14.1.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-14.1.2.tgz#3cbc26b2d6832be32b75ae0746e0968c781b6156" + integrity sha512-f3r0yqpz31VXiDB/wj9GaOB0a2PRLQl6vJmXiFrniNwjkKdvakqJRULhjFKJpxOchlCRiG5fcacoUZY5Xa6PEQ== matcher@^3.0.0: version "3.0.0" From 766582edc252e9a124b9e71786c79fc6c4013cb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 07:07:14 -0400 Subject: [PATCH 33/74] Bump electron from 32.0.1 to 32.0.2 (#5671) Bumps [electron](https://github.com/electron/electron) from 32.0.1 to 32.0.2. - [Release notes](https://github.com/electron/electron/releases) - [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) - [Commits](https://github.com/electron/electron/compare/v32.0.1...v32.0.2) --- updated-dependencies: - dependency-name: electron dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b82aa333904bf..33e1d3d5dad6f 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "copy-webpack-plugin": "^12.0.2", "css-loader": "^7.1.2", "css-minimizer-webpack-plugin": "^7.0.0", - "electron": "^32.0.1", + "electron": "^32.0.2", "electron-builder": "^24.13.3", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", diff --git a/yarn.lock b/yarn.lock index bd8f85c5fac18..4deb17171e5c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3534,10 +3534,10 @@ electron-to-chromium@^1.5.4: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== -electron@^32.0.1: - version "32.0.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-32.0.1.tgz#8bfc186b81a645c6b3b12f91e71db4231fd0c934" - integrity sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA== +electron@^32.0.2: + version "32.0.2" + resolved "https://registry.yarnpkg.com/electron/-/electron-32.0.2.tgz#ea0682fa719dfc2f91b026a54bab2fd25a9a9324" + integrity sha512-nmZblq8wW3HZ17MAyaUuiMI9Mb0Cgc7UR3To85h/rVopbfyF5s34NxtK4gvyRfYPxpDGP4k+HoQIPniPPrdE3w== dependencies: "@electron/get" "^2.0.0" "@types/node" "^20.9.0" From c53b117d1450bfe80b7aec60d1142840a9638075 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 07:07:54 -0400 Subject: [PATCH 34/74] Bump sass from 1.77.8 to 1.78.0 (#5673) Bumps [sass](https://github.com/sass/dart-sass) from 1.77.8 to 1.78.0. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.77.8...1.78.0) --- updated-dependencies: - dependency-name: sass dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 33e1d3d5dad6f..02074ea868c68 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "postcss-scss": "^4.0.9", "prettier": "^2.8.8", "rimraf": "^6.0.1", - "sass": "^1.77.8", + "sass": "^1.78.0", "sass-loader": "^16.0.1", "stylelint": "^16.9.0", "stylelint-config-sass-guidelines": "^12.0.0", diff --git a/yarn.lock b/yarn.lock index 4deb17171e5c9..48dbf727d2754 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7444,10 +7444,10 @@ sass-loader@^16.0.1: dependencies: neo-async "^2.6.2" -sass@^1.77.8: - version "1.77.8" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd" - integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ== +sass@^1.78.0: + version "1.78.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.78.0.tgz#cef369b2f9dc21ea1d2cf22c979f52365da60841" + integrity sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From b892fb0c301c7a5baacbb090bb06cb0f2ec8ed59 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 9 Sep 2024 14:50:51 +0200 Subject: [PATCH 35/74] Rewrite locale file updating to be more Vue 3 friendly (#5660) --- _scripts/ProcessLocalesPlugin.js | 23 +++++------------------ _scripts/_hotReloadLocalesScript.js | 18 ------------------ src/renderer/i18n/index.js | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 36 deletions(-) delete mode 100644 _scripts/_hotReloadLocalesScript.js diff --git a/_scripts/ProcessLocalesPlugin.js b/_scripts/ProcessLocalesPlugin.js index e3b2dd7a88cf9..51ff870c698f3 100644 --- a/_scripts/ProcessLocalesPlugin.js +++ b/_scripts/ProcessLocalesPlugin.js @@ -40,17 +40,17 @@ class ProcessLocalesPlugin { /** @type {(updatedLocales: [string, string][]) => void|null} */ this.notifyLocaleChange = null - if (this.hotReload) { - this.hotReloadScript = readFileSync(`${__dirname}/_hotReloadLocalesScript.js`, 'utf-8') - } - this.loadLocales() } /** @param {import('webpack').Compiler} compiler */ apply(compiler) { const { CachedSource, RawSource } = compiler.webpack.sources; - const { Compilation } = compiler.webpack + const { Compilation, DefinePlugin } = compiler.webpack + + new DefinePlugin({ + 'process.env.HOT_RELOAD_LOCALES': this.hotReload + }).apply(compiler) compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => { const IS_DEV_SERVER = !!compiler.watching @@ -136,19 +136,6 @@ class ProcessLocalesPlugin { compilation.fileDependencies.addAll(this.filePaths) } }) - - compiler.hooks.emit.tap(PLUGIN_NAME, (compilation) => { - if (this.hotReload) { - // Find generated JavaScript output file (e.g. renderer.js or web.js) - // and inject the code snippet that listens for locale updates and replaces vue-i18n's locales - - /** @type {string} */ - const filename = [...[...compilation.chunks][0].files] - .find(file => file.endsWith('.js')) - - compilation.assets[filename]._source._children.push(`\n${this.hotReloadScript}`) - } - }) } loadLocales() { diff --git a/_scripts/_hotReloadLocalesScript.js b/_scripts/_hotReloadLocalesScript.js deleted file mode 100644 index 8cbfb6ef8812d..0000000000000 --- a/_scripts/_hotReloadLocalesScript.js +++ /dev/null @@ -1,18 +0,0 @@ -const websocket = new WebSocket('ws://localhost:9080/ws') - -websocket.onmessage = (event) => { - const message = JSON.parse(event.data) - - if (message.type === 'freetube-locale-update') { - const i18n = document.getElementById('app').__vue__.$i18n - - for (const [locale, data] of message.data) { - // Only update locale data if it was already loaded - if (i18n.availableLocales.includes(locale)) { - const localeData = JSON.parse(data) - - i18n.setLocaleMessage(locale, localeData) - } - } - } -} diff --git a/src/renderer/i18n/index.js b/src/renderer/i18n/index.js index 79cb207788798..3feed824a7cce 100644 --- a/src/renderer/i18n/index.js +++ b/src/renderer/i18n/index.js @@ -50,4 +50,24 @@ export async function loadLocale(locale) { i18n.setLocaleMessage(locale, data) } +// Set by _scripts/ProcessLocalesPlugin.js +if (process.env.HOT_RELOAD_LOCALES) { + const websocket = new WebSocket('ws://localhost:9080/ws') + + websocket.onmessage = (event) => { + const message = JSON.parse(event.data) + + if (message.type === 'freetube-locale-update') { + for (const [locale, data] of message.data) { + // Only update locale data if it was already loaded + if (i18n.availableLocales.includes(locale)) { + const localeData = JSON.parse(data) + + i18n.setLocaleMessage(locale, localeData) + } + } + } + } +} + export default i18n From 15cb5fc561a486724c0f33ae16a94baa7520afb0 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 9 Sep 2024 16:06:05 +0200 Subject: [PATCH 36/74] Use auto-generated playlists for the videos tab on artist topic channels (#5661) --- .../subscriptions-live/subscriptions-live.js | 12 +- .../subscriptions-shorts.js | 11 +- .../subscriptions-videos.js | 12 +- src/renderer/helpers/api/local.js | 17 +++ src/renderer/helpers/utils.js | 41 +++++++ src/renderer/views/Channel/Channel.js | 110 +++++++++++++----- 6 files changed, 164 insertions(+), 39 deletions(-) diff --git a/src/renderer/components/subscriptions-live/subscriptions-live.js b/src/renderer/components/subscriptions-live/subscriptions-live.js index 625da4a0096a6..ab3e8d0e74747 100644 --- a/src/renderer/components/subscriptions-live/subscriptions-live.js +++ b/src/renderer/components/subscriptions-live/subscriptions-live.js @@ -2,7 +2,13 @@ import { defineComponent } from 'vue' import { mapActions, mapMutations } from 'vuex' import SubscriptionsTabUI from '../subscriptions-tab-ui/subscriptions-tab-ui.vue' -import { setPublishedTimestampsInvidious, copyToClipboard, getRelativeTimeFromDate, showToast } from '../../helpers/utils' +import { + getChannelPlaylistId, + setPublishedTimestampsInvidious, + copyToClipboard, + getRelativeTimeFromDate, + showToast +} from '../../helpers/utils' import { invidiousAPICall, invidiousFetch } from '../../helpers/api/invidious' import { getLocalChannelLiveStreams } from '../../helpers/api/local' import { parseYouTubeRSSFeed, updateVideoListAfterProcessing } from '../../helpers/subscriptions' @@ -244,7 +250,7 @@ export default defineComponent({ }, getChannelLiveLocalRSS: async function (channel, failedAttempts = 0) { - const playlistId = channel.id.replace('UC', 'UULV') + const playlistId = getChannelPlaylistId(channel.id, 'live', 'newest') const feedUrl = `https://www.youtube.com/feeds/videos.xml?playlist_id=${playlistId}` try { @@ -353,7 +359,7 @@ export default defineComponent({ }, getChannelLiveInvidiousRSS: async function (channel, failedAttempts = 0) { - const playlistId = channel.id.replace('UC', 'UULV') + const playlistId = getChannelPlaylistId(channel.id, 'live', 'newest') const feedUrl = `${this.currentInvidiousInstanceUrl}/feed/playlist/${playlistId}` try { diff --git a/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js b/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js index 317e54b2a5416..101687cccd79f 100644 --- a/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js +++ b/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js @@ -3,7 +3,12 @@ import { mapActions, mapMutations } from 'vuex' import SubscriptionsTabUI from '../subscriptions-tab-ui/subscriptions-tab-ui.vue' import { parseYouTubeRSSFeed, updateVideoListAfterProcessing } from '../../helpers/subscriptions' -import { copyToClipboard, getRelativeTimeFromDate, showToast } from '../../helpers/utils' +import { + copyToClipboard, + getChannelPlaylistId, + getRelativeTimeFromDate, + showToast +} from '../../helpers/utils' import { invidiousFetch } from '../../helpers/api/invidious' export default defineComponent({ @@ -182,7 +187,7 @@ export default defineComponent({ }, getChannelShortsLocal: async function (channel, failedAttempts = 0) { - const playlistId = channel.id.replace('UC', 'UUSH') + const playlistId = getChannelPlaylistId(channel.id, 'shorts', 'newest') const feedUrl = `https://www.youtube.com/feeds/videos.xml?playlist_id=${playlistId}` try { @@ -231,7 +236,7 @@ export default defineComponent({ }, getChannelShortsInvidious: async function (channel, failedAttempts = 0) { - const playlistId = channel.id.replace('UC', 'UUSH') + const playlistId = getChannelPlaylistId(channel.id, 'shorts', 'newest') const feedUrl = `${this.currentInvidiousInstanceUrl}/feed/playlist/${playlistId}` try { diff --git a/src/renderer/components/subscriptions-videos/subscriptions-videos.js b/src/renderer/components/subscriptions-videos/subscriptions-videos.js index 395c591756565..d11120615fc23 100644 --- a/src/renderer/components/subscriptions-videos/subscriptions-videos.js +++ b/src/renderer/components/subscriptions-videos/subscriptions-videos.js @@ -2,7 +2,13 @@ import { defineComponent } from 'vue' import { mapActions, mapMutations } from 'vuex' import SubscriptionsTabUI from '../subscriptions-tab-ui/subscriptions-tab-ui.vue' -import { setPublishedTimestampsInvidious, copyToClipboard, getRelativeTimeFromDate, showToast } from '../../helpers/utils' +import { + setPublishedTimestampsInvidious, + copyToClipboard, + getRelativeTimeFromDate, + showToast, + getChannelPlaylistId +} from '../../helpers/utils' import { invidiousAPICall, invidiousFetch } from '../../helpers/api/invidious' import { getLocalChannelVideos } from '../../helpers/api/local' import { parseYouTubeRSSFeed, updateVideoListAfterProcessing } from '../../helpers/subscriptions' @@ -248,7 +254,7 @@ export default defineComponent({ }, getChannelVideosLocalRSS: async function (channel, failedAttempts = 0) { - const playlistId = channel.id.replace('UC', 'UULF') + const playlistId = getChannelPlaylistId(channel.id, 'videos', 'newest') const feedUrl = `https://www.youtube.com/feeds/videos.xml?playlist_id=${playlistId}` try { @@ -354,7 +360,7 @@ export default defineComponent({ }, getChannelVideosInvidiousRSS: async function (channel, failedAttempts = 0) { - const playlistId = channel.id.replace('UC', 'UULF') + const playlistId = getChannelPlaylistId(channel.id, 'videos', 'newest') const feedUrl = `${this.currentInvidiousInstanceUrl}/feed/playlist/${playlistId}` try { diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js index 12ddbf6cb3fbf..ba9a260f7c3cf 100644 --- a/src/renderer/helpers/api/local.js +++ b/src/renderer/helpers/api/local.js @@ -8,6 +8,7 @@ import { calculatePublishedDate, escapeHTML, extractNumberFromString, + getChannelPlaylistId, randomArrayItem, toLocalePublicationString } from '../utils' @@ -397,6 +398,21 @@ export async function getLocalChannelVideos(id) { // so we need to check that we got the right tab if (videosTab.current_tab?.endpoint.metadata.url?.endsWith('/videos')) { videos = parseLocalChannelVideos(videosTab.videos, channelId, name) + } else if (name.endsWith('- Topic') && !!videosTab.metadata.music_artist_name) { + try { + const playlist = await innertube.getPlaylist(getChannelPlaylistId(channelId, 'videos', 'newest')) + + videos = playlist.items.map(parseLocalPlaylistVideo) + } catch (error) { + // If the channel doesn't exist, the API call to channel page above would have already failed, + // so if we get an error that the playlist doesn't exist here, it just means that this artist topic channel + // doesn't have any videos. + if (error.message === 'The playlist does not exist.') { + videos = [] + } else { + throw error + } + } } else { videos = [] } @@ -922,6 +938,7 @@ export function parseLocalPlaylistVideo(video) { ) return { + type: 'video', videoId: video_.id, title: video_.title.text, author: video_.author.name, diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js index cc02b4c60d9c2..08203d0b6ca24 100644 --- a/src/renderer/helpers/utils.js +++ b/src/renderer/helpers/utils.js @@ -852,3 +852,44 @@ export function base64EncodeUtf8(text) { const binString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join('') return btoa(binString) } + +/** + * @overload + * @param {string} channelId + * @param {'videos' | 'live' | 'shorts'} type + * @param {'newest' | 'popular'} sortBy + * @returns {string} + * + * @overload + * @param {string} channelId + * @param {'all'} type + * @returns {string} +* + * @param {string} channelId + * @param {'all' | 'videos' | 'live' | 'shorts'} type + * @param {'newest' | 'popular'} sortBy + */ +export function getChannelPlaylistId(channelId, type, sortBy) { + switch (type) { + case 'videos': + if (sortBy === 'popular') { + return channelId.replace(/^UC/, 'UULP') + } else { + return channelId.replace(/^UC/, 'UULF') + } + case 'live': + if (sortBy === 'popular') { + return channelId.replace(/^UC/, 'UULV') + } else { + return channelId.replace(/^UC/, 'UUPV') + } + case 'shorts': + if (sortBy === 'popular') { + return channelId.replace(/^UC/, 'UUPS') + } else { + return channelId.replace(/^UC/, 'UUSH') + } + case 'all': + return channelId.replace(/^UC/, 'UU') + } +} diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index 453beae69f301..96730bdcd1543 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -16,6 +16,7 @@ import { copyToClipboard, extractNumberFromString, showToast, + getChannelPlaylistId, getIconForSortPreference } from '../../helpers/utils' import { isNullOrEmpty } from '../../helpers/strings' @@ -39,7 +40,9 @@ import { parseLocalListPlaylist, parseLocalListVideo, parseLocalSubscriberCount, - getLocalArtistTopicChannelReleasesContinuation + getLocalArtistTopicChannelReleasesContinuation, + getLocalPlaylist, + parseLocalPlaylistVideo } from '../../helpers/api/local' export default defineComponent({ @@ -107,11 +110,6 @@ export default defineComponent({ errorMessage: '', showSearchBar: true, showShareMenu: true, - videoLiveShortSelectValues: [ - 'newest', - 'popular', - 'oldest' - ], playlistSelectValues: [ 'newest', 'last' @@ -178,7 +176,29 @@ export default defineComponent({ return profileList[0].subscriptions.some((channel) => channel.id === this.id) }, + videoLiveShortSelectValues: function () { + if (this.isArtistTopicChannel) { + return [ + 'newest', + 'popular', + ] + } + + return [ + 'newest', + 'popular', + 'oldest' + ] + }, + videoLiveShortSelectNames: function () { + if (this.isArtistTopicChannel) { + return [ + this.$t('Channel.Videos.Sort Types.Newest'), + this.$t('Channel.Videos.Sort Types.Most Popular'), + ] + } + return [ this.$t('Channel.Videos.Sort Types.Newest'), this.$t('Channel.Videos.Sort Types.Most Popular'), @@ -617,7 +637,7 @@ export default defineComponent({ } const tabs = ['about'] - if (channel.has_videos) { + if (channel.has_videos || this.isArtistTopicChannel) { tabs.push('videos') this.getChannelVideosLocal() } @@ -691,7 +711,7 @@ export default defineComponent({ } }, - getChannelAboutLocal: async function (channel) { + getChannelAboutLocal: async function () { try { /** * @type {import('youtubei.js').YT.Channel} @@ -749,26 +769,43 @@ export default defineComponent({ const expectedId = this.id try { - /** - * @type {import('youtubei.js').YT.Channel} - */ - const channel = this.channelInstance - let videosTab = await channel.getVideos() + if (this.isArtistTopicChannel) { + // Artist topic channels don't have a videos tab. + // Interestingly the auto-generated uploads playlists do exist for those channels, + // so we'll use them instead. - this.showVideoSortBy = videosTab.filters.length > 1 + const playlistId = getChannelPlaylistId(this.id, 'videos', this.videoSortBy) + const playlist = await getLocalPlaylist(playlistId) - if (this.showVideoSortBy && this.videoSortBy !== 'newest') { - const index = this.videoLiveShortSelectValues.indexOf(this.videoSortBy) - videosTab = await videosTab.applyFilter(videosTab.filters[index]) - } + if (expectedId !== this.id) { + return + } - if (expectedId !== this.id) { - return - } + this.latestVideos = playlist.items.map(parseLocalPlaylistVideo) + this.videoContinuationData = playlist.has_continuation ? playlist : null + this.isElementListLoading = false + } else { + /** + * @type {import('youtubei.js').YT.Channel} + */ + const channel = this.channelInstance + let videosTab = await channel.getVideos() - this.latestVideos = parseLocalChannelVideos(videosTab.videos, this.id, this.channelName) - this.videoContinuationData = videosTab.has_continuation ? videosTab : null - this.isElementListLoading = false + this.showVideoSortBy = videosTab.filters.length > 1 + + if (this.showVideoSortBy && this.videoSortBy !== 'newest') { + const index = this.videoLiveShortSelectValues.indexOf(this.videoSortBy) + videosTab = await videosTab.applyFilter(videosTab.filters[index]) + } + + if (expectedId !== this.id) { + return + } + + this.latestVideos = parseLocalChannelVideos(videosTab.videos, this.id, this.channelName) + this.videoContinuationData = videosTab.has_continuation ? videosTab : null + this.isElementListLoading = false + } if (this.isSubscribedInAnyProfile && this.latestVideos.length > 0 && this.videoSortBy === 'newest') { this.updateSubscriptionVideosCacheByChannel({ @@ -780,6 +817,11 @@ export default defineComponent({ }) } } catch (err) { + if (this.isArtistTopicChannel && err.message === 'The playlist does not exist.') { + // If this artist topic channel doesn't have any videos, ignore the error. + return + } + console.error(err) const errorMessage = this.$t('Local API Error (Click to copy)') showToast(`${errorMessage}: ${err}`, 10000, () => { @@ -796,13 +838,21 @@ export default defineComponent({ channelLocalNextPage: async function () { try { - /** - * @type {import('youtubei.js').YT.ChannelListContinuation|import('youtubei.js').YT.FilteredChannelList} - */ - const continuation = await this.videoContinuationData.getContinuation() + if (this.isArtistTopicChannel) { + /** @type {import('youtubei.js').YT.Playlist} */ + const continuation = await this.videoContinuationData.getContinuation() + + this.latestVideos = this.latestVideos.concat(continuation.items.map(parseLocalPlaylistVideo)) + this.videoContinuationData = continuation.has_continuation ? continuation : null + } else { + /** + * @type {import('youtubei.js').YT.ChannelListContinuation|import('youtubei.js').YT.FilteredChannelList} + */ + const continuation = await this.videoContinuationData.getContinuation() - this.latestVideos = this.latestVideos.concat(parseLocalChannelVideos(continuation.videos, this.id, this.channelName)) - this.videoContinuationData = continuation.has_continuation ? continuation : null + this.latestVideos = this.latestVideos.concat(parseLocalChannelVideos(continuation.videos, this.id, this.channelName)) + this.videoContinuationData = continuation.has_continuation ? continuation : null + } } catch (err) { console.error(err) const errorMessage = this.$t('Local API Error (Click to copy)') From d374e8f6bbc27e65e3cb50c0a3b1c2f85be6c0a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 17:05:31 +0200 Subject: [PATCH 37/74] Bump webpack-dev-server from 5.0.4 to 5.1.0 (#5672) Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.0.4 to 5.1.0. - [Release notes](https://github.com/webpack/webpack-dev-server/releases) - [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.0.4...v5.1.0) --- updated-dependencies: - dependency-name: webpack-dev-server dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 111 +++++++++------------------------------------------ 2 files changed, 19 insertions(+), 94 deletions(-) diff --git a/package.json b/package.json index 02074ea868c68..ebfe044a7e740 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "vue-loader": "^15.10.0", "webpack": "^5.94.0", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.0.4", + "webpack-dev-server": "^5.1.0", "yaml-eslint-parser": "^1.2.3" } } diff --git a/yarn.lock b/yarn.lock index 48dbf727d2754..9784ea5130337 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3220,13 +3220,6 @@ default-browser@^5.2.1: bundle-name "^4.1.0" default-browser-id "^5.0.0" -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - defer-to-connect@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" @@ -4190,22 +4183,7 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -express@^4.17.3: +express@^4.19.2: version "4.19.2" resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== @@ -4619,11 +4597,6 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -4667,7 +4640,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^10.3.3, glob@^10.3.7: +glob@^10.3.3: version "10.4.1" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== @@ -5056,11 +5029,6 @@ https-proxy-agent@^5.0.1: agent-base "6" debug "4" -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - iconv-corefoundation@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" @@ -5429,11 +5397,6 @@ is-shared-array-buffer@^1.0.3: dependencies: call-bind "^1.0.7" -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -6056,11 +6019,6 @@ mime@^2.5.2: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -6266,13 +6224,6 @@ npm-run-all2@^6.2.2: read-package-json-fast "^3.0.2" shell-quote "^1.7.3" -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - nth-check@^2.0.1, nth-check@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" @@ -6382,13 +6333,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - open@^10.0.3: version "10.0.3" resolved "https://registry.yarnpkg.com/open/-/open-10.0.3.tgz#f60d8db49fa126c50aec751957fb5d7de3308d4f" @@ -6542,7 +6486,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -7338,13 +7282,6 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.8.tgz#9d4d0ef5106817102b14fdbbf01cf29545e99a6c" - integrity sha512-XSh0V2/yNhDEi8HwdIefD8MLgs4LQXPag/nEJWs3YUc3Upn+UHa1GyIkEg9xSSNt7HnkO5FjTvmcRzgf+8UZuw== - dependencies: - glob "^10.3.7" - rimraf@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.0.1.tgz#ffb8ad8844dd60332ab15f52bc104bc3ed71ea4e" @@ -7657,11 +7594,6 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - signal-exit@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" @@ -7974,11 +7906,6 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -8691,10 +8618,10 @@ webpack-cli@^5.1.4: rechoir "^0.8.0" webpack-merge "^5.7.3" -webpack-dev-middleware@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.1.1.tgz#29aefd73720a03889e1c5c8dd7e552c4d333d572" - integrity sha512-NmRVq4AvRQs66dFWyDR4GsFDJggtSi2Yn38MXLk0nffgF9n/AIP4TFBg2TQKYaRAN4sHuKOTiz9BnNCENDLEVA== +webpack-dev-middleware@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz#40e265a3d3d26795585cff8207630d3a8ff05877" + integrity sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA== dependencies: colorette "^2.0.10" memfs "^4.6.0" @@ -8703,10 +8630,10 @@ webpack-dev-middleware@^7.1.0: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz#cb6ea47ff796b9251ec49a94f24a425e12e3c9b8" - integrity sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA== +webpack-dev-server@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.1.0.tgz#8f44147402b4d8ab99bfeb9b6880daa1411064e5" + integrity sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ== dependencies: "@types/bonjour" "^3.5.13" "@types/connect-history-api-fallback" "^1.5.4" @@ -8721,8 +8648,7 @@ webpack-dev-server@^5.0.4: colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" + express "^4.19.2" graceful-fs "^4.2.6" html-entities "^2.4.0" http-proxy-middleware "^2.0.3" @@ -8730,14 +8656,13 @@ webpack-dev-server@^5.0.4: launch-editor "^2.6.1" open "^10.0.3" p-retry "^6.2.0" - rimraf "^5.0.5" schema-utils "^4.2.0" selfsigned "^2.4.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" - webpack-dev-middleware "^7.1.0" - ws "^8.16.0" + webpack-dev-middleware "^7.4.2" + ws "^8.18.0" webpack-merge@^5.7.3: version "5.8.0" @@ -8899,10 +8824,10 @@ write-file-atomic@^5.0.1: imurmurhash "^0.1.4" signal-exit "^4.0.1" -ws@^8.16.0: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +ws@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== xml-name-validator@^4.0.0: version "4.0.0" From 8130e7ba3ec24f8c75947b97672a453dff6fc56c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 17:05:52 +0200 Subject: [PATCH 38/74] Bump peter-evans/create-pull-request from 6 to 7 (#5676) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/calibreapp-image-actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/calibreapp-image-actions.yml b/.github/workflows/calibreapp-image-actions.yml index d336cad2328ab..1315f1fe5915b 100644 --- a/.github/workflows/calibreapp-image-actions.yml +++ b/.github/workflows/calibreapp-image-actions.yml @@ -20,7 +20,7 @@ jobs: compressOnly: true - name: Create New Pull Request If Needed if: steps.calibre.outputs.markdown != '' - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: title: Compressed Images Nightly branch-suffix: timestamp From 9ddd6731fbe067c53d870815290552b91aaabcce Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 10 Sep 2024 06:46:33 +0200 Subject: [PATCH 39/74] Fix saving Invidious thumbnail URLs for subscriptions (#5662) --- .../subscriptions-community.js | 8 ++------ src/renderer/store/modules/profiles.js | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/renderer/components/subscriptions-community/subscriptions-community.js b/src/renderer/components/subscriptions-community/subscriptions-community.js index 59df38efcb570..86c81c6ecc1a6 100644 --- a/src/renderer/components/subscriptions-community/subscriptions-community.js +++ b/src/renderer/components/subscriptions-community/subscriptions-community.js @@ -164,12 +164,8 @@ export default defineComponent({ let thumbnailUrl = post.authorThumbnails?.[0]?.url if (name || thumbnailUrl) { - if (thumbnailUrl) { - if (thumbnailUrl.startsWith('//')) { - thumbnailUrl = 'https:' + thumbnailUrl - } else if (thumbnailUrl.startsWith(`${this.currentInvidiousInstanceUrl}/ggpht`)) { - thumbnailUrl = thumbnailUrl.replace(`${this.currentInvidiousInstanceUrl}/ggpht`, 'https://yt3.googleusercontent.com') - } + if (thumbnailUrl?.startsWith('//')) { + thumbnailUrl = 'https:' + thumbnailUrl } subscriptionUpdates.push({ diff --git a/src/renderer/store/modules/profiles.js b/src/renderer/store/modules/profiles.js index 70ca26b8aaa18..9e55e61e3f953 100644 --- a/src/renderer/store/modules/profiles.js +++ b/src/renderer/store/modules/profiles.js @@ -113,7 +113,11 @@ const actions = { } if (channelThumbnailUrl) { - const thumbnail = channelThumbnailUrl.replace(/=s\d*/, '=s176') // change thumbnail size if different + const thumbnail = channelThumbnailUrl + // change thumbnail size if different + .replace(/=s\d*/, '=s176') + // If this is an Invidious URL, convert it to a YouTube one + .replace(/^https?:\/\/[^/]+\/ggpht/, 'https://yt3.googleusercontent.com') if (channel.thumbnail !== thumbnail) { channel.thumbnail = thumbnail @@ -129,7 +133,12 @@ const actions = { }, async updateSubscriptionDetails({ dispatch, state }, { channelThumbnailUrl, channelName, channelId }) { - const thumbnail = channelThumbnailUrl?.replace(/=s\d*/, '=s176') ?? null // change thumbnail size if different + const thumbnail = channelThumbnailUrl + // change thumbnail size if different + ?.replace(/=s\d*/, '=s176') + // If this is an Invidious URL, convert it to a YouTube one + .replace(/^https?:\/\/[^/]+\/ggpht/, 'https://yt3.googleusercontent.com') ?? + null const profileList = state.profileList for (const profile of profileList) { const currentProfileCopy = deepCopy(profile) @@ -173,6 +182,11 @@ const actions = { }, async addChannelToProfiles({ commit }, { channel, profileIds }) { + // If this is an Invidious URL, convert it to a YouTube one + if (!channel.thumbnail.startsWith('https://yt3.googleusercontent.com/')) { + channel.thumbnail = channel.thumbnail.replace(/^https?:\/\/[^/]+\/ggpht/, 'https://yt3.googleusercontent.com') + } + try { await DBProfileHandlers.addChannelToProfiles(channel, profileIds) commit('addChannelToProfiles', { channel, profileIds }) From 2e1fec9c4a9c7af0e86169093f3081aced868932 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Tue, 10 Sep 2024 08:48:20 +0000 Subject: [PATCH 40/74] Translated using Weblate (Hebrew) Currently translated at 89.3% (780 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/ --- static/locales/he.yaml | 61 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/static/locales/he.yaml b/static/locales/he.yaml index 92098281455e1..e109b7d70c26a 100644 --- a/static/locales/he.yaml +++ b/static/locales/he.yaml @@ -8,7 +8,7 @@ Locale Name: 'עברית' File: 'קובץ' Quit: 'יציאה' Edit: 'עריכה' -Undo: 'ביטול' +Undo: 'הסגה' Redo: 'לבצע שוב' Cut: 'גזירה' Copy: 'העתקה' @@ -99,6 +99,7 @@ Search Filters: HDR: HDR VR180: VR180 Location: מקום + Creative Commons: קריאייטיב קומונז Subscriptions: # On Subscriptions Page Subscriptions: 'מינויים' @@ -173,9 +174,37 @@ User Playlists: This video cannot be moved down.: אי אפשר להוריד את הסרטון הזה למטה. Video has been removed: הסרטון הוסר There was a problem with removing this video: אירעה בעיה עם הסרת הסרטון הזה + This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo: רשימת + הנגינה הזאת משמשת לסימניות מהירות במקום {oldPlaylistName}. לחיצה כאן תבטל + את זה Search for Videos: חיפוש סרטונים Cannot delete the quick bookmark target playlist.: לא ניתן למחוק את רשימת הנגינה ביעד הסימניות הזריזות. + This playlist currently has no videos.: ברשימת הנגינה אין כרגע סרטונים. + Create New Playlist: יצירת רשימת נגינה חדשה + Playlist Name: שם רשימת נגינה + AddVideoPrompt: + Save: שמירה + Search in Playlists: חיפוש ברשימות הנגינה + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} + סרטונים יתווספו' + Allow Adding Duplicate Video(s): לאפשר להוסיף סרטונים כפולים + Added {count} Times: כבר נוסף | נוסף {count} פעמים + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + סרטונים כבר נוספו' + CreatePlaylistPrompt: + Create: יצירה + New Playlist Name: שם חדש לרשימת נגינה + Playlists with Matching Videos: רשימות נגינה עם סרטונים תואמים + Add to Playlist: הוספת לרשימת נגינה + Remove from Favorites: הסרה מתוך {playlistName} + Move Video Up: העלאת הסרטון מעלה + Move Video Down: הורדת הסרטון מטה + Remove from Playlist: הסרת מרשימת הנגינה + Playlist Description: תיאור רשימת נגינה + Save Changes: שמירת השינויים + Cancel: ביטול + Add to Favorites: הוספה אל {playlistName} History: # On History Page History: 'היסטוריה' @@ -183,6 +212,7 @@ History: Your history list is currently empty.: 'ההיסטוריה שלך ריקה כרגע.' Search bar placeholder: חיפוש בהיסטוריה Empty Search Message: אין סרטונים בהיסטוריה שלך שעונים לחיפוש שלך + Case Sensitive Search: חיפוש תלוי רישיות Settings: # On Settings Page Settings: 'הגדרות' @@ -229,6 +259,8 @@ Settings: No default instance has been set: לא הוגדר עותק ברירת מחדל Current instance will be randomized on startup: העותק הנוכחי יעבור ערבוב אקראי עם ההפעלה + Auto Load Next Page: + Label: טעינת העמוד הבא אוטומטית Theme Settings: Theme Settings: 'הגדרת ערכת עיצוב' Match Top Bar with Main Color: 'התאמת האזור העליון לצבע הראשי' @@ -242,6 +274,9 @@ Settings: Catppuccin Mocha: מוקה קפוצ׳ינו Pastel Pink: ורוד פסטל Hot Pink: ורוד עז + Nordic: נורדית + Solarized Dark: חשוך זוהר + Solarized Light: בהיר זוהר Main Color Theme: Main Color Theme: 'צבע ראשי' Red: 'אדום' @@ -281,6 +316,12 @@ Settings: Catppuccin Mocha Lavender: מוקה קפוצ׳ינו לבנדר Catppuccin Mocha Teal: מוקה קפוצ׳ינו ירקרק-כחלחל Catppuccin Mocha Blue: מוקה קפוצ׳ינו כחול + Solarized Green: ירוק זוהר + Solarized Orange: כתום זוהר + Solarized Yellow: צהוב זוהר + Solarized Red: אדום זוהר + Solarized Magenta: ארגמן זוהר + Solarized Blue: כחול זוהר Secondary Color Theme: 'ערכת צבע משנית' #* Main Color Theme UI Scale: יחס גודל הממשק @@ -356,6 +397,8 @@ Settings: כל את המינויים והפרופילים? זופעולה בלתי הפיכה.' Save Watched Videos With Last Viewed Playlist: לשמור את הסרטונים שנצפו עם רשימת הנגינה לאחרונים שנצפו + Remove All Playlists: הסרת כל רשימות הנגינה + All playlists have been removed: כל רשימות הנגינה הוסרו Subscription Settings: Subscription Settings: 'הגדרות מינויים' Hide Videos on Watch: 'הסתרת סרטונים לאחר הצפייה' @@ -965,6 +1008,7 @@ Tooltips: בסעיף „{subsection}” שב„{settingsSection}” SponsorBlock Settings: UseDeArrowTitles: החלפת כותרות הסרטונים עם כותרות ששלחו משתמשים ב־DeArrow. + UseDeArrowThumbnails: החלפת התמונות הממוזערות של הסרטונים בתמונות ממוזערות מ־DeArrow. More: עוד Open New Window: פתיחת חלון חדש Search Bar: @@ -1024,3 +1068,18 @@ Search Listing: Subtitles: כתוביות Closed Captions: כתוביות לכבדי שמיעה Search character limit: שאילתת החיפוש חורגת ממגבלת התווים {searchCharacterLimit} +Feed: + Feed Last Updated: 'הערוץ {feedName} התעדכן לאחרונה: {date}' + Refresh Feed: רענון {subscriptionName} +Age Restricted: + This video is age restricted: הסרטון הזה מוגבל + This channel is age restricted: הערוץ הזה מוגבל בגיל +Yes, Restart: כן, להפעיל מחדש +Yes, Delete: כן, למחוק +Yes, Open Link: כן, לפתוח את הקישור +Cancel: ביטול +'Blocked opening potentially unsafe URL': 'נחסמה פתיחת כתובת שחשודה כמפוקפקת: „{url}”.' +checkmark: ✓ +Tag already exists: התגית „{tagName}” כבר קיימת +Moments Ago: לפני מס׳ רגעים +Display Label: '{label}:‏ {value}' From 42fc2a5a7ab46c5ee2e030f3360029de6a07fcc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliaksandr=20Tru=C5=A1?= Date: Tue, 10 Sep 2024 14:15:58 +0000 Subject: [PATCH 41/74] Translated using Weblate (Belarusian) Currently translated at 10.1% (89 of 873 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/be/ --- static/locales/be.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/be.yaml b/static/locales/be.yaml index 735ec3cc91f76..45c5ff1a10102 100644 --- a/static/locales/be.yaml +++ b/static/locales/be.yaml @@ -32,7 +32,7 @@ Forward: 'Наперад' Open New Window: 'Адкрыць новае акно' Version {versionNumber} is now available! Click for more details: '' -Download From Site: '' +Download From Site: 'Спампаваць з сайта' A new blog is now available, {blogTitle}. Click to view more: '' Are you sure you want to open this link?: '' From da1514b29576bb705b5e086942ca95dbce4e6eac Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 10 Sep 2024 23:55:45 +0200 Subject: [PATCH 42/74] Proxy live streams when "Proxy Videos Through Invidious" is enabled (#5649) --- .../ft-shaka-video-player.js | 41 +++++++++++++++++++ src/renderer/views/Watch/Watch.js | 22 +++++++++- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js index 563fb37da207e..7e1d4722e2a99 100644 --- a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js +++ b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js @@ -38,6 +38,7 @@ const HTTP_IN_HEX = 0x68747470 const USE_OVERFLOW_MENU_WIDTH_THRESHOLD = 600 const RequestType = shaka.net.NetworkingEngine.RequestType +const AdvancedRequestType = shaka.net.NetworkingEngine.AdvancedRequestType const TrackLabelFormat = shaka.ui.Overlay.TrackLabelFormat /** @type {Map} */ @@ -1232,7 +1233,47 @@ export default defineComponent({ response.data = new TextEncoder().encode(cleaned).buffer } } + } else if (type === RequestType.MANIFEST && context.type === AdvancedRequestType.MEDIA_PLAYLIST) { + const url = new URL(response.uri) + + // Fixes proxied HLS manifests, as Invidious replaces the path parameters with query parameters, + // so shaka-player isn't able to infer the mime type from the `/file/seg.ts` part like it does for non-proxied HLS manifests. + // Shaka-player does attempt to detect it with HEAD request but the `Content-Type` header is `application/octet-stream`, + // which still doesn't tell shaka-player how to handle the stream because that's the equivalent of saying "binary data". + if (url.searchParams.has('local')) { + const stringBody = new TextDecoder().decode(response.data) + const fixed = stringBody.replaceAll(/https?:\/\/.+$/gm, hlsProxiedUrlReplacer) + + response.data = new TextEncoder().encode(fixed).buffer + } + } + } + + /** + * @param {string} match + */ + function hlsProxiedUrlReplacer(match) { + const url = new URL(match) + + let fileValue + for (const [key, value] of url.searchParams) { + if (key === 'file') { + fileValue = value + continue + } else if (key === 'hls_chunk_host') { + // Add the host parameter so some Invidious instances stop complaining about the missing host parameter + // Replace .c.youtube.com with .googlevideo.com as the built-in Invidious video proxy only accepts host parameters with googlevideo.com + url.pathname += `/host/${encodeURIComponent(value.replace('.c.youtube.com', '.googlevideo.com'))}` + } + + url.pathname += `/${key}/${encodeURIComponent(value)}` } + + // This has to be right at the end so that shaka-player can read the file extension + url.pathname += `/file/${encodeURIComponent(fileValue)}` + + url.search = '' + return url.toString() } // #endregion request/response filters diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index f25e22cd92de0..30e87e82610ce 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -493,7 +493,16 @@ export default defineComponent({ // this.manifestSrc = src // this.manifestMimeType = MANIFEST_TYPE_DASH // } else { - this.manifestSrc = result.streaming_data.hls_manifest_url + let hlsManifestUrl = result.streaming_data.hls_manifest_url + + if (this.proxyVideos) { + const url = new URL(hlsManifestUrl) + url.searchParams.set('local', 'true') + + hlsManifestUrl = url.toString().replace(url.origin, this.currentInvidiousInstanceUrl) + } + + this.manifestSrc = hlsManifestUrl this.manifestMimeType = MANIFEST_TYPE_HLS // } } @@ -808,7 +817,16 @@ export default defineComponent({ // // Proxying doesn't work for live or post live DVR DASH, so use HLS instead // // https://github.com/iv-org/invidious/pull/4589 // if (this.proxyVideos) { - this.manifestSrc = result.hlsUrl + + let hlsManifestUrl = result.hlsUrl + + if (this.proxyVideos) { + const url = new URL(hlsManifestUrl) + url.searchParams.set('local', 'true') + hlsManifestUrl = url.toString() + } + + this.manifestSrc = hlsManifestUrl this.manifestMimeType = MANIFEST_TYPE_HLS // The HLS manifests only contain combined audio+video streams, so we can't do audio only From 1376009ac6791131446147bfdbe1fb2c0b019b57 Mon Sep 17 00:00:00 2001 From: Neuheit <38368299+Neuheit@users.noreply.github.com> Date: Wed, 11 Sep 2024 05:22:54 -0400 Subject: [PATCH 43/74] Change Sponsorblock Default Category Colors (#5686) * change sponsorblock category colors * fix colors --- src/renderer/store/modules/settings.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js index 864890afc9ce5..aa4cc8b8eaf03 100644 --- a/src/renderer/store/modules/settings.js +++ b/src/renderer/store/modules/settings.js @@ -246,7 +246,7 @@ const state = { sponsorBlockShowSkippedToast: true, sponsorBlockUrl: 'https://sponsor.ajay.app', sponsorBlockSponsor: { - color: 'Blue', + color: 'Green', skip: 'autoSkip' }, sponsorBlockSelfPromo: { @@ -254,19 +254,19 @@ const state = { skip: 'showInSeekBar' }, sponsorBlockInteraction: { - color: 'Green', + color: 'Pink', skip: 'showInSeekBar' }, sponsorBlockIntro: { - color: 'Orange', + color: 'Cyan', skip: 'doNothing' }, sponsorBlockOutro: { - color: 'Orange', + color: 'Blue', skip: 'doNothing' }, sponsorBlockRecap: { - color: 'Orange', + color: 'Indigo', skip: 'doNothing' }, sponsorBlockMusicOffTopic: { @@ -274,7 +274,7 @@ const state = { skip: 'doNothing' }, sponsorBlockFiller: { - color: 'Orange', + color: 'Purple', skip: 'doNothing' }, thumbnailPreference: '', From 1c3a2fed26a1baee234a0297d3a5b23dad990f09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 11:39:39 +0200 Subject: [PATCH 44/74] Bump electron-builder from 24.13.3 to 25.0.5 (#5674) Bumps [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) from 24.13.3 to 25.0.5. - [Release notes](https://github.com/electron-userland/electron-builder/releases) - [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/CHANGELOG.md) - [Commits](https://github.com/electron-userland/electron-builder/commits/v25.0.5/packages/electron-builder) --- updated-dependencies: - dependency-name: electron-builder dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 824 ++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 689 insertions(+), 137 deletions(-) diff --git a/package.json b/package.json index ebfe044a7e740..f5234d4567ce3 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "css-loader": "^7.1.2", "css-minimizer-webpack-plugin": "^7.0.0", "electron": "^32.0.2", - "electron-builder": "^24.13.3", + "electron-builder": "^25.0.5", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-config-standard": "^17.1.0", diff --git a/yarn.lock b/yarn.lock index 9784ea5130337..0dda7d1876a6e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1159,12 +1159,11 @@ resolved "https://registry.yarnpkg.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#519c1549b0e147759e7825701ecffd25e5819f7b" integrity sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg== -"@electron/asar@^3.2.1": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.4.tgz#7e8635a3c4f6d8b3f8ae6efaf5ecb9fbf3bd9864" - integrity sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g== +"@electron/asar@^3.2.7": + version "3.2.10" + resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.10.tgz#615cf346b734b23cafa4e0603551010bd0e50aa8" + integrity sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw== dependencies: - chromium-pickle-js "^0.2.0" commander "^5.0.0" glob "^7.1.6" minimatch "^3.0.4" @@ -1184,19 +1183,19 @@ optionalDependencies: global-agent "^3.0.0" -"@electron/notarize@2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.2.1.tgz#d0aa6bc43cba830c41bfd840b85dbe0e273f59fe" - integrity sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg== +"@electron/notarize@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.3.2.tgz#20a52a961747be8542a35003380988a0d3fe15e6" + integrity sha512-zfayxCe19euNwRycCty1C7lF7snk9YwfRpB5M8GLr1a4ICH63znxaPNAubrMvj0yDvVozqfgsdYpXVUnpWBDpg== dependencies: debug "^4.1.1" fs-extra "^9.0.1" promise-retry "^2.0.1" -"@electron/osx-sign@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.0.5.tgz#0af7149f2fce44d1a8215660fd25a9fb610454d8" - integrity sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww== +"@electron/osx-sign@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.3.1.tgz#faf7eeca7ca004a6be541dc4cf7a1bd59ec59b1c" + integrity sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw== dependencies: compare-version "^0.1.2" debug "^4.3.4" @@ -1205,18 +1204,38 @@ minimist "^1.2.6" plist "^3.0.5" -"@electron/universal@1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.5.1.tgz#f338bc5bcefef88573cf0ab1d5920fac10d06ee5" - integrity sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw== +"@electron/rebuild@3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.6.0.tgz#60211375a5f8541a71eb07dd2f97354ad0b2b96f" + integrity sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw== + dependencies: + "@malept/cross-spawn-promise" "^2.0.0" + chalk "^4.0.0" + debug "^4.1.1" + detect-libc "^2.0.1" + fs-extra "^10.0.0" + got "^11.7.0" + node-abi "^3.45.0" + node-api-version "^0.2.0" + node-gyp "^9.0.0" + ora "^5.1.0" + read-binary-file-arch "^1.0.6" + semver "^7.3.5" + tar "^6.0.5" + yargs "^17.0.1" + +"@electron/universal@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-2.0.1.tgz#7b070ab355e02957388f3dbd68e2c3cd08c448ae" + integrity sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA== dependencies: - "@electron/asar" "^3.2.1" - "@malept/cross-spawn-promise" "^1.1.0" + "@electron/asar" "^3.2.7" + "@malept/cross-spawn-promise" "^2.0.0" debug "^4.3.1" - dir-compare "^3.0.0" - fs-extra "^9.0.1" - minimatch "^3.0.4" - plist "^3.0.4" + dir-compare "^4.2.0" + fs-extra "^11.1.1" + minimatch "^9.0.3" + plist "^3.1.0" "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -1308,6 +1327,11 @@ resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.10.tgz#b10721425d7efdee6d83fba21c64cad86fa51904" integrity sha512-OTETSXz+3ygD2OK2/vy82cmUBpuJqeOAg4gfnnv+f2Rir1tDIhQg026Q3NQxznq83ZLz8iNqGG9XJm26inpDeg== +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -1489,10 +1513,10 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@malept/cross-spawn-promise@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" - integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== +"@malept/cross-spawn-promise@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d" + integrity sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg== dependencies: cross-spawn "^7.0.1" @@ -1534,6 +1558,22 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -2064,6 +2104,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -2087,13 +2132,28 @@ acorn@^8.11.3, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2, acorn@^8. resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== -agent-base@6: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" +agentkeepalive@^4.2.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" @@ -2175,30 +2235,31 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -app-builder-bin@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" - integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== +app-builder-bin@5.0.0-alpha.7: + version "5.0.0-alpha.7" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-5.0.0-alpha.7.tgz#8c835ad083b18fb5d434bc4e4d99cca1fb46c19f" + integrity sha512-ww2mK4ITUvqisnqOuUWAeHzokpPidyZ7a0ZkwW+V7sF5/Pdi2OldkRjAWqEzn6Xtmj3SLVT84as4wB59A6jJ4g== -app-builder-lib@24.13.3: - version "24.13.3" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-24.13.3.tgz#36e47b65fecb8780bb73bff0fee4e0480c28274b" - integrity sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig== +app-builder-lib@25.0.5: + version "25.0.5" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-25.0.5.tgz#4886ee77030576cbd36fab92633347d3cc554f87" + integrity sha512-rxgxMx1f7I4ZAP0jA5+5iB7X6x6MJvGF7GauRzQBnIVihwXX2HOiAE7yenyY9Ry5YAiH47MnCxdq413Wq6XOcQ== dependencies: "@develar/schema-utils" "~2.6.5" - "@electron/notarize" "2.2.1" - "@electron/osx-sign" "1.0.5" - "@electron/universal" "1.5.1" + "@electron/notarize" "2.3.2" + "@electron/osx-sign" "1.3.1" + "@electron/rebuild" "3.6.0" + "@electron/universal" "2.0.1" "@malept/flatpak-bundler" "^0.4.0" "@types/fs-extra" "9.0.13" async-exit-hook "^2.0.1" bluebird-lst "^1.0.9" - builder-util "24.13.1" - builder-util-runtime "9.2.4" + builder-util "25.0.3" + builder-util-runtime "9.2.5" chromium-pickle-js "^0.2.0" debug "^4.3.4" ejs "^3.1.8" - electron-publish "24.13.1" + electron-publish "25.0.3" form-data "^4.0.0" fs-extra "^10.1.0" hosted-git-info "^4.1.0" @@ -2206,13 +2267,27 @@ app-builder-lib@24.13.3: isbinaryfile "^5.0.0" js-yaml "^4.1.0" lazy-val "^1.0.5" - minimatch "^5.1.1" - read-config-file "6.3.2" + minimatch "^10.0.0" + read-config-file "6.4.0" + resedit "^1.7.0" sanitize-filename "^1.6.3" semver "^7.3.8" tar "^6.1.12" temp-file "^3.4.0" +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -2433,6 +2508,15 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird-lst@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" @@ -2528,17 +2612,12 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= -buffer-equal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" - integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.1.0: +buffer@^5.1.0, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -2546,24 +2625,24 @@ buffer@^5.1.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builder-util-runtime@9.2.4: - version "9.2.4" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz#13cd1763da621e53458739a1e63f7fcba673c42a" - integrity sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA== +builder-util-runtime@9.2.5: + version "9.2.5" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.5.tgz#0afdffa0adb5c84c14926c7dd2cf3c6e96e9be83" + integrity sha512-HjIDfhvqx/8B3TDN4GbABQcgpewTU4LMRTQPkVpKYV3lsuxEJoIfvg09GyWTNmfVNSUAYf+fbTN//JX4TH20pg== dependencies: debug "^4.3.4" sax "^1.2.4" -builder-util@24.13.1: - version "24.13.1" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-24.13.1.tgz#4a4c4f9466b016b85c6990a0ea15aa14edec6816" - integrity sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA== +builder-util@25.0.3: + version "25.0.3" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-25.0.3.tgz#bd00d8e8abbe6ea56974a2adbbc39578eab0134b" + integrity sha512-eH5c1ukdY2xjtFQWQ6jlzEuXuqcuAVc3UQ6V6fdYu9Kg3CkDbCR82Mox42uaJDmee9WXSbP/88cOworFdOHPhw== dependencies: "7zip-bin" "~5.2.0" "@types/debug" "^4.1.6" - app-builder-bin "4.0.0" + app-builder-bin "5.0.0-alpha.7" bluebird-lst "^1.0.9" - builder-util-runtime "9.2.4" + builder-util-runtime "9.2.5" chalk "^4.1.2" cross-spawn "^7.0.3" debug "^4.3.4" @@ -2598,6 +2677,30 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + cacheable-lookup@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" @@ -2691,7 +2794,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2753,6 +2856,23 @@ clean-regexp@^1.0.0: dependencies: escape-string-regexp "^1.0.5" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" @@ -2794,6 +2914,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2818,6 +2943,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + colord@^2.9.3: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" @@ -2895,19 +3025,24 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -config-file-ts@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.4.tgz#6c0741fbe118a7cf786c65f139030f0448a2cc99" - integrity sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ== +config-file-ts@0.2.8-rc1: + version "0.2.8-rc1" + resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz#fb7fc6ccb2e313f69dbeb78f1db0b00038049de0" + integrity sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg== dependencies: - glob "^7.1.6" - typescript "^4.0.2" + glob "^10.3.12" + typescript "^5.4.3" connect-history-api-fallback@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + consolidate@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" @@ -3195,6 +3330,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.3: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" @@ -3220,6 +3362,13 @@ default-browser@^5.2.1: bundle-name "^4.1.0" default-browser-id "^5.0.0" +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + defer-to-connect@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" @@ -3278,6 +3427,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -3298,18 +3452,23 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-libc@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -dir-compare@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-3.3.0.tgz#2c749f973b5c4b5d087f11edaae730db31788416" - integrity sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg== +dir-compare@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-4.2.0.tgz#d1d4999c14fbf55281071fdae4293b3b9ce86f19" + integrity sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ== dependencies: - buffer-equal "^1.0.0" - minimatch "^3.0.4" + minimatch "^3.0.5" + p-limit "^3.1.0 " dir-glob@^3.0.1: version "3.0.1" @@ -3318,14 +3477,14 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dmg-builder@24.13.3: - version "24.13.3" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-24.13.3.tgz#95d5b99c587c592f90d168a616d7ec55907c7e55" - integrity sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ== +dmg-builder@25.0.5: + version "25.0.5" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-25.0.5.tgz#e7e2731b65cf1ed43c14f2ca672e7d9a2e0234f0" + integrity sha512-ocnZV44ZqInoSFaY54fF7BlCtw+WtbrjyPrkBhaB+Ztn7GPKjmFgRbIKytifJ8h9Cib8jdFRMgjCUtkU45Y6DA== dependencies: - app-builder-lib "24.13.3" - builder-util "24.13.1" - builder-util-runtime "9.2.4" + app-builder-lib "25.0.5" + builder-util "25.0.3" + builder-util-runtime "9.2.5" fs-extra "^10.1.0" iconv-lite "^0.6.2" js-yaml "^4.1.0" @@ -3437,15 +3596,17 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== +dotenv-expand@^11.0.6: + version "11.0.6" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.6.tgz#f2c840fd924d7c77a94eff98f153331d876882d3" + integrity sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g== + dependencies: + dotenv "^16.4.4" -dotenv@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" - integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== +dotenv@^16.4.4, dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== eastasianwidth@^0.2.0: version "0.2.0" @@ -3464,20 +3625,20 @@ ejs@^3.1.8: dependencies: jake "^10.8.5" -electron-builder@^24.13.3: - version "24.13.3" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-24.13.3.tgz#c506dfebd36d9a50a83ee8aa32d803d83dbe4616" - integrity sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg== +electron-builder@^25.0.5: + version "25.0.5" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-25.0.5.tgz#fed2432016618fd5ff81dc9dad7ec47889ffe0f1" + integrity sha512-Uj5LFRbUqNiVajsgqcwlKe+CHtwubK3hcoJsW5C2YiWodej2mmxM+LrTqga0rrWWHVMNmrcmGcS/WHpKwy6KEw== dependencies: - app-builder-lib "24.13.3" - builder-util "24.13.1" - builder-util-runtime "9.2.4" + app-builder-lib "25.0.5" + builder-util "25.0.3" + builder-util-runtime "9.2.5" chalk "^4.1.2" - dmg-builder "24.13.3" + dmg-builder "25.0.5" fs-extra "^10.1.0" is-ci "^3.0.0" lazy-val "^1.0.5" - read-config-file "6.3.2" + read-config-file "6.4.0" simple-update-notifier "2.0.0" yargs "^17.6.2" @@ -3504,14 +3665,14 @@ electron-is-dev@^3.0.1: resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-3.0.1.tgz#1cbc79b1dd046787903acd357efdfab6549dc17a" integrity sha512-8TjjAh8Ec51hUi3o4TaU0mD3GMTOESi866oRNavj9A3IQJ7pmv+MJVmdZBFGw4GFT36X7bkqnuDNYvkQgvyI8Q== -electron-publish@24.13.1: - version "24.13.1" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-24.13.1.tgz#57289b2f7af18737dc2ad134668cdd4a1b574a0c" - integrity sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A== +electron-publish@25.0.3: + version "25.0.3" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-25.0.3.tgz#63509992a5ae31bb2b0d8863b26a2f7c35e303cc" + integrity sha512-wSGm+TFK2lArswIFBPLuIRHbo945s3MCvG5y1xVC57zL/PsrElUkaGH2ERtRrcKNpaDNq77rDA9JnMJhAFJjUg== dependencies: "@types/fs-extra" "^9.0.11" - builder-util "24.13.1" - builder-util-runtime "9.2.4" + builder-util "25.0.3" + builder-util-runtime "9.2.5" chalk "^4.1.2" fs-extra "^10.1.0" lazy-val "^1.0.5" @@ -3566,6 +3727,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -4183,6 +4351,11 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + express@^4.19.2: version "4.19.2" resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" @@ -4455,6 +4628,15 @@ fs-extra@^10.0.0, fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^11.1.1: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -4474,7 +4656,7 @@ fs-extra@^9.0.0, fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0: +fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -4526,6 +4708,20 @@ functions-have-names@^1.2.2, functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -4640,6 +4836,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@^10.3.12: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + glob@^10.3.3: version "10.4.1" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" @@ -4663,7 +4871,7 @@ glob@^11.0.0: package-json-from-dist "^1.0.0" path-scurry "^2.0.0" -glob@^7.1.3, glob@^7.1.6: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4675,6 +4883,17 @@ glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-agent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" @@ -4768,6 +4987,23 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +got@^11.7.0: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + got@^11.8.5: version "11.8.5" resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" @@ -4858,6 +5094,11 @@ has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -4948,7 +5189,7 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-cache-semantics@^4.0.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -5021,7 +5262,7 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -5029,6 +5270,13 @@ https-proxy-agent@^5.0.1: agent-base "6" debug "4" +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + iconv-corefoundation@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" @@ -5102,6 +5350,11 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5110,7 +5363,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5157,6 +5410,14 @@ interpret@^3.1.1: resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -5314,6 +5575,16 @@ is-inside-container@^1.0.0: dependencies: is-docker "^3.0.0" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-language-code@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-language-code/-/is-language-code-3.1.0.tgz#b2386b49227e7010636f16d0c2c681ca40136ab5" @@ -5447,6 +5718,11 @@ is-typed-array@^1.1.3, is-typed-array@^1.1.9: for-each "^0.3.3" has-tostringtag "^1.0.0" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -5569,6 +5845,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -5633,7 +5914,7 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.2.0, json5@^2.2.3: +json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -5701,7 +5982,7 @@ launch-editor@^2.6.1: picocolors "^1.0.0" shell-quote "^1.8.1" -lazy-val@^1.0.4, lazy-val@^1.0.5: +lazy-val@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== @@ -5869,6 +6150,14 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" @@ -5913,6 +6202,33 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +make-fetch-happen@^10.0.3: + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + marked@^14.1.2: version "14.1.2" resolved "https://registry.yarnpkg.com/marked/-/marked-14.1.2.tgz#3cbc26b2d6832be32b75ae0746e0968c781b6156" @@ -6019,6 +6335,11 @@ mime@^2.5.2: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -6061,14 +6382,14 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.1: +minimatch@^5.0.1: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.4, minimatch@^9.0.5: +minimatch@^9.0.0, minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -6080,6 +6401,45 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + minipass@^3.0.0: version "3.3.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" @@ -6087,6 +6447,13 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" +minipass@^3.1.1, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + minipass@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" @@ -6102,7 +6469,7 @@ minipass@^7.1.2: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -minizlib@^2.1.1: +minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -6110,7 +6477,7 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mkdirp@^1.0.3: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -6125,7 +6492,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -6148,7 +6515,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -6166,16 +6533,47 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-abi@^3.45.0: + version "3.67.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.67.0.tgz#1d159907f18d18e18809dbbb5df47ed2426a08df" + integrity sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw== + dependencies: + semver "^7.3.5" + node-addon-api@^1.6.3: version "1.7.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== +node-api-version@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.2.0.tgz#5177441da2b1046a4d4547ab9e0972eed7b1ac1d" + integrity sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg== + dependencies: + semver "^7.3.5" + node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== +node-gyp@^9.0.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" + integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + node-releases@^2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" @@ -6186,6 +6584,13 @@ node-releases@^2.0.18: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -6224,6 +6629,16 @@ npm-run-all2@^6.2.2: read-package-json-fast "^3.0.2" shell-quote "^1.7.3" +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + nth-check@^2.0.1, nth-check@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" @@ -6333,6 +6748,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + open@^10.0.3: version "10.0.3" resolved "https://registry.yarnpkg.com/open/-/open-10.0.3.tgz#f60d8db49fa126c50aec751957fb5d7de3308d4f" @@ -6355,6 +6777,21 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" +ora@^5.1.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + p-cancelable@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" @@ -6367,7 +6804,7 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, "p-limit@^3.1.0 ": version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -6402,6 +6839,13 @@ p-locate@^6.0.0: dependencies: p-limit "^4.0.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-retry@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.0.tgz#8d6df01af298750009691ce2f9b3ad2d5968f3bd" @@ -6527,6 +6971,11 @@ path-type@^5.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== +pe-library@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/pe-library/-/pe-library-0.4.1.tgz#e269be0340dcb13aa6949d743da7d658c3e2fbea" + integrity sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw== + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -6574,7 +7023,7 @@ plist@^3.0.4: base64-js "^1.5.1" xmlbuilder "^9.0.7" -plist@^3.0.5: +plist@^3.0.5, plist@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== @@ -6912,6 +7361,11 @@ progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + promise-retry@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" @@ -6992,17 +7446,24 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" -read-config-file@6.3.2: - version "6.3.2" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.3.2.tgz#556891aa6ffabced916ed57457cb192e61880411" - integrity sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q== +read-binary-file-arch@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz#959c4637daa932280a9b911b1a6766a7e44288fc" + integrity sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg== + dependencies: + debug "^4.3.4" + +read-config-file@6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.4.0.tgz#970542833216cccff6b1d83320495003dcf85a45" + integrity sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q== dependencies: - config-file-ts "^0.2.4" - dotenv "^9.0.2" - dotenv-expand "^5.1.0" + config-file-ts "0.2.8-rc1" + dotenv "^16.4.5" + dotenv-expand "^11.0.6" js-yaml "^4.1.0" - json5 "^2.2.0" - lazy-val "^1.0.4" + json5 "^2.2.3" + lazy-val "^1.0.5" read-package-json-fast@^3.0.2: version "3.0.2" @@ -7053,6 +7514,15 @@ readable-stream@^3.0.6: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -7217,6 +7687,13 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +resedit@^1.7.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resedit/-/resedit-1.7.1.tgz#150c101000210968730141ae2eb504ca0aead165" + integrity sha512-/FJ6/gKAXbcHtivannhecWsa43kGVFK3aHHv9Jm3x0eFiM31MoGihkAOWbm3UsvjYLRVw0zTkfARy2dI96JL1Q== + dependencies: + pe-library "^0.4.1" + resolve-alpn@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" @@ -7260,6 +7737,14 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -7503,6 +7988,11 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-function-length@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" @@ -7594,6 +8084,11 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +signal-exit@^3.0.2, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + signal-exit@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" @@ -7642,7 +8137,7 @@ slice-ansi@^5.0.0: ansi-styles "^6.0.0" is-fullwidth-code-point "^4.0.0" -smart-buffer@^4.0.2: +smart-buffer@^4.0.2, smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== @@ -7656,6 +8151,23 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + sort-keys-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" @@ -7742,6 +8254,18 @@ sprintf-js@^1.1.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + stat-mode@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" @@ -7766,7 +8290,7 @@ statuses@2.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8115,7 +8639,7 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^6.1.12: +tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2: version "6.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== @@ -8352,10 +8876,10 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@^4.0.2: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5.4.3: + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== unbox-primitive@^1.0.2: version "1.0.2" @@ -8412,6 +8936,20 @@ unicorn-magic@^0.1.0: resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -8599,6 +9137,13 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + webpack-cli@^5.1.4: version "5.1.4" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" @@ -8772,13 +9317,20 @@ which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + wildcard@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" @@ -8883,7 +9435,7 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^17.6.2: +yargs@^17.0.1, yargs@^17.6.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== From 21ff6fe143cab7a66347360405bd9867a5a3c480 Mon Sep 17 00:00:00 2001 From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> Date: Wed, 11 Sep 2024 20:22:34 -0400 Subject: [PATCH 45/74] Add ability to see comment replies of community posts through invidious (#5589) * Add ability to see comment replies of community posts through invidious * Add better styling to comment count link * Apply suggestions from code review Co-authored-by: absidue <48293849+absidue@users.noreply.github.com> * accessibility improvements * fix showing community comments when local api with fallback * use authorId and support parsing the youtube link instead of just the invidious one * remove unneeded isLoading = true * add no comments message * add support for auto load comments * Hide comment count on individual post page * Apply suggestions from code review Co-authored-by: absidue <48293849+absidue@users.noreply.github.com> * Don't nest FtCard in FtCard Co-Authored-By: absidue <48293849+absidue@users.noreply.github.com> * watch route for changes --------- Co-authored-by: absidue <48293849+absidue@users.noreply.github.com> --- src/renderer/App.js | 11 ++ .../ft-community-post/ft-community-post.js | 26 ++++- .../ft-community-post/ft-community-post.scss | 6 + .../ft-community-post/ft-community-post.vue | 41 ++++++- src/renderer/components/ft-input/ft-input.js | 1 + src/renderer/components/top-nav/top-nav.js | 12 ++ .../watch-video-comments.js | 110 +++++++++++++++--- .../watch-video-comments.vue | 13 ++- src/renderer/helpers/api/invidious.js | 72 ++++++++++-- src/renderer/helpers/api/local.js | 2 +- src/renderer/router/index.js | 8 ++ src/renderer/store/modules/utils.js | 25 +++- src/renderer/views/Post/Post.js | 62 ++++++++++ src/renderer/views/Post/Post.vue | 31 +++++ static/locales/en-US.yaml | 6 + 15 files changed, 391 insertions(+), 35 deletions(-) create mode 100644 src/renderer/views/Post/Post.js create mode 100644 src/renderer/views/Post/Post.vue diff --git a/src/renderer/App.js b/src/renderer/App.js index e2ecc75e4140b..03e46519504db 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -453,6 +453,17 @@ export default defineComponent({ break } + case 'post': { + const { postId, query } = result + + openInternalPath({ + path: `/post/${postId}`, + query, + doCreateNewWindow + }) + break + } + case 'channel': { const { channelId, subPath, url } = result diff --git a/src/renderer/components/ft-community-post/ft-community-post.js b/src/renderer/components/ft-community-post/ft-community-post.js index 51fa39bb1afed..cbf30691f14ff 100644 --- a/src/renderer/components/ft-community-post/ft-community-post.js +++ b/src/renderer/components/ft-community-post/ft-community-post.js @@ -7,7 +7,7 @@ import autolinker from 'autolinker' import { A11y, Navigation, Pagination } from 'swiper/modules' -import { createWebURL, deepCopy, toLocalePublicationString } from '../../helpers/utils' +import { createWebURL, deepCopy, formatNumber, toLocalePublicationString } from '../../helpers/utils' import { youtubeImageUrlToInvidious } from '../../helpers/api/invidious' export default defineComponent({ @@ -29,7 +29,11 @@ export default defineComponent({ hideForbiddenTitles: { type: Boolean, default: true - } + }, + singlePost: { + type: Boolean, + default: false + }, }, data: function () { return { @@ -37,9 +41,11 @@ export default defineComponent({ postId: '', authorThumbnails: null, publishedText: '', - voteCount: '', + voteCount: 0, + formattedVoteCount: '', postContent: '', - commentCount: '', + commentCount: null, + formattedCommentCount: '', author: '', authorId: '', } @@ -56,6 +62,16 @@ export default defineComponent({ hideVideo() { return this.forbiddenTitles.some((text) => this.data.postContent.content.title?.toLowerCase().includes(text.toLowerCase())) + }, + + backendPreference: function () { + return this.$store.getters.getBackendPreference + }, + backendFallback: function () { + return this.$store.getters.getBackendFallback + }, + isInvidiousAllowed: function() { + return this.backendPreference === 'invidious' || this.backendFallback } }, created: function () { @@ -127,7 +143,9 @@ export default defineComponent({ isRSS: this.data.isRSS }) this.voteCount = this.data.voteCount + this.formattedVoteCount = formatNumber(this.voteCount) this.commentCount = this.data.commentCount + this.formattedCommentCount = formatNumber(this.commentCount) this.type = (this.data.postContent !== null && this.data.postContent !== undefined) ? this.data.postContent.type : 'text' this.author = this.data.author this.authorId = this.data.authorId diff --git a/src/renderer/components/ft-community-post/ft-community-post.scss b/src/renderer/components/ft-community-post/ft-community-post.scss index bb50bb5b4fb43..6f7b7ebce9e6a 100644 --- a/src/renderer/components/ft-community-post/ft-community-post.scss +++ b/src/renderer/components/ft-community-post/ft-community-post.scss @@ -59,6 +59,12 @@ white-space: pre-wrap; } +.commentsLink { + color: var(--primary-text-color); + text-decoration: none; + font-weight: bold; +} + .bottomSection { color: var(--tertiary-text-color); display: block; diff --git a/src/renderer/components/ft-community-post/ft-community-post.vue b/src/renderer/components/ft-community-post/ft-community-post.vue index f65e379e47824..b7f864efde2da 100644 --- a/src/renderer/components/ft-community-post/ft-community-post.vue +++ b/src/renderer/components/ft-community-post/ft-community-post.vue @@ -115,11 +115,42 @@
- {{ voteCount }} - + + + + + + + { @@ -162,8 +174,12 @@ export default defineComponent({ getCommentData: function () { this.isLoading = true - if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { - this.getCommentDataInvidious() + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious' || this.isPostComments) { + if (!this.isPostComments) { + this.getCommentDataInvidious() + } else { + this.getPostCommentsInvidious() + } } else { this.getCommentDataLocal() } @@ -173,8 +189,12 @@ export default defineComponent({ if (this.commentData.length === 0 || this.nextPageToken === null || typeof this.nextPageToken === 'undefined') { showToast(this.$t('Comments.There are no more comments for this video')) } else { - if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { - this.getCommentDataInvidious() + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious' || this.isPostComments) { + if (!this.isPostComments) { + this.getCommentDataInvidious() + } else { + this.getPostCommentsInvidious() + } } else { this.getCommentDataLocal(true) } @@ -190,17 +210,14 @@ export default defineComponent({ }, getCommentReplies: function (index) { - if (process.env.SUPPORTS_LOCAL_API) { - switch (this.commentData[index].dataType) { - case 'local': - this.getCommentRepliesLocal(index) - break - case 'invidious': - this.getCommentRepliesInvidious(index) - break + if (!process.env.SUPPORTS_LOCAL_API || this.commentData[index].dataType === 'invidious' || this.isPostComments) { + if (!this.isPostComments) { + this.getCommentRepliesInvidious(index) + } else { + this.getPostCommentRepliesInvidious(index) } } else { - this.getCommentRepliesInvidious(index) + this.getCommentRepliesLocal(index) } }, @@ -375,5 +392,68 @@ export default defineComponent({ this.isLoading = false }) }, + + getPostCommentsInvidious: function() { + const nextPageToken = this.nextPageToken + + const fetchComments = nextPageToken == null + ? getInvidiousCommunityPostComments({ postId: this.id, authorId: this.postAuthorId }) + : getInvidiousCommunityPostCommentReplies({ postId: this.id, replyToken: this.nextPageToken, authorId: this.postAuthorId }) + + fetchComments.then(({ response, commentData, continuation }) => { + commentData = commentData.map(({ replyToken, ...comment }) => { + if (comment.hasReplyToken) { + this.replyTokens.set(comment.id, replyToken) + } else { + this.replyTokens.delete(comment.id) + } + + return comment + }) + + this.commentData = this.commentData.concat(commentData) + this.nextPageToken = response?.continuation ?? continuation + this.isLoading = false + this.showComments = true + }).catch((err) => { + console.error(err) + const errorMessage = this.$t('Invidious API Error (Click to copy)') + showToast(`${errorMessage}: ${err}`, 10000, () => { + copyToClipboard(err) + }) + this.isLoading = false + }) + }, + + getPostCommentRepliesInvidious: function(index) { + showToast(this.$t('Comments.Getting comment replies, please wait')) + + const comment = this.commentData[index] + const replyToken = this.replyTokens.get(comment.id) + const id = this.id + + getInvidiousCommunityPostCommentReplies({ postId: id, replyToken: replyToken, authorId: this.postAuthorId }) + .then(({ commentData, continuation }) => { + comment.replies = comment.replies.concat(commentData) + comment.showReplies = true + + if (continuation) { + this.replyTokens.set(comment.id, continuation) + comment.hasReplyToken = true + } else { + this.replyTokens.delete(comment.id) + comment.hasReplyToken = false + } + + this.isLoading = false + }).catch((error) => { + console.error(error) + const errorMessage = this.$t('Invidious API Error (Click to copy)') + showToast(`${errorMessage}: ${error}`, 10000, () => { + copyToClipboard(error) + }) + this.isLoading = false + }) + } } }) diff --git a/src/renderer/components/watch-video-comments/watch-video-comments.vue b/src/renderer/components/watch-video-comments/watch-video-comments.vue index ee5798c631b73..d39df77213606 100644 --- a/src/renderer/components/watch-video-comments/watch-video-comments.vue +++ b/src/renderer/components/watch-video-comments/watch-video-comments.vue @@ -41,7 +41,7 @@ {{ $t("Comments.Click to View Comments") }} -

+

+ {{ $t("Comments.There are no comments available for this post") }} +

+

{{ $t("Comments.There are no comments available for this video") }}

diff --git a/src/renderer/helpers/api/invidious.js b/src/renderer/helpers/api/invidious.js index 17259c7f8158e..f05c4af95e920 100644 --- a/src/renderer/helpers/api/invidious.js +++ b/src/renderer/helpers/api/invidious.js @@ -60,6 +60,16 @@ export function invidiousAPICall({ resource, id = '', params = {}, doLogError = }) } +async function resolveUrl(url) { + return await invidiousAPICall({ + resource: 'resolveurl', + params: { + url + }, + doLogError: false + }) +} + /** * Gets the channel ID for a channel URL * used to get the ID for channel usernames and handles @@ -67,13 +77,7 @@ export function invidiousAPICall({ resource, id = '', params = {}, doLogError = */ export async function invidiousGetChannelId(url) { try { - const response = await invidiousAPICall({ - resource: 'resolveurl', - params: { - url - }, - doLogError: false - }) + const response = await resolveUrl(url) if (response.pageType === 'WEB_PAGE_TYPE_CHANNEL') { return response.ucid @@ -198,6 +202,60 @@ export async function invidiousGetCommunityPosts(channelId, continuation = null) return { posts: response.comments, continuation: response.continuation ?? null } } +export async function getInvidiousCommunityPost(postId, authorId = null) { + const payload = { + resource: 'post', + id: postId, + } + + if (authorId == null) { + authorId = await invidiousGetChannelId('https://www.youtube.com/post/' + postId) + } + + payload.params = { + ucid: authorId + } + + const response = await invidiousAPICall(payload) + + const post = parseInvidiousCommunityData(response.comments[0]) + post.authorId = authorId + post.commentCount = null + + return post +} + +export async function getInvidiousCommunityPostComments({ postId, authorId }) { + const payload = { + resource: 'post', + id: postId, + subResource: 'comments', + params: { + ucid: authorId + } + } + + const response = await invidiousAPICall(payload) + const commentData = parseInvidiousCommentData(response) + + return { response, commentData } +} + +export async function getInvidiousCommunityPostCommentReplies({ postId, replyToken, authorId }) { + const payload = { + resource: 'post', + id: postId, + subResource: 'comments', + params: { + ucid: authorId, + continuation: replyToken + } + } + + const response = await invidiousAPICall(payload) + return { commentData: parseInvidiousCommentData(response), continuation: response.continuation ?? null } +} + function parseInvidiousCommunityData(data) { return { // use #/ to support channel YT links. diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js index ba9a260f7c3cf..83454169b75fd 100644 --- a/src/renderer/helpers/api/local.js +++ b/src/renderer/helpers/api/local.js @@ -1433,7 +1433,7 @@ function parseLocalCommunityPost(post) { postId: post.id, authorThumbnails: post.author.thumbnails, publishedText: post.published.text, - voteCount: post.vote_count, + voteCount: parseLocalSubscriberCount(post.vote_count.text), postContent: parseLocalAttachment(post.attachment), commentCount: replyCount, author: post.author.name, diff --git a/src/renderer/router/index.js b/src/renderer/router/index.js index 2185a7d4878ce..f0a0a2ec4cb60 100644 --- a/src/renderer/router/index.js +++ b/src/renderer/router/index.js @@ -14,6 +14,7 @@ import Playlist from '../views/Playlist/Playlist.vue' import Channel from '../views/Channel/Channel.vue' import Watch from '../views/Watch/Watch.vue' import Hashtag from '../views/Hashtag/Hashtag.vue' +import Post from '../views/Post/Post.vue' Vue.use(Router) @@ -133,6 +134,13 @@ const router = new Router({ title: 'Hashtag' }, component: Hashtag + }, + { + path: '/post/:id', + meta: { + title: 'Post', + }, + component: Post } ], scrollBehavior(to, from, savedPosition) { diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index ce9e710e4863d..f257c98018cc4 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -472,11 +472,13 @@ const actions = { const hashtagPattern = /^\/hashtag\/(?[^#&/?]+)$/ + const postPattern = /^\/post\/(?.+)/ const typePatterns = new Map([ ['playlist', /^(\/playlist\/?|\/embed(\/?videoseries)?)$/], ['search', /^\/results|search\/?$/], ['hashtag', hashtagPattern], - ['channel', channelPattern] + ['channel', channelPattern], + ['post', postPattern] ]) for (const [type, pattern] of typePatterns) { @@ -553,6 +555,17 @@ const actions = { hashtag } } + + case 'post': { + const match = url.pathname.match(postPattern) + const postId = match.groups.postId + const query = { authorId: url.searchParams.get('ucid') } + return { + urlType: 'post', + postId, + query + } + } /* Using RegExp named capture groups from ES2018 To avoid access to specific captured value broken @@ -610,6 +623,16 @@ const actions = { subPath = 'about' break case 'community': + if (url.searchParams.has('lb')) { + // if it has the lb search parameter then it is linking a specific community post + const postId = url.searchParams.get('lb') + const query = { authorId: channelId } + return { + urlType: 'post', + postId, + query + } + } subPath = 'community' break default: diff --git a/src/renderer/views/Post/Post.js b/src/renderer/views/Post/Post.js new file mode 100644 index 0000000000000..d13bb906bbf95 --- /dev/null +++ b/src/renderer/views/Post/Post.js @@ -0,0 +1,62 @@ +import { defineComponent } from 'vue' +import FtCard from '../../components/ft-card/ft-card.vue' +import FtCommunityPost from '../../components/ft-community-post/ft-community-post.vue' +import FtLoader from '../../components/ft-loader/ft-loader.vue' +import WatchVideoComments from '../../components/watch-video-comments/watch-video-comments.vue' + +import { getInvidiousCommunityPost } from '../../helpers/api/invidious' + +export default defineComponent({ + name: 'Post', + components: { + FtCard, + FtCommunityPost, + FtLoader, + WatchVideoComments + }, + data: function () { + return { + id: '', + authorId: '', + post: null, + comments: null, + isLoading: true, + } + }, + computed: { + backendPreference: function () { + return this.$store.getters.getBackendPreference + }, + backendFallback: function () { + return this.$store.getters.getBackendFallback + }, + isInvidiousAllowed: function() { + return this.backendPreference === 'invidious' || this.backendFallback + } + }, + watch: { + async $route() { + // react to route changes... + this.isLoading = true + if (this.isInvidiousAllowed) { + this.id = this.$route.params.id + this.authorId = this.$route.query.authorId + await this.loadDataInvidiousAsync() + } + } + }, + mounted: async function () { + if (this.isInvidiousAllowed) { + this.id = this.$route.params.id + this.authorId = this.$route.query.authorId + await this.loadDataInvidiousAsync() + } + }, + methods: { + loadDataInvidiousAsync: async function() { + this.post = await getInvidiousCommunityPost(this.id, this.authorId) + this.authorId = this.post.authorId + this.isLoading = false + } + } +}) diff --git a/src/renderer/views/Post/Post.vue b/src/renderer/views/Post/Post.vue new file mode 100644 index 0000000000000..22b316ebaeaa7 --- /dev/null +++ b/src/renderer/views/Post/Post.vue @@ -0,0 +1,31 @@ + + +