From d65f06a3f67bbf7cfa077e9374824e98158d3aa6 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 3 Jun 2024 09:53:16 +0200 Subject: [PATCH 001/120] Add missing IPC channel constants (#5216) --- src/constants.js | 13 +++++++++++ src/main/index.js | 22 +++++++++---------- src/renderer/App.js | 12 +++++----- .../ft-video-player/ft-video-player.js | 4 ++-- .../theme-settings/theme-settings.js | 3 ++- src/renderer/main.js | 3 ++- 6 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/constants.js b/src/constants.js index c3c3e164edc5e..95bb9ce593922 100644 --- a/src/constants.js +++ b/src/constants.js @@ -12,6 +12,17 @@ const IpcChannels = { CREATE_NEW_WINDOW: 'create-new-window', OPEN_IN_EXTERNAL_PLAYER: 'open-in-external-player', NATIVE_THEME_UPDATE: 'native-theme-update', + APP_READY: 'app-ready', + RELAUNCH_REQUEST: 'relaunch-request', + + SEARCH_INPUT_HANDLING_READY: 'search-input-handling-ready', + UPDATE_SEARCH_INPUT_TEXT: 'update-search-input-text', + + OPEN_URL: 'open-url', + CHANGE_VIEW: 'change-view', + + HISTORY_BACK: 'history-back', + HISTORY_FORWARD: 'history-forward', DB_SETTINGS: 'db-settings', DB_HISTORY: 'db-history', @@ -26,6 +37,8 @@ const IpcChannels = { GET_REPLACE_HTTP_CACHE: 'get-replace-http-cache', TOGGLE_REPLACE_HTTP_CACHE: 'toggle-replace-http-cache', + SHOW_VIDEO_STATISTICS: 'show-video-statistics', + PLAYER_CACHE_GET: 'player-cache-get', PLAYER_CACHE_SET: 'player-cache-set' } diff --git a/src/main/index.js b/src/main/index.js index c97a7eb3f2aa4..9b28278243297 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -56,7 +56,7 @@ function runApp() { label: 'Show / Hide Video Statistics', visible: parameters.mediaType === 'video', click: () => { - browserWindow.webContents.send('showVideoStatistics') + browserWindow.webContents.send(IpcChannels.SHOW_VIDEO_STATISTICS) } }, { @@ -243,7 +243,7 @@ function runApp() { const url = getLinkUrl(commandLine) if (url) { - mainWindow.webContents.send('openUrl', url) + mainWindow.webContents.send(IpcChannels.OPEN_URL, url) } } }) @@ -745,8 +745,8 @@ function runApp() { } if (typeof searchQueryText === 'string' && searchQueryText.length > 0) { - ipcMain.once('searchInputHandlingReady', () => { - newWindow.webContents.send('updateSearchInputText', searchQueryText) + ipcMain.once(IpcChannels.SEARCH_INPUT_HANDLING_READY, () => { + newWindow.webContents.send(IpcChannels.UPDATE_SEARCH_INPUT_TEXT, searchQueryText) }) } @@ -792,9 +792,9 @@ function runApp() { }) } - ipcMain.once('appReady', () => { + ipcMain.once(IpcChannels.APP_READY, () => { if (startupUrl) { - mainWindow.webContents.send('openUrl', startupUrl) + mainWindow.webContents.send(IpcChannels.OPEN_URL, startupUrl) } }) @@ -831,7 +831,7 @@ function runApp() { app.quit() } - ipcMain.once('relaunchRequest', () => { + ipcMain.once(IpcChannels.RELAUNCH_REQUEST, () => { relaunch() }) @@ -1298,7 +1298,7 @@ function runApp() { event.preventDefault() if (mainWindow && mainWindow.webContents) { - mainWindow.webContents.send('openUrl', baseUrl(url)) + mainWindow.webContents.send(IpcChannels.OPEN_URL, baseUrl(url)) } else { startupUrl = baseUrl(url) } @@ -1359,7 +1359,7 @@ function runApp() { } browserWindow.webContents.send( - 'change-view', + IpcChannels.CHANGE_VIEW, { route: path } ) } @@ -1461,7 +1461,7 @@ function runApp() { if (browserWindow == null) { return } browserWindow.webContents.send( - 'history-back', + IpcChannels.HISTORY_BACK ) }, type: 'normal', @@ -1473,7 +1473,7 @@ function runApp() { if (browserWindow == null) { return } browserWindow.webContents.send( - 'history-forward', + IpcChannels.HISTORY_FORWARD ) }, type: 'normal', diff --git a/src/renderer/App.js b/src/renderer/App.js index c669960c5c88d..fb320399ff5e2 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -336,10 +336,10 @@ export default defineComponent({ activateIPCListeners: function () { // handle menu event updates from main script - ipcRenderer.on('history-back', (_event) => { + ipcRenderer.on(IpcChannels.HISTORY_BACK, (_event) => { this.$refs.topNav.historyBack() }) - ipcRenderer.on('history-forward', (_event) => { + ipcRenderer.on(IpcChannels.HISTORY_FORWARD, (_event) => { this.$refs.topNav.historyForward() }) }, @@ -505,23 +505,23 @@ export default defineComponent({ }, enableSetSearchQueryText: function () { - ipcRenderer.on('updateSearchInputText', (event, searchQueryText) => { + ipcRenderer.on(IpcChannels.UPDATE_SEARCH_INPUT_TEXT, (event, searchQueryText) => { if (searchQueryText) { this.$refs.topNav.updateSearchInputText(searchQueryText) } }) - ipcRenderer.send('searchInputHandlingReady') + ipcRenderer.send(IpcChannels.SEARCH_INPUT_HANDLING_READY) }, enableOpenUrl: function () { - ipcRenderer.on('openUrl', (event, url) => { + ipcRenderer.on(IpcChannels.OPEN_URL, (event, url) => { if (url) { this.handleYoutubeLink(url) } }) - ipcRenderer.send('appReady') + ipcRenderer.send(IpcChannels.APP_READY) }, handleExternalLinkOpeningPromptAnswer: function (option) { diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index 4cacc6a195001..dc7c463822592 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -730,8 +730,8 @@ export default defineComponent({ // right click menu if (process.env.IS_ELECTRON) { const { ipcRenderer } = require('electron') - ipcRenderer.removeAllListeners('showVideoStatistics') - ipcRenderer.on('showVideoStatistics', (event) => { + ipcRenderer.removeAllListeners(IpcChannels.SHOW_VIDEO_STATISTICS) + ipcRenderer.on(IpcChannels.SHOW_VIDEO_STATISTICS, (event) => { this.toggleShowStatsModal() }) } diff --git a/src/renderer/components/theme-settings/theme-settings.js b/src/renderer/components/theme-settings/theme-settings.js index 3851a8dc01bf0..b81f7a3ec89d2 100644 --- a/src/renderer/components/theme-settings/theme-settings.js +++ b/src/renderer/components/theme-settings/theme-settings.js @@ -7,6 +7,7 @@ import FtSlider from '../ft-slider/ft-slider.vue' import FtFlexBox from '../ft-flex-box/ft-flex-box.vue' import FtPrompt from '../ft-prompt/ft-prompt.vue' import { colors, getColorTranslations } from '../../helpers/colors' +import { IpcChannels } from '../../../constants' export default defineComponent({ name: 'ThemeSettings', @@ -163,7 +164,7 @@ export default defineComponent({ this.disableSmoothScrollingToggleValue ).then(() => { const { ipcRenderer } = require('electron') - ipcRenderer.send('relaunchRequest') + ipcRenderer.send(IpcChannels.RELAUNCH_REQUEST) }) } }, diff --git a/src/renderer/main.js b/src/renderer/main.js index 4eaa8845c68d5..515770522ea48 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -4,6 +4,7 @@ import App from './App.vue' import router from './router/index' import store from './store/index' import i18n from './i18n/index' +import { IpcChannels } from '../constants' import { library } from '@fortawesome/fontawesome-svg-core' import { register as registerSwiper } from 'swiper/element' @@ -218,7 +219,7 @@ if (process.env.IS_ELECTRON) { const { ipcRenderer } = require('electron') // handle menu event updates from main script - ipcRenderer.on('change-view', (event, data) => { + ipcRenderer.on(IpcChannels.CHANGE_VIEW, (event, data) => { if (data.route) { router.push(data.route) } From 682d22695586fba44100a26357661493e9a54ee8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 11:51:52 +0000 Subject: [PATCH 002/120] Bump stylelint from 16.6.0 to 16.6.1 in the stylelint group (#5219) Bumps the stylelint group with 1 update: [stylelint](https://github.com/stylelint/stylelint). Updates `stylelint` from 16.6.0 to 16.6.1 - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/16.6.0...16.6.1) --- updated-dependencies: - dependency-name: stylelint 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 | 67 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 35607377f9276..dcdb8ada88943 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "rimraf": "^5.0.7", "sass": "^1.77.2", "sass-loader": "^14.2.1", - "stylelint": "^16.6.0", + "stylelint": "^16.6.1", "stylelint-config-sass-guidelines": "^11.1.0", "stylelint-config-standard": "^36.0.0", "stylelint-high-performance-animation": "^1.10.0", diff --git a/yarn.lock b/yarn.lock index 7337f13893a04..2ae64aada8d85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2518,7 +2518,14 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -4285,12 +4292,12 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-entry-cache@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" - integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== +file-entry-cache@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-9.0.0.tgz#4478e7ceaa5191fa9676a2daa7030211c31b1e7e" + integrity sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw== dependencies: - flat-cache "^4.0.0" + flat-cache "^5.0.0" filelist@^1.0.1: version "1.0.4" @@ -4306,6 +4313,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -4359,24 +4373,23 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flat-cache@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.0.tgz#d12437636f83bb8a12b8f300c36fd1614e1c7224" - integrity sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA== +flat-cache@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-5.0.0.tgz#26c4da7b0f288b408bb2b506b2cb66c240ddf062" + integrity sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ== dependencies: - flatted "^3.2.9" + flatted "^3.3.1" keyv "^4.5.4" - rimraf "^5.0.5" flatted@^3.1.0: version "3.2.5" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== +flatted@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== follow-redirects@^1.0.0: version "1.15.6" @@ -5993,12 +6006,12 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: @@ -8023,10 +8036,10 @@ 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.6.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.6.0.tgz#14d0006aa04b2636a6cda505b6a06d8d3910824c" - integrity sha512-vjWYlDEgOS3Z/IcXagQwi8PFJyPro1DxBYOnTML1PAqnrYUHs8owleGStv20sgt0OhW8r9zZm6MK7IT2+l2B6A== +stylelint@^16.6.1: + version "16.6.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.6.1.tgz#84735aca2bb5cde535572b7a9b878d2ec983a570" + integrity sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q== dependencies: "@csstools/css-parser-algorithms" "^2.6.3" "@csstools/css-tokenizer" "^2.3.1" @@ -8041,7 +8054,7 @@ stylelint@^16.6.0: debug "^4.3.4" fast-glob "^3.3.2" fastest-levenshtein "^1.0.16" - file-entry-cache "^8.0.0" + file-entry-cache "^9.0.0" global-modules "^2.0.0" globby "^11.1.0" globjoin "^0.1.4" @@ -8052,7 +8065,7 @@ stylelint@^16.6.0: known-css-properties "^0.31.0" mathml-tag-names "^2.1.3" meow "^13.2.0" - micromatch "^4.0.5" + micromatch "^4.0.7" normalize-path "^3.0.0" picocolors "^1.0.1" postcss "^8.4.38" From c6f76a9c65a6d20416930bbc0c5ef7cbf3d61c61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 11:52:37 +0000 Subject: [PATCH 003/120] Bump swiper from 11.1.3 to 11.1.4 (#5220) Bumps [swiper](https://github.com/nolimits4web/Swiper) from 11.1.3 to 11.1.4. - [Release notes](https://github.com/nolimits4web/Swiper/releases) - [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md) - [Commits](https://github.com/nolimits4web/Swiper/compare/v11.1.3...v11.1.4) --- updated-dependencies: - dependency-name: swiper 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 dcdb8ada88943..4f18c625d8a3c 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "path-browserify": "^1.0.1", "portal-vue": "^2.1.7", "process": "^0.11.10", - "swiper": "^11.1.3", + "swiper": "^11.1.4", "video.js": "7.21.5", "videojs-contrib-quality-levels": "^3.0.0", "videojs-http-source-selector": "^1.1.6", diff --git a/yarn.lock b/yarn.lock index 2ae64aada8d85..f603948ae11c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8140,10 +8140,10 @@ svgo@^3.2.0: csso "^5.0.5" picocolors "^1.0.0" -swiper@^11.1.3: - version "11.1.3" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.3.tgz#ff5cbeea349d207a2423c4106b1905cb12804a19" - integrity sha512-80MSxonyTxrGcaWj9YgvvhD8OG0B9/9IVZP33vhIEvyWvmKjnQDBieO+29wKvMx285sAtvZyrWBdkxaw6+D3aw== +swiper@^11.1.4: + version "11.1.4" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.4.tgz#2f8e303e8bf9e5bc40a3885fc637ae60ff27996c" + integrity sha512-1n7kbYJB2dFEpUHRFszq7gys/ofIBrMNibwTiMvPHwneKND/t9kImnHt6CfGPScMHgI+dWMbGTycCKGMoOO1KA== synckit@^0.6.0: version "0.6.2" From 7449e7aec59e833930fa95625bd2532f8dd75902 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 11:53:49 +0000 Subject: [PATCH 004/120] Bump electron from 30.0.8 to 30.0.9 (#5221) Bumps [electron](https://github.com/electron/electron) from 30.0.8 to 30.0.9. - [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/v30.0.8...v30.0.9) --- 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 4f18c625d8a3c..63ec7a794c516 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "copy-webpack-plugin": "^12.0.2", "css-loader": "^7.1.2", "css-minimizer-webpack-plugin": "^7.0.0", - "electron": "^30.0.8", + "electron": "^30.0.9", "electron-builder": "^24.13.3", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", diff --git a/yarn.lock b/yarn.lock index f603948ae11c3..6c023f26861b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3557,10 +3557,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.8: - version "30.0.8" - resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.8.tgz#aa54bab26ce706c9e1b244d79047a451733eb4b0" - integrity sha512-ivzXJJ/9gdb4oOw+5SDuaZpSInz8C+Z021dKZfFLMltKbDa4sSqt5cRBiUg7J36Z2kdus+Jai0bdHWutYE9wAA== +electron@^30.0.9: + version "30.0.9" + resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.9.tgz#b11400e4642a4b635e79244ba365f1d401ee60b5" + integrity sha512-ArxgdGHVu3o5uaP+Tqj8cJDvU03R6vrGrOqiMs7JXLnvQHMqXJIIxmFKQAIdJW8VoT3ac3hD21tA7cPO10RLow== dependencies: "@electron/get" "^2.0.0" "@types/node" "^20.9.0" From 4c99d50de52cd9e817d9572a6bf772582013355b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 11:54:23 +0000 Subject: [PATCH 005/120] Bump the eslint group with 2 updates (#5218) Bumps the eslint group with 2 updates: [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) and [vue-eslint-parser](https://github.com/vuejs/vue-eslint-parser). Updates `eslint-plugin-promise` from 6.1.1 to 6.2.0 - [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.1.1...v6.2.0) Updates `vue-eslint-parser` from 9.4.2 to 9.4.3 - [Release notes](https://github.com/vuejs/vue-eslint-parser/releases) - [Commits](https://github.com/vuejs/vue-eslint-parser/compare/v9.4.2...v9.4.3) --- updated-dependencies: - dependency-name: eslint-plugin-promise dependency-type: direct:development update-type: version-update:semver-minor dependency-group: eslint - dependency-name: vue-eslint-parser dependency-type: direct:development update-type: version-update:semver-patch 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 | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 63ec7a794c516..b0684bb3b66e1 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "eslint-plugin-jsonc": "^2.16.0", "eslint-plugin-n": "^17.7.0", "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-promise": "^6.2.0", "eslint-plugin-unicorn": "^53.0.0", "eslint-plugin-vue": "^9.26.0", "eslint-plugin-vuejs-accessibility": "^2.3.0", @@ -125,7 +125,7 @@ "stylelint-use-logical-spec": "^5.0.1", "tree-kill": "1.2.2", "vue-devtools": "^5.1.4", - "vue-eslint-parser": "^9.4.2", + "vue-eslint-parser": "^9.4.3", "vue-loader": "^15.10.0", "webpack": "^5.91.0", "webpack-cli": "^5.1.4", diff --git a/yarn.lock b/yarn.lock index 6c023f26861b5..56f2143e07231 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3922,10 +3922,10 @@ eslint-plugin-prettier@^5.1.3: prettier-linter-helpers "^1.0.0" synckit "^0.8.6" -eslint-plugin-promise@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" - integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== +eslint-plugin-promise@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.2.0.tgz#e24ab0e3c0a25fa227d98d9ff612156b5af15945" + integrity sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA== eslint-plugin-unicorn@^53.0.0: version "53.0.0" @@ -8664,10 +8664,10 @@ vue-devtools@^5.1.4: resolved "https://registry.yarnpkg.com/vue-devtools/-/vue-devtools-5.1.4.tgz#265a7458ade2affb291739176964256b597fa302" integrity sha512-EBAEXvAHUinsPzoSiElps0JgtLXUnJXKIJbP6nfdz/R63VdKBMfJ34/rFip+4iT7iMbVS5lA4W6N1jq4Hj4LCg== -vue-eslint-parser@^9.0.0, vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.4.2: - version "9.4.2" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz#02ffcce82042b082292f2d1672514615f0d95b6d" - integrity sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ== +vue-eslint-parser@^9.0.0, vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.4.2, vue-eslint-parser@^9.4.3: + version "9.4.3" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8" + integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg== dependencies: debug "^4.3.4" eslint-scope "^7.1.1" From 9a4545661348c56e45358038eba9a18698f2aa1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 11:54:47 +0000 Subject: [PATCH 006/120] Bump lefthook from 1.6.13 to 1.6.15 (#5223) Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.6.13 to 1.6.15. - [Release notes](https://github.com/evilmartians/lefthook/releases) - [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md) - [Commits](https://github.com/evilmartians/lefthook/compare/v1.6.13...v1.6.15) --- updated-dependencies: - dependency-name: lefthook 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 | 104 +++++++++++++++++++++++++-------------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index b0684bb3b66e1..c907c1268ddf3 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "html-webpack-plugin": "^5.6.0", "js-yaml": "^4.1.0", "json-minimizer-webpack-plugin": "^5.0.0", - "lefthook": "^1.6.13", + "lefthook": "^1.6.15", "mini-css-extract-plugin": "^2.9.0", "npm-run-all2": "^6.2.0", "postcss": "^8.4.38", diff --git a/yarn.lock b/yarn.lock index 56f2143e07231..31c5230dbba96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5731,59 +5731,59 @@ lazy-val@^1.0.4, lazy-val@^1.0.5: resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== -lefthook-darwin-arm64@1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.6.13.tgz#c7543b057bdceb02a3463b2bb7b279e79c3812b9" - integrity sha512-cRmqST0zZQNHl0VwBrlHLDaU1qsiTBLMiDp6bttZzUkfqwH9Pqhj2muxnoAnNXxzhlQsriCIuc44BxtbzL+GTw== - -lefthook-darwin-x64@1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.6.13.tgz#7d38dbacffdc4c17ca6c161372bf9d5c012b1c27" - integrity sha512-GYGG71zeUSUua71Idq5/poW8BcR8kNUMzfyZ6ZGSvGxzdnmJRvSHk/bxrvcvfScfqCXKASUM0yRcLgQjJRs5Dg== - -lefthook-freebsd-arm64@1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.6.13.tgz#2b58526457cac4d34d6017a7ed95de02afe6727d" - integrity sha512-VjK6rizPmb79IuyCMZtUKIXRZejs51ItuVSdNGkJg3YFIYzhpINTrQ/9d5/hTJ/QaOtPk72WZsayh5nQYCwJRw== - -lefthook-freebsd-x64@1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.6.13.tgz#9c5554015e5ff8ba1aeb181ca70b32c6dee6635c" - integrity sha512-pz3MxCNIDB1i4LDxK+z4AnRS4ZH9YU6ryDm5RbHQ24sDLPqVdDWs90IAtexp9xvevZwPEtU5e/qCHNuqoYALmQ== - -lefthook-linux-arm64@1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.6.13.tgz#3659c18615f830a3bf359ed888bd263a61449ab0" - integrity sha512-IvsXpPb1U2nWVByQczyK48pnUAeqlt8Tx73YM8dUU8YBVSN1zVt8xqMSNqnk46zhggCPHEfc3aqL5UInnveJMA== - -lefthook-linux-x64@1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.6.13.tgz#24b1e83cddb376ba5596e8a570448d2fbae6b354" - integrity sha512-Ia8Rr1P7rA+E70ABD80Hm0z1kQK7F+qgoVIpeg+MLwqMHNMWLR0lG+v7iF6W+CeTqgz+80r6E1OjT3rh4O7Feg== - -lefthook-windows-arm64@1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.6.13.tgz#ec6f0e87f3c066b2f88fedc4f5c2b889be6f0cb2" - integrity sha512-z1dcEsm7r8OIec2f8tBL02aLZHNWaxI4j+OIPiWKN7AIk4or0uSZTxPCNFnVprfc4tOuDUZlJJJovjrQdRsvNQ== - -lefthook-windows-x64@1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.6.13.tgz#7f06e2abe4af1a42135eccd19e3f14cc042f963e" - integrity sha512-DRgAWkNVyu/JgjXD5Hp8dy/iEep4K9YNUgUSvBlV17DfujUVyrfn2L6RccIdVI8VgIEPCvT+oevmG0ViyfPy3Q== - -lefthook@^1.6.13: - version "1.6.13" - resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.6.13.tgz#d74aab4ce23cda121149d94cdea62d873c095544" - integrity sha512-2yaLmiEyQUPpSmNwj6Ak1nYjaprHI+a8gYRu2QH+kRkaig+gdpayzIOtL+28phzxsw0aJNTeIeDMnVautKx5eQ== +lefthook-darwin-arm64@1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.6.15.tgz#8fe2451b4c37c0edc04e22f1cd41545fd0a1f964" + integrity sha512-PQKFipNueV2i/W3XI+fDDwzV3YdnJ1AqwIP2BwDpzlSJtQQarsAG7lRvFdjkPGplVLqWoohTQa1/ooBmg+g3dw== + +lefthook-darwin-x64@1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.6.15.tgz#631619fc345d599887cfe7678f43f34511af798e" + integrity sha512-dNAZp281EJ1vyovszftVO+uk/xJZbomrtfuQeZ3tAk8Xybu6b4+XSoBklH5eRfl46/TWUNVkSF5owYG6+ZtvIA== + +lefthook-freebsd-arm64@1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.6.15.tgz#f5379113ad95cf80c81e18a8dccf248a43c0f185" + integrity sha512-GWGt5jDLOcICjsoPZV4tFjjQJ3v9uNqHXg80QXx+Pb7HSqLFp3OnUEfjV2IO27lOln7+AMTF6WWigJl/NKllKw== + +lefthook-freebsd-x64@1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.6.15.tgz#74d832ab3dd0052571d4af2138e3d0ab43acec1c" + integrity sha512-803r+OYRpY5CBa8LU83EINO+Mi5k7rfflApMJuEIzcH1pFlEjbLttGy2hJX19m1kTKzkz/HuzFl6znbkmZGttw== + +lefthook-linux-arm64@1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.6.15.tgz#ecd56a924ef614447d878169492a31608d4230f8" + integrity sha512-4rATbRhhBj4VNnvAEGRXvQL+POO4xwdUdCc2aSBcKdRFnabYabWm9ebSp55id7nDt3mVf7FBKDCl7A3kzUxehQ== + +lefthook-linux-x64@1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.6.15.tgz#a61e1d4a788402963130559b613d2fd6fbca1685" + integrity sha512-VhDL/po/EujilZKq14frjzOgApHrI1bNfghvuWkNz+5LGphe1/iSXV1DKDDOrGprl/vp2p+QUaJW8HMKBiKgTw== + +lefthook-windows-arm64@1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.6.15.tgz#f1ab23238309b4172129597fe284734d0cc6bb22" + integrity sha512-0HcX/tPEktPjkFVrAIUXzlWIN5VhkBqbYl7xofWoYMjdYetFU2dvC2UDqp/ENVA/PxelszgTVLUVaI0RVJHDoA== + +lefthook-windows-x64@1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.6.15.tgz#6250a202f222d819b42e1ba3e5ea315adf607f7c" + integrity sha512-oBTfUbJRNOSuR1XsS5frGPCY8p74KXNVOuMX+Oun6kyBSutqe3kmafZ3nytbugJdzGx4bGfYxLISM8EoEkgThA== + +lefthook@^1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.6.15.tgz#c3d4e8d625fc962aae1ae40335858ca6f335839e" + integrity sha512-Jjsz5ln/khEBEWH0ZWtK4A14F5aIGk3iwfyHpqqnxpF79OQR8MYCUN2VzpTk5XgzbokMi/M7CJ17/LPAYBRUEw== optionalDependencies: - lefthook-darwin-arm64 "1.6.13" - lefthook-darwin-x64 "1.6.13" - lefthook-freebsd-arm64 "1.6.13" - lefthook-freebsd-x64 "1.6.13" - lefthook-linux-arm64 "1.6.13" - lefthook-linux-x64 "1.6.13" - lefthook-windows-arm64 "1.6.13" - lefthook-windows-x64 "1.6.13" + lefthook-darwin-arm64 "1.6.15" + lefthook-darwin-x64 "1.6.15" + lefthook-freebsd-arm64 "1.6.15" + lefthook-freebsd-x64 "1.6.15" + lefthook-linux-arm64 "1.6.15" + lefthook-linux-x64 "1.6.15" + lefthook-windows-arm64 "1.6.15" + lefthook-windows-x64 "1.6.15" levn@^0.4.1: version "0.4.1" From 3a74e2563714bd5510417bd9edac27ba3f376217 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 12:04:27 +0000 Subject: [PATCH 007/120] Bump sass from 1.77.2 to 1.77.4 (#5222) Bumps [sass](https://github.com/sass/dart-sass) from 1.77.2 to 1.77.4. - [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.2...1.77.4) --- updated-dependencies: - dependency-name: sass 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 c907c1268ddf3..6d7e24f99a1d0 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,7 @@ "postcss-scss": "^4.0.9", "prettier": "^2.8.8", "rimraf": "^5.0.7", - "sass": "^1.77.2", + "sass": "^1.77.4", "sass-loader": "^14.2.1", "stylelint": "^16.6.1", "stylelint-config-sass-guidelines": "^11.1.0", diff --git a/yarn.lock b/yarn.lock index 31c5230dbba96..2d8012136a3f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7475,10 +7475,10 @@ sass-loader@^14.2.1: dependencies: neo-async "^2.6.2" -sass@^1.77.2: - version "1.77.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa" - integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA== +sass@^1.77.4: + version "1.77.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.4.tgz#92059c7bfc56b827c56eb116778d157ec017a5cd" + integrity sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 45935029db812d794928778c4f87710534410d14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 3 Jun 2024 16:42:37 +0000 Subject: [PATCH 008/120] Translated using Weblate (Estonian) Currently translated at 100.0% (861 of 861 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/ --- static/locales/et.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/locales/et.yaml b/static/locales/et.yaml index 142de6344f4e2..d6fcdadc8d9c2 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -1177,3 +1177,8 @@ Search character limit: Otsingupäring on lubatud {searchCharacterLimit}-tähem piirist pikem Yes, Delete: Jah, kustuta Yes, Open Link: Jah, ava link +Search Listing: + Label: + Subtitles: Subtiitrid + Closed Captions: Subtiitrid + 4K: 4K From 8513474e731a92bdf4b07383eb62be78247bcc18 Mon Sep 17 00:00:00 2001 From: syl Date: Mon, 3 Jun 2024 18:24:14 +0000 Subject: [PATCH 009/120] Translated using Weblate (French) Currently translated at 100.0% (861 of 861 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index b131fa40857b2..3e2d3b543f7fc 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -635,7 +635,7 @@ Settings: Proxy Port Number: Numéro de port du proxy Proxy Host: Hôte du proxy Proxy Protocol: Protocole du proxy - Enable Tor / Proxy: Activer Tor / Proxy + Enable Tor / Proxy: Activer Tor / proxy Proxy Settings: Paramètres du proxy SponsorBlock Settings: Notify when sponsor segment is skipped: Notification lorsqu'un segment sponsorisé From aaea23b943a1c05e92e809ab1535123f67dff62f Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 4 Jun 2024 11:00:10 +0200 Subject: [PATCH 010/120] Switch settings sections and form elements to created lifecycle hook (#5224) --- .../external-player-settings/external-player-settings.js | 3 --- src/renderer/components/ft-input/ft-input.js | 2 +- src/renderer/components/ft-slider/ft-slider.js | 2 +- src/renderer/components/ft-toggle-switch/ft-toggle-switch.js | 2 +- src/renderer/components/general-settings/general-settings.js | 2 +- src/renderer/components/theme-settings/theme-settings.js | 2 +- 6 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/renderer/components/external-player-settings/external-player-settings.js b/src/renderer/components/external-player-settings/external-player-settings.js index d9e30a2b5d586..8805556d4ab4b 100644 --- a/src/renderer/components/external-player-settings/external-player-settings.js +++ b/src/renderer/components/external-player-settings/external-player-settings.js @@ -15,9 +15,6 @@ export default defineComponent({ 'ft-toggle-switch': FtToggleSwitch, 'ft-flex-box': FtFlexBox }, - data: function () { - return {} - }, computed: { externalPlayerNames: function () { const fallbackNames = this.$store.getters.getExternalPlayerNames diff --git a/src/renderer/components/ft-input/ft-input.js b/src/renderer/components/ft-input/ft-input.js index bf7983f418510..876e6d5bbcd56 100644 --- a/src/renderer/components/ft-input/ft-input.js +++ b/src/renderer/components/ft-input/ft-input.js @@ -141,7 +141,7 @@ export default defineComponent({ } } }, - mounted: function () { + created: function () { this.id = this._uid this.inputData = this.value this.updateVisibleDataList() diff --git a/src/renderer/components/ft-slider/ft-slider.js b/src/renderer/components/ft-slider/ft-slider.js index 737e76d1b0a67..55e921082b03a 100644 --- a/src/renderer/components/ft-slider/ft-slider.js +++ b/src/renderer/components/ft-slider/ft-slider.js @@ -53,7 +53,7 @@ export default defineComponent({ this.currentValue = this.defaultValue } }, - mounted: function () { + created: function () { this.id = this._uid this.currentValue = this.defaultValue }, diff --git a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.js b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.js index 26e636f8bde52..94375c72d125f 100644 --- a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.js +++ b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.js @@ -48,7 +48,7 @@ export default defineComponent({ this.currentValue = this.defaultValue } }, - mounted: function () { + created: function () { this.id = this._uid this.currentValue = this.defaultValue }, diff --git a/src/renderer/components/general-settings/general-settings.js b/src/renderer/components/general-settings/general-settings.js index 5a53b1644c2ba..a37332ed03c9d 100644 --- a/src/renderer/components/general-settings/general-settings.js +++ b/src/renderer/components/general-settings/general-settings.js @@ -202,7 +202,7 @@ export default defineComponent({ ] } }, - mounted: function () { + created: function () { this.setCurrentInvidiousInstanceBounce = debounce(this.setCurrentInvidiousInstance, 500) }, diff --git a/src/renderer/components/theme-settings/theme-settings.js b/src/renderer/components/theme-settings/theme-settings.js index b81f7a3ec89d2..fc018ab45bcb4 100644 --- a/src/renderer/components/theme-settings/theme-settings.js +++ b/src/renderer/components/theme-settings/theme-settings.js @@ -134,7 +134,7 @@ export default defineComponent({ return this.baseTheme !== 'hotPink' } }, - mounted: function () { + created: function () { this.disableSmoothScrollingToggleValue = this.disableSmoothScrolling }, methods: { From f13f788cfe03d6c58ede2baf279fbb6259564617 Mon Sep 17 00:00:00 2001 From: PikachuEXE Date: Wed, 5 Jun 2024 05:04:02 +0800 Subject: [PATCH 011/120] Make adding duplicate disabled by default (#5044) * * Make adding duplicate disabled by default * * Make additional text work for multi video adding * * Put controls toward the end * * Add new label text to translation file * * Use set instead of array for performance * * Add aria-disabled to disabled playlist selector * * Move toggles to the left --- .../ft-playlist-add-video-prompt.css | 27 +++++++++-- .../ft-playlist-add-video-prompt.js | 47 ++++++++++++++++++- .../ft-playlist-add-video-prompt.vue | 35 ++++++++++---- .../ft-playlist-selector.js | 42 ++++++++++++++++- .../ft-playlist-selector.vue | 2 +- static/locales/en-US.yaml | 5 +- static/locales/en_GB.yaml | 2 +- 7 files changed, 141 insertions(+), 19 deletions(-) diff --git a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.css b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.css index aa18554033106..ddcd76c767ac3 100644 --- a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.css +++ b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.css @@ -24,16 +24,29 @@ .optionsRow { display: grid; - grid-template-columns: repeat(2, 1fr); - grid-template-rows: 1fr; + grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); + align-items: center; +} + +.tightOptions { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(100px, max-content)); + column-gap: 16px; align-items: center; } @media only screen and (width <= 800px) { .optionsRow { - /* Switch to 2 rows from 2 columns */ + /* Switch to rows from columns */ grid-template-columns: auto; - grid-template-rows: auto auto; + grid-template-rows: repeat(auto-fit, auto); + align-items: stretch; + } + + .tightOptions { + /* Switch to rows from columns */ + grid-template-columns: auto; + grid-template-rows: repeat(auto-fit, auto); align-items: stretch; } } @@ -51,7 +64,11 @@ overflow-y: scroll; } -.playlist-selector-container { +.playlist-selector-container:not(.disabled) { /* Make them look selectable */ cursor: pointer; } + +.playlist-selector-container.disabled { + opacity: 0.5; +} 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 3e51d789a959f..c1808e6a52ed9 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 @@ -45,6 +45,7 @@ export default defineComponent({ updateQueryDebounce: function() {}, lastShownAt: Date.now(), sortBy: SORT_BY_VALUES.LatestUpdatedFirst, + addingDuplicateVideosEnabled: false, } }, computed: { @@ -111,6 +112,9 @@ export default defineComponent({ toBeAddedToPlaylistVideoList: function () { return this.$store.getters.getToBeAddedToPlaylistVideoList }, + toBeAddedToPlaylistVideoIdList: function () { + return this.toBeAddedToPlaylistVideoList.map((v) => v.videoId) + }, newPlaylistDefaultProperties: function () { return this.$store.getters.getNewPlaylistDefaultProperties }, @@ -161,6 +165,23 @@ export default defineComponent({ sortBySelectValues() { return Object.values(SORT_BY_VALUES) }, + + playlistIdsContainingVideosToBeAdded() { + const ids = [] + + this.allPlaylists.forEach((playlist) => { + const playlistVideoIdSet = playlist.videos.reduce((s, v) => s.add(v.videoId), new Set()) + + if (this.toBeAddedToPlaylistVideoIdList.every((vid) => playlistVideoIdSet.has(vid))) { + ids.push(playlist._id) + } + }) + + return ids + }, + anyPlaylistContainsVideosToBeAdded() { + return this.playlistIdsContainingVideosToBeAdded.length > 0 + }, }, watch: { allPlaylistsLength(val, oldVal) { @@ -202,6 +223,16 @@ export default defineComponent({ // due to enter key press in CreatePlaylistPrompt nextTick(() => this.$refs.searchBar.focus()) }, + + addingDuplicateVideosEnabled(val) { + if (val) { return } + + // Only care when addingDuplicateVideosEnabled disabled + // Remove disabled playlists + this.selectedPlaylistIdList = this.selectedPlaylistIdList.filter(playlistId => { + return !this.playlistIdsContainingVideosToBeAdded.includes(playlistId) + }) + }, }, mounted: function () { this.updateQueryDebounce = debounce(this.updateQuery, 500) @@ -238,10 +269,16 @@ export default defineComponent({ const playlist = this.allPlaylists.find((list) => list._id === selectedPlaylistId) if (playlist == null) { return } + // Use [].concat to avoid `do not mutate vuex store state outside mutation handlers` + let videosToBeAdded = [].concat(this.toBeAddedToPlaylistVideoList) + if (!this.addingDuplicateVideosEnabled) { + const playlistVideoIds = playlist.videos.map((v) => v.videoId) + videosToBeAdded = videosToBeAdded.filter((v) => !playlistVideoIds.includes(v.videoId)) + } + this.addVideos({ _id: playlist._id, - // Use [].concat to avoid `do not mutate vuex store state outside mutation handlers` - videos: [].concat(this.toBeAddedToPlaylistVideoList), + videos: videosToBeAdded, }) addedPlaylistIds.add(playlist._id) // Update playlist's `lastUpdatedAt` @@ -281,6 +318,12 @@ export default defineComponent({ getIconForSortPreference: (s) => getIconForSortPreference(s), + playlistDisabled(playlistId) { + if (this.addingDuplicateVideosEnabled) { return false } + + return this.playlistIdsContainingVideosToBeAdded.includes(playlistId) + }, + ...mapActions([ 'addVideos', 'updatePlaylist', diff --git a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue index e983c355a4241..9554e9a8977b8 100644 --- a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue +++ b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue @@ -28,12 +28,25 @@
- +
+ + +
diff --git a/src/renderer/components/ft-playlist-selector/ft-playlist-selector.js b/src/renderer/components/ft-playlist-selector/ft-playlist-selector.js index dbb64c2717976..3016a10a4125a 100644 --- a/src/renderer/components/ft-playlist-selector/ft-playlist-selector.js +++ b/src/renderer/components/ft-playlist-selector/ft-playlist-selector.js @@ -24,6 +24,14 @@ export default defineComponent({ type: Boolean, required: true, }, + disabled: { + type: Boolean, + required: true, + }, + addingDuplicateVideosEnabled: { + type: Boolean, + required: true, + }, }, emits: ['selected'], data: function () { @@ -76,10 +84,40 @@ export default defineComponent({ count: this.loneVideoPresenceCountInPlaylist, }) }, + multiVideoPresenceCountInPlaylist() { + if (this.toBeAddedToPlaylistVideoList.length < 2) { return null } + + // Count of to be added videos already present in this playlist + const v = this.toBeAddedToPlaylistVideoList.reduce((accumulator, toBeAddedToVideo) => { + return this.playlist.videos.some((pv) => pv.videoId === toBeAddedToVideo.videoId) + ? accumulator + 1 + : accumulator + }, 0) + // Don't display zero value + return v === 0 ? null : v + }, + multiVideoPresenceCountInPlaylistText() { + if (this.multiVideoPresenceCountInPlaylist == null) { return null } + + if (this.addingDuplicateVideosEnabled || this.toBeAddedToPlaylistVideoList.length === this.multiVideoPresenceCountInPlaylist) { + return this.$t('User Playlists.AddVideoPrompt.{videoCount}/{totalVideoCount} Videos Already Added', { + videoCount: this.multiVideoPresenceCountInPlaylist, + totalVideoCount: this.toBeAddedToPlaylistVideoList.length, + }) + } + + return this.$t('User Playlists.AddVideoPrompt.{videoCount}/{totalVideoCount} Videos Will Be Added', { + videoCount: this.toBeAddedToPlaylistVideoList.length - this.multiVideoPresenceCountInPlaylist, + totalVideoCount: this.toBeAddedToPlaylistVideoList.length, + }) + }, + videoPresenceCountInPlaylistText() { + return this.loneVideoPresenceCountInPlaylistText ?? this.multiVideoPresenceCountInPlaylistText + }, videoPresenceCountInPlaylistTextVisible() { if (!this.videoPresenceCountInPlaylistTextShouldBeVisible) { return false } - return this.loneVideoPresenceCountInPlaylistText != null + return this.videoPresenceCountInPlaylistText != null }, }, created: function () { @@ -100,6 +138,8 @@ export default defineComponent({ }, toggleSelection: function () { + if (this.disabled) { return } + this.$emit('selected', this.index) }, diff --git a/src/renderer/components/ft-playlist-selector/ft-playlist-selector.vue b/src/renderer/components/ft-playlist-selector/ft-playlist-selector.vue index 060043169c60f..4f5bc69a6521d 100644 --- a/src/renderer/components/ft-playlist-selector/ft-playlist-selector.vue +++ b/src/renderer/components/ft-playlist-selector/ft-playlist-selector.vue @@ -45,7 +45,7 @@ v-if="videoPresenceCountInPlaylistTextVisible" class="videoPresenceCount" > - {{ loneVideoPresenceCountInPlaylistText }} + {{ videoPresenceCountInPlaylistText }}
diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index c1bf4dec855bb..9008f94d9db33 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -236,9 +236,12 @@ User Playlists: Select a playlist to add your N videos to: 'Select a playlist to add your video to | Select a playlist to add your {videoCount} videos to' N playlists selected: '{playlistCount} Selected' Search in Playlists: Search in Playlists + Allow Adding Duplicate Video(s): Allow Adding Duplicate Video(s) Save: Save - Added {count} Times: 'Added {count} Time | Added {count} Times' + Added {count} Times: 'Already Added | Added {count} Times' + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} Videos Will Be Added' + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} Videos Already Added' Toast: You haven't selected any playlist yet.: You haven't selected any playlist yet. diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml index 99c13b1220722..dc5f18a2c2ee2 100644 --- a/static/locales/en_GB.yaml +++ b/static/locales/en_GB.yaml @@ -190,7 +190,7 @@ User Playlists: playlists Select a playlist to add your N videos to: Select a playlist to add your video to | Select a playlist to add your {videoCount} videos to - Added {count} Times: Added {count} time | Added {count} times + Added {count} Times: Already Added | Added {count} times CreatePlaylistPrompt: New Playlist Name: New Playlist name Create: Create From a343857a9fdc2a113dfe3af1e8a7e709a65896fa Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Tue, 4 Jun 2024 21:06:56 +0000 Subject: [PATCH 012/120] Translated using Weblate (Spanish) Currently translated at 99.7% (862 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/ --- static/locales/es.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/static/locales/es.yaml b/static/locales/es.yaml index 6d52447832b11..29fe99724a38b 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -154,6 +154,10 @@ User Playlists: sus {videoCount} vídeos N playlists selected: '{playlistCount} seleccionada' Added {count} Times: Añadido {count} vez | Añadido {count} veces + "{videoCount}/{totalVideoCount} Videos Already Added": '{VideoCount}/{totalVideoCount} + Vídeos ya añadidos' + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{VideoCount}/{totalVideoCount} + Se añadirán vídeos' SinglePlaylistView: Toast: There were no videos to remove.: No había vídeos que eliminar. From 5e457fe02ac0bb299671209b464eba867e7be247 Mon Sep 17 00:00:00 2001 From: Jose Delvani Date: Tue, 4 Jun 2024 21:33:17 +0000 Subject: [PATCH 013/120] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 394fe4a385b95..c2d43c6fa9ca1 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -225,7 +225,12 @@ User Playlists: N playlists selected: '{playlistCount} selecionada(s)' Search in Playlists: Buscar nas playlists Save: Salvar - Added {count} Times: Adicionado {count} vez | Adicionado {count} vezes + Added {count} Times: Já adicionado | Adicionado {count} vezes + Allow Adding Duplicate Video(s): Permitir adição de vídeos duplicados + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} + vídeos serão adicionados' + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + vídeos já adicionados' Are you sure you want to remove all watched videos from this playlist? This cannot be undone: Tem certeza de que deseja remover todos os vídeos assistidos desta playlist? Isto não pode ser desfeito. From ff60db998a78c8cc3f64596faffd386b6442c68a Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Tue, 4 Jun 2024 21:08:25 +0000 Subject: [PATCH 014/120] Translated using Weblate (Spanish) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/ --- static/locales/es.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/static/locales/es.yaml b/static/locales/es.yaml index 29fe99724a38b..5f967a7e128f1 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -153,11 +153,12 @@ User Playlists: a la que añadir su vídeo | Seleccione una lista de reproducción a la que añadir sus {videoCount} vídeos N playlists selected: '{playlistCount} seleccionada' - Added {count} Times: Añadido {count} vez | Añadido {count} veces + Added {count} Times: Ya añadido | Añadido {count} veces "{videoCount}/{totalVideoCount} Videos Already Added": '{VideoCount}/{totalVideoCount} Vídeos ya añadidos' "{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: Toast: There were no videos to remove.: No había vídeos que eliminar. From 5d7e2aef22211332f4262757b4ac19bfe5c450ff Mon Sep 17 00:00:00 2001 From: Ophiushi <41908476+ishi-sama@users.noreply.github.com> Date: Tue, 4 Jun 2024 22:17:42 +0000 Subject: [PATCH 015/120] Translated using Weblate (French) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 3e2d3b543f7fc..835c58617bd1a 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -159,7 +159,12 @@ User Playlists: à {playlistCount} listes de lecture | {videoCount} vidéos ajoutées à {playlistCount} listes de lecture N playlists selected: '{playlistCount} Sélectionnée(s)' - Added {count} Times: Ajouté {count} Fois | Ajouté {count} Fois + Added {count} Times: Déjà ajouté | Ajouté {count} fois + Allow Adding Duplicate Video(s): Autoriser l'ajout de vidéos en double + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} + Les vidéos seront ajoutées' + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + Vidéos déjà ajoutées' SinglePlaylistView: Toast: There were no videos to remove.: Il n'y avait aucune vidéo à supprimer. From 78c6cbd286a814f4a66737b2eeb48672a6fd4ef5 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: Wed, 5 Jun 2024 00:53:43 +0000 Subject: [PATCH 016/120] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/ --- static/locales/zh-CN.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 01cfe9e430174..0c3fa9c950561 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -139,7 +139,12 @@ User Playlists: Select a playlist to add your N videos to: 选择一个播放列表来添加你的视频 | 选择一个播放列表来添加你的 {videoCount} 个视频 N playlists selected: 选中了 {playlistCount} 个播放列表 - Added {count} Times: 添加了 {count} 次 + Added {count} Times: 已添加了 {count} 次 + Allow Adding Duplicate Video(s): 允许添加重复视频 + "{videoCount}/{totalVideoCount} Videos Will Be Added": 将添加 {videoCount} 个视频,共 + {totalVideoCount} 个视频 + "{videoCount}/{totalVideoCount} Videos Already Added": 已添加 {videoCount} 个视频,共 + {totalVideoCount} 个视频 SinglePlaylistView: Toast: There were no videos to remove.: 没有可删除的视频。 From 80104a684785370000781ccb90567eb77d286af1 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Wed, 5 Jun 2024 01:29:53 +0000 Subject: [PATCH 017/120] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/ --- static/locales/zh-TW.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index 421defa276ae7..48e76b038ce68 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -185,7 +185,12 @@ User Playlists: 部影片新增至 1 個播放清單 "{videoCount} video(s) added to {playlistCount} playlists": 1 部影片新增至 {playlistCount} 個播放清單 | {videoCount} 部影片新增至 {playlistCount} 個播放清單 - Added {count} Times: 新增了 {count} 次 | 新增了 {count} 次 + Added {count} Times: 已新增 | 新增了 {count} 次 + Allow Adding Duplicate Video(s): 允許新增重複影片 + "{videoCount}/{totalVideoCount} Videos Already Added": 已新增 {videoCount}/{totalVideoCount} + 部影片 + "{videoCount}/{totalVideoCount} Videos Will Be Added": 將會新增 {videoCount}/{totalVideoCount} + 部影片 CreatePlaylistPrompt: New Playlist Name: 新播放清單名稱 Toast: From 4599503c7e6fc253a6f40e5f2a15157ebca212c9 Mon Sep 17 00:00:00 2001 From: Massimo Pissarello Date: Wed, 5 Jun 2024 02:59:15 +0000 Subject: [PATCH 018/120] Translated using Weblate (Italian) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/ --- static/locales/it.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/it.yaml b/static/locales/it.yaml index be9601d344974..99598d79b81d1 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -154,7 +154,12 @@ User Playlists: Select a playlist to add your N videos to: Seleziona una playlist a cui aggiungere il tuo video | Seleziona una playlist a cui aggiungere i tuoi {videoCount} video N playlists selected: '{playlistCount} selezionate' - Added {count} Times: Aggiunto {count} volta | Aggiunti {count} volte + Added {count} Times: Già aggiunto | Aggiunti {count} volte + "{videoCount}/{totalVideoCount} Videos Will Be Added": Verranno aggiunti {videoCount}/{totalVideoCount} + video + "{videoCount}/{totalVideoCount} Videos Already Added": Sono già stati aggiunti + {videoCount}/{totalVideoCount} video + Allow Adding Duplicate Video(s): Consenti l'aggiunta di video duplicati SinglePlaylistView: Toast: There were no videos to remove.: Non c'erano video da rimuovere. From 4c5f03eb33e8c7872f9f912c9912149a94cc8061 Mon Sep 17 00:00:00 2001 From: summoner001 Date: Wed, 5 Jun 2024 05:24:25 +0000 Subject: [PATCH 019/120] Translated using Weblate (Hungarian) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/ --- static/locales/hu.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index 9aaf64f89d2a4..9abdf48489f8b 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -164,7 +164,12 @@ User Playlists: a videó hozzáadásához | Válasszon ki egy lejátszási listát a {videoCount} videó hozzáadásához N playlists selected: '{playlistCount} Kiválasztott' - Added {count} Times: Hozzáadva {count} Alkalommal | Hozzáadva {count} Alkalommal + Added {count} Times: Hozzáadva {count} Alkalommal + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} + A videók hozzáadásra fognak kerülni' + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + Videó már hozzá lett adva' + Allow Adding Duplicate Video(s): Duplikált videó(k) hozzáadásának engedélyezése SinglePlaylistView: Toast: There were no videos to remove.: Nem voltak eltávolítható videók. From 3f181ca05d0a107a0204150aab8eee0ec6fbb45a Mon Sep 17 00:00:00 2001 From: Fjuro Date: Wed, 5 Jun 2024 08:12:08 +0000 Subject: [PATCH 020/120] Translated using Weblate (Czech) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index a0d1d1aa5545a..6c74e2cbebe56 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -157,7 +157,12 @@ User Playlists: Select a playlist to add your N videos to: Vyberte playlist, do kterého přidat vaše video | Vyberte playlist, do kterého přidat vašich {videoCount} videí N playlists selected: Vybráno {playlistCount} - Added {count} Times: Přidáno {count}krát | Přidáno {count}krát + Added {count} Times: Již přidáno | Přidáno {count}krát + Allow Adding Duplicate Video(s): Povolit duplicitní přidávání videí + "{videoCount}/{totalVideoCount} Videos Already Added": Již přidáno {videoCount}/{totalVideoCount} + videí + "{videoCount}/{totalVideoCount} Videos Will Be Added": Bude přidáno {videoCount}/{totalVideoCount} + videí SinglePlaylistView: Toast: There were no videos to remove.: Nejsou zde žádná videa k odstranění. From 6cfebc768d3463789e7769f7a01bef3586666d1e Mon Sep 17 00:00:00 2001 From: Jose Delvani Date: Wed, 5 Jun 2024 10:56:48 +0000 Subject: [PATCH 021/120] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index c2d43c6fa9ca1..585d2c82dcdfc 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -1221,7 +1221,7 @@ Channels: Search bar placeholder: Buscar canais Empty: Sua lista de canais está vazia no momento. Unsubscribe: Cancelar inscrição - Unsubscribed: '{channelName} foi removido de suas inscrições' + Unsubscribed: '"{channelName}" foi removido de suas inscrições' Unsubscribe Prompt: Tem certeza de que quer cancelar a sua inscrição de "{channelName}"? Count: '{number} canais encontrados.' Screenshot Success: Captura de tela salva em "{filePath}" From bb4aff6162d374904d23e7d62c5b6bbde7fa4979 Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Wed, 5 Jun 2024 16:24:14 +0000 Subject: [PATCH 022/120] Translated using Weblate (Arabic) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/ --- static/locales/ar.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index 0f4ac0cea201f..48a8a97db93cb 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -202,7 +202,12 @@ User Playlists: Save: حفظ Search in Playlists: البحث في قوائم التشغيل N playlists selected: تم تحديد {playlistCount} - Added {count} Times: تمت إضافة {count} الوقت | تمت إضافة {count} مرة + Added {count} Times: تمت إضافتها بالفعل | تمت إضافة {count} مرة + Allow Adding Duplicate Video(s): السماح بإضافة مقاطع فيديو مكررة + "{videoCount}/{totalVideoCount} Videos Will Be Added": ستتم إضافة مقاطع فيديو + {videoCount}/{totalVideoCount} + "{videoCount}/{totalVideoCount} Videos Already Added": تمت إضافة {videoCount}/{totalVideoCount} + من مقاطع الفيديو بالفعل CreatePlaylistPrompt: Toast: There is already a playlist with this name. Please pick a different name.: توجد From 43eb6db027b56ea379435d2b479d4ba0d0ea743f Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Wed, 5 Jun 2024 17:10:15 +0000 Subject: [PATCH 023/120] Translated using Weblate (Croatian) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/ --- static/locales/hr.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index 6bb19524434e9..623f8d0467d14 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -211,7 +211,12 @@ User Playlists: videa dodana u 1 zbirku Select a playlist to add your N videos to: Odaberi zbirku za dodavanje tvog videa | Odaberi zbirku za dodavanje tvojih {videoCount} videa - Added {count} Times: Dodano {count} puta | Dodano {count} puta + Added {count} Times: Već dodano | Dodano {count} puta + Allow Adding Duplicate Video(s): Dozvoli dodavanje duplih videa + "{videoCount}/{totalVideoCount} Videos Will Be Added": 'Broj videa koji će se + dodati: {videoCount} od {totalVideoCount}' + "{videoCount}/{totalVideoCount} Videos Already Added": 'Broj videa koji su već + dodani: {videoCount} od {totalVideoCount}' CreatePlaylistPrompt: Create: Stvori Toast: From d08007eae82461ca3cec70b035f2a3fb200f7dd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 5 Jun 2024 16:37:55 +0000 Subject: [PATCH 024/120] Translated using Weblate (Turkish) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/ --- static/locales/tr.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index d071ab600a005..f97d42e080eb7 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -207,7 +207,12 @@ User Playlists: | {videoCount} video 1 oynatma listesine eklendi N playlists selected: '{playlistCount} Seçildi' Search in Playlists: Oynatma Listelerinde Ara - Added {count} Times: '{count} Defa Eklendi | {count} Defa Eklendi' + Added {count} Times: 'Zaten Eklendi | {count} Defa Eklendi' + Allow Adding Duplicate Video(s): Yinelenen Video(lar) Eklemeye İzin Ver + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + Video Zaten Eklendi' + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} + Video Eklenecek' CreatePlaylistPrompt: New Playlist Name: Yeni Oynatma Listesi Adı Create: Oluştur From de29b17b519268cf8e33e19f8690a85bd0b21484 Mon Sep 17 00:00:00 2001 From: Markus Gaugg Date: Wed, 5 Jun 2024 18:27:25 +0000 Subject: [PATCH 025/120] Translated using Weblate (German) Currently translated at 100.0% (864 of 864 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index cec1a43423b46..699a9bb9c0e15 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -220,7 +220,12 @@ User Playlists: Select a playlist to add your N videos to: Wähle eine Wiedergabeliste, der du dein Video hinzufügen möchtest | Wähle eine Wiedergabeliste, der du deine {videoCount} Videos hinzufügen möchtest - Added {count} Times: '{count} Mal hinzugefügt | {count} Mal hinzugefügt' + Added {count} Times: 'Bereits hinzugefügt | {count} Mal hinzugefügt' + Allow Adding Duplicate Video(s): Hinzufügen doppelter Videos zulassen + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} + Videos werden hinzugefügt' + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + bereits hinzugefügte Videos' CreatePlaylistPrompt: New Playlist Name: Neuer Name der Wiedergabeliste Create: Erstellen From 30851b27641703daabf00c5cc80fd169e11bb998 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:26:13 +0200 Subject: [PATCH 026/120] Limit which URLs FreeTube will open externally (#5213) * Limit which URLs FreeTube will open externally * Show toast when the URL was blocked --- src/constants.js | 10 +++++++- src/main/index.js | 40 ++++++++++++++++++++++++++++--- src/renderer/helpers/utils.js | 8 +++++-- src/renderer/views/About/About.js | 5 ++-- static/locales/en-US.yaml | 1 + 5 files changed, 56 insertions(+), 8 deletions(-) diff --git a/src/constants.js b/src/constants.js index 95bb9ce593922..4d2d614f9bc44 100644 --- a/src/constants.js +++ b/src/constants.js @@ -98,6 +98,12 @@ const PLAYLIST_HEIGHT_FORCE_LIST_THRESHOLD = 500 // YouTube search character limit is 100 characters const SEARCH_CHAR_LIMIT = 100 +// Displayed on the about page and used in the main.js file to only allow bitcoin URLs with this wallet address to be opened +const ABOUT_BITCOIN_ADDRESS = '1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS' + +// Displayed on the about page and used in the main.js file to only allow monero URLs with this wallet address to be opened +const ABOUT_MONERO_ADDRESS = '48WyAPdjwc6VokeXACxSZCFeKEXBiYPV6GjfvBsfg4CrUJ95LLCQSfpM9pvNKy5GE5H4hNaw99P8RZyzmaU9kb1pD7kzhCB' + export { IpcChannels, DBActions, @@ -105,5 +111,7 @@ export { MAIN_PROFILE_ID, MOBILE_WIDTH_THRESHOLD, PLAYLIST_HEIGHT_FORCE_LIST_THRESHOLD, - SEARCH_CHAR_LIMIT + SEARCH_CHAR_LIMIT, + ABOUT_BITCOIN_ADDRESS, + ABOUT_MONERO_ADDRESS } diff --git a/src/main/index.js b/src/main/index.js index 9b28278243297..b686b226f7ec1 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -6,7 +6,13 @@ import { import path from 'path' import cp from 'child_process' -import { IpcChannels, DBActions, SyncEvents } from '../constants' +import { + IpcChannels, + DBActions, + SyncEvents, + ABOUT_BITCOIN_ADDRESS, + ABOUT_MONERO_ADDRESS +} from '../constants' import * as baseHandlers from '../datastores/handlers/base' import { extractExpiryTimestamp, ImageCache } from './ImageCache' import { existsSync } from 'fs' @@ -855,8 +861,36 @@ function runApp() { session.defaultSession.closeAllConnections() }) - ipcMain.on(IpcChannels.OPEN_EXTERNAL_LINK, (_, url) => { - if (typeof url === 'string') shell.openExternal(url) + ipcMain.handle(IpcChannels.OPEN_EXTERNAL_LINK, (_, url) => { + if (typeof url === 'string') { + let parsedURL + + try { + parsedURL = new URL(url) + } catch { + // If it's not a valid URL don't open it + return false + } + + if ( + parsedURL.protocol === 'http:' || parsedURL.protocol === 'https:' || + + // Email address on the about page and Autolinker detects and links email addresses + parsedURL.protocol === 'mailto:' || + + // Autolinker detects and links phone numbers + parsedURL.protocol === 'tel:' || + + // Donation links on the about page + (parsedURL.protocol === 'bitcoin:' && parsedURL.pathname === ABOUT_BITCOIN_ADDRESS) || + (parsedURL.protocol === 'monero:' && parsedURL.pathname === ABOUT_MONERO_ADDRESS) + ) { + shell.openExternal(url) + return true + } + } + + return false }) ipcMain.handle(IpcChannels.GET_SYSTEM_LOCALE, () => { diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js index a5d0da68bb460..3f645343d3a6e 100644 --- a/src/renderer/helpers/utils.js +++ b/src/renderer/helpers/utils.js @@ -330,10 +330,14 @@ export async function copyToClipboard(content, { messageOnSuccess = null, messag * Opens a link in the default web browser or a new tab in the web builds * @param {string} url the URL to open */ -export function openExternalLink(url) { +export async function openExternalLink(url) { if (process.env.IS_ELECTRON) { const ipcRenderer = require('electron').ipcRenderer - ipcRenderer.send(IpcChannels.OPEN_EXTERNAL_LINK, url) + const success = await ipcRenderer.invoke(IpcChannels.OPEN_EXTERNAL_LINK, url) + + if (!success) { + showToast(i18n.t('Blocked opening potentially unsafe URL', { url })) + } } else { window.open(url, '_blank') } diff --git a/src/renderer/views/About/About.js b/src/renderer/views/About/About.js index ffce62dfb2e08..2fe6938965985 100644 --- a/src/renderer/views/About/About.js +++ b/src/renderer/views/About/About.js @@ -1,6 +1,7 @@ import { defineComponent } from 'vue' import FtCard from '../../components/ft-card/ft-card.vue' import packageDetails from '../../../../package.json' +import { ABOUT_BITCOIN_ADDRESS, ABOUT_MONERO_ADDRESS } from '../../../constants' export default defineComponent({ name: 'About', @@ -74,12 +75,12 @@ export default defineComponent({ { icon: ['fab', 'bitcoin'], title: `${this.$t('About.Donate')} - BTC`, - content: '1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS' + content: `${ABOUT_BITCOIN_ADDRESS}` }, { icon: ['fab', 'monero'], title: `${this.$t('About.Donate')} - XMR`, - content: '48WyAPdjwc6VokeXACxSZCFeKEXBiYPV6GjfvBsfg4CrUJ95LLCQSfpM9pvNKy5GE5H4hNaw99P8RZyzmaU9kb1pD7kzhCB' + content: `${ABOUT_MONERO_ADDRESS}` } ] } diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index 9008f94d9db33..fe8870025c699 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -1084,6 +1084,7 @@ Age Restricted: This channel is age restricted: This channel is age restricted This video is age restricted: This video is age restricted External link opening has been disabled in the general settings: 'External link opening has been disabled in the general settings' +'Blocked opening potentially unsafe URL': 'Blocked opening potentially unsafe URL: "{url}".' Downloading has completed: '"{videoTitle}" has finished downloading' Starting download: 'Starting download of "{videoTitle}"' Downloading failed: 'There was an issue downloading "{videoTitle}"' From 22ffb2683d30fa80ca60f6cb7938fb81dc1b5cf7 Mon Sep 17 00:00:00 2001 From: Markus Gaugg Date: Thu, 6 Jun 2024 15:12:04 +0000 Subject: [PATCH 027/120] Translated using Weblate (German) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index 699a9bb9c0e15..5bc2111517618 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -1306,3 +1306,5 @@ Search Listing: 4K: 4K Closed Captions: Geschlossene Untertitel Subtitles: Untertitel +'Blocked opening potentially unsafe URL': Das Öffnen einer potenziell unsicheren URL + wurde blockiert:"{url}". From 96d34e136177c05d5edd937964215e7413a046d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20W=C3=B3jcicki?= Date: Thu, 6 Jun 2024 15:58:27 +0000 Subject: [PATCH 028/120] Translated using Weblate (Polish) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/ --- static/locales/pl.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index 4205a534d76b1..d67bcdfec38fc 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -154,7 +154,12 @@ User Playlists: dodać swój film | Wybierz playlistę, do której chcesz dodać swoje {videoCount} film(y/ów) N playlists selected: Zaznaczono {playlistCount} - Added {count} Times: Dodano {count} raz | Dodano {count} razy + Added {count} Times: Dodano już wcześniej | Dodano {count} razy + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} + filmów zostanie dodanych' + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + film(y/ów) już dodano' + Allow Adding Duplicate Video(s): Zezwól na dodawanie duplikatów SinglePlaylistView: Toast: There were no videos to remove.: Nie było żadnych filmów do usunięcia. @@ -1278,3 +1283,5 @@ Search Listing: Subtitles: Napisy Closed Captions: Napisy z opisami 4K: 4K +'Blocked opening potentially unsafe URL': 'Zablokowano otwarcie potencjalnie niebezpiecznego + URL: "{url}".' From f4c87f5dd10375eb985f2d4b14362a19d5e9d13a Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Thu, 6 Jun 2024 14:43:32 +0000 Subject: [PATCH 029/120] Translated using Weblate (Spanish) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/ --- static/locales/es.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/es.yaml b/static/locales/es.yaml index 5f967a7e128f1..b192b25a4b577 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -1276,3 +1276,5 @@ Search Listing: Subtitles: Subtítulos Closed Captions: Subtítulos descriptivos 4K: 4K +'Blocked opening potentially unsafe URL': 'Bloqueada la apertura de la URL potencialmente + insegura: «{url}».' From bfd22ddafbb1ad02aad0a2018fd898071c597e86 Mon Sep 17 00:00:00 2001 From: Jose Delvani Date: Thu, 6 Jun 2024 16:53:25 +0000 Subject: [PATCH 030/120] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 585d2c82dcdfc..807228e7f1f7d 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -1273,3 +1273,5 @@ Search Listing: Subtitles: Legendas Closed Captions: Legendas ocultas (CC) 4K: 4K +'Blocked opening potentially unsafe URL': 'Abertura bloqueada de URL potencialmente + inseguro: "{url}".' From ab7098b380fb5d3029f8a80a0561dab8139d4840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Thu, 6 Jun 2024 16:45:46 +0000 Subject: [PATCH 031/120] Translated using Weblate (Turkish) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/ --- static/locales/tr.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index f97d42e080eb7..81c62ab274521 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -1272,3 +1272,5 @@ Search Listing: Closed Captions: Kapalı Alt Yazılar 4K: 4K Subtitles: Alt Yazılar +'Blocked opening potentially unsafe URL': "Güvenli olmayabilir URL'nin açılması engellendi: + \"{url}\"." From ac544ec9014d90bc2d570145565d25ed1257e7cf Mon Sep 17 00:00:00 2001 From: summoner001 Date: Thu, 6 Jun 2024 18:02:06 +0000 Subject: [PATCH 032/120] Translated using Weblate (Hungarian) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/ --- static/locales/hu.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index 9abdf48489f8b..7a0a44473b74a 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -1269,3 +1269,5 @@ Search Listing: 4K: 4K Subtitles: Feliratok Closed Captions: Zárt feliratok +'Blocked opening potentially unsafe URL': 'Potenciálisan nem biztonságos URL megnyitása + blokkolva: "{url}".' From a9342e328fee53758c0c4b71eab6defb12e571f8 Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Thu, 6 Jun 2024 18:16:52 +0000 Subject: [PATCH 033/120] Translated using Weblate (Arabic) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/ --- static/locales/ar.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index 48a8a97db93cb..ed4b07e90a489 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -1233,3 +1233,5 @@ Search Listing: 4K: 4K Closed Captions: التعاليق مغلقة Subtitles: التسميات التوضيحية +'Blocked opening potentially unsafe URL': 'تم حظر فتح الرابط الذي يحتمل أن يكون غير + آمن: "{url}".' From 51666b54b3d6101e994bcf8aae8ad2dd87e60366 Mon Sep 17 00:00:00 2001 From: Jason <84899178+jasonhenriquez@users.noreply.github.com> Date: Thu, 6 Jun 2024 22:09:56 +0000 Subject: [PATCH 034/120] Play next/prev video after removing current video from the playlist (#5158) * Remove un-utilized allowPlayingVideoRemoval disabled option * Have currently deleted video entry become the prior entry in the playlist * Fix issue where first video is skipped when current video after removal is zeroth & loop is enabled * Handle first video in playlist being removed * Fix shuffle prevVideo issue * Fix wrong variable for reversal bug * Implement suggested optimization --- .../watch-video-playlist.js | 95 +++++++++++-------- 1 file changed, 58 insertions(+), 37 deletions(-) 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 8da0c0819a702..535ad18a16b0c 100644 --- a/src/renderer/components/watch-video-playlist/watch-video-playlist.js +++ b/src/renderer/components/watch-video-playlist/watch-video-playlist.js @@ -48,6 +48,7 @@ export default defineComponent({ loopEnabled: false, reversePlaylist: false, pauseOnCurrentVideo: false, + prevVideoBeforeDeletion: null, channelName: '', channelId: '', playlistTitle: '', @@ -85,15 +86,7 @@ export default defineComponent({ }, currentVideoIndexZeroBased: function () { - return this.playlistItems.findIndex((item) => { - if (item.playlistItemId != null && this.playlistItemId != null) { - return item.playlistItemId === this.playlistItemId - } else if (item.videoId != null) { - return item.videoId === this.videoId - } else { - return item.id === this.videoId - } - }) + return this.findIndexOfCurrentVideoInPlaylist(this.playlistItems) }, currentVideoIndexOneBased: function () { return this.currentVideoIndexZeroBased + 1 @@ -123,19 +116,7 @@ export default defineComponent({ videoIndexInPlaylistItems: function () { const playlistItems = this.shuffleEnabled ? this.randomizedPlaylistItems : this.playlistItems - - return playlistItems.findIndex((item) => { - if (item.playlistItemId != null && this.playlistItemId != null) { - return item.playlistItemId === this.playlistItemId - } else if (item.videoId != null) { - return item.videoId === this.videoId - } else { - return item.id === this.videoId - } - }) - }, - videoIsFirstPlaylistItem: function () { - return this.videoIndexInPlaylistItems === 0 + return this.findIndexOfCurrentVideoInPlaylist(playlistItems) }, videoIsLastPlaylistItem: function () { return this.videoIndexInPlaylistItems === (this.playlistItems.length - 1) @@ -160,12 +141,12 @@ export default defineComponent({ }, selectedUserPlaylistVideoCount () { // Re-fetch from local store when current user playlist updated - this.parseUserPlaylist(this.selectedUserPlaylist, { allowPlayingVideoRemoval: true }) + this.parseUserPlaylist(this.selectedUserPlaylist) this.shufflePlaylistItems() }, selectedUserPlaylistLastUpdatedAt () { // Re-fetch from local store when current user playlist updated - this.parseUserPlaylist(this.selectedUserPlaylist, { allowPlayingVideoRemoval: true }) + this.parseUserPlaylist(this.selectedUserPlaylist) }, videoId: function (newId, oldId) { // Check if next video is from the shuffled list or if the user clicked a different video @@ -184,6 +165,9 @@ export default defineComponent({ } } }, + playlistItemId: function () { + this.prevVideoBeforeDeletion = null + }, watchViewLoading: function (newVal, oldVal) { // This component is loaded/rendered before watch view loaded if (oldVal && !newVal) { @@ -232,6 +216,23 @@ export default defineComponent({ } }, methods: { + findIndexOfCurrentVideoInPlaylist: function (playlist) { + const playlistItemId = this.playlistItemId + const prevVideoBeforeDeletion = this.prevVideoBeforeDeletion + const videoId = this.videoId + return playlist.findIndex((item) => { + if (item.playlistItemId && (playlistItemId || prevVideoBeforeDeletion?.playlistItemId)) { + return item.playlistItemId === playlistItemId || item.playlistItemId === prevVideoBeforeDeletion?.playlistItemId + } else if (item.videoId) { + return item.videoId === videoId || item.videoId === prevVideoBeforeDeletion?.videoId + } else if (item.id) { + return item.id === videoId || item.id === prevVideoBeforeDeletion?.videoId + } + + return false + }) + }, + getPlaylistInfoWithDelay: function () { if (this.getPlaylistInfoRun) { return } @@ -348,8 +349,23 @@ export default defineComponent({ playlistType: this.playlistType, } - const videoIndex = this.videoIndexInPlaylistItems - const targetVideoIndex = (this.videoIsFirstPlaylistItem || this.videoIsNotPlaylistItem) ? this.playlistItems.length - 1 : videoIndex - 1 + let videoIndex = this.videoIndexInPlaylistItems + + /* + * When the current video being watched in the playlist is deleted, + * the previous video is shown as the "current" one. + * So if we want to play the previous video, in this case, + * we actually want to actually play the "current" video. + * The only exception is when shuffle is enabled, as we don't actually + * want to play the last sequential video with shuffle. + */ + if (this.prevVideoBeforeDeletion && !this.shuffleEnabled) { + videoIndex++ + } + + // Wrap around to the end of the playlist only if there are no remaining earlier videos + const targetVideoIndex = (videoIndex === 0 || this.videoIsNotPlaylistItem) ? this.playlistItems.length - 1 : videoIndex - 1 + if (this.shuffleEnabled) { const targetPlaylistItem = this.randomizedPlaylistItems[targetVideoIndex] @@ -466,24 +482,29 @@ export default defineComponent({ }) }, - parseUserPlaylist: function (playlist, { allowPlayingVideoRemoval = true } = {}) { + parseUserPlaylist: function (playlist) { this.playlistTitle = playlist.playlistName this.channelName = '' this.channelId = '' - if (this.playlistItems.length === 0 || allowPlayingVideoRemoval) { - this.playlistItems = playlist.videos - } else { - // `this.currentVideo` relies on `playlistItems` - const latestPlaylistContainsCurrentVideo = playlist.videos.some(v => v.playlistItemId === this.playlistItemId) - // Only update list of videos if latest video list still contains currently playing video - if (latestPlaylistContainsCurrentVideo) { - this.playlistItems = playlist.videos - } + const isCurrentVideoInParsedPlaylist = this.findIndexOfCurrentVideoInPlaylist(playlist.videos) !== -1 + if (!isCurrentVideoInParsedPlaylist) { + // grab 2nd video if the 1st one is current & deleted + // or the prior video in the list before the current video's deletion + const targetVideoIndex = (this.currentVideoIndexZeroBased === 0 ? 1 : this.currentVideoIndexZeroBased - 1) + this.prevVideoBeforeDeletion = this.playlistItems[targetVideoIndex] } + let playlistItems = playlist.videos if (this.reversePlaylist) { - this.playlistItems = this.playlistItems.toReversed() + playlistItems = playlistItems.toReversed() + } + this.playlistItems = playlistItems + + // grab the first video of the parsed playlit if the current video is not in either the current or parsed data + // (e.g., reloading the page after the current video has already been removed from the playlist) + if (!isCurrentVideoInParsedPlaylist && this.prevVideoBeforeDeletion == null) { + this.prevVideoBeforeDeletion = this.playlistItems[0] } this.isLoading = false From 3e348d9c085eafe64dbd38aafcb8e7fb6b35e140 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: Fri, 7 Jun 2024 00:42:51 +0000 Subject: [PATCH 035/120] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/ --- static/locales/zh-CN.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 0c3fa9c950561..06ac52dfbfcfa 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -1101,3 +1101,4 @@ Search Listing: 4K: 4K Subtitles: 字幕 Closed Captions: 隐藏式字幕 +'Blocked opening potentially unsafe URL': 阻止了打开潜在不安全的 URL: "{url}". From c793c9d4446b3a428b0f53c5f507bf6e16de869b Mon Sep 17 00:00:00 2001 From: Massimo Pissarello Date: Fri, 7 Jun 2024 01:11:30 +0000 Subject: [PATCH 036/120] Translated using Weblate (Italian) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/ --- static/locales/it.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/it.yaml b/static/locales/it.yaml index 99598d79b81d1..2707ac36e898e 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -1278,3 +1278,5 @@ Search Listing: 4K: 4K Closed Captions: Sottotitoli per non udenti Subtitles: Sottotitoli +'Blocked opening potentially unsafe URL': 'Apertura di URL potenzialmente non sicura + bloccata: "{url}".' From 398c312f4473a92605ecad65653618456f33b66c Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Fri, 7 Jun 2024 02:58:15 +0000 Subject: [PATCH 037/120] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/ --- static/locales/zh-TW.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index 48e76b038ce68..f1d1f06760507 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -1111,3 +1111,4 @@ Search Listing: 4K: 4K Subtitles: 字幕 Closed Captions: 隱藏式字幕 +'Blocked opening potentially unsafe URL': 已阻止開啟可能不安全的 URL:「{url}」。 From 8ce00cd0d41de441c3388e8db3099d6d65bc3506 Mon Sep 17 00:00:00 2001 From: Philip Goto Date: Fri, 7 Jun 2024 08:59:38 +0000 Subject: [PATCH 038/120] Translated using Weblate (Dutch) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/ --- static/locales/nl.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 08b14ad7458cf..65718e76203c9 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -177,7 +177,12 @@ User Playlists: Select a playlist to add your N videos to: Selecteer een afspeellijst om uw video aan toe te voegen | Selecteer een afspeellijst om uw {videoCount} video's aan toe te voegen - Added {count} Times: '{count} keer toe­gevoegd | {count} keer toe­gevoegd' + Added {count} Times: 'Video is al toe­gevoegd | {count} keer toe­gevoegd' + Allow Adding Duplicate Video(s): Toevoegen van dubbele video's toestaan + "{videoCount}/{totalVideoCount} Videos Will Be Added": "{videoCount}/{totalVideoCount} + video's zullen worden toegevoegd" + "{videoCount}/{totalVideoCount} Videos Already Added": "{videoCount}/{totalVideoCount} + video's zijn al toegevoegd" Save Changes: Wijzigingen opslaan Copy Playlist: Afspeel­lijst kopiëren Create New Playlist: Nieuwe afspeel­lijst aanmaken @@ -1262,3 +1267,5 @@ Search Listing: 4K: 4K Subtitles: Ondertitels Closed Captions: Gesloten ondertitels +'Blocked opening potentially unsafe URL': 'Openen van mogelijk onveilige URL geblokkeerd: + ‘{url}’.' From f9e1b18743c3974dc7bec16d7968530f1b464bbe Mon Sep 17 00:00:00 2001 From: Fjuro Date: Fri, 7 Jun 2024 09:19:22 +0000 Subject: [PATCH 039/120] Translated using Weblate (Czech) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index 6c74e2cbebe56..192bbb2878bed 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -1232,3 +1232,5 @@ Search Listing: 4K: 4K Subtitles: Titulky Closed Captions: Skryté titulky +'Blocked opening potentially unsafe URL': 'Zablokováno otevření potenciálně nebezpečné + adresy URL: „{url}“.' From 741752d7b03ee9a80a2d2a519ac0dcfed3ab4d7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Fri, 7 Jun 2024 11:45:59 +0000 Subject: [PATCH 040/120] Translated using Weblate (Estonian) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/ --- static/locales/et.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/static/locales/et.yaml b/static/locales/et.yaml index d6fcdadc8d9c2..f39661a0e4564 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -172,7 +172,12 @@ User Playlists: Select a playlist to add your N videos to: Vali esitusloend, kuhu soovid oma video lisada | Vali esitusloend, kuhu soovid oma {videoCount} videot lisada N playlists selected: '{playlistCount} valitud' - Added {count} Times: Lisatud {count} kord | Lisatud {count} korda + Added {count} Times: Juba lisatud {count} kord(a) + "{videoCount}/{totalVideoCount} Videos Will Be Added": Lisame {videoCount}/{totalVideoCount} + videot + Allow Adding Duplicate Video(s): Luba topeltvideo(te) lisamist + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + videot on juba lisatud' SinglePlaylistView: Toast: There were no videos to remove.: Ei leidnud ühtegi videot, mida saaks eemaldada. @@ -1182,3 +1187,5 @@ Search Listing: Subtitles: Subtiitrid Closed Captions: Subtiitrid 4K: 4K +'Blocked opening potentially unsafe URL': 'Blokeerisime võimaliku ohtliku aadressi + avamise: „{url}“.' From b57e2511e5f2a06f69da249fbf264157c325b6b0 Mon Sep 17 00:00:00 2001 From: NEXI Date: Fri, 7 Jun 2024 10:21:29 +0000 Subject: [PATCH 041/120] Translated using Weblate (Serbian) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sr/ --- static/locales/sr.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index 9bbd74e0c9e57..ded40bcb3d1dd 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -160,7 +160,12 @@ User Playlists: да додате видео снимак | Изаберите плејлисту на коју желите да додате {videoCount} видео снимака N playlists selected: 'Изабрано: {playlistCount}' - Added {count} Times: Додато {count} пут | Додато {count} пута + Added {count} Times: Већ додато | Додато {count} пута + Allow Adding Duplicate Video(s): Дозволи додавање дупликата видео снимака + "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount} + видео снимака ће бити додато' + "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount} + видео снимака је већ додато' SinglePlaylistView: Toast: There were no videos to remove.: Није било видео снимака за уклањање. @@ -1175,3 +1180,5 @@ Search Listing: Closed Captions: Скривени титлови 4K: 4K Subtitles: Титлови +'Blocked opening potentially unsafe URL': 'Блокирано отварање потенцијално небезбедне + URL адресе: „{url}“.' From 5f1230fcbc83aef0503d2e6af3818f425defe99e Mon Sep 17 00:00:00 2001 From: Colgrave Date: Sat, 8 Jun 2024 23:56:28 +0000 Subject: [PATCH 042/120] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (865 of 865 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, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 06ac52dfbfcfa..9d6fce0f56c9d 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -832,7 +832,7 @@ Video: sponsor: 赞助者 recap: 回顾 filler: 过滤器 - translated from English: 从英语翻译而来 + translated from English: 从英语翻译 Skipped segment: 跳过片段 Premieres in: 首映于 Premieres: 首映 From bf3304dfefd03c72204f54a4c4791595887115f1 Mon Sep 17 00:00:00 2001 From: Jason <84899178+jasonhenriquez@users.noreply.github.com> Date: Sun, 9 Jun 2024 16:33:08 +0000 Subject: [PATCH 043/120] Use auto scrollbar size for all scrollbars except the side nav (#5172) * Use auto scrollbar size for all except the side nav * Have scrollbar increase in size on hover --- src/renderer/components/side-nav/side-nav.css | 7 +++++++ src/renderer/themes.css | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/side-nav/side-nav.css b/src/renderer/components/side-nav/side-nav.css index dec21cf60961c..282d41c7a1d90 100644 --- a/src/renderer/components/side-nav/side-nav.css +++ b/src/renderer/components/side-nav/side-nav.css @@ -161,6 +161,13 @@ margin-block: 0.3em; } +@media only screen and (width > 680px) { + ::-webkit-scrollbar { + inline-size: 10px; + block-size: 10px; + } +} + @media only screen and (width <= 680px) { .inner { display: contents; /* sunglasses emoji */ diff --git a/src/renderer/themes.css b/src/renderer/themes.css index 98b0da419f52b..29cfad5677bb6 100644 --- a/src/renderer/themes.css +++ b/src/renderer/themes.css @@ -1371,13 +1371,19 @@ a:visited { } ::-webkit-scrollbar { - inline-size: 6px; - block-size: 6px; + inline-size: auto; + block-size: auto; } ::-webkit-scrollbar-thumb { background: var(--scrollbar-color); border-radius: 6px; + border: 2px solid transparent; + background-clip: padding-box; +} + +::-webkit-scrollbar-thumb:hover { + border: 0; } ::-webkit-scrollbar-thumb:hover, ::-webkit-scrollbar-thumb:focus { From 4f31de284eb1076407d5d4db0193521e6bc3afb9 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sun, 9 Jun 2024 17:08:32 +0000 Subject: [PATCH 044/120] Translated using Weblate (Croatian) Currently translated at 100.0% (865 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/ --- static/locales/hr.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index 623f8d0467d14..9eab2f68d591b 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -1248,3 +1248,5 @@ Search Listing: 4K: 4K Subtitles: Titlovi Closed Captions: Titlovi za gluhe +'Blocked opening potentially unsafe URL': 'Blokirano je otvaranje potencijalno nesigurnog + URL-a: „{url}”.' From 58cb3a90e85cff5511b8bb03fb79c831bcb1fbbf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 12:18:33 +0000 Subject: [PATCH 045/120] Bump eslint-plugin-n from 17.7.0 to 17.8.1 in the eslint group (#5245) Bumps the eslint group with 1 update: [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n). Updates `eslint-plugin-n` from 17.7.0 to 17.8.1 - [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.7.0...v17.8.1) --- updated-dependencies: - dependency-name: eslint-plugin-n 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 | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 6d7e24f99a1d0..ae3e0e7b1ac1c 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsonc": "^2.16.0", - "eslint-plugin-n": "^17.7.0", + "eslint-plugin-n": "^17.8.1", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-promise": "^6.2.0", "eslint-plugin-unicorn": "^53.0.0", diff --git a/yarn.lock b/yarn.lock index 2d8012136a3f9..59b89850490eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3603,10 +3603,10 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^5.15.0, enhanced-resolve@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== +enhanced-resolve@^5.16.0, enhanced-resolve@^5.17.0: + version "5.17.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" + integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3900,13 +3900,13 @@ eslint-plugin-jsonc@^2.16.0: natural-compare "^1.4.0" synckit "^0.6.0" -eslint-plugin-n@^17.7.0: - version "17.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.7.0.tgz#90b4f777cefb9bf0d91dafa94347961c4e8a072c" - integrity sha512-4Jg4ZKVE4VjHig2caBqPHYNW5na84RVufUuipFLJbgM/G57O6FdpUKJbHakCDJb/yjQuyqVzYWRtU3HNYaZUwg== +eslint-plugin-n@^17.8.1: + version "17.8.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.8.1.tgz#b14257815bb9a1ab2b85b680ee9bbd180945ab87" + integrity sha512-KdG0h0voZms8UhndNu8DeWx1eM4sY+A4iXtsNo6kOfJLYHNeTGPacGalJ9GcvrbmOL3r/7QOMwVZDSw+1SqsrA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - enhanced-resolve "^5.15.0" + enhanced-resolve "^5.17.0" eslint-plugin-es-x "^7.5.0" get-tsconfig "^4.7.0" globals "^15.0.0" From 6f74f67a8ccc7272aa0f5d05647b94622ebf69e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 12:19:42 +0000 Subject: [PATCH 046/120] Bump the babel group with 3 updates (#5244) Bumps the babel group with 3 updates: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core), [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) and [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env). Updates `@babel/core` from 7.24.6 to 7.24.7 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.24.7/packages/babel-core) Updates `@babel/eslint-parser` from 7.24.6 to 7.24.7 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.24.7/eslint/babel-eslint-parser) Updates `@babel/preset-env` from 7.24.6 to 7.24.7 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.24.7/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/eslint-parser" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/preset-env" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 6 +- yarn.lock | 1154 +++++++++++++++++++++++++------------------------- 2 files changed, 584 insertions(+), 576 deletions(-) diff --git a/package.json b/package.json index ae3e0e7b1ac1c..04c79f6a93714 100644 --- a/package.json +++ b/package.json @@ -82,10 +82,10 @@ "youtubei.js": "^9.4.0" }, "devDependencies": { - "@babel/core": "^7.24.6", - "@babel/eslint-parser": "^7.24.6", + "@babel/core": "^7.24.7", + "@babel/eslint-parser": "^7.24.7", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/preset-env": "^7.24.6", + "@babel/preset-env": "^7.24.7", "@double-great/stylelint-a11y": "^3.0.2", "@intlify/eslint-plugin-vue-i18n": "^2.0.0", "babel-loader": "^9.1.3", diff --git a/yarn.lock b/yarn.lock index 59b89850490eb..95ebd7f52b7ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,55 +20,55 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" - integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/highlight" "^7.24.6" + "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.6.tgz#b3600217688cabb26e25f8e467019e66d71b7ae2" - integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" + integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== -"@babel/core@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.6.tgz#8650e0e4b03589ebe886c4e4a60398db0a7ec787" - integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ== +"@babel/core@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" + integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.6" - "@babel/generator" "^7.24.6" - "@babel/helper-compilation-targets" "^7.24.6" - "@babel/helper-module-transforms" "^7.24.6" - "@babel/helpers" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/template" "^7.24.6" - "@babel/traverse" "^7.24.6" - "@babel/types" "^7.24.6" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helpers" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" 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.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.6.tgz#7f0ecc0f29307b8696e83ff6a9d8b4f3e0421ad2" - integrity sha512-Q1BfQX42zXHx732PLW0w4+Y3wJjoZKEMaatFUEAmQ7Z+jCXxinzeqX9bvv2Q8xNPes/H6F0I23oGkcgjaItmLw== +"@babel/eslint-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz#27ebab1a1ec21f48ae191a8aaac5b82baf80d9c7" + integrity sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA== 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.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.6.tgz#dfac82a228582a9d30c959fe50ad28951d4737a7" - integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg== +"@babel/generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" + integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== dependencies: - "@babel/types" "^7.24.6" + "@babel/types" "^7.24.7" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" @@ -80,27 +80,28 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-annotate-as-pure@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz#517af93abc77924f9b2514c407bbef527fb8938d" - integrity sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg== +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== dependencies: - "@babel/types" "^7.24.6" + "@babel/types" "^7.24.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.6.tgz#19e9089ee87b0d0928012c83961a8deef4b0223f" - integrity sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== dependencies: - "@babel/types" "^7.24.6" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" - integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" + integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== dependencies: - "@babel/compat-data" "^7.24.6" - "@babel/helper-validator-option" "^7.24.6" + "@babel/compat-data" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" @@ -118,19 +119,19 @@ "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-class-features-plugin@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.6.tgz#c50b86fa1c4ca9b7a890dc21884f097b6c4b5286" - integrity sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.6" - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-function-name" "^7.24.6" - "@babel/helper-member-expression-to-functions" "^7.24.6" - "@babel/helper-optimise-call-expression" "^7.24.6" - "@babel/helper-replace-supers" "^7.24.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" - "@babel/helper-split-export-declaration" "^7.24.6" +"@babel/helper-create-class-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b" + integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6": @@ -141,12 +142,12 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-create-regexp-features-plugin@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.6.tgz#47d382dec0d49e74ca1b6f7f3b81f5968022a3c8" - integrity sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA== +"@babel/helper-create-regexp-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz#be4f435a80dc2b053c76eeb4b7d16dd22cfc89da" + integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.6" + "@babel/helper-annotate-as-pure" "^7.24.7" regexpu-core "^5.3.1" semver "^6.3.1" @@ -166,10 +167,12 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== -"@babel/helper-environment-visitor@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" - integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== +"@babel/helper-environment-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== + dependencies: + "@babel/types" "^7.24.7" "@babel/helper-function-name@^7.18.9": version "7.18.9" @@ -179,20 +182,20 @@ "@babel/template" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-function-name@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" - integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w== +"@babel/helper-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" + integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== dependencies: - "@babel/template" "^7.24.6" - "@babel/types" "^7.24.6" + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-hoist-variables@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" - integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA== +"@babel/helper-hoist-variables@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" + integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== dependencies: - "@babel/types" "^7.24.6" + "@babel/types" "^7.24.7" "@babel/helper-member-expression-to-functions@^7.18.9": version "7.18.9" @@ -201,30 +204,32 @@ dependencies: "@babel/types" "^7.18.9" -"@babel/helper-member-expression-to-functions@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.6.tgz#86084f3e0e4e2169a134754df3870bc7784db71e" - integrity sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg== +"@babel/helper-member-expression-to-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f" + integrity sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w== dependencies: - "@babel/types" "^7.24.6" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-module-imports@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" - integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g== +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== dependencies: - "@babel/types" "^7.24.6" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-module-transforms@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz#22346ed9df44ce84dee850d7433c5b73fab1fe4e" - integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA== +"@babel/helper-module-transforms@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" + integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== dependencies: - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-module-imports" "^7.24.6" - "@babel/helper-simple-access" "^7.24.6" - "@babel/helper-split-export-declaration" "^7.24.6" - "@babel/helper-validator-identifier" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -233,26 +238,26 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-optimise-call-expression@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.6.tgz#f7836e3ccca3dfa02f15d2bc8b794efe75a5256e" - integrity sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA== +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== dependencies: - "@babel/types" "^7.24.6" + "@babel/types" "^7.24.7" -"@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.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz#fa02a32410a15a6e8f8185bcbf608f10528d2a24" - integrity sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg== +"@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.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" + integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== -"@babel/helper-remap-async-to-generator@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.6.tgz#c96ceb9846e877d806ce82a1521230ea7e0fc354" - integrity sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg== +"@babel/helper-remap-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz#b3f0f203628522713849d49403f1a414468be4c7" + integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.6" - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-wrap-function" "^7.24.6" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-wrap-function" "^7.24.7" "@babel/helper-replace-supers@^7.18.9": version "7.18.9" @@ -265,28 +270,30 @@ "@babel/traverse" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.6.tgz#3ea87405a2986a49ab052d10e540fe036d747c71" - integrity sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ== +"@babel/helper-replace-supers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765" + integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg== dependencies: - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-member-expression-to-functions" "^7.24.6" - "@babel/helper-optimise-call-expression" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" -"@babel/helper-simple-access@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz#1d6e04d468bba4fc963b4906f6dac6286cfedff1" - integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g== +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== dependencies: - "@babel/types" "^7.24.6" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-skip-transparent-expression-wrappers@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.6.tgz#c47e9b33b7ea50d1073e125ebc26661717cb7040" - integrity sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q== +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== dependencies: - "@babel/types" "^7.24.6" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" @@ -295,96 +302,97 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-split-export-declaration@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz#e830068f7ba8861c53b7421c284da30ae656d7a3" - integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw== +"@babel/helper-split-export-declaration@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== dependencies: - "@babel/types" "^7.24.6" + "@babel/types" "^7.24.7" -"@babel/helper-string-parser@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" - integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== +"@babel/helper-string-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" + integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== "@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-identifier@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" - integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== -"@babel/helper-validator-option@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" - integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ== +"@babel/helper-validator-option@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" + integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== -"@babel/helper-wrap-function@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.6.tgz#c27af1006e310683fdc76b668a0a1f6003e36217" - integrity sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ== +"@babel/helper-wrap-function@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz#52d893af7e42edca7c6d2c6764549826336aae1f" + integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw== dependencies: - "@babel/helper-function-name" "^7.24.6" - "@babel/template" "^7.24.6" - "@babel/types" "^7.24.6" + "@babel/helper-function-name" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helpers@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.6.tgz#cd124245299e494bd4e00edda0e4ea3545c2c176" - integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA== +"@babel/helpers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" + integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== dependencies: - "@babel/template" "^7.24.6" - "@babel/types" "^7.24.6" + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/highlight@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df" - integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== dependencies: - "@babel/helper-validator-identifier" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.7" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.23.5", "@babel/parser@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" - integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== +"@babel/parser@^7.23.5", "@babel/parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" + integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.6.tgz#283a74ef365b1e954cda6b2724c678a978215e88" - integrity sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz#fd059fd27b184ea2b4c7e646868a9a381bbc3055" + integrity sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ== dependencies: - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.6.tgz#f9f5ae4d6fb72f5950262cb6f0b2482c3bc684ef" - integrity sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz#468096ca44bbcbe8fcc570574e12eb1950e18107" + integrity sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.6.tgz#ab9be6edfffa127bd5ec4317c76c5af0f8fc7e6c" - integrity sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" - "@babel/plugin-transform-optional-chaining" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.6.tgz#0faf879249ec622d7f1c42eaebf7d11197401b2c" - integrity sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz#71b21bb0286d5810e63a1538aa901c58e87375ec" + integrity sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg== dependencies: - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" @@ -434,19 +442,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.6.tgz#52521c1c1698fc2dd9cf88f7a4dd86d4d041b9e1" - integrity sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg== +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-attributes@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.6.tgz#12aba325534129584672920274fefa4dc2d5f68e" - integrity sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ== +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -526,414 +534,414 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.6.tgz#93607d1ef5b81c70af174aff3532d57216367492" - integrity sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ== +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.6.tgz#fa4a9e5c3a7f60f697ba36587b6c41b04f507d84" - integrity sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA== +"@babel/plugin-transform-async-generator-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz#7330a5c50e05181ca52351b8fd01642000c96cfd" + integrity sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g== dependencies: - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-remap-async-to-generator" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.6.tgz#eb11434b11d73d8c0cf9f71a6f4f1e6ba441df35" - integrity sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g== +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== dependencies: - "@babel/helper-module-imports" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-remap-async-to-generator" "^7.24.6" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" -"@babel/plugin-transform-block-scoped-functions@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.6.tgz#975555b5bfa9870b1218da536d1528735f1f8c56" - integrity sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw== +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.6.tgz#a03ec8a4591c2b43cf7798bc633e698293fda179" - integrity sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w== +"@babel/plugin-transform-block-scoping@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz#42063e4deb850c7bd7c55e626bf4e7ab48e6ce02" + integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-properties@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.6.tgz#d9f394e97e88ef905d5a1e5e7a16238621b7982e" - integrity sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A== +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-static-block@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.6.tgz#f43f29286f6f0dca33d18fd5033b817d6c3fa816" - integrity sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA== +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.6.tgz#0cc198c02720d4eeb091004843477659c6b37977" - integrity sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.6" - "@babel/helper-compilation-targets" "^7.24.6" - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-function-name" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-replace-supers" "^7.24.6" - "@babel/helper-split-export-declaration" "^7.24.6" +"@babel/plugin-transform-classes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz#4ae6ef43a12492134138c1e45913f7c46c41b4bf" + integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.6.tgz#7a1765c01cdfe59c320d2d0f37a4dc4aecd14df1" - integrity sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg== +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/template" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.6.tgz#bdd1a6c90ffb2bfd13b6007b13316eeafc97cb53" - integrity sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ== +"@babel/plugin-transform-destructuring@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz#a097f25292defb6e6cc16d6333a4cfc1e3c72d9e" + integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dotall-regex@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.6.tgz#5a6b3148ec5f4f274ff48cebea90565087cad126" - integrity sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA== +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-duplicate-keys@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.6.tgz#2716301227cf7cd4fdadcbe4353ce191f8b3dc8a" - integrity sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA== +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dynamic-import@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.6.tgz#b477177761d56b15a4ba42a83be31cf72d757acf" - integrity sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w== +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.6.tgz#011e9e1a429f91b024af572530873ca571f9ef06" - integrity sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA== +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-export-namespace-from@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.6.tgz#b64ded74d9afb3db5d47d93996c4df69f15ac97c" - integrity sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA== +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-for-of@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.6.tgz#7f31780bd0c582b546372c0c0da9d9d56731e0a2" - integrity sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg== +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.6.tgz#60d1de3f6fd816a3e3bf9538578a64527e1b9c97" - integrity sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q== +"@babel/plugin-transform-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz#6d8601fbffe665c894440ab4470bc721dd9131d6" + integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== dependencies: - "@babel/helper-compilation-targets" "^7.24.6" - "@babel/helper-function-name" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-json-strings@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.6.tgz#a84639180ea1f9001bb5e6dc01921235ab05ad8b" - integrity sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w== +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.6.tgz#7f44f2871d7a4456030b0540858046f0b7bc6b18" - integrity sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw== +"@babel/plugin-transform-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c" + integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-logical-assignment-operators@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.6.tgz#9cc7baa5629866566562c159dc1eae7569810f33" - integrity sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.6.tgz#5d3681ca201ac6909419cc51ac082a6ba4c5c756" - integrity sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ== +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-amd@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.6.tgz#09aeac7acb7913496aaaafdc64f40683e0db7e41" - integrity sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ== +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== dependencies: - "@babel/helper-module-transforms" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.6.tgz#1b8269902f25bd91ca6427230d4735ddd1e1283e" - integrity sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw== +"@babel/plugin-transform-modules-commonjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz#9fd5f7fdadee9085886b183f1ad13d1ab260f4ab" + integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== dependencies: - "@babel/helper-module-transforms" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-simple-access" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-modules-systemjs@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.6.tgz#c54eb53fe16f9b82d320abd76762d0320e3f9393" - integrity sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w== +"@babel/plugin-transform-modules-systemjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz#f8012316c5098f6e8dee6ecd58e2bc6f003d0ce7" + integrity sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw== dependencies: - "@babel/helper-hoist-variables" "^7.24.6" - "@babel/helper-module-transforms" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-validator-identifier" "^7.24.6" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" -"@babel/plugin-transform-modules-umd@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.6.tgz#c4ef8b6d4da230b8dc87e81cd66986728952f89b" - integrity sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg== +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== dependencies: - "@babel/helper-module-transforms" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.6.tgz#352ee2861ab8705320029f80238cf26a92ba65d5" - integrity sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-new-target@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.6.tgz#fc024294714705113720d5e3dc0f9ad7abdbc289" - integrity sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA== +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.6.tgz#12b83b3cdfd1cd2066350e36e4fb912ab194545e" - integrity sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.6.tgz#d9115669cc85aa91fbfb15f88f2226332cf4946a" - integrity sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q== +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.6.tgz#68d763f69955f9e599c405c6c876f5be46b47d8a" - integrity sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg== +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== dependencies: - "@babel/helper-compilation-targets" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.6" + "@babel/plugin-transform-parameters" "^7.24.7" -"@babel/plugin-transform-object-super@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.6.tgz#9cbe6f995bed343a7ab8daf0416dac057a9c3e27" - integrity sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg== +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-replace-supers" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" -"@babel/plugin-transform-optional-catch-binding@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.6.tgz#c81e90a971aad898e56f2b75a358e6c4855aeba3" - integrity sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w== +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.6.tgz#3d636b3ed8b5a506f93e4d4675fc95754d7594f5" - integrity sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ== +"@babel/plugin-transform-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz#b8f6848a80cf2da98a8a204429bec04756c6d454" + integrity sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.6.tgz#7aee86dfedd2fc0136fecbe6f7649fc02d86ab22" - integrity sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA== +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.6.tgz#258e1f859a52ff7b30ad556598224c192defcda7" - integrity sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw== +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.6.tgz#59ff09a099f62213112cf348e96b6b11957d1f28" - integrity sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ== +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.6" - "@babel/helper-create-class-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.6.tgz#243c4faabe811c405e9443059a58e834bf95dfd1" - integrity sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw== +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-regenerator@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.6.tgz#ed10cf0c13619365e15459f88d1b915ac57ffc24" - integrity sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg== +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.6.tgz#9eb16cbf339fcea0a46677716c775afb5ef14245" - integrity sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A== +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-shorthand-properties@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.6.tgz#ef734ebccc428d2174c7bb36015d0800faf5381e" - integrity sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw== +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.6.tgz#a56cecbd8617675531d1b79f5b755b7613aa0822" - integrity sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA== +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.6.tgz#1a78127731fea87d954bed193840986a38f04327" - integrity sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw== +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-template-literals@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.6.tgz#aaf2ae157acd0e5c9265dba8ac0a439f8d2a6303" - integrity sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg== +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typeof-symbol@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.6.tgz#3d02da23ebcc8f1982ddcd1f2581cf3ee4e58762" - integrity sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig== +"@babel/plugin-transform-typeof-symbol@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz#f074be466580d47d6e6b27473a840c9f9ca08fb0" + integrity sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-escapes@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.6.tgz#c8ddca8fd5bacece837a4e27bd3b7ed64580d1a8" - integrity sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw== +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-property-regex@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.6.tgz#e66297d5d452db0b0be56515e3d0e10b7d33fb32" - integrity sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA== +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.6.tgz#2001e7d87ed709eea145e0b65fb5f93c3c0e225b" - integrity sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA== +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-sets-regex@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.6.tgz#f18b7292222aee85c155258ceb345a146a070a46" - integrity sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw== +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/preset-env@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.6.tgz#a5a55bc70e5ff1ed7f872067e2a9d65ff917ad6f" - integrity sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg== +"@babel/preset-env@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.7.tgz#ff067b4e30ba4a72f225f12f123173e77b987f37" + integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== dependencies: - "@babel/compat-data" "^7.24.6" - "@babel/helper-compilation-targets" "^7.24.6" - "@babel/helper-plugin-utils" "^7.24.6" - "@babel/helper-validator-option" "^7.24.6" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.6" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.6" + "@babel/compat-data" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.6" - "@babel/plugin-syntax-import-attributes" "^7.24.6" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -945,54 +953,54 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.6" - "@babel/plugin-transform-async-generator-functions" "^7.24.6" - "@babel/plugin-transform-async-to-generator" "^7.24.6" - "@babel/plugin-transform-block-scoped-functions" "^7.24.6" - "@babel/plugin-transform-block-scoping" "^7.24.6" - "@babel/plugin-transform-class-properties" "^7.24.6" - "@babel/plugin-transform-class-static-block" "^7.24.6" - "@babel/plugin-transform-classes" "^7.24.6" - "@babel/plugin-transform-computed-properties" "^7.24.6" - "@babel/plugin-transform-destructuring" "^7.24.6" - "@babel/plugin-transform-dotall-regex" "^7.24.6" - "@babel/plugin-transform-duplicate-keys" "^7.24.6" - "@babel/plugin-transform-dynamic-import" "^7.24.6" - "@babel/plugin-transform-exponentiation-operator" "^7.24.6" - "@babel/plugin-transform-export-namespace-from" "^7.24.6" - "@babel/plugin-transform-for-of" "^7.24.6" - "@babel/plugin-transform-function-name" "^7.24.6" - "@babel/plugin-transform-json-strings" "^7.24.6" - "@babel/plugin-transform-literals" "^7.24.6" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.6" - "@babel/plugin-transform-member-expression-literals" "^7.24.6" - "@babel/plugin-transform-modules-amd" "^7.24.6" - "@babel/plugin-transform-modules-commonjs" "^7.24.6" - "@babel/plugin-transform-modules-systemjs" "^7.24.6" - "@babel/plugin-transform-modules-umd" "^7.24.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.6" - "@babel/plugin-transform-new-target" "^7.24.6" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.6" - "@babel/plugin-transform-numeric-separator" "^7.24.6" - "@babel/plugin-transform-object-rest-spread" "^7.24.6" - "@babel/plugin-transform-object-super" "^7.24.6" - "@babel/plugin-transform-optional-catch-binding" "^7.24.6" - "@babel/plugin-transform-optional-chaining" "^7.24.6" - "@babel/plugin-transform-parameters" "^7.24.6" - "@babel/plugin-transform-private-methods" "^7.24.6" - "@babel/plugin-transform-private-property-in-object" "^7.24.6" - "@babel/plugin-transform-property-literals" "^7.24.6" - "@babel/plugin-transform-regenerator" "^7.24.6" - "@babel/plugin-transform-reserved-words" "^7.24.6" - "@babel/plugin-transform-shorthand-properties" "^7.24.6" - "@babel/plugin-transform-spread" "^7.24.6" - "@babel/plugin-transform-sticky-regex" "^7.24.6" - "@babel/plugin-transform-template-literals" "^7.24.6" - "@babel/plugin-transform-typeof-symbol" "^7.24.6" - "@babel/plugin-transform-unicode-escapes" "^7.24.6" - "@babel/plugin-transform-unicode-property-regex" "^7.24.6" - "@babel/plugin-transform-unicode-regex" "^7.24.6" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.6" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.24.7" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.24.7" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.7" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.24.7" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-modules-systemjs" "^7.24.7" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.7" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.4" @@ -1028,38 +1036,38 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.18.6", "@babel/template@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.6.tgz#048c347b2787a6072b24c723664c8d02b67a44f9" - integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw== - dependencies: - "@babel/code-frame" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/types" "^7.24.6" - -"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" - integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw== - dependencies: - "@babel/code-frame" "^7.24.6" - "@babel/generator" "^7.24.6" - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-function-name" "^7.24.6" - "@babel/helper-hoist-variables" "^7.24.6" - "@babel/helper-split-export-declaration" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/types" "^7.24.6" +"@babel/template@^7.18.6", "@babel/template@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" + integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" + integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.24.6", "@babel/types@^7.4.4": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" - integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== +"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.24.7", "@babel/types@^7.4.4": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" + integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== dependencies: - "@babel/helper-string-parser" "^7.24.6" - "@babel/helper-validator-identifier" "^7.24.6" + "@babel/helper-string-parser" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" "@csstools/css-parser-algorithms@^2.6.3": From 94e749d6a32cf2d147b743bb384d90543ff2b454 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 12:29:01 +0000 Subject: [PATCH 047/120] Bump @intlify/eslint-plugin-vue-i18n from 2.0.0 to 3.0.0 (#5247) Bumps [@intlify/eslint-plugin-vue-i18n](https://github.com/intlify/eslint-plugin-vue-i18n) from 2.0.0 to 3.0.0. - [Release notes](https://github.com/intlify/eslint-plugin-vue-i18n/releases) - [Changelog](https://github.com/intlify/eslint-plugin-vue-i18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/intlify/eslint-plugin-vue-i18n/compare/v2.0.0...v3.0.0) --- updated-dependencies: - dependency-name: "@intlify/eslint-plugin-vue-i18n" 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 | 192 +++++++++++++++++++++++++-------------------------- 2 files changed, 95 insertions(+), 99 deletions(-) diff --git a/package.json b/package.json index 04c79f6a93714..82d1ed8a1c92a 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/preset-env": "^7.24.7", "@double-great/stylelint-a11y": "^3.0.2", - "@intlify/eslint-plugin-vue-i18n": "^2.0.0", + "@intlify/eslint-plugin-vue-i18n": "^3.0.0", "babel-loader": "^9.1.3", "copy-webpack-plugin": "^12.0.2", "css-loader": "^7.1.2", diff --git a/yarn.lock b/yarn.lock index 95ebd7f52b7ca..a21fd07be482d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1186,21 +1186,6 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^1.2.0": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" - integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -1216,10 +1201,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/eslintrc@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.0.2.tgz#36180f8e85bf34d2fe3ccc2261e8e204a411ab4e" - integrity sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg== +"@eslint/eslintrc@^3.0.0", "@eslint/eslintrc@^3.0.2": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" + integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1298,47 +1283,51 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== -"@intlify/core-base@^9.1.9": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.10.1.tgz#e61d507d35beb0c69f9c94566313f9520c25a84a" - integrity sha512-0+Wtjj04GIyglh5KKiNjRwgjpHrhqqGZhaKY/QVjjogWKZq5WHROrTi84pNVsRN18QynyPmjtsVUWqFKPQ45xQ== +"@intlify/core-base@^9.12.0": + version "9.13.1" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.13.1.tgz#bd1f38e665095993ef9b67aeeb794f3cabcb515d" + integrity sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w== dependencies: - "@intlify/message-compiler" "9.10.1" - "@intlify/shared" "9.10.1" + "@intlify/message-compiler" "9.13.1" + "@intlify/shared" "9.13.1" -"@intlify/eslint-plugin-vue-i18n@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@intlify/eslint-plugin-vue-i18n/-/eslint-plugin-vue-i18n-2.0.0.tgz#7308327452742c07e4aef8735f6a4b17cefd58f5" - integrity sha512-ECBD0TvQNa56XKyuM6FPIGAAl7MP6ODcgjBQJrzucNxcTb8fYTWmZ+xgBuvmvAtA0iE0D4Wp18UMild2N0bGyw== +"@intlify/eslint-plugin-vue-i18n@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@intlify/eslint-plugin-vue-i18n/-/eslint-plugin-vue-i18n-3.0.0.tgz#3714d15038b805e3755ef2180e0129ce09cb64ad" + integrity sha512-s4fe+VOiqMZGhDrXWnL1xLyHbcFWBcEBeD/KpVrkOtL+utH2LPTi7uZ8RvWSthMS0mUL/7L74hFJ//OUU7AYww== dependencies: - "@eslint/eslintrc" "^1.2.0" - "@intlify/core-base" "^9.1.9" - "@intlify/message-compiler" "^9.1.9" - debug "^4.3.1" - glob "^8.0.0" - ignore "^5.0.5" + "@eslint/eslintrc" "^3.0.0" + "@intlify/core-base" "^9.12.0" + "@intlify/message-compiler" "^9.12.0" + debug "^4.3.4" + eslint-compat-utils "^0.5.0" + glob "^10.3.3" + globals "^15.0.0" + ignore "^5.2.4" + import-fresh "^3.3.0" is-language-code "^3.1.0" - js-yaml "^4.0.0" - json5 "^2.1.3" - jsonc-eslint-parser "^2.0.0" - lodash "^4.17.11" - parse5 "^7.0.0" - semver "^7.3.4" - vue-eslint-parser "^9.0.0" - yaml-eslint-parser "^1.0.0" - -"@intlify/message-compiler@9.10.1", "@intlify/message-compiler@^9.1.9": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.10.1.tgz#d70c9ec211dab67d50a42ad1fb782c0e02f89c42" - integrity sha512-b68UTmRhgZfswJZI7VAgW6BXZK5JOpoi5swMLGr4j6ss2XbFY13kiw+Hu+xYAfulMPSapcHzdWHnq21VGnMCnA== - dependencies: - "@intlify/shared" "9.10.1" + js-yaml "^4.1.0" + json5 "^2.2.3" + jsonc-eslint-parser "^2.3.0" + lodash "^4.17.21" + parse5 "^7.1.2" + semver "^7.5.4" + synckit "^0.9.0" + vue-eslint-parser "^9.3.1" + yaml-eslint-parser "^1.2.2" + +"@intlify/message-compiler@9.13.1", "@intlify/message-compiler@^9.12.0": + version "9.13.1" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz#ff8129badf77db3fb648b8d3cceee87c8033ed0a" + integrity sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w== + dependencies: + "@intlify/shared" "9.13.1" source-map-js "^1.0.2" -"@intlify/shared@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.10.1.tgz#024ad6dd4ee9581962437570b3dc25516c82f4e9" - integrity sha512-liyH3UMoglHBUn70iCYcy9CQlInx/lp50W2aeSxqqrvmG+LDj/Jj7tBJhBoQL4fECkldGhbmW0g2ommHfL6Wmw== +"@intlify/shared@9.13.1": + version "9.13.1" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.13.1.tgz#202741d11ece1a9c7480bfd3f27afcf9cb8f72e4" + integrity sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ== "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -1506,6 +1495,11 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + "@pkgr/utils@^2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" @@ -4075,7 +4069,7 @@ espree@^10.0.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.0.0" -espree@^9.0.0, espree@^9.3.1, espree@^9.4.0, espree@^9.6.0, espree@^9.6.1: +espree@^9.0.0, espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -4638,16 +4632,16 @@ 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.7: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== +glob@^10.3.3, glob@^10.3.7: + version "10.4.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" + integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== dependencies: foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + path-scurry "^1.11.1" glob@^7.1.3, glob@^7.1.6: version "7.2.3" @@ -4661,17 +4655,6 @@ glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.0: - 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" @@ -5079,7 +5062,7 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: +ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== @@ -5508,10 +5491,10 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== +jackspeak@^3.1.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a" + integrity sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -5570,7 +5553,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^4.0.0, js-yaml@^4.1.0: +js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -5651,12 +5634,12 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.3, json5@^2.2.0, json5@^2.2.3: +json5@^2.2.0, 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== -jsonc-eslint-parser@^2.0.0, jsonc-eslint-parser@^2.0.4: +jsonc-eslint-parser@^2.0.4, jsonc-eslint-parser@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461" integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== @@ -5885,7 +5868,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5902,6 +5885,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + lru-cache@^4.1.2: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -5924,11 +5912,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" - integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== - m3u8-parser@4.8.0: version "4.8.0" resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-4.8.0.tgz#4a2d591fdf6f2579d12a327081198df8af83083d" @@ -6103,7 +6086,7 @@ minimatch@^5.0.1, minimatch@^5.1.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1: +minimatch@^9.0.0, minimatch@^9.0.4: version "9.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== @@ -6132,6 +6115,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== +minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -6517,7 +6505,7 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@^7.0.0: +parse5@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== @@ -6572,12 +6560,12 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: - lru-cache "^9.1.1 || ^10.0.0" + lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-to-regexp@0.1.7: @@ -7544,7 +7532,7 @@ 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.4, 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: +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== @@ -8168,6 +8156,14 @@ synckit@^0.8.6: "@pkgr/utils" "^2.4.2" tslib "^2.6.2" +synckit@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.0.tgz#5b33b458b3775e4466a5b377fba69c63572ae449" + integrity sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + table@^6.8.2: version "6.8.2" resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" @@ -8672,7 +8668,7 @@ vue-devtools@^5.1.4: resolved "https://registry.yarnpkg.com/vue-devtools/-/vue-devtools-5.1.4.tgz#265a7458ade2affb291739176964256b597fa302" integrity sha512-EBAEXvAHUinsPzoSiElps0JgtLXUnJXKIJbP6nfdz/R63VdKBMfJ34/rFip+4iT7iMbVS5lA4W6N1jq4Hj4LCg== -vue-eslint-parser@^9.0.0, vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.4.2, vue-eslint-parser@^9.4.3: +vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.3.1, vue-eslint-parser@^9.4.2, vue-eslint-parser@^9.4.3: version "9.4.3" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8" integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg== @@ -9014,7 +9010,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml-eslint-parser@^1.0.0, yaml-eslint-parser@^1.2.1, yaml-eslint-parser@^1.2.3: +yaml-eslint-parser@^1.2.1, yaml-eslint-parser@^1.2.2, yaml-eslint-parser@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-1.2.3.tgz#3a8ae839fc8df376ef8497add7f40942b493389c" integrity sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A== From bb65ccd6a0150aad4361d4684294ea0b45376717 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:48:46 +0000 Subject: [PATCH 048/120] Bump youtubei.js from 9.4.0 to 10.0.0 (#5248) * Bump youtubei.js from 9.4.0 to 10.0.0 Bumps [youtubei.js](https://github.com/LuanRT/YouTube.js) from 9.4.0 to 10.0.0. - [Release notes](https://github.com/LuanRT/YouTube.js/releases) - [Changelog](https://github.com/LuanRT/YouTube.js/blob/main/CHANGELOG.md) - [Commits](https://github.com/LuanRT/YouTube.js/compare/v9.4.0...v10.0.0) --- updated-dependencies: - dependency-name: youtubei.js dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Disable undesired `enable_session_cache` setting --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: absidue <48293849+absidue@users.noreply.github.com> --- package.json | 2 +- src/renderer/helpers/api/local.js | 4 ++++ yarn.lock | 8 ++++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 82d1ed8a1c92a..e7ac07bebb0e9 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "vue-observe-visibility": "^1.0.0", "vue-router": "^3.6.5", "vuex": "^3.6.2", - "youtubei.js": "^9.4.0" + "youtubei.js": "^10.0.0" }, "devDependencies": { "@babel/core": "^7.24.7", diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js index 779d6b5ab916f..0b16dfd00edd7 100644 --- a/src/renderer/helpers/api/local.js +++ b/src/renderer/helpers/api/local.js @@ -46,6 +46,10 @@ async function createInnertube({ withPlayer = false, location = undefined, safet } return await Innertube.create({ + // This setting is enabled by default and results in YouTube.js reusing the same session across different Innertube instances. + // That behavior is highly undesirable for FreeTube, as we want to create a new session every time to limit tracking. + enable_session_cache: false, + retrieve_player: !!withPlayer, location: location, enable_safety_mode: !!safetyMode, diff --git a/yarn.lock b/yarn.lock index a21fd07be482d..ed4edd6f82b0e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9060,10 +9060,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.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== +youtubei.js@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-10.0.0.tgz#73ef7421302569c6cd6a163c12df393f13da480f" + integrity sha512-4Mmguxyw1TK1Co+gbx+41SFR55DR3OzMCdFW8OrSENjAjjOY9RDg7sKFbR+ZLsT3ga9AH1/nq+14KUItT9pPHQ== dependencies: jintr "^1.1.0" tslib "^2.5.0" From 93851f559eccfe1eaafcc8ee84102c077f536555 Mon Sep 17 00:00:00 2001 From: CocolinoFan Date: Mon, 10 Jun 2024 18:09:13 +0000 Subject: [PATCH 049/120] Translated using Weblate (Romanian) Currently translated at 89.1% (771 of 865 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ro/ --- static/locales/ro.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml index 7d2ab6d7ca478..cc1b230630d04 100644 --- a/static/locales/ro.yaml +++ b/static/locales/ro.yaml @@ -495,6 +495,7 @@ Settings: Hide Upcoming Premieres: Ascundeți premierele viitoare Blur Thumbnails: Estomparea miniaturilor Hide Profile Pictures in Comments: Ascundeți imaginile de profil în comentarii + Hide Channels Already Exists: ID-ul Canalului există deja SponsorBlock Settings: Notify when sponsor segment is skipped: Notificare atunci când segmentul sponsorului este sărit @@ -632,6 +633,8 @@ Profile: Profile Settings: Setări de profil Toggle Profile List: Lista profilului toggle Create Profile Name: Creați numele profilului + Profile Name: Numele Profilului + Edit Profile Name: Editează Numele Profilului Channel: Subscriber: 'Abonat' Subscribers: 'Abonați' @@ -1083,3 +1086,8 @@ Trimmed input must be at least N characters long: Intrarea tăiată trebuie să cel puțin 1 caracter | Intrarea tăiată trebuie să aibă cel puțin {length} caractere Tag already exists: Eticheta "{tagName}" există deja Channel Unhidden: '{channel} eliminat din filtrul de canale' +Search Listing: + Label: + 4K: 4K + Subtitles: Subtitrări + Closed Captions: Subtitrări Complexe From 00509090456527e4418804faba4532aabf3dde35 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 10 Jun 2024 21:10:53 +0200 Subject: [PATCH 050/120] Disable @intlify/vue-i18n/no-deprecated-tc eslint rule as it does not apply to Vue 2 (#5249) --- .eslintrc.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index f342b62dd1104..a0c8c79b28a3a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -112,6 +112,9 @@ module.exports = { ignoreText: ['-', '•', '/', 'YouTube', 'Invidious', 'FreeTube'] } ], + // Only applicable when we upgrade to Vue 3 and vue-i18n 9+ + '@intlify/vue-i18n/no-deprecated-tc': 'off', + 'vue/require-explicit-emits': 'error', 'vue/no-unused-emit-declarations': 'error', }, From b9146b1fe17cb7eb01a3af0c7930d068a730c201 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 11 Jun 2024 07:26:08 +0200 Subject: [PATCH 051/120] Fix mouse backward and forward buttons not updating the in-app buttons (#5242) --- src/constants.js | 3 -- src/main/index.js | 8 +-- src/renderer/App.js | 15 ------ src/renderer/components/top-nav/top-nav.js | 58 ++++++++-------------- 4 files changed, 24 insertions(+), 60 deletions(-) diff --git a/src/constants.js b/src/constants.js index 4d2d614f9bc44..36ad4ee471e17 100644 --- a/src/constants.js +++ b/src/constants.js @@ -21,9 +21,6 @@ const IpcChannels = { OPEN_URL: 'open-url', CHANGE_VIEW: 'change-view', - HISTORY_BACK: 'history-back', - HISTORY_FORWARD: 'history-forward', - DB_SETTINGS: 'db-settings', DB_HISTORY: 'db-history', DB_PROFILES: 'db-profiles', diff --git a/src/main/index.js b/src/main/index.js index b686b226f7ec1..3b88eaab24429 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -1494,9 +1494,7 @@ function runApp() { click: (_menuItem, browserWindow, _event) => { if (browserWindow == null) { return } - browserWindow.webContents.send( - IpcChannels.HISTORY_BACK - ) + browserWindow.webContents.goBack() }, type: 'normal', }, @@ -1506,9 +1504,7 @@ function runApp() { click: (_menuItem, browserWindow, _event) => { if (browserWindow == null) { return } - browserWindow.webContents.send( - IpcChannels.HISTORY_FORWARD - ) + browserWindow.webContents.goForward() }, type: 'normal', }, diff --git a/src/renderer/App.js b/src/renderer/App.js index fb320399ff5e2..95a780ca9d51f 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -183,7 +183,6 @@ export default defineComponent({ ipcRenderer = require('electron').ipcRenderer this.setupListenersToSyncWindows() this.activateKeyboardShortcuts() - this.activateIPCListeners() this.openAllLinksExternally() this.enableSetSearchQueryText() this.enableOpenUrl() @@ -199,10 +198,6 @@ export default defineComponent({ }, 500) }) - this.$router.afterEach((to, from) => { - this.$refs.topNav?.navigateHistory() - }) - this.$router.onReady(() => { if (this.$router.currentRoute.path === '/') { this.$router.replace({ path: this.landingPage }) @@ -334,16 +329,6 @@ export default defineComponent({ }) }, - activateIPCListeners: function () { - // handle menu event updates from main script - ipcRenderer.on(IpcChannels.HISTORY_BACK, (_event) => { - this.$refs.topNav.historyBack() - }) - ipcRenderer.on(IpcChannels.HISTORY_FORWARD, (_event) => { - this.$refs.topNav.historyForward() - }) - }, - handleKeyboardShortcuts: function (event) { if (event.altKey) { switch (event.key) { diff --git a/src/renderer/components/top-nav/top-nav.js b/src/renderer/components/top-nav/top-nav.js index e1f2963e7a991..0a5f16371cceb 100644 --- a/src/renderer/components/top-nav/top-nav.js +++ b/src/renderer/components/top-nav/top-nav.js @@ -17,13 +17,20 @@ export default defineComponent({ FtProfileSelector }, data: () => { + let isArrowBackwardDisabled = true + let isArrowForwardDisabled = true + + // If the Navigation API isn't supported (Firefox and Safari) + // keep the back and forwards buttons always enabled + if (!('navigation' in window)) { + isArrowBackwardDisabled = false + isArrowForwardDisabled = false + } + return { - component: this, showSearchContainer: true, - historyIndex: 1, - isForwardOrBack: false, - isArrowBackwardDisabled: true, - isArrowForwardDisabled: true, + isArrowBackwardDisabled, + isArrowForwardDisabled, searchSuggestionsDataList: [], lastSuggestionQuery: '' } @@ -96,6 +103,14 @@ export default defineComponent({ return this.$t('Open New Window') } }, + watch: { + $route: function () { + if ('navigation' in window) { + this.isArrowForwardDisabled = !window.navigation.canGoForward + this.isArrowBackwardDisabled = !window.navigation.canGoBack + } + } + }, mounted: function () { let previousWidth = window.innerWidth if (window.innerWidth <= MOBILE_WIDTH_THRESHOLD) { @@ -295,41 +310,12 @@ export default defineComponent({ this.showSearchContainer = !this.showSearchContainer }, - navigateHistory: function () { - if (!this.isForwardOrBack) { - this.historyIndex = window.history.length - this.isArrowBackwardDisabled = false - this.isArrowForwardDisabled = true - } else { - this.isForwardOrBack = false - } - }, - historyBack: function () { - this.isForwardOrBack = true - window.history.back() - - if (this.historyIndex > 1) { - this.historyIndex-- - this.isArrowForwardDisabled = false - if (this.historyIndex === 1) { - this.isArrowBackwardDisabled = true - } - } + this.$router.back() }, historyForward: function () { - this.isForwardOrBack = true - window.history.forward() - - if (this.historyIndex < window.history.length) { - this.historyIndex++ - this.isArrowBackwardDisabled = false - - if (this.historyIndex === window.history.length) { - this.isArrowForwardDisabled = true - } - } + this.$router.forward() }, toggleSideNav: function () { From 27d2687579d1568403a40a430a7a7e2e2252ffde Mon Sep 17 00:00:00 2001 From: Mehul Sweeti Agrawal <148802868+msagr@users.noreply.github.com> Date: Tue, 11 Jun 2024 17:31:29 +0530 Subject: [PATCH 052/120] Add confirmation popup before unsubscribing (#4896) * Add confirmation popup before unsubscribing * Added translation to confirmation popup * Add accidental popup setting * Remove extra parameter from handleSubscription function * Resolve unsubscription problem in case of mutiple profiles --- .../ft-subscribe-button.js | 75 ++++++++++++------- .../ft-subscribe-button.vue | 8 ++ .../subscription-settings.js | 6 +- .../subscription-settings.vue | 8 ++ src/renderer/store/modules/settings.js | 1 + static/locales/en-US.yaml | 1 + 6 files changed, 70 insertions(+), 29 deletions(-) diff --git a/src/renderer/components/ft-subscribe-button/ft-subscribe-button.js b/src/renderer/components/ft-subscribe-button/ft-subscribe-button.js index 13f5c65bf4c51..9a85032176cc0 100644 --- a/src/renderer/components/ft-subscribe-button/ft-subscribe-button.js +++ b/src/renderer/components/ft-subscribe-button/ft-subscribe-button.js @@ -3,6 +3,7 @@ import { defineComponent } from 'vue' import { mapActions } from 'vuex' import FtButton from '../../components/ft-button/ft-button.vue' +import FtPrompt from '../../components/ft-prompt/ft-prompt.vue' import { MAIN_PROFILE_ID } from '../../../constants' import { deepCopy, showToast } from '../../helpers/utils' @@ -11,7 +12,8 @@ import { getFirstCharacter } from '../../helpers/strings' export default defineComponent({ name: 'FtSubscribeButton', components: { - 'ft-button': FtButton + 'ft-button': FtButton, + 'ft-prompt': FtPrompt }, props: { channelId: { @@ -42,7 +44,8 @@ export default defineComponent({ }, data: function () { return { - isProfileDropdownOpen: false + isProfileDropdownOpen: false, + showUnsubscribePopupForProfile: null } }, computed: { @@ -108,34 +111,14 @@ export default defineComponent({ return } - const currentProfile = deepCopy(profile) - if (this.isProfileSubscribed(profile)) { - currentProfile.subscriptions = currentProfile.subscriptions.filter((channel) => { - return channel.id !== this.channelId - }) - - this.updateProfile(currentProfile) - showToast(this.$t('Channel.Channel has been removed from your subscriptions')) - - if (profile._id === MAIN_PROFILE_ID) { - // Check if a subscription exists in a different profile. - // Remove from there as well. - let duplicateSubscriptions = 0 - - this.profileList.forEach((profileInList) => { - if (profileInList._id === MAIN_PROFILE_ID) { - return - } - duplicateSubscriptions += this.unsubscribe(profileInList, this.channelId) - }) - - if (duplicateSubscriptions > 0) { - const message = this.$t('Channel.Removed subscription from {count} other channel(s)', { count: duplicateSubscriptions }) - showToast(message) - } + if (this.$store.getters.getUnsubscriptionPopupStatus) { + this.showUnsubscribePopupForProfile = profile + } else { + this.handleUnsubscription(profile) } } else { + const currentProfile = deepCopy(profile) const subscription = { id: this.channelId, name: this.channelName, @@ -173,10 +156,46 @@ export default defineComponent({ } }, - toggleProfileDropdown: function() { + toggleProfileDropdown: function () { this.isProfileDropdownOpen = !this.isProfileDropdownOpen }, + handleUnsubscribeConfirmation: async function (value) { + const profile = this.showUnsubscribePopupForProfile + this.showUnsubscribePopupForProfile = null + if (value === 'yes') { + this.handleUnsubscription(profile) + } + }, + + handleUnsubscription: function (profile) { + const currentProfile = deepCopy(profile) + currentProfile.subscriptions = currentProfile.subscriptions.filter((channel) => { + return channel.id !== this.channelId + }) + + this.updateProfile(currentProfile) + showToast(this.$t('Channel.Channel has been removed from your subscriptions')) + + if (profile._id === MAIN_PROFILE_ID) { + // Check if a subscription exists in a different profile. + // Remove from there as well. + let duplicateSubscriptions = 0 + + this.profileList.forEach((profileInList) => { + if (profileInList._id === MAIN_PROFILE_ID) { + return + } + duplicateSubscriptions += this.unsubscribe(profileInList, this.channelId) + }) + + if (duplicateSubscriptions > 0) { + const message = this.$t('Channel.Removed subscription from {count} other channel(s)', { count: duplicateSubscriptions }) + showToast(message) + } + } + }, + isActiveProfile: function (profile) { return profile._id === this.activeProfile._id }, diff --git a/src/renderer/components/ft-subscribe-button/ft-subscribe-button.vue b/src/renderer/components/ft-subscribe-button/ft-subscribe-button.vue index 3faa43f2e33ea..26bfd4c18be36 100644 --- a/src/renderer/components/ft-subscribe-button/ft-subscribe-button.vue +++ b/src/renderer/components/ft-subscribe-button/ft-subscribe-button.vue @@ -17,6 +17,14 @@ text-color="var(--text-with-main-color)" @click="handleSubscription" /> + +
+ +
diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js index cb5c46ffea5a7..0e81afa7d950f 100644 --- a/src/renderer/store/modules/settings.js +++ b/src/renderer/store/modules/settings.js @@ -226,6 +226,7 @@ const state = { hideVideoLikesAndDislikes: false, hideVideoViews: false, hideWatchedSubs: false, + unsubscriptionPopupStatus: false, hideLabelsSideBar: false, hideChapters: false, showDistractionFreeTitles: false, diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index fe8870025c699..3b2ed628f6620 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -471,6 +471,7 @@ Settings: Manage Subscriptions: Manage Subscriptions Fetch Automatically: Fetch Feed Automatically Only Show Latest Video for Each Channel: Only Show Latest Video for Each Channel + Avoid Accidental Unsubscription: Avoid Accidental Unsubscription Distraction Free Settings: Distraction Free Settings: Distraction Free Settings Sections: From eddee49a1e50f8360b64483a34c253dc94e1df69 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:19:53 +0200 Subject: [PATCH 053/120] Local API: Extract playlists on the auto-generated "Music" channel (#5250) --- src/renderer/helpers/api/local.js | 18 ++++++++++++++++++ src/renderer/views/Channel/Channel.js | 23 ++++++++++++++++++++--- src/renderer/views/Playlist/Playlist.js | 2 +- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js index 0b16dfd00edd7..cc3960923e847 100644 --- a/src/renderer/helpers/api/local.js +++ b/src/renderer/helpers/api/local.js @@ -674,6 +674,24 @@ export function parseLocalListPlaylist(playlist, channelId = undefined, channelN } } +/** + * @param {import('youtubei.js').YTNodes.CompactStation} compactStation + * @param {string} channelId + * @param {string} channelName + */ +export function parseLocalCompactStation(compactStation, channelId, channelName) { + return { + type: 'playlist', + dataSource: 'local', + title: compactStation.title.text, + thumbnail: compactStation.thumbnail[1].url, + channelName, + channelId, + playlistId: compactStation.endpoint.payload.playlistId, + videoCount: extractNumberFromString(compactStation.video_count.text) + } +} + /** * @param {YT.Search} response */ diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index 98a34a3b992a5..91bd4ea0a8e9e 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -38,6 +38,7 @@ import { parseLocalChannelShorts, parseLocalChannelVideos, parseLocalCommunityPosts, + parseLocalCompactStation, parseLocalListPlaylist, parseLocalListVideo, parseLocalSubscriberCount @@ -666,9 +667,25 @@ export default defineComponent({ this.getChannelReleasesLocal() } - if (!this.hideChannelPlaylists && channel.has_playlists) { - tabs.push('playlists') - this.getChannelPlaylistsLocal() + if (!this.hideChannelPlaylists) { + if (channel.has_playlists) { + tabs.push('playlists') + this.getChannelPlaylistsLocal() + } else if (channelId === 'UC-9-kyTW8ZkZNDHQJ6FgpwQ') { + // Special handling for "The Music Channel" (https://youtube.com/music) + tabs.push('playlists') + const playlists = channel.playlists.map(playlist => parseLocalListPlaylist(playlist)) + + const compactStations = channel.memo.get('CompactStation') + if (compactStations) { + for (const compactStation of compactStations) { + playlists.push(parseLocalCompactStation(compactStation, channelId, channelName)) + } + } + + this.showPlaylistSortBy = false + this.latestPlaylists = playlists + } } if (!this.hideChannelCommunity && channel.has_community) { diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js index 9e10adfe5e8e0..1d5430dde8f30 100644 --- a/src/renderer/views/Playlist/Playlist.js +++ b/src/renderer/views/Playlist/Playlist.js @@ -340,7 +340,7 @@ export default defineComponent({ this.playlistDescription = result.info.description ?? '' this.firstVideoId = result.items[0].id this.playlistThumbnail = result.info.thumbnails[0].url - this.viewCount = extractNumberFromString(result.info.views) + this.viewCount = result.info.views.toLowerCase() === 'no views' ? 0 : extractNumberFromString(result.info.views) this.videoCount = extractNumberFromString(result.info.total_items) this.lastUpdated = result.info.last_updated ?? '' this.channelName = channelName ?? '' From d12abb82b515783227e7d361171d6f065d96ea93 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:49:18 +0200 Subject: [PATCH 054/120] Local API: Extract releases on auto-generated artist topic channels (#5241) --- src/renderer/helpers/api/local.js | 51 ++++++++++++++++++++- src/renderer/views/Channel/Channel.js | 66 +++++++++++++++++---------- 2 files changed, 93 insertions(+), 24 deletions(-) diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js index cc3960923e847..77b8f9a481a7f 100644 --- a/src/renderer/helpers/api/local.js +++ b/src/renderer/helpers/api/local.js @@ -1,4 +1,4 @@ -import { ClientType, Endpoints, Innertube, Misc, UniversalCache, Utils, YT } from 'youtubei.js' +import { ClientType, Endpoints, Innertube, Misc, Parser, UniversalCache, Utils, YT } from 'youtubei.js' import Autolinker from 'autolinker' import { SEARCH_CHAR_LIMIT } from '../../../constants' @@ -410,6 +410,55 @@ export async function getLocalChannelCommunity(id) { } } +/** + * @param {YT.Channel} channel + */ +export async function getLocalArtistTopicChannelReleases(channel) { + const rawEngagementPanel = channel.shelves[0]?.menu?.top_level_buttons?.[0]?.endpoint.payload?.engagementPanel + + if (!rawEngagementPanel) { + return { + releases: channel.playlists.map(playlist => parseLocalListPlaylist(playlist)), + continuationData: null + } + } + + /** @type {import('youtubei.js').YTNodes.EngagementPanelSectionList} */ + const engagementPanelSectionList = Parser.parseItem(rawEngagementPanel) + + /** @type {import('youtubei.js').YTNodes.ContinuationItem|undefined} */ + const continuationItem = engagementPanelSectionList?.content?.contents?.[0]?.contents?.[0] + + if (!continuationItem) { + return { + releases: channel.playlists.map(playlist => parseLocalListPlaylist(playlist)), + continuationData: null + } + } + + return await getLocalArtistTopicChannelReleasesContinuation(channel, continuationItem) +} + +/** + * @param {YT.Channel} channel + * @param {import('youtubei.js').YTNodes.ContinuationItem} continuationData + */ +export async function getLocalArtistTopicChannelReleasesContinuation(channel, continuationData) { + const response = await continuationData.endpoint.call(channel.actions, { parse: true }) + + const memo = response.on_response_received_endpoints_memo + + const playlists = memo.get('GridPlaylist') ?? memo.get('LockupView') ?? memo.get('Playlist') + + /** @type {import('youtubei.js').YTNodes.ContinuationItem | null} */ + const continuationItem = memo.get('ContinuationItem')?.[0] ?? null + + return { + releases: playlists ? playlists.map(playlist => parseLocalListPlaylist(playlist)) : [], + continuationData: continuationItem + } +} + /** * @param {YT.Channel} channel * @param {boolean} onlyIdNameThumbnail diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index 91bd4ea0a8e9e..21f1189f91c9e 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -34,6 +34,7 @@ import { import { getLocalChannel, getLocalChannelId, + getLocalArtistTopicChannelReleases, parseLocalChannelHeader, parseLocalChannelShorts, parseLocalChannelVideos, @@ -41,7 +42,8 @@ import { parseLocalCompactStation, parseLocalListPlaylist, parseLocalListVideo, - parseLocalSubscriberCount + parseLocalSubscriberCount, + getLocalArtistTopicChannelReleasesContinuation } from '../../helpers/api/local' export default defineComponent({ @@ -72,6 +74,7 @@ export default defineComponent({ thumbnailUrl: '', subCount: 0, searchPage: 2, + isArtistTopicChannel: false, videoContinuationData: null, shortContinuationData: null, liveContinuationData: null, @@ -330,6 +333,7 @@ export default defineComponent({ this.shownElementList = [] this.apiUsed = '' this.channelInstance = '' + this.isArtistTopicChannel = false this.videoContinuationData = null this.shortContinuationData = null this.liveContinuationData = null @@ -561,6 +565,7 @@ export default defineComponent({ this.thumbnailUrl = channelThumbnailUrl this.bannerUrl = parsedHeader.bannerUrl ?? null this.isFamilyFriendly = !!channel.metadata.is_family_safe + this.isArtistTopicChannel = channelName.endsWith('- Topic') && !!channel.metadata.music_artist_name if (channel.metadata.tags) { tags.push(...channel.metadata.tags) @@ -662,7 +667,7 @@ export default defineComponent({ this.getChannelPodcastsLocal() } - if (!this.hideChannelReleases && channel.has_releases) { + if (!this.hideChannelReleases && (channel.has_releases || this.isArtistTopicChannel)) { tabs.push('releases') this.getChannelReleasesLocal() } @@ -716,7 +721,7 @@ export default defineComponent({ } }, - getChannelAboutLocal: async function () { + getChannelAboutLocal: async function (channel) { try { /** * @type {import('youtubei.js').YT.Channel} @@ -1264,20 +1269,13 @@ export default defineComponent({ // for the moment we just want the "Created Playlists" category that has all playlists in it if (playlistsTab.content_type_filters.length > 1) { - let viewId = '1' - - // Artist topic channels don't have any created playlists, so we went to select the "Albums & Singles" category instead - if (this.channelName.endsWith('- Topic') && channel.metadata.music_artist_name) { - viewId = '50' - } - /** * @type {import('youtubei.js').YTNodes.ChannelSubMenu} */ const menu = playlistsTab.current_tab.content.sub_menu const createdPlaylistsFilter = menu.content_type_sub_menu_items.find(contentType => { const url = `https://youtube.com/${contentType.endpoint.metadata.url}` - return new URL(url).searchParams.get('view') === viewId + return new URL(url).searchParams.get('view') === '1' }).title playlistsTab = await playlistsTab.applyContentTypeFilter(createdPlaylistsFilter) @@ -1413,14 +1411,27 @@ export default defineComponent({ * @type {import('youtubei.js').YT.Channel} */ const channel = this.channelInstance - const releaseTab = await channel.getReleases() - if (expectedId !== this.id) { - return + if (this.isArtistTopicChannel) { + const { releases, continuationData } = await getLocalArtistTopicChannelReleases(channel) + + if (expectedId !== this.id) { + return + } + + this.latestReleases = releases + this.releaseContinuationData = continuationData + } else { + const releaseTab = await channel.getReleases() + + if (expectedId !== this.id) { + return + } + + this.latestReleases = releaseTab.playlists.map(playlist => parseLocalListPlaylist(playlist, this.id, this.channelName)) + this.releaseContinuationData = releaseTab.has_continuation ? releaseTab : null } - this.latestReleases = releaseTab.playlists.map(playlist => parseLocalListPlaylist(playlist, this.id, this.channelName)) - this.releaseContinuationData = releaseTab.has_continuation ? releaseTab : null this.isElementListLoading = false } catch (err) { console.error(err) @@ -1439,14 +1450,23 @@ export default defineComponent({ getChannelReleasesLocalMore: async function () { try { - /** - * @type {import('youtubei.js').YT.ChannelListContinuation} - */ - const continuation = await this.releaseContinuationData.getContinuation() + if (this.isArtistTopicChannel) { + const { releases, continuationData } = await getLocalArtistTopicChannelReleasesContinuation( + this.channelInstance, this.releaseContinuationData + ) - const parsedReleases = continuation.playlists.map(playlist => parseLocalListPlaylist(playlist, this.id, this.channelName)) - this.latestReleases = this.latestReleases.concat(parsedReleases) - this.releaseContinuationData = continuation.has_continuation ? continuation : null + this.latestReleases.push(...releases) + this.releaseContinuationData = continuationData + } else { + /** + * @type {import('youtubei.js').YT.ChannelListContinuation} + */ + const continuation = await this.releaseContinuationData.getContinuation() + + const parsedReleases = continuation.playlists.map(playlist => parseLocalListPlaylist(playlist, this.id, this.channelName)) + this.latestReleases = this.latestReleases.concat(parsedReleases) + this.releaseContinuationData = continuation.has_continuation ? continuation : null + } } catch (err) { console.error(err) const errorMessage = this.$t('Local API Error (Click to copy)') From ca76a7591af31c25af237d49327eebf2a5e7c200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Tue, 11 Jun 2024 13:08:06 +0000 Subject: [PATCH 055/120] Translated using Weblate (Estonian) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/ --- static/locales/et.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/et.yaml b/static/locales/et.yaml index f39661a0e4564..4574a814e52b1 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -456,6 +456,7 @@ Settings: Manage Subscriptions: 'Halda tellimusi' Fetch Automatically: Laadi tellimuste voog automaatselt Only Show Latest Video for Each Channel: Iga kanali puhul näita vaid viimast videot + Avoid Accidental Unsubscription: Väldi ekslikku ja juhuslikku tellimusest loobumist Data Settings: Data Settings: 'Andmehaldus' Select Import Type: 'Vali imporditava faili vorming' From dd0976e29b2327096fe0e36fd9d6c3de98d5c4a2 Mon Sep 17 00:00:00 2001 From: Ghost of Sparta Date: Tue, 11 Jun 2024 12:11:36 +0000 Subject: [PATCH 056/120] Translated using Weblate (Hungarian) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/ --- static/locales/hu.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index 7a0a44473b74a..d5c5ba6b1a933 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -470,6 +470,7 @@ Settings: Fetch Automatically: Hírcsatorna automatikus lekérdezése Only Show Latest Video for Each Channel: Csak a legújabb videókat jelenítse meg a csatornáktól + Avoid Accidental Unsubscription: Kerülje el a véletlen leiratkozást Data Settings: Data Settings: 'Adatbeállítások' Select Import Type: 'Importálás típusa kiválasztása' From 25416b0a4b40fe636c10762cd0897908f9e433ab Mon Sep 17 00:00:00 2001 From: Fjuro Date: Tue, 11 Jun 2024 12:40:55 +0000 Subject: [PATCH 057/120] Translated using Weblate (Czech) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index 192bbb2878bed..b40579c83c833 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -459,6 +459,7 @@ Settings: Fetch Automatically: Automaticky načítat odběry Only Show Latest Video for Each Channel: U každého kanálu zobrazit pouze nejnovější video + Avoid Accidental Unsubscription: Zamezit nechtěným odběrům Distraction Free Settings: Distraction Free Settings: 'Nastavení rozptylování' Hide Video Views: 'Skrýt počet přehrání videa' From ecebdf4a3538851a2f49a688289eb6bf581a72e1 Mon Sep 17 00:00:00 2001 From: Markus Gaugg Date: Tue, 11 Jun 2024 14:12:59 +0000 Subject: [PATCH 058/120] Translated using Weblate (German) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index 5bc2111517618..15d842b7ee71b 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -452,6 +452,7 @@ Settings: Fetch Automatically: Feed automatisch abrufen Only Show Latest Video for Each Channel: Nur das neueste Video für jeden Kanal anzeigen + Avoid Accidental Unsubscription: Unbeabsichtigtes Deabonnieren vermeiden Advanced Settings: Advanced Settings: Erweiterte Einstellungen Enable Debug Mode (Prints data to the console): Aktiviere Debug-Modus (Konsolenausgabe From b7c04d84eebd49ebb6b4a589a26c0afc5c2e47c1 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Tue, 11 Jun 2024 14:40:07 +0000 Subject: [PATCH 059/120] Translated using Weblate (Spanish) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/ --- static/locales/es.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/es.yaml b/static/locales/es.yaml index b192b25a4b577..63213692abd74 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -461,6 +461,7 @@ Settings: Fetch Automatically: Obtener los feed automáticamente Only Show Latest Video for Each Channel: Mostrar solo los últimos vídeos de cada canal + Avoid Accidental Unsubscription: Evitar bajas accidentales Data Settings: Data Settings: 'Ajustes de Datos' Select Import Type: 'Seleccionar tipo de importación' From afdb83a81762b067061e401433dba95f8321bd5a Mon Sep 17 00:00:00 2001 From: Philip Goto Date: Tue, 11 Jun 2024 17:04:28 +0000 Subject: [PATCH 060/120] Translated using Weblate (Dutch) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/ --- static/locales/nl.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 65718e76203c9..8332900385346 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -457,6 +457,7 @@ Settings: Fetch Automatically: Feed automatisch ophalen Only Show Latest Video for Each Channel: Alleen nieuwste video voor elk kanaal tonen + Avoid Accidental Unsubscription: Onbedoeld deabonneren voor­komen Advanced Settings: Advanced Settings: 'Geavanceerde Instellingen' Enable Debug Mode (Prints data to the console): 'Schakel Debug Modus in (Print From fe31fbad7b4c749cd0ddceeec57280c430f0c53b Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Tue, 11 Jun 2024 16:15:48 +0000 Subject: [PATCH 061/120] Translated using Weblate (Croatian) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/ --- static/locales/hr.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index 9eab2f68d591b..57a0cdcffe0b6 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -457,6 +457,7 @@ Settings: Fetch Automatically: Automatski dohvati feed Only Show Latest Video for Each Channel: Prikaži samo najnoviji video za svaki kanal + Avoid Accidental Unsubscription: Izbjegni slučajno otkazivanje pretplate Advanced Settings: Advanced Settings: 'Napredne postavke' Enable Debug Mode (Prints data to the console): 'Aktiviraj modus otklanjanja grešaka From 3e78106f82ae99c8b4a3ebd17c02f9259b860f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Tue, 11 Jun 2024 16:36:14 +0000 Subject: [PATCH 062/120] Translated using Weblate (Turkish) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/ --- static/locales/tr.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index 81c62ab274521..dbb16f42b7812 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -460,6 +460,7 @@ Settings: Fetch Automatically: Akışı Otomatik Olarak Getir Only Show Latest Video for Each Channel: Her Kanal için Yalnızca En Son Videoyu Göster + Avoid Accidental Unsubscription: Yanlışlıkla Abonelikten Çıkmayı Önle Data Settings: Data Settings: 'Veri Ayarları' Select Import Type: 'İçe Aktarma Türünü Seç' From 8b3c57c6bbf5ed3e2c2af3d3917ad98c79dbf13e Mon Sep 17 00:00:00 2001 From: Massimo Pissarello Date: Tue, 11 Jun 2024 18:16:52 +0000 Subject: [PATCH 063/120] Translated using Weblate (Italian) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/ --- static/locales/it.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/it.yaml b/static/locales/it.yaml index 2707ac36e898e..87a0ea5d572dc 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -466,6 +466,7 @@ Settings: Fetch Automatically: Recupera i feed automaticamente Only Show Latest Video for Each Channel: Mostra solo il video più recente per ciascun canale + Avoid Accidental Unsubscription: Evita la cancellazione accidentale dell'iscrizione Advanced Settings: Advanced Settings: 'Impostazioni Avanzate' Enable Debug Mode (Prints data to the console): 'Abilità modalità Sviluppatore From a5d0b02e1bcdfc9bc962016d310146674cd9d30c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20W=C3=B3jcicki?= Date: Tue, 11 Jun 2024 21:46:42 +0000 Subject: [PATCH 064/120] Translated using Weblate (Polish) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/ --- static/locales/pl.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index d67bcdfec38fc..6044cf74ebeca 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -445,6 +445,7 @@ Settings: Fetch Automatically: Automatycznie odświeżaj subskrypcje Only Show Latest Video for Each Channel: Pokaż tylko najnowszy film z każdego kanału + Avoid Accidental Unsubscription: Uniknij przypadkowego usunięcia subskrypcji Advanced Settings: Advanced Settings: 'Ustawienia zaawansowane' Enable Debug Mode (Prints data to the console): 'Włącz tryb dubugowania (pokazuje From 11ea5b7fa15d0b029e128afe322a1e92e061e3a1 Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Tue, 11 Jun 2024 20:52:50 +0000 Subject: [PATCH 065/120] Translated using Weblate (Arabic) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/ --- static/locales/ar.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index ed4b07e90a489..14ce2eac1815d 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -454,6 +454,7 @@ Settings: How do I import my subscriptions?: 'كيف استورد اشتراكاتي؟' Fetch Automatically: جلب الخلاصة تلقائيا Only Show Latest Video for Each Channel: عرض أحدث فيديو فقط لكل قناة + Avoid Accidental Unsubscription: تجنب إلغاء الاشتراك عن طريق الخطأ Advanced Settings: Advanced Settings: 'الإعدادات المتقدمة' Enable Debug Mode (Prints data to the console): 'تمكين وضع التنقيح (يطبع البيانات From ed40cb89c6347cea5aad286da6d89a06b7dab91b Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Wed, 12 Jun 2024 02:05:33 +0000 Subject: [PATCH 066/120] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/ --- static/locales/zh-TW.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index f1d1f06760507..2afe2c1bf4efe 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -403,6 +403,7 @@ Settings: Fetch Feeds from RSS: 從RSS擷取推送 Fetch Automatically: 自動擷取 Feed Only Show Latest Video for Each Channel: 只顯示每個頻道的最新影片 + Avoid Accidental Unsubscription: 避免意外取消訂閱 Advanced Settings: Advanced Settings: '進階設定' Enable Debug Mode (Prints data to the console): '允許除錯型態(列印資料在控制板)' From aa00e926463b1da805713bc0eb7a5e049fbe3eb4 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: Wed, 12 Jun 2024 08:12:52 +0000 Subject: [PATCH 067/120] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/ --- static/locales/zh-CN.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 9d6fce0f56c9d..5e365c7ed5064 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -401,6 +401,7 @@ Settings: Fetch Feeds from RSS: 从RSS摘取推送 Fetch Automatically: 自动抓取订阅源 Only Show Latest Video for Each Channel: 只显示每个频道的最新视频 + Avoid Accidental Unsubscription: 避免意外取消订阅 Advanced Settings: Advanced Settings: '高级设置' Enable Debug Mode (Prints data to the console): '允许调试模式(打印数据在控制板)' From 3b81addf31d26d54014c7e76b1442b082e33ceee Mon Sep 17 00:00:00 2001 From: NEXI Date: Wed, 12 Jun 2024 14:25:53 +0000 Subject: [PATCH 068/120] Translated using Weblate (Serbian) Currently translated at 100.0% (866 of 866 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sr/ --- static/locales/sr.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index ded40bcb3d1dd..37506d7c10c94 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -467,6 +467,7 @@ Settings: Fetch Automatically: Аутоматски прикупи фид Only Show Latest Video for Each Channel: Прикажи само најновији видео снимак за сваки канал + Avoid Accidental Unsubscription: Избегни случајно отпраћивање Distraction Free Settings: Distraction Free Settings: 'Подешавања „Без ометања“' Hide Video Views: 'Сакриј прегледе видео снимка' From f7f614384778b9b38430840d0b60e98d496d00f9 Mon Sep 17 00:00:00 2001 From: Jason <84899178+jasonhenriquez@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:49:52 +0000 Subject: [PATCH 069/120] Respect playlist sort order in `watch-video-playlist` (#5013) * Implement playlist sorting * Hide sort menu for remote playlists * Remove 'Custom (descending)' sort order I don't see the need for this particular sort order. * Adjust sort order & align dropdown with 'More Options' button * Make 'Latest added first' default option instead of custom * Remove unlikely-to-be-implemented 'Date published' sorting options Context from absidue: 'I don't think we should even attempt to support it, due to all of the situations where it wouldn't be possible.' * Update to use sortOrder as main variable throughout * Hide sort menu for playlists of length <2 * Send sorted user playlist to watch-video-playlist * Implement minor reversing optimization / cleanup * Update src/renderer/helpers/playlists.js Co-authored-by: absidue <48293849+absidue@users.noreply.github.com> * Change Playlist.js logic to cache user playlists, and pass the sorted user playlist --------- Co-authored-by: absidue <48293849+absidue@users.noreply.github.com> --- .../watch-video-playlist.js | 17 +++--- src/renderer/helpers/playlists.js | 52 +++++++++++++++++++ src/renderer/views/Playlist/Playlist.js | 39 ++------------ 3 files changed, 67 insertions(+), 41 deletions(-) create mode 100644 src/renderer/helpers/playlists.js 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 535ad18a16b0c..e9fad636e8999 100644 --- a/src/renderer/components/watch-video-playlist/watch-video-playlist.js +++ b/src/renderer/components/watch-video-playlist/watch-video-playlist.js @@ -10,6 +10,7 @@ import { untilEndOfLocalPlayList, } from '../../helpers/api/local' import { invidiousGetPlaylistInfo } from '../../helpers/api/invidious' +import { getSortedPlaylistItems, SORT_BY_VALUES } from '../../helpers/playlists' export default defineComponent({ name: 'WatchVideoPlaylist', @@ -66,7 +67,9 @@ export default defineComponent({ backendFallback: function () { return this.$store.getters.getBackendFallback }, - + currentLocale: function () { + return this.$i18n.locale.replace('_', '-') + }, isUserPlaylist: function () { return this.playlistType === 'user' }, @@ -134,6 +137,12 @@ export default defineComponent({ }, } }, + userPlaylistSortOrder: function () { + return this.$store.getters.getUserPlaylistSortOrder + }, + sortOrder: function () { + return this.isUserPlaylist ? this.userPlaylistSortOrder : SORT_BY_VALUES.Custom + }, }, watch: { userPlaylistsReady: function() { @@ -495,11 +504,7 @@ export default defineComponent({ this.prevVideoBeforeDeletion = this.playlistItems[targetVideoIndex] } - let playlistItems = playlist.videos - if (this.reversePlaylist) { - playlistItems = playlistItems.toReversed() - } - this.playlistItems = playlistItems + this.playlistItems = getSortedPlaylistItems(playlist.videos, this.sortOrder, this.currentLocale, this.reversePlaylist) // grab the first video of the parsed playlit if the current video is not in either the current or parsed data // (e.g., reloading the page after the current video has already been removed from the playlist) diff --git a/src/renderer/helpers/playlists.js b/src/renderer/helpers/playlists.js new file mode 100644 index 0000000000000..5f53972f4b43d --- /dev/null +++ b/src/renderer/helpers/playlists.js @@ -0,0 +1,52 @@ +export const SORT_BY_VALUES = { + DateAddedNewest: 'date_added_descending', + DateAddedOldest: 'date_added_ascending', + AuthorAscending: 'author_ascending', + AuthorDescending: 'author_descending', + VideoTitleAscending: 'video_title_ascending', + VideoTitleDescending: 'video_title_descending', + Custom: 'custom' +} + +export function getSortedPlaylistItems(playlistItems, sortOrder, locale, reversed = false) { + if (sortOrder === SORT_BY_VALUES.Custom) { + return reversed ? playlistItems.toReversed() : playlistItems + } + + let collator + + if ( + sortOrder === SORT_BY_VALUES.VideoTitleAscending || + sortOrder === SORT_BY_VALUES.VideoTitleDescending || + sortOrder === SORT_BY_VALUES.AuthorAscending || + sortOrder === SORT_BY_VALUES.AuthorDescending + ) { + collator = new Intl.Collator([locale, 'en']) + } + + return playlistItems.toSorted((a, b) => { + const first = !reversed ? a : b + const second = !reversed ? b : a + return compareTwoPlaylistItems(first, second, sortOrder, collator) + }) +} + +function compareTwoPlaylistItems(a, b, sortOrder, collator) { + switch (sortOrder) { + case SORT_BY_VALUES.DateAddedNewest: + return b.timeAdded - a.timeAdded + case SORT_BY_VALUES.DateAddedOldest: + return a.timeAdded - b.timeAdded + case SORT_BY_VALUES.VideoTitleAscending: + return collator.compare(a.title, b.title) + case SORT_BY_VALUES.VideoTitleDescending: + return collator.compare(b.title, a.title) + case SORT_BY_VALUES.AuthorAscending: + return collator.compare(a.author, b.author) + case SORT_BY_VALUES.AuthorDescending: + return collator.compare(b.author, a.author) + default: + console.error(`Unknown sortOrder: ${sortOrder}`) + return 0 + } +} diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js index 1d5430dde8f30..94018d155acd0 100644 --- a/src/renderer/views/Playlist/Playlist.js +++ b/src/renderer/views/Playlist/Playlist.js @@ -22,19 +22,10 @@ import { showToast, } from '../../helpers/utils' import { invidiousGetPlaylistInfo, youtubeImageUrlToInvidious } from '../../helpers/api/invidious' +import { getSortedPlaylistItems, SORT_BY_VALUES } from '../../helpers/playlists' import packageDetails from '../../../../package.json' import { MOBILE_WIDTH_THRESHOLD, PLAYLIST_HEIGHT_FORCE_LIST_THRESHOLD } from '../../../constants' -const SORT_BY_VALUES = { - DateAddedNewest: 'date_added_descending', - DateAddedOldest: 'date_added_ascending', - AuthorAscending: 'author_ascending', - AuthorDescending: 'author_descending', - VideoTitleAscending: 'video_title_ascending', - VideoTitleDescending: 'video_title_descending', - Custom: 'custom', -} - export default defineComponent({ name: 'Playlist', components: { @@ -49,13 +40,13 @@ export default defineComponent({ 'ft-auto-load-next-page-wrapper': FtAutoLoadNextPageWrapper, }, beforeRouteLeave(to, from, next) { - if (!this.isLoading && !this.isUserPlaylistRequested && to.path.startsWith('/watch') && to.query.playlistId === this.playlistId) { + if (!this.isLoading && to.path.startsWith('/watch') && to.query.playlistId === this.playlistId) { this.setCachedPlaylist({ id: this.playlistId, title: this.playlistTitle, channelName: this.channelName, channelId: this.channelId, - items: this.playlistItems, + items: this.sortedPlaylistItems, continuationData: this.continuationData, }) } @@ -189,29 +180,7 @@ export default defineComponent({ return this.sortOrder === SORT_BY_VALUES.Custom }, sortedPlaylistItems: function () { - if (this.sortOrder === SORT_BY_VALUES.Custom) { - return this.playlistItems - } - - return this.playlistItems.toSorted((a, b) => { - switch (this.sortOrder) { - case SORT_BY_VALUES.DateAddedNewest: - return b.timeAdded - a.timeAdded - case SORT_BY_VALUES.DateAddedOldest: - return a.timeAdded - b.timeAdded - case SORT_BY_VALUES.VideoTitleAscending: - return a.title.localeCompare(b.title, this.currentLocale) - case SORT_BY_VALUES.VideoTitleDescending: - return b.title.localeCompare(a.title, this.currentLocale) - case SORT_BY_VALUES.AuthorAscending: - return a.author.localeCompare(b.author, this.currentLocale) - case SORT_BY_VALUES.AuthorDescending: - return b.author.localeCompare(a.author, this.currentLocale) - default: - console.error(`Unknown sortOrder: ${this.sortOrder}`) - return 0 - } - }) + return getSortedPlaylistItems(this.playlistItems, this.sortOrder, this.currentLocale) }, visiblePlaylistItems: function () { if (!this.isUserPlaylistRequested) { From 7688f81a92d8af253c7dccb95fd147e4c6fe4c01 Mon Sep 17 00:00:00 2001 From: PikachuEXE Date: Thu, 13 Jun 2024 00:53:04 +0800 Subject: [PATCH 070/120] Update playlist page to add remove duplicate videos button for user playlists (#5191) * $ Remove duplicate line in a method setting a property to the same value * * Update playlist page to add remove duplicate videos button for user playlists * * Make remove watched videos button visible when any video watched * * Use different icon * * Show no. of items to be deleted on prompts --- .../components/playlist-info/playlist-info.js | 85 ++++++++++++++++++- .../playlist-info/playlist-info.vue | 19 ++++- src/renderer/main.js | 2 + static/locales/en-US.yaml | 4 +- 4 files changed, 106 insertions(+), 4 deletions(-) diff --git a/src/renderer/components/playlist-info/playlist-info.js b/src/renderer/components/playlist-info/playlist-info.js index 5b23fa15ce04d..c98be4ed1e186 100644 --- a/src/renderer/components/playlist-info/playlist-info.js +++ b/src/renderer/components/playlist-info/playlist-info.js @@ -110,6 +110,7 @@ export default defineComponent({ editMode: false, showDeletePlaylistPrompt: false, showRemoveVideosOnWatchPrompt: false, + showRemoveDuplicateVideosPrompt: false, newTitle: '', newDescription: '', deletePlaylistPromptValues: [ @@ -165,6 +166,20 @@ export default defineComponent({ this.$t('Cancel') ] }, + removeVideosOnWatchPromptLabelText() { + return this.$tc( + 'User Playlists.Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone', + this.userPlaylistWatchedVideoCount, + { playlistItemCount: this.userPlaylistWatchedVideoCount }, + ) + }, + removeDuplicateVideosPromptLabelText() { + return this.$tc( + 'User Playlists.Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone', + this.userPlaylistDuplicateItemCount, + { playlistItemCount: this.userPlaylistDuplicateItemCount }, + ) + }, firstVideoIdExists() { return this.firstVideoId !== '' @@ -211,6 +226,38 @@ export default defineComponent({ return this.isUserPlaylist ? 'user' : '' }, + userPlaylistAnyVideoWatched() { + if (!this.isUserPlaylist) { return false } + + const historyCacheById = this.$store.getters.getHistoryCacheById + return this.selectedUserPlaylist.videos.some((video) => { + return typeof historyCacheById[video.videoId] !== 'undefined' + }) + }, + // `userPlaylistAnyVideoWatched` is faster than this & this is only needed when prompt shown + userPlaylistWatchedVideoCount() { + if (!this.isUserPlaylist) { return false } + + const historyCacheById = this.$store.getters.getHistoryCacheById + return this.selectedUserPlaylist.videos.reduce((count, video) => { + return typeof historyCacheById[video.videoId] !== 'undefined' ? count + 1 : count + }, 0) + }, + + userPlaylistUniqueVideoIds() { + if (!this.isUserPlaylist) { return new Set() } + + return this.selectedUserPlaylist.videos.reduce((set, video) => { + set.add(video.videoId) + return set + }, new Set()) + }, + userPlaylistDuplicateItemCount() { + if (this.userPlaylistUniqueVideoIds.size === 0) { return 0 } + + return this.selectedUserPlaylist.videos.length - this.userPlaylistUniqueVideoIds.size + }, + deletePlaylistButtonVisible: function() { if (!this.isUserPlaylist) { return false } // Cannot delete during edit @@ -334,6 +381,43 @@ export default defineComponent({ this.$emit('exit-edit-mode') }, + handleRemoveDuplicateVideosPromptAnswer(option) { + this.showRemoveDuplicateVideosPrompt = false + if (option !== 'delete') { return } + + const videoIdsAdded = new Set() + const newVideoItems = this.selectedUserPlaylist.videos.reduce((ary, video) => { + if (videoIdsAdded.has(video.videoId)) { return ary } + + ary.push(video) + videoIdsAdded.add(video.videoId) + return ary + }, []) + + const removedVideosCount = this.userPlaylistDuplicateItemCount + if (removedVideosCount === 0) { + showToast(this.$t('User Playlists.SinglePlaylistView.Toast["There were no videos to remove."]')) + return + } + + const playlist = { + playlistName: this.title, + protected: this.selectedUserPlaylist.protected, + description: this.description, + videos: newVideoItems, + _id: this.id, + } + try { + this.updatePlaylist(playlist) + showToast(this.$tc('User Playlists.SinglePlaylistView.Toast.{videoCount} video(s) have been removed', removedVideosCount, { + videoCount: removedVideosCount, + })) + } catch (e) { + showToast(this.$t('User Playlists.SinglePlaylistView.Toast["There was an issue with updating this playlist."]')) + console.error(e) + } + }, + handleRemoveVideosOnWatchPromptAnswer: function (option) { this.showRemoveVideosOnWatchPrompt = false if (option !== 'delete') { return } @@ -346,7 +430,6 @@ export default defineComponent({ if (removedVideosCount === 0) { showToast(this.$t('User Playlists.SinglePlaylistView.Toast["There were no videos to remove."]')) - this.showRemoveVideosOnWatchPrompt = false return } diff --git a/src/renderer/components/playlist-info/playlist-info.vue b/src/renderer/components/playlist-info/playlist-info.vue index a5e6c3b33c707..7c9cc37c0c85a 100644 --- a/src/renderer/components/playlist-info/playlist-info.vue +++ b/src/renderer/components/playlist-info/playlist-info.vue @@ -153,7 +153,14 @@ @click="toggleCopyVideosPrompt" /> + + diff --git a/src/renderer/main.js b/src/renderer/main.js index 515770522ea48..63cad6fd7b306 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -90,6 +90,7 @@ import { faTimesCircle, faTrash, faUsers, + faUsersSlash, } from '@fortawesome/free-solid-svg-icons' import { faBookmark as farBookmark @@ -188,6 +189,7 @@ library.add( faTimesCircle, faTrash, faUsers, + faUsersSlash, // solid icons farBookmark, diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index 3b2ed628f6620..1cc05858b0b88 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -185,10 +185,12 @@ User Playlists: Cancel: Cancel Edit Playlist Info: Edit Playlist Info Copy Playlist: Copy Playlist + Remove Duplicate Videos: Remove Duplicate Videos Remove Watched Videos: Remove Watched Videos Enable Quick Bookmark With This Playlist: Enable Quick Bookmark With This Playlist Quick Bookmark Enabled: Quick Bookmark Enabled - Are you sure you want to remove all watched videos from this playlist? This cannot be undone: Are you sure you want to remove all watched videos from this playlist? This cannot be undone. + Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Are you sure you want to remove 1 duplicate video from this playlist? This cannot be undone. | 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: Are you sure you want to remove 1 watched video 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: Delete Playlist Cannot delete the quick bookmark target playlist.: Cannot delete the quick bookmark target playlist. Are you sure you want to delete this playlist? This cannot be undone: Are you sure you want to delete this playlist? This cannot be undone. From 0b7a7dfb91ec527e399058f7090039996f3bbcac Mon Sep 17 00:00:00 2001 From: Markus Gaugg Date: Wed, 12 Jun 2024 17:11:24 +0000 Subject: [PATCH 071/120] Translated using Weblate (German) Currently translated at 100.0% (868 of 868 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index 15d842b7ee71b..992dd407b321e 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -251,6 +251,17 @@ User Playlists: Quick Bookmark Enabled: Schnelles Lesezeichen aktiviert Cannot delete the quick bookmark target playlist.: Die Wiedergabeliste für das schnelle Lesezeichen kann nicht gelöscht werden. + Remove Duplicate Videos: Doppelte Videos entfernen + Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Sind + Sie sicher, dass Sie 1 doppeltes Video aus dieser Wiedergabeliste entfernen möchten? + Dies kann nicht rückgängig gemacht werden. | Sind Sie sicher, dass Sie {playlistItemCount} + doppelte Videos aus dieser Wiedergabeliste entfernen möchten? Dies kann nicht + rückgängig gemacht werden. + Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Sind + Sie sicher, dass Sie 1 angesehenes Video aus dieser Wiedergabeliste entfernen + möchten? Dies kann nicht rückgängig gemacht werden. | Sind Sie sicher, dass Sie + {playlistItemCount} angesehene Videos aus dieser Wiedergabeliste entfernen möchten? + Dies kann nicht rückgängig gemacht werden. History: # On History Page History: Verlauf From ff4fb17eb9564b0c725d22cf94b9c6dc3c6f5e81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Wed, 12 Jun 2024 18:20:27 +0000 Subject: [PATCH 072/120] Translated using Weblate (Estonian) Currently translated at 100.0% (868 of 868 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/ --- static/locales/et.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/static/locales/et.yaml b/static/locales/et.yaml index 4574a814e52b1..c5bfd8de24dd3 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -243,6 +243,15 @@ User Playlists: Quick Bookmark Enabled: Kasuta kiirjärjehoidjaid Cannot delete the quick bookmark target playlist.: Ei saa kustutada esitusloendit, mis on kasutusel kiirjärjehoidjate jaoks. + Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Kas + sa oled kindel, et soovid sellest esitusloendist eemaldada 1 topeltvideo? Seda + tegevust ei saa tagasi pöörata. | Kas sa oled kindel, et soovid sellest esitusloendist + eemaldada {playlistItemCount} topeltvideot? Seda tegevust ei saa tagasi pöörata. + Remove Duplicate Videos: Eemalda topeltvideod + Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Kas + sa oled kindel, et soovid sellest esitusloendist eemaldada 1 vaadatud video? Seda + tegevust ei saa tagasi pöörata. | Kas sa oled kindel, et soovid sellest esitusloendist + eemaldada {playlistItemCount} vaadatud videot? Seda tegevust ei saa tagasi pöörata. History: # On History Page History: 'Ajalugu' From d867f8e411d88aded11cf19150ef1f3a79085e26 Mon Sep 17 00:00:00 2001 From: summoner001 Date: Wed, 12 Jun 2024 17:50:16 +0000 Subject: [PATCH 073/120] Translated using Weblate (Hungarian) Currently translated at 100.0% (868 of 868 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/ --- static/locales/hu.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index d5c5ba6b1a933..8b86a5514f0ba 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -254,6 +254,15 @@ User Playlists: Cannot delete the quick bookmark target playlist.: Nem lehet törölni a gyors könyvjelző cél lejátszási listát. Quick Bookmark Enabled: Gyors könyvjelző engedélyezve + Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Biztosan + eltávolít 1 duplikált videót ebből a lejátszási listából? Ez a művelet nem vonható + vissza. | Biztosan eltávolít {playlistItemCount} duplikált videót ebből a lejátszási + listából? Ez a művelet nem vonható vissza. + Remove Duplicate Videos: Duplikált videók törlése + Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Biztosan + eltávolít 1 megtekintett videót ebből a lejátszási listából? Ez a művelet nem + vonható vissza. | Biztosan eltávolít {playlistItemCount} megtekintett videót ebből + a lejátszási listából? Ez a művelet nem vonható vissza. History: # On History Page History: 'Előzmények' From ea073dd6009574e9ae98b14181bc45e7b0b654de Mon Sep 17 00:00:00 2001 From: Fjuro Date: Wed, 12 Jun 2024 17:58:06 +0000 Subject: [PATCH 074/120] Translated using Weblate (Czech) Currently translated at 100.0% (868 of 868 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index b40579c83c833..97a778be3af10 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -244,6 +244,15 @@ User Playlists: Quick Bookmark Enabled: Rychlá záložka zapnuta Cannot delete the quick bookmark target playlist.: Nemůžete odstranit cílový playlist rychlé záložky. + Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Opravdu + chcete odstranit 1 duplicitní video z tohoto playlistu? Tato akce je nevratná. + | Opravdu chcete odstranit {playlistItemCount} duplicitních videí z tohoto playlistu? + Tato akce je nevratná. + Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Opravdu + chcete odstranit 1 zhlédnuté video z tohoto playlistu? Tato akce je nevratná. + | Opravdu chcete odstranit {playlistItemCount} zhlédnutých videí z tohoto playlistu? + Tato akce je nevratná. + Remove Duplicate Videos: Odstranit duplicitní videa History: # On History Page History: 'Historie' From fae3dcd9530643be38dea4034f7d8b13a3fb22ec Mon Sep 17 00:00:00 2001 From: Markus Gaugg Date: Wed, 12 Jun 2024 22:16:02 +0200 Subject: [PATCH 075/120] Optical enhancement - Improved spacing on the about page #5210 (#5257) * Update About.css Optical enhancement - Improved spacing on the about page #5210 * Update About.css fixed lint error --- src/renderer/views/About/About.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/renderer/views/About/About.css b/src/renderer/views/About/About.css index e223fe165f9e7..51416a5c72566 100644 --- a/src/renderer/views/About/About.css +++ b/src/renderer/views/About/About.css @@ -16,6 +16,7 @@ .version { text-align: center; font-size: 2em; + margin-block-end: 1em; } .about-chunks { From c3a99b6c40d8b5097c6d951b683f2ebc09b98550 Mon Sep 17 00:00:00 2001 From: PikachuEXE Date: Thu, 13 Jun 2024 04:16:29 +0800 Subject: [PATCH 076/120] ! Fix error when fetching deleted comment replies in local API (#5255) --- .../components/watch-video-comments/watch-video-comments.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/renderer/components/watch-video-comments/watch-video-comments.js b/src/renderer/components/watch-video-comments/watch-video-comments.js index 339d7226baac7..f5819de30b0a4 100644 --- a/src/renderer/components/watch-video-comments/watch-video-comments.js +++ b/src/renderer/components/watch-video-comments/watch-video-comments.js @@ -260,6 +260,12 @@ export default defineComponent({ /** @type {import('youtubei.js').YTNodes.CommentThread} */ const commentThread = this.replyTokens.get(comment.id) + if (commentThread == null) { + this.replyTokens.delete(comment.id) + comment.hasReplyToken = false + return + } + if (comment.replies.length > 0) { await commentThread.getContinuation() comment.replies = comment.replies.concat(commentThread.replies.map(reply => parseLocalComment(reply))) From 6d5d1b8931d664679cd9ebd3acce5f34828c8018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 12 Jun 2024 19:25:59 +0000 Subject: [PATCH 077/120] Translated using Weblate (Turkish) Currently translated at 100.0% (868 of 868 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/ --- static/locales/tr.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index dbb16f42b7812..f2450610bcac7 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -247,6 +247,15 @@ User Playlists: Quick Bookmark Enabled: Hızlı Yer İmi Etkin Cannot delete the quick bookmark target playlist.: Hızlı yer imi hedef oynatma listesi silinemiyor. + Remove Duplicate Videos: Yinelenen Videoları Kaldır + Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Bu + oynatma listesinden izlenen 1 videoyu kaldırmak istediğinizden emin misiniz? Bu + geri alınamaz. | Bu oynatma listesinden izlenen {playlistItemCount} videoyu kaldırmak + istediğinizden emin misiniz? Bu geri alınamaz. + Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Bu + oynatma listesinden 1 yinelenen videoyu kaldırmak istediğinizden emin misiniz? + Bu geri alınamaz. | Bu oynatma listesinden {playlistItemCount} yinelenen videoyu + kaldırmak istediğinizden emin misiniz? Bu geri alınamaz. History: # On History Page History: 'Geçmiş' From d56731e2a36056b186750deb7804a57489ad9600 Mon Sep 17 00:00:00 2001 From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> Date: Wed, 12 Jun 2024 17:45:13 -0400 Subject: [PATCH 078/120] check for 204 error (#5259) --- src/renderer/helpers/sponsorblock.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/helpers/sponsorblock.js b/src/renderer/helpers/sponsorblock.js index b3fabbc5183d8..3b658b6a17638 100644 --- a/src/renderer/helpers/sponsorblock.js +++ b/src/renderer/helpers/sponsorblock.js @@ -66,8 +66,8 @@ export async function deArrowThumbnail(videoId, timestamp) { try { const response = await fetch(requestUrl) - // 404 means that there are no thumbnails found for the video - if (response.status === 404) { + // 204 means that there are no thumbnails found for the video + if (response.status === 204) { return undefined } From af6e1ce6c096e800684f41348c6e35f279c3b301 Mon Sep 17 00:00:00 2001 From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> Date: Wed, 12 Jun 2024 21:52:04 -0400 Subject: [PATCH 079/120] Bug fix: fix resetting search type when features are set (#5197) * Feature search bug fix * unset features not allowed in movies --- .../ft-checkbox-list/ft-checkbox-list.js | 4 ++-- .../ft-checkbox-list/ft-checkbox-list.vue | 2 +- .../ft-search-filters/ft-search-filters.js | 19 +++++++++++++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/ft-checkbox-list/ft-checkbox-list.js b/src/renderer/components/ft-checkbox-list/ft-checkbox-list.js index 4d323d893cd61..b7ef0d151b48e 100644 --- a/src/renderer/components/ft-checkbox-list/ft-checkbox-list.js +++ b/src/renderer/components/ft-checkbox-list/ft-checkbox-list.js @@ -42,8 +42,8 @@ export default defineComponent({ this.selectedValues = this.initialValues }, methods: { - removeSelectedValues: function() { - this.selectedValues = [] + setSelectedValues: function(arr) { + this.selectedValues = arr }, change: function(event) { const targ = event.target diff --git a/src/renderer/components/ft-checkbox-list/ft-checkbox-list.vue b/src/renderer/components/ft-checkbox-list/ft-checkbox-list.vue index b1fa339650c76..313bd91a73160 100644 --- a/src/renderer/components/ft-checkbox-list/ft-checkbox-list.vue +++ b/src/renderer/components/ft-checkbox-list/ft-checkbox-list.vue @@ -16,7 +16,7 @@ :disabled="disabled" class="checkbox" type="checkbox" - :checked="initialValues.includes(values[index]) ?? null" + :checked="selectedValues.includes(values[index]) ?? null" @change="change" >