Merge branch 'development' into piped-support

This commit is contained in:
ChunkyProgrammer 2023-06-26 11:47:58 -07:00
commit 0e88d70987
16 changed files with 168 additions and 152 deletions

View File

@ -89,31 +89,31 @@
"copy-webpack-plugin": "^11.0.0", "copy-webpack-plugin": "^11.0.0",
"css-loader": "^6.8.1", "css-loader": "^6.8.1",
"css-minimizer-webpack-plugin": "^5.0.1", "css-minimizer-webpack-plugin": "^5.0.1",
"electron": "^22.3.13", "electron": "^22.3.14",
"electron-builder": "^23.6.0", "electron-builder": "^23.6.0",
"eslint": "^8.43.0", "eslint": "^8.43.0",
"eslint-config-prettier": "^8.8.0", "eslint-config-prettier": "^8.8.0",
"eslint-config-standard": "^17.1.0", "eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.27.5", "eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsonc": "^2.9.0", "eslint-plugin-jsonc": "^2.9.0",
"eslint-plugin-n": "^16.0.0", "eslint-plugin-n": "^16.0.1",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-promise": "^6.1.1", "eslint-plugin-promise": "^6.1.1",
"eslint-plugin-unicorn": "^47.0.0", "eslint-plugin-unicorn": "^47.0.0",
"eslint-plugin-vue": "^9.15.0", "eslint-plugin-vue": "^9.15.1",
"eslint-plugin-vuejs-accessibility": "^2.1.0", "eslint-plugin-vuejs-accessibility": "^2.1.0",
"eslint-plugin-yml": "^1.8.0", "eslint-plugin-yml": "^1.8.0",
"html-webpack-plugin": "^5.5.3", "html-webpack-plugin": "^5.5.3",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"json-minimizer-webpack-plugin": "^4.0.0", "json-minimizer-webpack-plugin": "^4.0.0",
"lefthook": "^1.4.2", "lefthook": "^1.4.3",
"mini-css-extract-plugin": "^2.7.6", "mini-css-extract-plugin": "^2.7.6",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"postcss": "^8.4.24", "postcss": "^8.4.24",
"postcss-scss": "^4.0.6", "postcss-scss": "^4.0.6",
"prettier": "^2.8.8", "prettier": "^2.8.8",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"sass": "^1.63.4", "sass": "^1.63.6",
"sass-loader": "^13.3.2", "sass-loader": "^13.3.2",
"stylelint": "^14.16.1", "stylelint": "^14.16.1",
"stylelint-config-sass-guidelines": "^9.0.1", "stylelint-config-sass-guidelines": "^9.0.1",
@ -123,7 +123,7 @@
"vue-devtools": "^5.1.4", "vue-devtools": "^5.1.4",
"vue-eslint-parser": "^9.3.1", "vue-eslint-parser": "^9.3.1",
"vue-loader": "^15.10.0", "vue-loader": "^15.10.0",
"webpack": "^5.87.0", "webpack": "^5.88.0",
"webpack-cli": "^5.1.4", "webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1", "webpack-dev-server": "^4.15.1",
"yaml-eslint-parser": "^1.2.2" "yaml-eslint-parser": "^1.2.2"

View File

