diff --git a/package.json b/package.json index 9684e7ad6d268..55fd91c6b10b0 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "lodash.debounce": "^4.0.8", "marked": "^12.0.2", "path-browserify": "^1.0.1", + "portal-vue": "^2.1.7", "process": "^0.11.10", "swiper": "^11.1.1", "video.js": "7.21.5", @@ -80,27 +81,27 @@ "vue-observe-visibility": "^1.0.0", "vue-router": "^3.6.5", "vuex": "^3.6.2", - "youtubei.js": "^9.3.0" + "youtubei.js": "^9.4.0" }, "devDependencies": { - "@babel/core": "^7.24.4", - "@babel/eslint-parser": "^7.24.1", + "@babel/core": "^7.24.5", + "@babel/eslint-parser": "^7.24.5", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/preset-env": "^7.24.4", + "@babel/preset-env": "^7.24.5", "@double-great/stylelint-a11y": "^3.0.2", "@intlify/eslint-plugin-vue-i18n": "^2.0.0", "babel-loader": "^9.1.3", "copy-webpack-plugin": "^12.0.2", "css-loader": "^7.1.1", "css-minimizer-webpack-plugin": "^6.0.0", - "electron": "^30.0.1", + "electron": "^30.0.2", "electron-builder": "^24.13.3", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsonc": "^2.15.1", - "eslint-plugin-n": "^17.2.1", + "eslint-plugin-n": "^17.4.0", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-unicorn": "^52.0.0", @@ -117,9 +118,9 @@ "postcss-scss": "^4.0.9", "prettier": "^2.8.8", "rimraf": "^5.0.5", - "sass": "^1.75.0", + "sass": "^1.76.0", "sass-loader": "^14.2.1", - "stylelint": "^16.3.1", + "stylelint": "^16.5.0", "stylelint-config-sass-guidelines": "^11.1.0", "stylelint-config-standard": "^36.0.0", "stylelint-high-performance-animation": "^1.10.0", diff --git a/src/main/index.js b/src/main/index.js index 7660ce575e74f..ef49a4478d090 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -14,6 +14,8 @@ import asyncFs from 'fs/promises' import { promisify } from 'util' import { brotliDecompress } from 'zlib' +import contextMenu from 'electron-context-menu' + import packageDetails from '../../package.json' const brotliDecompressAsync = promisify(brotliDecompress) @@ -43,7 +45,7 @@ function runApp() { }]) } - require('electron-context-menu')({ + contextMenu({ showSearchWithGoogle: false, showSaveImageAs: true, showCopyImageAddress: true, diff --git a/src/renderer/components/ft-refresh-widget/ft-refresh-widget.css b/src/renderer/components/ft-refresh-widget/ft-refresh-widget.css index 7d1a5f49af228..f707eef4ee36e 100644 --- a/src/renderer/components/ft-refresh-widget/ft-refresh-widget.css +++ b/src/renderer/components/ft-refresh-widget/ft-refresh-widget.css @@ -8,7 +8,7 @@ padding-inline: 10px; box-shadow: 0 2px 1px 0 var(--primary-shadow-color); background-color: var(--card-bg-color); - border-inline-start: 2px solid var(--primary-color); + border-inline-start: 2px solid var(--primary-shadow-color); display: flex; align-items: center; gap: 5px; @@ -33,5 +33,6 @@ @media only screen and (width <= 680px) { .floatingRefreshSection, .floatingRefreshSection.sideNavOpen { inline-size: 100%; + border-inline-start: none; } } diff --git a/src/renderer/components/side-nav/side-nav.js b/src/renderer/components/side-nav/side-nav.js index 76adcbfd581b3..a68ac2e686c47 100644 --- a/src/renderer/components/side-nav/side-nav.js +++ b/src/renderer/components/side-nav/side-nav.js @@ -35,6 +35,12 @@ export default defineComponent({ activeSubscriptions: function () { const subscriptions = deepCopy(this.activeProfile.subscriptions) + subscriptions.forEach(channel => { + // Change thumbnail size to 35x35, as that's the size we display it + // so we don't need to download a bigger image (the default is 176x176) + channel.thumbnail = channel.thumbnail?.replace(/=s\d+/, '=s35') + }) + subscriptions.sort((a, b) => { return a.name?.toLowerCase().localeCompare(b.name?.toLowerCase(), this.locale) }) diff --git a/src/renderer/components/top-nav/top-nav.scss b/src/renderer/components/top-nav/top-nav.scss index 55e87ec84725b..c5917b0a70705 100644 --- a/src/renderer/components/top-nav/top-nav.scss +++ b/src/renderer/components/top-nav/top-nav.scss @@ -21,10 +21,6 @@ inline-size: 100%; z-index: 4; - &:has(+ .sideNav + .routerView .floatingRefreshSection) { - box-shadow: none; - } - @media only screen and (width >= 961px) { display: grid; grid-template-columns: 1fr 440px 1fr; @@ -36,6 +32,10 @@ @media only screen and (width <= 680px) { position: fixed; + + &:has(+ .sideNav + .routerView .floatingRefreshSection) { + box-shadow: none; + } } } diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js index ae88001ba3f8f..68f1377def600 100644 --- a/src/renderer/helpers/api/local.js +++ b/src/renderer/helpers/api/local.js @@ -301,7 +301,7 @@ export async function getLocalChannelVideos(id) { })) const videosTab = new YT.Channel(null, response) - const { id: channelId = id, name, thumbnailUrl } = parseLocalChannelHeader(videosTab) + const { id: channelId = id, name, thumbnailUrl } = parseLocalChannelHeader(videosTab, true) let videos @@ -343,7 +343,7 @@ export async function getLocalChannelLiveStreams(id) { })) let liveStreamsTab = new YT.Channel(innertube.actions, response) - const { id: channelId = id, name, thumbnailUrl } = parseLocalChannelHeader(liveStreamsTab) + const { id: channelId = id, name, thumbnailUrl } = parseLocalChannelHeader(liveStreamsTab, true) let videos @@ -411,8 +411,9 @@ export async function getLocalChannelCommunity(id) { /** * @param {YT.Channel} channel + * @param {boolean} onlyIdNameThumbnail */ -export function parseLocalChannelHeader(channel) { +export function parseLocalChannelHeader(channel, onlyIdNameThumbnail = false) { /** @type {string=} */ let id /** @type {string} */ @@ -439,8 +440,11 @@ export function parseLocalChannelHeader(channel) { id = header.author.id name = header.author.name thumbnailUrl = header.author.best_thumbnail.url - bannerUrl = header.banner?.[0]?.url - subscriberText = header.subscribers?.text + + if (!onlyIdNameThumbnail) { + bannerUrl = header.banner?.[0]?.url + subscriberText = header.subscribers?.text + } break } case 'CarouselHeader': { @@ -458,7 +462,6 @@ export function parseLocalChannelHeader(channel) { */ const topicChannelDetails = header.contents.find(node => node.type === 'TopicChannelDetails') name = topicChannelDetails.title.text - subscriberText = topicChannelDetails.subtitle.text thumbnailUrl = topicChannelDetails.avatar[0].url if (channel.metadata.external_id) { @@ -466,6 +469,10 @@ export function parseLocalChannelHeader(channel) { } else { id = topicChannelDetails.subscribe_button.channel_id } + + if (!onlyIdNameThumbnail) { + subscriberText = topicChannelDetails.subtitle.text + } break } case 'InteractiveTabbedHeader': { @@ -478,12 +485,14 @@ export function parseLocalChannelHeader(channel) { const header = channel.header name = header.title.text thumbnailUrl = header.box_art.at(-1).url - bannerUrl = header.banner[0]?.url + id = channel.current_tab?.endpoint.payload.browseId - const badges = header.badges.map(badge => badge.label).filter(tag => tag) - tags.push(...badges) + if (!onlyIdNameThumbnail) { + bannerUrl = header.banner[0]?.url - id = channel.current_tab?.endpoint.payload.browseId + const badges = header.badges.map(badge => badge.label).filter(tag => tag) + tags.push(...badges) + } break } case 'PageHeader': { @@ -515,7 +524,7 @@ export function parseLocalChannelHeader(channel) { thumbnailUrl = channel.metadata.thumbnail[0].url } - if (header.content.banner) { + if (!onlyIdNameThumbnail && header.content.banner) { bannerUrl = header.content.banner.image[0]?.url } @@ -532,7 +541,7 @@ export function parseLocalChannelHeader(channel) { id = channel.metadata.external_id } - if (header.content.metadata) { + if (!onlyIdNameThumbnail && header.content.metadata) { // YouTube has already changed the indexes for where the information is stored once, // so we should search for it instead of using hardcoded indexes, just to be safe for the future @@ -546,6 +555,14 @@ export function parseLocalChannelHeader(channel) { } } + if (onlyIdNameThumbnail) { + return { + id, + name, + thumbnailUrl + } + } + return { id, name, diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index 08aba2659191f..301705f6cb787 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -1191,3 +1191,4 @@ Yes, Delete: نعم ، احذف Yes, Restart: نعم، إعادة تشغيل Yes, Open Link: نعم، افتح الرابط Cancel: إلغاء +Search character limit: تجاوز استعلام البحث حد الأحرف {searchCharacterLimit} diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index ef2b6b04694b2..2fb8c7e21fe3f 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -1189,3 +1189,5 @@ Yes, Delete: Ano, odstranit Yes, Restart: Ano, restartovat Yes, Open Link: Ano, otevřít odkaz Cancel: Zrušit +Search character limit: Vyhledávaný dotaz obsahuje více znaků, než povolený limit + ({searchCharacterLimit}) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index b2c56405b4842..d298ee5babf07 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -1260,3 +1260,8 @@ Moments Ago: vor wenigen Augenblicken Feed: Refresh Feed: '{subscriptionName} auffrischen' Feed Last Updated: '{feedName} Feed zuletzt aktualisiert: {date}' +Yes, Delete: Ja, löschen +Cancel: Abbrechen +Search character limit: Die Suche ist länger als das {searchCharacterLimit}-Zeichen-Limit +Yes, Restart: Ja, neustarten +Yes, Open Link: Ja, Link öffnen diff --git a/static/locales/es.yaml b/static/locales/es.yaml index a1cab1d13ebae..756a5bd60f950 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -1233,3 +1233,5 @@ Yes, Open Link: Sí, abrir el enlace Cancel: Cancelar Yes, Restart: Sí, reiniciar Yes, Delete: Sí, eliminar +Search character limit: La consulta de búsqueda supera el límite de {searchCharacterLimit} + caracteres diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index fa094c1f5f517..967df59d501a8 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -1284,3 +1284,4 @@ 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 diff --git a/static/locales/it.yaml b/static/locales/it.yaml index bf95014487cbe..24d2f9a932ead 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -1236,3 +1236,4 @@ Yes, Delete: Sì, elimina Yes, Restart: Sì, riavvia Yes, Open Link: Sì, apri link Cancel: Annulla +Search character limit: La query di ricerca supera il limite di caratteri {searchCharacterLimit} diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 692567a660790..de3f73c9dce62 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -1225,3 +1225,4 @@ Feed: Yes, Open Link: Ja, link openen Cancel: Annuleren Moments Ago: momenten geleden +Search character limit: Zoek­opdracht overschrijdt de teken­limiet van {searchCharacterLimit} diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index 6320d313c3fa6..24a6aac37f521 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -270,9 +270,9 @@ Settings: Current Invidious Instance: Obecna instancja Invidious External Link Handling: No Action: Brak akcji - Ask Before Opening Link: Zapytaj przed otworzeniem linku - Open Link: Otwórz link - External Link Handling: Obsługa zewnętrznych linków + Ask Before Opening Link: Zapytaj przed otworzeniem odnośnika + Open Link: Otwórz odnośnik + External Link Handling: Obsługa zewnętrznych odnośników Auto Load Next Page: Tooltip: Wczytuj kolejne strony oraz komentarze automatycznie. Label: Automatycznie wczytaj kolejną stronę @@ -530,7 +530,7 @@ Settings: Hide Playlists: Schowaj playlisty Hide Video Description: Schowaj opis filmu Hide Comments: Schowaj komentarze - Hide Sharing Actions: Schowaj linki do dzielenia się filmem + Hide Sharing Actions: Schowaj opcje udostępniania Hide Live Streams: Schowaj transmisje na żywo Hide Chapters: Schowaj rozdziały Hide Upcoming Premieres: Schowaj nadchodzące premiery @@ -781,11 +781,11 @@ Video: Video has been marked as watched: 'Film został oznaczony jako obejrzany' Video has been removed from your history: 'Film został usunięty z Twojej historii' Open in YouTube: 'Otwórz na stronie YouTube' - Copy YouTube Link: 'Skopiuj link do strony YouTube' + Copy YouTube Link: 'Skopiuj odnośnik do strony YouTube' Open YouTube Embedded Player: 'Otwórz odtwarzacz YouTube' - Copy YouTube Embedded Player Link: 'Skopiuj link do odtwarzacza YouTube' + Copy YouTube Embedded Player Link: 'Skopiuj odnośnik do odtwarzacza YouTube' Open in Invidious: 'Otwórz na stronie Invidious' - Copy Invidious Link: 'Skopiuj link do strony Invidious' + Copy Invidious Link: 'Skopiuj odnośnik do strony Invidious' Views: 'wyświetleń' Watched: 'Obejrzany' # As in a Live Video @@ -852,9 +852,9 @@ Video: audio only: tylko audio video only: tylko wideo Download Video: Pobierz film - Copy Invidious Channel Link: Skopiuj link do kanału na stronie Invidious + Copy Invidious Channel Link: Skopiuj odnośnik do kanału na stronie Invidious Open Channel in Invidious: Otwórz kanał na stronie Invidious - Copy YouTube Channel Link: Skopiuj link do kanału na stronie YouTube + Copy YouTube Channel Link: Skopiuj odnośnik do kanału na stronie YouTube Open Channel in YouTube: Otwórz kanał na stronie YouTube Started streaming on: Transmisję rozpoczęto Streamed on: Transmitowane dnia @@ -962,10 +962,10 @@ Change Format: Share: Share Video: 'Podziel się filmem' Share Playlist: 'Podziel się playlistą' - Copy Link: 'Skopiuj link' - Open Link: 'Otwórz link' - Copy Embed: 'Skopiuj link do osadzenia' - Open Embed: 'Otwórz link do osadzenia' + Copy Link: 'Skopiuj odnośnik' + Open Link: 'Otwórz odnośnik' + Copy Embed: 'Skopiuj odnośnik do osadzenia' + Open Embed: 'Otwórz odnośnik do osadzenia' # On Click Invidious URL copied to clipboard: 'Skopiowano URL Invidious do schowka' Invidious Embed URL copied to clipboard: 'Skopiowano URL odtwarzacza Invidious do @@ -1106,9 +1106,9 @@ Tooltips: API. Thumbnail Preference: Wszystkie miniaturki na FreeTube zostaną zastąpione klatką z filmu zamiast miniaturki domyślnej. - External Link Handling: "Wybierz domyślne zachowanie kiedy link, który nie może - zostać otworzony w FreeTube, został kliknięty.\nDomyślnie FreeTube otworzy kliknięty - link w domyślnej przeglądarce.\n" + External Link Handling: "Wybierz domyślne zachowanie kiedy odnośnik, który nie + 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 @@ -1181,7 +1181,7 @@ Default Invidious instance has been set to {instance}: Domyślna instancja Invid Search Bar: Clear Input: Wyczyść pole External link opening has been disabled in the general settings: Otwieranie zewnętrznych - linków zostało wyłączone w ustawieniach ogólnych + odnośników zostało wyłączone w ustawieniach ogólnych Are you sure you want to open this link?: Czy na pewno chcesz otworzyć ten link? Downloading has completed: '„{videoTitle}” został pobrany' Starting download: Rozpoczęto pobieranie „{videoTitle}” @@ -1237,3 +1237,8 @@ Feed: Refresh Feed: Odśwież „{subscriptionName}” Feed Last Updated: 'Ostatnia aktualizacja „{feedName}”: {date}' Moments Ago: chwilę temu +Yes, Delete: Tak, usuń +Search character limit: Zapytanie przekroczyło limit {searchCharacterLimit} znaków +Yes, Restart: Tak, uruchom ponownie +Yes, Open Link: Tak, otwórz odnośnik +Cancel: Anuluj diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index aa4e2fbbf8f15..244e2a41d1c07 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -1230,3 +1230,5 @@ Yes, Delete: Sim, excluir Yes, Restart: Sim, reiniciar Yes, Open Link: Sim, abrir link Cancel: Cancelar +Search character limit: Sua pesquisa ultrapassou o limite de {searchCharacterLimit} + caracteres diff --git a/static/locales/pt.yaml b/static/locales/pt.yaml index 3294d677904c6..39d3a890eaae6 100644 --- a/static/locales/pt.yaml +++ b/static/locales/pt.yaml @@ -1206,3 +1206,8 @@ Feed: Display Label: '{label}: {value}' Moments Ago: há momentos checkmark: ✓ +Yes, Delete: Sim, eliminar +Yes, Open Link: Sim, abrir ligação +Cancel: Cancelar +Search character limit: 'A pesquisa excede o limite de caracteres permitidos: {searchCharacterLimit}' +Yes, Restart: Sim, reiniciar diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index c055f5a17cffa..ef7965fae0330 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -1137,3 +1137,5 @@ Cancel: Откажи Yes, Delete: Да, избриши Yes, Restart: Да, рестартуј Yes, Open Link: Да, отвори линк +Search character limit: Упит за претрагу премашује ограничење броја знакова од {searchCharacterLimit} + знакова diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 07f86d71208b4..0e584b4bf84b5 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -1061,3 +1061,4 @@ Yes, Open Link: 是,打开链接 Cancel: 取消 Yes, Delete: 是,删除 Yes, Restart: 是,重启 +Search character limit: 搜索词超过了 {searchCharacterLimit} 字符的上限 diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index 2c08f47eb5d3e..422b32c6bdbb3 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -1071,3 +1071,4 @@ Yes, Delete: 是的,刪除 Yes, Restart: 是的,重新啟動 Yes, Open Link: 是的,開啟連結 Cancel: 取消 +Search character limit: 搜尋查詢超出了 {searchCharacterLimit} 個字元的限制 diff --git a/yarn.lock b/yarn.lock index a679209e010ee..36107f0dc803d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,7 +20,7 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== @@ -33,42 +33,42 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" - integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== +"@babel/core@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.4" + "@babel/generator" "^7.24.5" "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.4" - "@babel/parser" "^7.24.4" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz#e27eee93ed1d271637165ef3a86e2b9332395c32" - integrity sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ== +"@babel/eslint-parser@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz#3b0f7d383a540329a30a6a9937cfc89461d26217" + integrity sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.1", "@babel/generator@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" - integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== +"@babel/generator@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== dependencies: - "@babel/types" "^7.24.0" + "@babel/types" "^7.24.5" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" @@ -148,6 +148,21 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" + integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.24.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" @@ -240,30 +255,30 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== +"@babel/helper-member-expression-to-functions@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" + integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== dependencies: - "@babel/types" "^7.22.15" + "@babel/types" "^7.24.5" -"@babel/helper-module-imports@^7.24.1": +"@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== dependencies: "@babel/types" "^7.24.0" -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== +"@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== dependencies: "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -279,10 +294,10 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" - integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" @@ -320,6 +335,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== + dependencies: + "@babel/types" "^7.24.5" + "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" @@ -341,16 +363,28 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-string-parser@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== + "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" @@ -365,14 +399,14 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" - integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== dependencies: "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" "@babel/highlight@^7.24.2": version "7.24.2" @@ -384,18 +418,18 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.23.5", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" - integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== +"@babel/parser@^7.23.5", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz#6125f0158543fb4edf1c22f322f3db67f21cb3e1" - integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" + integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== dependencies: "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": version "7.24.1" @@ -594,12 +628,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-block-scoping@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz#28f5c010b66fbb8ccdeef853bef1935c434d7012" - integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== +"@babel/plugin-transform-block-scoping@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" + integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-transform-class-properties@^7.24.1": version "7.24.1" @@ -618,18 +652,18 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== +"@babel/plugin-transform-classes@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" + integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-split-export-declaration" "^7.24.5" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.24.1": @@ -640,12 +674,12 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/template" "^7.24.0" -"@babel/plugin-transform-destructuring@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== +"@babel/plugin-transform-destructuring@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" + integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-transform-dotall-regex@^7.24.1": version "7.24.1" @@ -799,15 +833,15 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== +"@babel/plugin-transform-object-rest-spread@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" + integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== dependencies: "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-parameters" "^7.24.5" "@babel/plugin-transform-object-super@^7.24.1": version "7.24.1" @@ -825,21 +859,21 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== +"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" + integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== +"@babel/plugin-transform-parameters@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" + integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-transform-private-methods@^7.24.1": version "7.24.1" @@ -849,14 +883,14 @@ "@babel/helper-create-class-features-plugin" "^7.24.1" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-private-property-in-object@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== +"@babel/plugin-transform-private-property-in-object@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" + integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-transform-property-literals@^7.24.1": @@ -910,12 +944,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-typeof-symbol@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== +"@babel/plugin-transform-typeof-symbol@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" + integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-transform-unicode-escapes@^7.24.1": version "7.24.1" @@ -948,16 +982,16 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/preset-env@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.4.tgz#46dbbcd608771373b88f956ffb67d471dce0d23b" - integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== +"@babel/preset-env@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" + integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== dependencies: "@babel/compat-data" "^7.24.4" "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" @@ -984,12 +1018,12 @@ "@babel/plugin-transform-async-generator-functions" "^7.24.3" "@babel/plugin-transform-async-to-generator" "^7.24.1" "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.4" + "@babel/plugin-transform-block-scoping" "^7.24.5" "@babel/plugin-transform-class-properties" "^7.24.1" "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.1" + "@babel/plugin-transform-classes" "^7.24.5" "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.5" "@babel/plugin-transform-dotall-regex" "^7.24.1" "@babel/plugin-transform-duplicate-keys" "^7.24.1" "@babel/plugin-transform-dynamic-import" "^7.24.1" @@ -1009,13 +1043,13 @@ "@babel/plugin-transform-new-target" "^7.24.1" "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.5" "@babel/plugin-transform-object-super" "^7.24.1" "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.5" "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.5" "@babel/plugin-transform-property-literals" "^7.24.1" "@babel/plugin-transform-regenerator" "^7.24.1" "@babel/plugin-transform-reserved-words" "^7.24.1" @@ -1023,7 +1057,7 @@ "@babel/plugin-transform-spread" "^7.24.1" "@babel/plugin-transform-sticky-regex" "^7.24.1" "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.5" "@babel/plugin-transform-unicode-escapes" "^7.24.1" "@babel/plugin-transform-unicode-property-regex" "^7.24.1" "@babel/plugin-transform-unicode-regex" "^7.24.1" @@ -1072,29 +1106,29 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== +"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.4.4": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== +"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.4.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" to-fast-properties "^2.0.0" "@csstools/css-parser-algorithms@^2.6.1": @@ -3003,9 +3037,9 @@ core-js-compat@^3.31.0, core-js-compat@^3.34.0, core-js-compat@^3.36.1: browserslist "^4.23.0" core-js@^3.35.1: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" - integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb" + integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug== core-util-is@1.0.2: version "1.0.2" @@ -3578,10 +3612,10 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz#bb16bcf2a3537962fccfa746b5c98c5f7404ff46" integrity sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg== -electron@^30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.1.tgz#2caf0eb7ed591b9b9842b522421bcae3aa8293d6" - integrity sha512-iwxkI/n2wBd29NH7TH0ZY8aWGzCoKpzJz+D10u7aGSJi1TV6d4MSM3rWyKvT/UkAHkTKOEgYfUyCa2vWQm8L0g== +electron@^30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.2.tgz#95ba019216bf8be9f3097580123e33ea37497733" + integrity sha512-zv7T+GG89J/hyWVkQsLH4Y/rVEfqJG5M/wOBIGNaDdqd8UV9/YZPdS7CuFeaIj0H9LhCt95xkIQNpYB/3svOkQ== dependencies: "@electron/get" "^2.0.0" "@types/node" "^20.9.0" @@ -3911,7 +3945,7 @@ eslint-plugin-jsonc@^2.15.1: natural-compare "^1.4.0" synckit "^0.6.0" -eslint-plugin-n@^17.2.1: +eslint-plugin-n@^17.4.0: version "17.4.0" resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.4.0.tgz#a090462d523c4aa959ea7aa0851f1e70f12fac51" integrity sha512-RtgGgNpYxECwE9dFr+D66RtbN0B8r/fY6ZF8EVsmK2YnZxE8/n9LNQhgnkL9z37UFZjYVmvMuC32qu7fQBsLVQ== @@ -6686,6 +6720,11 @@ pluralize@^8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== +portal-vue@^2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/portal-vue/-/portal-vue-2.1.7.tgz#ea08069b25b640ca08a5b86f67c612f15f4e4ad4" + integrity sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g== + postcss-calc@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" @@ -7497,10 +7536,10 @@ sass-loader@^14.2.1: dependencies: neo-async "^2.6.2" -sass@^1.75.0: - version "1.75.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.75.0.tgz#91bbe87fb02dfcc34e052ddd6ab80f60d392be6c" - integrity sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw== +sass@^1.76.0: + version "1.76.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.76.0.tgz#fe15909500735ac154f0dc7386d656b62b03987d" + integrity sha512-nc3LeqvF2FNW5xGF1zxZifdW3ffIz5aBb7I7tSvOoNu7z1RQ6pFt9MBuiPtjgaI62YWrM/txjWlOCFiGtf2xpw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -8053,7 +8092,7 @@ stylelint-use-logical-spec@^5.0.1: resolved "https://registry.yarnpkg.com/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#d5aa254d615d373f18214297c0b49a03a6ca5980" integrity sha512-UfLB4LW6iG4r3cXxjxkiHQrFyhWFqt8FpNNngD+TyvgMWSokk5TYwTvBHS3atUvZhOogllTOe/PUrGE+4z84AA== -stylelint@^16.3.1: +stylelint@^16.5.0: version "16.5.0" resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.5.0.tgz#4e3aff7cc2294fa54da729b972a6c38bf2a584a0" integrity sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw== @@ -9079,10 +9118,10 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -youtubei.js@^9.3.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-9.3.0.tgz#abaaa585f4fa5ba9672c226fbf639929c11063ea" - integrity sha512-hWTDyxNakwURkCpTh1YfGxKWp1JxU94uwtmwqUq6zSwLfyIJRTsyVZqBd3/bm+5d+lyetl+jEO5ajOsRXshefg== +youtubei.js@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-9.4.0.tgz#ccccaf4a295b96e3e17134a66730bbc82461594b" + integrity sha512-8plCOZD2WabqWSEgZU3RjzigIIeR7sF028EERJENYrC9xO/6awpLMZfeoE1gNrNEbKcA+bzbMvonqlvBdxGdKg== dependencies: jintr "^1.1.0" tslib "^2.5.0"