@ -53,11 +53,8 @@ export default defineComponent({
this.channelName = this.data.name this.channelName = this.data.name
this.id = this.data.id this.id = this.data.id
if (this.hideChannelSubscriptions || this.data.subscribers == null) { this.subscriberCount = this.data.subscribers != null ? this.data.subscribers.replace(/ subscriber(s)?/, '') : null
this.subscriberCount = null
} else {
this.subscriberCount = this.data.subscribers.replace(/ subscriber(s)?/, '')
}
if (this.data.videos === null) { if (this.data.videos === null) {
this.videoCount = 0 this.videoCount = 0
} else { } else {
@ -79,11 +76,7 @@ export default defineComponent({
this.channelName = this.data.author this.channelName = this.data.author
this.id = this.data.authorId this.id = this.data.authorId
if (this.hideChannelSubscriptions) { this.subscriberCount = formatNumber(this.data.subCount)
this.subscriberCount = null
} else {
this.subscriberCount = formatNumber(this.data.subCount)
}
this.videoCount = formatNumber(this.data.videoCount) this.videoCount = formatNumber(this.data.videoCount)
this.description = this.data.description this.description = this.data.description
} }

View File

@ -26,7 +26,7 @@
</router-link> </router-link>
<div class="infoLine"> <div class="infoLine">
<span <span
v-if="subscriberCount !== null" v-if="subscriberCount !== null && !hideChannelSubscriptions"
class="subscriberCount" class="subscriberCount"
> >
{{ subscriberCount }} subscribers - {{ subscriberCount }} subscribers -

View File

@ -50,9 +50,13 @@ export default defineComponent({
return this.subscriptionInfo !== null return this.subscriptionInfo !== null
}, },
hideChannelSubscriptions: function () {
return this.$store.getters.getHideChannelSubscriptions
},
subscribedText: function () { subscribedText: function () {
let subscribedValue = (this.isSubscribed ? this.$t('Channel.Unsubscribe') : this.$t('Channel.Subscribe')).toUpperCase() let subscribedValue = (this.isSubscribed ? this.$t('Channel.Unsubscribe') : this.$t('Channel.Subscribe')).toUpperCase()
if (this.subscriptionCountText !== '') { if (this.subscriptionCountText !== '' && !this.hideChannelSubscriptions) {
subscribedValue += ' ' + this.subscriptionCountText subscribedValue += ' ' + this.subscriptionCountText
} }
return subscribedValue return subscribedValue

View File

@ -8,7 +8,6 @@ import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import FtButton from '../ft-button/ft-button.vue' import FtButton from '../ft-button/ft-button.vue'
import FtInput from '../ft-input/ft-input.vue' import FtInput from '../ft-input/ft-input.vue'
import FtTooltip from '../ft-tooltip/ft-tooltip.vue' import FtTooltip from '../ft-tooltip/ft-tooltip.vue'
import { ipcRenderer } from 'electron'
import { IpcChannels } from '../../../constants' import { IpcChannels } from '../../../constants'
import path from 'path' import path from 'path'
import { getPicturesPath } from '../../helpers/utils' import { getPicturesPath } from '../../helpers/utils'
@ -61,6 +60,10 @@ export default defineComponent({
} }
}, },
computed: { computed: {
usingElectron: function () {
return process.env.IS_ELECTRON
},
backendPreference: function () { backendPreference: function () {
let preference = this.$store.getters.getBackendPreference let preference = this.$store.getters.getBackendPreference
if (preference === 'piped') { if (preference === 'piped') {
@ -230,7 +233,11 @@ export default defineComponent({
}, },
getScreenshotEmptyFolderPlaceholder: async function() { getScreenshotEmptyFolderPlaceholder: async function() {
return path.join(await getPicturesPath(), 'Freetube') if (process.env.IS_ELECTRON) {
return path.join(await getPicturesPath(), 'Freetube')
} else {
return ''
}
}, },
getScreenshotFolderPlaceholder: function() { getScreenshotFolderPlaceholder: function() {
@ -238,21 +245,26 @@ export default defineComponent({
this.screenshotFolderPlaceholder = this.screenshotFolder this.screenshotFolderPlaceholder = this.screenshotFolder
return return
} }
this.getScreenshotEmptyFolderPlaceholder().then((res) => { if (process.env.IS_ELECTRON) {
this.screenshotFolderPlaceholder = res this.getScreenshotEmptyFolderPlaceholder().then((res) => {
}) this.screenshotFolderPlaceholder = res
})
}
}, },
chooseScreenshotFolder: async function() { chooseScreenshotFolder: async function() {
// only use with electron // only use with electron
const folder = await ipcRenderer.invoke( if (process.env.IS_ELECTRON) {
IpcChannels.SHOW_OPEN_DIALOG, const { ipcRenderer } = require('electron')
{ properties: ['openDirectory'] } const folder = await ipcRenderer.invoke(
) IpcChannels.SHOW_OPEN_DIALOG,
{ properties: ['openDirectory'] }
)
if (!folder.canceled) { if (!folder.canceled) {
await this.updateScreenshotFolderPath(folder.filePaths[0]) await this.updateScreenshotFolderPath(folder.filePaths[0])
this.getScreenshotFolderPlaceholder() this.getScreenshotFolderPlaceholder()
}
} }
}, },

View File

@ -169,14 +169,16 @@
/> />
</ft-flex-box> </ft-flex-box>
<br> <br>
<ft-flex-box> <ft-flex-box
v-if="usingElectron"
>
<ft-toggle-switch <ft-toggle-switch
:label="$t('Settings.Player Settings.Screenshot.Enable')" :label="$t('Settings.Player Settings.Screenshot.Enable')"
:default-value="enableScreenshot" :default-value="enableScreenshot"
@change="updateEnableScreenshot" @change="updateEnableScreenshot"
/> />
</ft-flex-box> </ft-flex-box>
<div v-if="enableScreenshot"> <div v-if="usingElectron && enableScreenshot">
<ft-flex-box> <ft-flex-box>
<ft-select <ft-select
:placeholder="$t('Settings.Player Settings.Screenshot.Format Label')" :placeholder="$t('Settings.Player Settings.Screenshot.Format Label')"
@ -204,7 +206,7 @@
/> />
</ft-flex-box> </ft-flex-box>
<ft-flex-box <ft-flex-box
v-if="!screenshotAskPath" v-if="usingElectron && !screenshotAskPath"
class="screenshotFolderContainer" class="screenshotFolderContainer"
> >
<p class="screenshotFolderLabel"> <p class="screenshotFolderLabel">
@ -223,7 +225,10 @@
@click="chooseScreenshotFolder" @click="chooseScreenshotFolder"
/> />
</ft-flex-box> </ft-flex-box>
<ft-flex-box class="screenshotFolderContainer"> <ft-flex-box
v-if="usingElectron"
class="screenshotFolderContainer"
>
<p class="screenshotFilenamePatternTitle"> <p class="screenshotFilenamePatternTitle">
{{ $t('Settings.Player Settings.Screenshot.File Name Label') }} {{ $t('Settings.Player Settings.Screenshot.File Name Label') }}
<ft-tooltip <ft-tooltip

View File

@ -1,5 +1,6 @@
import fs from 'fs/promises' import fs from 'fs/promises'
import { pathExists } from '../../helpers/filesystem' import { pathExists } from '../../helpers/filesystem'
import { createWebURL } from '../../helpers/utils'
const state = { const state = {
currentInvidiousInstance: '', currentInvidiousInstance: '',
@ -41,9 +42,10 @@ const actions = {
const fileName = 'invidious-instances.json' const fileName = 'invidious-instances.json'
/* eslint-disable-next-line n/no-path-concat */ /* eslint-disable-next-line n/no-path-concat */
const fileLocation = process.env.NODE_ENV === 'development' ? './static/' : `${__dirname}/static/` const fileLocation = process.env.NODE_ENV === 'development' ? './static/' : `${__dirname}/static/`
if (await pathExists(`${fileLocation}${fileName}`)) { const filePath = `${fileLocation}${fileName}`
if (!process.env.IS_ELECTRON || await pathExists(filePath)) {
console.warn('reading static file for invidious instances') console.warn('reading static file for invidious instances')
const fileData = await fs.readFile(`${fileLocation}${fileName}`) const fileData = process.env.IS_ELECTRON ? JSON.parse(await fs.readFile(filePath)) : await (await fetch(createWebURL(filePath))).text()
instances = JSON.parse(fileData).filter(e => { instances = JSON.parse(fileData).filter(e => {
return process.env.IS_ELECTRON || e.cors return process.env.IS_ELECTRON || e.cors
}).map(e => { }).map(e => {

View File

@ -163,9 +163,9 @@ const defaultSideEffectsTriggerId = settingId =>
const state = { const state = {
autoplayPlaylists: true, autoplayPlaylists: true,
autoplayVideos: true, autoplayVideos: true,
backendFallback: true, backendFallback: process.env.IS_ELECTRON,
backendPreference: 'local', backendPreference: !process.env.IS_ELECTRON ? 'invidious' : 'local',
fallbackPreference: 'invidious', fallbackPreference: !process.env.IS_ELECTRON ? 'piped' : 'invidious',
barColor: false, barColor: false,
checkForBlogPosts: true, checkForBlogPosts: true,
checkForUpdates: true, checkForUpdates: true,
@ -226,7 +226,7 @@ const state = {
proxyHostname: '127.0.0.1', proxyHostname: '127.0.0.1',
proxyPort: '9050', proxyPort: '9050',
proxyProtocol: 'socks5', proxyProtocol: 'socks5',
proxyVideos: false, proxyVideos: !process.env.IS_ELECTRON,
region: 'US', region: 'US',
rememberHistory: true, rememberHistory: true,
removeVideoMetaFiles: true, removeVideoMetaFiles: true,

View File

@ -563,7 +563,7 @@ export default defineComponent({
document.title = `${channelName} - ${packageDetails.productName}` document.title = `${channelName} - ${packageDetails.productName}`
if (!this.hideChannelSubscriptions && subscriberText) { if (subscriberText) {
const subCount = parseLocalSubscriberCount(subscriberText) const subCount = parseLocalSubscriberCount(subscriberText)
if (isNaN(subCount)) { if (isNaN(subCount)) {
@ -868,11 +868,7 @@ export default defineComponent({
document.title = `${this.channelName} - ${packageDetails.productName}` document.title = `${this.channelName} - ${packageDetails.productName}`
this.id = channelId this.id = channelId
this.isFamilyFriendly = response.isFamilyFriendly this.isFamilyFriendly = response.isFamilyFriendly
if (this.hideChannelSubscriptions) { this.subCount = response.subCount
this.subCount = null
} else {
this.subCount = response.subCount
}
const thumbnail = response.authorThumbnails[3].url const thumbnail = response.authorThumbnails[3].url
this.thumbnailUrl = youtubeImageUrlToInvidious(thumbnail, this.currentInvidiousInstance) this.thumbnailUrl = youtubeImageUrlToInvidious(thumbnail, this.currentInvidiousInstance)
this.updateSubscriptionDetails({ channelThumbnailUrl: thumbnail, channelName: channelName, channelId: channelId }) this.updateSubscriptionDetails({ channelThumbnailUrl: thumbnail, channelName: channelName, channelId: channelId })

View File

@ -49,7 +49,7 @@
</h1> </h1>
<p <p
v-if="subCount !== null" v-if="subCount !== null && !hideChannelSubscriptions"
class="channelSubCount" class="channelSubCount"
> >
{{ formattedSubCount }} {{ formattedSubCount }}

View File

@ -361,18 +361,10 @@ export default defineComponent({
this.isUpcoming = !!result.basic_info.is_upcoming this.isUpcoming = !!result.basic_info.is_upcoming
this.isLiveContent = !!result.basic_info.is_live_content this.isLiveContent = !!result.basic_info.is_live_content
if (!this.hideChannelSubscriptions) { const subCount = parseLocalSubscriberCount(result.secondary_info.owner.subscriber_count.text)
const subCount = parseLocalSubscriberCount(result.secondary_info.owner.subscriber_count.text)
if (!isNaN(subCount)) { if (!isNaN(subCount)) {
if (subCount >= 10000) { this.channelSubscriptionCountText = formatNumber(subCount, subCount >= 10000 ? { notation: 'compact' } : undefined)
this.channelSubscriptionCountText = formatNumber(subCount, { notation: 'compact' })
} else {
this.channelSubscriptionCountText = formatNumber(subCount)
}
} else {
this.channelSubscriptionCountText = ''
}
} else { } else {
this.channelSubscriptionCountText = '' this.channelSubscriptionCountText = ''
} }
@ -724,6 +716,7 @@ export default defineComponent({
this.videoTitle = result.title this.videoTitle = result.title
this.videoViewCount = result.viewCount this.videoViewCount = result.viewCount
this.channelSubscriptionCountText = result.subCountText || 'FT-0'
if (this.hideVideoLikesAndDislikes) { if (this.hideVideoLikesAndDislikes) {
this.videoLikeCount = null this.videoLikeCount = null
this.videoDislikeCount = null this.videoDislikeCount = null
@ -731,11 +724,7 @@ export default defineComponent({
this.videoLikeCount = result.likeCount this.videoLikeCount = result.likeCount
this.videoDislikeCount = result.dislikeCount this.videoDislikeCount = result.dislikeCount
} }
if (this.hideChannelSubscriptions) {
this.channelSubscriptionCountText = ''
} else {
this.channelSubscriptionCountText = result.subCountText || 'FT-0'
}
this.channelId = result.authorId this.channelId = result.authorId
this.channelName = result.author this.channelName = result.author
const channelThumb = result.authorThumbnails[1] const channelThumb = result.authorThumbnails[1]

View File

@ -270,6 +270,8 @@ Settings:
Enter Fullscreen on Display Rotate: Entrar em tela cheia ao girar a tela Enter Fullscreen on Display Rotate: Entrar em tela cheia ao girar a tela
Skip by Scrolling Over Video Player: Pular rolando o tocador de vídeo Skip by Scrolling Over Video Player: Pular rolando o tocador de vídeo
Allow DASH AV1 formats: Permitir formatos DASH AV1 Allow DASH AV1 formats: Permitir formatos DASH AV1
Comment Auto Load:
Comment Auto Load: Carregar automaticamente os comentários
Subscription Settings: Subscription Settings:
Subscription Settings: 'Configurações de inscrições' Subscription Settings: 'Configurações de inscrições'
Hide Videos on Watch: 'Esconder vídeos após assisti-los' Hide Videos on Watch: 'Esconder vídeos após assisti-los'
@ -403,6 +405,15 @@ Settings:
Display Titles Without Excessive Capitalisation: Mostrar Títulos sem Capitalização Display Titles Without Excessive Capitalisation: Mostrar Títulos sem Capitalização
Excessiva Excessiva
Hide Channels: Ocultar Vídeos dos Canais Hide Channels: Ocultar Vídeos dos Canais
Sections:
Side Bar: Barra lateral
Channel Page: Página do canal
Watch Page: Página de Visualização
General: Geral
Hide Featured Channels: Ocultar canais em destaque
Hide Channel Playlists: Ocultar listas de reprodução de canais
Hide Channel Community: Ocultar comunidade do canal
Hide Channel Shorts: Ocultar Shorts do Canal
The app needs to restart for changes to take effect. Restart and apply change?: O The app needs to restart for changes to take effect. Restart and apply change?: O
aplicativo necessita reiniciar para as mudanças fazerem efeito. Reiniciar e aplicar aplicativo necessita reiniciar para as mudanças fazerem efeito. Reiniciar e aplicar
mudança? mudança?
@ -580,6 +591,10 @@ Channel:
Live: Ao vivo Live: Ao vivo
This channel does not currently have any live streams: Este canal não tem nenhuma This channel does not currently have any live streams: Este canal não tem nenhuma
transmissão ao vivo no momento transmissão ao vivo no momento
Shorts:
Shorts: Shorts
This channel does not currently have any shorts: Este canal não tem atualmente
nenhum short
Video: Video:
Mark As Watched: 'Marcar como assistido' Mark As Watched: 'Marcar como assistido'
Remove From History: 'Remover do histórico' Remove From History: 'Remover do histórico'
@ -605,8 +620,8 @@ Video:
nessa versão.' nessa versão.'
'Chat is disabled or the Live Stream has ended.': 'O chat está desativado ou a transmissão 'Chat is disabled or the Live Stream has ended.': 'O chat está desativado ou a transmissão
ao vivo se encerrou.' ao vivo se encerrou.'
Live chat is enabled. Chat messages will appear here once sent.: 'Chat ao vivo Live chat is enabled. Chat messages will appear here once sent.: 'Chat ao vivo habilitado.
habilitado. As mensagens irão aparecer uma vez enviadas.' As mensagens irão aparecer uma vez enviadas.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'O 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'O
chat ao vivo não é suportado pela API do Invidious. Uma conexão com o YouTube chat ao vivo não é suportado pela API do Invidious. Uma conexão com o YouTube
é necessária.' é necessária.'
@ -920,9 +935,9 @@ Tooltips:
Preferred API Backend: Escolha o backend que o FreeTube usa para obter os dados. Preferred API Backend: Escolha o backend que o FreeTube usa para obter os dados.
A API local é um extrator integrado. A API Invidious requer um servidor Invidious A API local é um extrator integrado. A API Invidious requer um servidor Invidious
para se conectar. para se conectar.
External Link Handling: "Escolha o comportamento padrão quando um link, que não\ External Link Handling: "Escolha o comportamento padrão quando um link, que não
\ pode ser aberto no FreeTube, é clicado.\nPor padrão, o FreeTube abrirá o link\ pode ser aberto no FreeTube, é clicado.\nPor padrão, o FreeTube abrirá o link
\ clicado no seu navegador padrão.\n" clicado no seu navegador padrão.\n"
Privacy Settings: Privacy Settings:
Remove Video Meta Files: Quando ativado, o FreeTube exclui automaticamente os Remove Video Meta Files: Quando ativado, o FreeTube exclui automaticamente os
metarquivos criados durante a reprodução do vídeo quando a página de exibição metarquivos criados durante a reprodução do vídeo quando a página de exibição
@ -1000,3 +1015,7 @@ Chapters:
capítulo atual: {chapterName}' capítulo atual: {chapterName}'
Chapters: Capítulos Chapters: Capítulos
Ok: Ok Ok: Ok
Hashtag:
This hashtag does not currently have any videos: Esta hashtag não tem atualmente
nenhum vídeo
Hashtag: Hashtag

View File

@ -65,7 +65,7 @@ Settings:
Settings: 'සැකසුම්' Settings: 'සැකසුම්'
General Settings: General Settings:
General Settings: 'සාමාන්‍ය සැකසුම්' General Settings: 'සාමාන්‍ය සැකසුම්'
Check for Updates: 'යාවත්කාල සඳහා පරීක්ෂා කරන්න' Check for Updates: 'යාවත්කාල බලන්න'
Preferred API Backend: Preferred API Backend:
Local API: 'ස්ථානීය යෙ.ක්‍ර. අ.මු. (API)' Local API: 'ස්ථානීය යෙ.ක්‍ර. අ.මු. (API)'
Invidious API: 'ඉන්වීඩියස් යෙ.ක්‍ර. අ.මු. (API)' Invidious API: 'ඉන්වීඩියස් යෙ.ක්‍ර. අ.මු. (API)'

View File

@ -503,7 +503,7 @@ Profile:
Your default profile has been changed to your primary profile: 'Ваш типовий профіль Your default profile has been changed to your primary profile: 'Ваш типовий профіль
змінено на основний' змінено на основний'
'{profile} is now the active profile': '{profile} активний профіль зараз' '{profile} is now the active profile': '{profile} активний профіль зараз'
Subscription List: ідписки' Subscription List: ерелік підписок'
Other Channels: 'Інші канали' Other Channels: 'Інші канали'
'{number} selected': '{number} вибрано' '{number} selected': '{number} вибрано'
Select All: 'Вибрати все' Select All: 'Вибрати все'

View File

@ -53,10 +53,6 @@ self.addEventListener('install', function (event) {
console.log('[PWA Builder] Caching pages during install') console.log('[PWA Builder] Caching pages during install')
return cache.addAll(precacheFiles).then(function () { return cache.addAll(precacheFiles).then(function () {
if (offlineFallbackPage === 'ToDo-replace-this-name.html') {
return cache.add(new Response('TODO: Update the value of the offlineFallbackPage constant in the serviceworker.'))
}
return cache.add(offlineFallbackPage) return cache.add(offlineFallbackPage)
}) })
}) })

156
yarn.lock
View File

@ -3344,10 +3344,10 @@ electron-to-chromium@^1.4.411:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.411.tgz#8cb7787f0442fcb4209590e9951bdb482caa93b2" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.411.tgz#8cb7787f0442fcb4209590e9951bdb482caa93b2"
integrity sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg== integrity sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==
electron@^22.3.13: electron@^22.3.14:
version "22.3.13" version "22.3.14"
resolved "https://registry.yarnpkg.com/electron/-/electron-22.3.13.tgz#ce1de257a3f17dc44c8954789ada0ac31dec1120" resolved "https://registry.yarnpkg.com/electron/-/electron-22.3.14.tgz#539fc7d7b6df37483aaa351856a28e43092d550e"
integrity sha512-SDqQM3zSNiiiHIaxhx9yshWwgkqhyYMEH7XfWQhnvtI3N+5bnC6Po7Uz7p2jVqHWaBYTatdbBwB0flhvlDtBuQ== integrity sha512-WxVcLnC4DrkBLN1/BwpxNkGvVq8iq1hM7lae5nvjnSYg/bwVbuo1Cwc80Keft4MIWKlYCXNiKKqs3qCXV4Aiaw==
dependencies: dependencies:
"@electron/get" "^2.0.0" "@electron/get" "^2.0.0"
"@types/node" "^16.11.26" "@types/node" "^16.11.26"
@ -3618,10 +3618,10 @@ eslint-module-utils@^2.7.4:
dependencies: dependencies:
debug "^3.2.7" debug "^3.2.7"
eslint-plugin-es-x@^6.1.0: eslint-plugin-es-x@^7.1.0:
version "6.2.1" version "7.1.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz#34c9abc22483d7d49ff9ca8b5db29d54442d2e6b" resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.1.0.tgz#f0d5421e658cca95c1cfb2355831851bdc83322d"
integrity sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw== integrity sha512-AhiaF31syh4CCQ+C5ccJA0VG6+kJK8+5mXKKE7Qs1xcPRg02CDPOj3mWlQxuWS/AYtg7kxrDNgW9YW3vc0Q+Mw==
dependencies: dependencies:
"@eslint-community/eslint-utils" "^4.1.2" "@eslint-community/eslint-utils" "^4.1.2"
"@eslint-community/regexpp" "^4.5.0" "@eslint-community/regexpp" "^4.5.0"
@ -3656,19 +3656,19 @@ eslint-plugin-jsonc@^2.9.0:
jsonc-eslint-parser "^2.0.4" jsonc-eslint-parser "^2.0.4"
natural-compare "^1.4.0" natural-compare "^1.4.0"
eslint-plugin-n@^16.0.0: eslint-plugin-n@^16.0.1:
version "16.0.0" version "16.0.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz#de39e4dd6cf04fd78fd6f49cb39ecb20ea0167ff" resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.0.1.tgz#baa62bb3af52940a53ba15386348ad9b0b425ada"
integrity sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ== integrity sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==
dependencies: dependencies:
"@eslint-community/eslint-utils" "^4.4.0" "@eslint-community/eslint-utils" "^4.4.0"
builtins "^5.0.1" builtins "^5.0.1"
eslint-plugin-es-x "^6.1.0" eslint-plugin-es-x "^7.1.0"
ignore "^5.1.1" ignore "^5.2.4"
is-core-module "^2.12.0" is-core-module "^2.12.1"
minimatch "^3.1.2" minimatch "^3.1.2"
resolve "^1.22.2" resolve "^1.22.2"
semver "^7.5.0" semver "^7.5.3"
eslint-plugin-prettier@^4.2.1: eslint-plugin-prettier@^4.2.1:
version "4.2.1" version "4.2.1"
@ -3704,10 +3704,10 @@ eslint-plugin-unicorn@^47.0.0:
semver "^7.3.8" semver "^7.3.8"
strip-indent "^3.0.0" strip-indent "^3.0.0"
eslint-plugin-vue@^9.15.0: eslint-plugin-vue@^9.15.1:
version "9.15.0" version "9.15.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.15.0.tgz#2bffe2b8a628ee438f983672a73cd89df455c461" resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.15.1.tgz#3c09e0edab444b5d4d9239a12a645a0e2e2ea5be"
integrity sha512-XYzpK6e2REli100+6iCeBA69v6Sm0D/yK2FZP+fCeNt0yH/m82qZQq+ztseyV0JsKdhFysuSEzeE1yCmSC92BA== integrity sha512-CJE/oZOslvmAR9hf8SClTdQ9JLweghT6JCBQNrT2Iel1uVw0W0OLJxzvPd6CxmABKCvLrtyDnqGV37O7KQv6+A==
dependencies: dependencies:
"@eslint-community/eslint-utils" "^4.3.0" "@eslint-community/eslint-utils" "^4.3.0"
natural-compare "^1.4.0" natural-compare "^1.4.0"
@ -4722,7 +4722,7 @@ ieee754@^1.1.13:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.1: ignore@^5.2.0, ignore@^5.2.1, ignore@^5.2.4:
version "5.2.4" version "5.2.4"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
@ -4897,7 +4897,7 @@ is-ci@^3.0.0:
dependencies: dependencies:
ci-info "^3.2.0" ci-info "^3.2.0"
is-core-module@^2.11.0, is-core-module@^2.12.0, is-core-module@^2.5.0: is-core-module@^2.11.0, is-core-module@^2.12.1, is-core-module@^2.5.0:
version "2.12.1" version "2.12.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd"
integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
@ -5343,59 +5343,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" resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==
lefthook-darwin-arm64@1.4.2: lefthook-darwin-arm64@1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.4.2.tgz#aa2fc610491c651e77c95d346bf41f589ef2fc7b" resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.4.3.tgz#b253fbc20041815010da66e8588faf4bbd75c0aa"
integrity sha512-1tyNoHbjIuGa3xWWoMwaX5cF3EjRYCZSomMDPiHnIom1dxa/p3nSaF0thJSnQRlXNddsisH+t6vWOmccgukCWA== integrity sha512-ZFsgIzN+Z0c4RpMMHU/M4J43XFyXYGZI8r0GG4jqVMX+prDBIb/6vpgMdZxK5IozRUmnfLGQPXcVokE9WBHSOg==
lefthook-darwin-x64@1.4.2: lefthook-darwin-x64@1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.4.2.tgz#fc8a3900def1839cac180bd3c418e4a2acdc5cd7" resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.4.3.tgz#5afa63f7a18cf89495895fc1321cdd749825bf9c"
integrity sha512-+CcLTMvNTOdP2E7qHnAiSn1xtNeMLbhykyJOe/7Dd5beAv4BZ94ZnuoH74RIgyBALeZxpUeOdwJNI3Nc8Pg6+A== integrity sha512-O6ZesdJ9MStI38gNfJh0ShExIf0KyHG1lR32F9FUFklFwhcquRM+uIDyDqVCxU3UWqmKwcbTk9AJWMjQZGPLxQ==
lefthook-freebsd-arm64@1.4.2: lefthook-freebsd-arm64@1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.4.2.tgz#58fa1714f5c2972e7e4ff8ced9658654de654fae" resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.4.3.tgz#070141ccc981658bd7545f40b14814b410f2930e"
integrity sha512-uT0PR66ZEMzaFco+eTn/3jYzf47vt0UQM6u5eWPdYoUQTbYavvpsecyGw6YyhIaIYVOwbK8Gaf2YVJMvZFEyLA== integrity sha512-6swb+98Qs6P9V9Rcd2lHWH2LunFEk+kfIPpf6oiPrOHnw3OkfFhQLmawX425Ari7Y9qy9gfDoNe/0/IR7YGmGw==
lefthook-freebsd-x64@1.4.2: lefthook-freebsd-x64@1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.4.2.tgz#118d01566e308704a4c8d351b19187cd403ed68f" resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.4.3.tgz#47b4e7cf4c0459b1152e605c047541ec3eec5f0b"
integrity sha512-4FaBXxenytECD1R3qM/VTVSqp7E3mlKBtm5dDVGXNMBIsTXiEP/qkuk3nteIUnhgjQv0Ma23V0v7KTmNlo1oXA== integrity sha512-+58NARATypmIj0kDutd29ozywr6IeA0lVBxsVzq7C5ycYrd31iNak3lnaEvNJvdj5fGVNEL9X7XRojylthZlAg==
lefthook-linux-arm64@1.4.2: lefthook-linux-arm64@1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.4.2.tgz#30a879fcb460cd3e1341853cbe8cbdd1a46db9a5" resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.4.3.tgz#b3caae33a20cc2665ec047a098e7b4e4498d63d1"
integrity sha512-RzI1j6LPW1y4dqrVSBv/B/Sipa9Bp9LP0TB9BRB0CmxIqerFe90x9wVp3vAAkodGHv/B7Xa5f1OAibwkSbtTkw== integrity sha512-gAWJQEhgheOfPu579fhlcNNm3KoJbNkT11AATKHlFu+esyiCxI8xZVpGwDQVMphO7s43FKbkQJSvIM4tElb6FQ==
lefthook-linux-x64@1.4.2: lefthook-linux-x64@1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.4.2.tgz#972270c7e9284fb8d13531fef1a315c7d26ccdae" resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.4.3.tgz#ac2990e23a4c39bf774e4094f33c0fbaef79129c"
integrity sha512-huBfLsIPVfdU0jPnGCvJ4e39JdkXKsbb0Dr+fzAhLNhcg6Touo6y/pwDbW5zfeN2hu0EdhzT0p0a28FGsV9dEQ== integrity sha512-mVv/amRqX81nQcizhRRx/X6KKNIkMUG4HdDItWkDazwLAviZ2zv8TRcSaEYBOpriP/dBZm8gt6EhzPpfoWtcJw==
lefthook-windows-arm64@1.4.2: lefthook-windows-arm64@1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.4.2.tgz#47d509e769ab64e0b49ad732b2e123ae017c077d" resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.4.3.tgz#dc0dcfea32badab031183bdc8cd91bda929cee9b"
integrity sha512-vzx6jbyLkAncE7UB3IB9HJqoFFZpGaxnp6zVimvDDOUSAOLKgbF+jJHgXlX8j6kzs/rZAoYmA0oR48dpUcUNQw== integrity sha512-ccClPTC7AvhcbyT6pLzdV8K8e/P0T7p/THGRtcyjkKIU0IS89k95VazDlt22QPzUTc8UMNCQyZ1XY4UDx295jw==
lefthook-windows-x64@1.4.2: lefthook-windows-x64@1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.4.2.tgz#d59db53a464137b6f3af615fa7911a8706861837" resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.4.3.tgz#795b1215969c7d0d4007f89bfe660cfc2736075c"
integrity sha512-sXTlvUITYzBIpNwlQO6Oa8nIB9GV4cUPmf6wdyPn1dv/1qa1+0ROgeROJzLYj2v+NtiJ2aIHTjaOXiBeoZCISA== integrity sha512-q1K5kycfqTYLm5/pOCiAFa+hoSFt/29QjHVZAWRmk/nKDIf8MvTWX0tdaEx7/VJuG3cgQT1jM+xiTwSmNUXTKg==
lefthook@^1.4.2: lefthook@^1.4.3:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.4.2.tgz#83f9aaa84d847026f13058406560f9a12eac84c2" resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.4.3.tgz#cedfd13f13c87a974ea5e055853c7fae0c6df11e"
integrity sha512-T7fvI7WXEZGUcaeuLckAzL5EURi6x5fkoBYjeiJ1u2ix2/A4Xjlca/lGQzgrqVWyCaHKeW5QkhR2tXwiubuLlw== integrity sha512-zvhAJ9wDQW7F27XYWRfx72L6LuPLu49be+sRUF+DKku1IGT+x3eHjQ9k70pt65lnEq1X8Xl/Xygm3Kwi/piOYg==
optionalDependencies: optionalDependencies:
lefthook-darwin-arm64 "1.4.2" lefthook-darwin-arm64 "1.4.3"
lefthook-darwin-x64 "1.4.2" lefthook-darwin-x64 "1.4.3"
lefthook-freebsd-arm64 "1.4.2" lefthook-freebsd-arm64 "1.4.3"
lefthook-freebsd-x64 "1.4.2" lefthook-freebsd-x64 "1.4.3"
lefthook-linux-arm64 "1.4.2" lefthook-linux-arm64 "1.4.3"
lefthook-linux-x64 "1.4.2" lefthook-linux-x64 "1.4.3"
lefthook-windows-arm64 "1.4.2" lefthook-windows-arm64 "1.4.3"
lefthook-windows-x64 "1.4.2" lefthook-windows-x64 "1.4.3"
levn@^0.4.1: levn@^0.4.1:
version "0.4.1" version "0.4.1"
@ -7057,10 +7057,10 @@ sass-loader@^13.3.2:
dependencies: dependencies:
neo-async "^2.6.2" neo-async "^2.6.2"
sass@^1.63.4: sass@^1.63.6:
version "1.63.4" version "1.63.6"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.4.tgz#caf60643321044c61f6a0fe638a07abbd31cfb5d" resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.6.tgz#481610e612902e0c31c46b46cf2dad66943283ea"
integrity sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ== integrity sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==
dependencies: dependencies:
chokidar ">=3.0.0 <4.0.0" chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0" immutable "^4.0.0"
@ -7117,10 +7117,10 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0: semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3:
version "7.5.1" version "7.5.3"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e"
integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==
dependencies: dependencies:
lru-cache "^6.0.0" lru-cache "^6.0.0"
@ -8346,10 +8346,10 @@ webpack-sources@^3.2.3:
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
webpack@^5.87.0: webpack@^5.88.0:
version "5.87.0" version "5.88.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.87.0.tgz#df8a9c094c6037f45e0d77598f9e59d33ca3a98c" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.0.tgz#a07aa2f8e7a64a8f1cec0c6c2e180e3cb34440c8"
integrity sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw== integrity sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==
dependencies: dependencies:
"@types/eslint-scope" "^3.7.3" "@types/eslint-scope" "^3.7.3"
"@types/estree" "^1.0.0" "@types/estree" "^1.0.0"