From 591b78ddffbb4015b654bc4b469b6c7adbb20360 Mon Sep 17 00:00:00 2001 From: Kuingsmile Date: Thu, 14 Dec 2023 02:07:23 -0800 Subject: [PATCH] :sparkles: Feature(custom): add support for google gemini pro api --- README.md | 3 + README_cn.md | 3 + package.json | 20 +- src/api/gemini.ts | 70 +++++++ src/api/index.ts | 2 + src/pages/HomePage.vue | 95 +++++++-- src/pages/SettingsPage.vue | 126 +++++++++++- src/utils/common.ts | 12 +- src/utils/constant.ts | 10 + yarn.lock | 382 +++++++++++++++++++------------------ 10 files changed, 504 insertions(+), 219 deletions(-) create mode 100644 src/api/gemini.ts diff --git a/README.md b/README.md index cc75ad5..8886a67 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Word GPT Plus is a word add-in which integrates the chatGPT model into Microsoft - Built-in prompts for translation, summarization, polishing, and academic writing - Support Azure OpenAI API - Support Google PALM2 API +- Support Google Gemini Pro API - Support for multiple languages - Custom prompts can be set and saved for future use - Ability for users to set temperature and max tokens @@ -46,6 +47,8 @@ You need to apply for qualification first, please go to [Azure OpenAI API applic You need to go to [Google AI](https://developers.generativeai.google/) to apply for qualification for Google PALM2 API. +Google Gemini Pro API's api key is the same as Google PALM2 API's api key, and the free version is currently limited to 60 requests per minute. + ## Getting Started There are two ways to install Word GPT Plus: through my free hosting service, or by self-hosting it. diff --git a/README_cn.md b/README_cn.md index 075d0b5..000ebe7 100644 --- a/README_cn.md +++ b/README_cn.md @@ -19,6 +19,7 @@ Word GPT Plus 是一个集成了 chatGPT 模型的 Word 插件。它允许你基 - 使用GPT API生成文本并支持选择模型 - 支持OpenAI官方API和Azure OpenAI API - 支持Google PALM2 API +- 支持Google Gemini Pro API - 内置用于翻译、总结、润色和学术写作的提示 - 支持多种语言 - 可以自定义提示并保存以供将来使用 @@ -46,6 +47,8 @@ Azure OpenAI需要首先申请资格,请前往[Azure OpenAI API申请网址](h Google PALM2 API需要前往[Google AI](https://developers.generativeai.google/)申请,申请后目前公测阶段使用是免费的。 +Google Gemini Pro API的api key与Google PALM2 API的api key相同,目前免费版限制次数一分钟60个请求。 + ## 快速开始 有两种方法可以安装 Word GPT Plus:通过我的免费web服务,或者自己搭建服务。 diff --git a/package.json b/package.json index 11ddcf4..b47bf76 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.2.8", "private": true, "scripts": { + "dev": "vue-cli-service serve --port 3000", "serve": "vue-cli-service serve --port 3000", "build": "vue-cli-service build", "lint": "vue-cli-service lint --fix", @@ -12,24 +13,25 @@ }, "dependencies": { "@azure/openai": "1.0.0-beta.4", - "@element-plus/icons-vue": "^2.1.0", + "@element-plus/icons-vue": "^2.3.1", + "@google/generative-ai": "^0.1.1", "axios": "^1.6.2", "chatgpt": "^5.2.5", "core-js": "^3.33.3", "dexie": "^3.2.4", - "element-plus": "^2.4.2", + "element-plus": "^2.4.3", "openai": "^4.10.0", "unfetch": "^5.0.0", - "vue": "^3.3.8", + "vue": "^3.3.11", "vue-class-component": "^8.0.0-rc.1", - "vue-i18n": "^9.6.5", + "vue-i18n": "^9.8.0", "vue-router": "^4.2.5" }, "devDependencies": { "@picgo/bump-version": "^1.1.2", - "@types/office-js": "^1.0.361", - "@typescript-eslint/eslint-plugin": "^6.10.0", - "@typescript-eslint/parser": "^6.10.0", + "@types/office-js": "^1.0.362", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", "@vue/cli-plugin-babel": "^5.0.8", "@vue/cli-plugin-eslint": "^5.0.8", "@vue/cli-plugin-router": "^5.0.8", @@ -38,8 +40,8 @@ "@vue/eslint-config-standard": "^8.0.1", "@vue/eslint-config-typescript": "^12.0.0", "dpdm": "^3.14.0", - "eslint": "^8.53.0", - "eslint-plugin-vue": "^9.18.1", + "eslint": "^8.55.0", + "eslint-plugin-vue": "^9.19.2", "stylus": "^0.61.0", "stylus-loader": "^7.1.3", "typescript": "^5.2.2" diff --git a/src/api/gemini.ts b/src/api/gemini.ts new file mode 100644 index 0000000..3309b7b --- /dev/null +++ b/src/api/gemini.ts @@ -0,0 +1,70 @@ +import { GoogleGenerativeAI } from '@google/generative-ai' +import { Ref } from 'vue' + +interface ChatCompletionStreamOptions { + geminiAPIKey: string + messages: string + result: Ref + historyDialog: Ref + errorIssue: Ref + loading: Ref + maxTokens?: number + temperature?: number + geminiModel?: string +} + +async function createChatCompletionStream (options: ChatCompletionStreamOptions): Promise { + const apiKey = options.geminiAPIKey + const generationConfig = { + maxOutputTokens: options.maxTokens ?? 800, + temperature: options.temperature ?? 0.7 + } + try { + const genAI = new GoogleGenerativeAI(apiKey) + const model = genAI.getGenerativeModel({ + model: options.geminiModel ?? 'gemini-pro' + }) + console.log('historyDialog', options.historyDialog.value) + const chat = model.startChat({ + history: options.historyDialog.value, + generationConfig + }) + const result = await chat.sendMessage(options.messages) + const response = await result.response + const text = response.text() + console.log('text', text) + console.log('response', response) + updateResultAndHistory(text, options.messages, options.result, options.historyDialog) + } catch (error: any) { + handleError(error, options.result, options.errorIssue) + } + options.loading.value = false +} + +function updateResultAndHistory ( + text: string, + userText: string, + result: Ref, + historyDialog: Ref +): void { + result.value = text + historyDialog.value.push(...[ + { + role: 'user', + parts: userText + }, + { + role: 'model', + parts: text + }]) +} + +function handleError (error: Error, result: Ref, errorIssue: Ref): void { + result.value = String(error) + errorIssue.value = true + console.error(error) +} + +export default { + createChatCompletionStream +} diff --git a/src/api/index.ts b/src/api/index.ts index f839214..4672330 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -3,11 +3,13 @@ import official from './official' import azure from './azure' import palm from './palm' import common from './common' +import gemini from './gemini' export default { webapi, official, azure, palm, + gemini, common } diff --git a/src/pages/HomePage.vue b/src/pages/HomePage.vue index 0d09bcc..0b9362b 100644 --- a/src/pages/HomePage.vue +++ b/src/pages/HomePage.vue @@ -201,7 +201,7 @@ {{ $t('start') }} import { onBeforeMount, ref } from 'vue' import { useRouter } from 'vue-router' -import { localStorageKey, languageMap, buildInPrompt, availableModels, availableModelsForPalm } from '@/utils/constant' +import { localStorageKey, languageMap, buildInPrompt, availableModels, availableModelsForPalm, availableModelsForGemini } from '@/utils/constant' import { promptDbInstance } from '@/store/promtStore' import { IStringKeyMap } from '@/types' import { CirclePlus, Remove } from '@element-plus/icons-vue' import { ElMessage } from 'element-plus' import { ChatGPTUnofficialProxyAPI, ChatMessage } from 'chatgpt' -import { checkAuth } from '@/utils/common' +import { checkAuth, forceNumber } from '@/utils/common' import API from '@/api' const replyLanguageList = Object.values(languageMap).map((key) => ({ @@ -403,11 +403,12 @@ const replyLanguageList = Object.values(languageMap).map((key) => ({ value: key })) -const api = ref<'web-api' | 'official' | 'azure' | 'palm'>('official') +const api = ref<'web-api' | 'official' | 'azure' | 'palm' | 'gemini'>('official') const apiKey = ref('') const accessToken = ref('') const azureAPIKey = ref('') const palmAPIKey = ref('') +const geminiAPIKey = ref('') const localLanguage = ref('en') const replyLanguage = ref('English') @@ -429,6 +430,10 @@ const palmMaxTokens = ref(800) const palmTemperature = ref(0.7) const palmModel = ref('text-bison-001') +const geminiMaxTokens = ref(800) +const geminiTemperature = ref(0.7) +const geminiModel = ref('gemini-pro') + const systemPrompt = ref('') const systemPromptSelected = ref('') const systemPromptList = ref([]) @@ -540,16 +545,17 @@ function handelPromptChange (val: string) { } onBeforeMount(async () => { - api.value = localStorage.getItem(localStorageKey.api) as 'web-api' | 'official' | 'azure' | 'palm' || 'official' + api.value = localStorage.getItem(localStorageKey.api) as 'web-api' | 'official' | 'azure' | 'palm' | 'gemini' || 'official' replyLanguage.value = localStorage.getItem(localStorageKey.replyLanguage) || 'English' localLanguage.value = localStorage.getItem(localStorageKey.localLanguage) || 'en' apiKey.value = localStorage.getItem(localStorageKey.apiKey) || '' accessToken.value = localStorage.getItem(localStorageKey.accessToken) || '' azureAPIKey.value = localStorage.getItem(localStorageKey.azureAPIKey) || '' palmAPIKey.value = localStorage.getItem(localStorageKey.palmAPIKey) || '' + geminiAPIKey.value = localStorage.getItem(localStorageKey.geminiAPIKey) || '' webModel.value = localStorage.getItem(localStorageKey.webModel) || 'default' - temperature.value = Number(localStorage.getItem(localStorageKey.temperature)) || 0.7 - maxTokens.value = Number(localStorage.getItem(localStorageKey.maxTokens)) || 800 + temperature.value = forceNumber(localStorage.getItem(localStorageKey.temperature)) || 0.7 + maxTokens.value = forceNumber(localStorage.getItem(localStorageKey.maxTokens)) || 800 const modelTemp = localStorage.getItem(localStorageKey.model) || availableModels['gpt-3.5'] if (Object.keys(availableModels).includes(modelTemp)) { model.value = availableModels[modelTemp] @@ -561,11 +567,11 @@ onBeforeMount(async () => { basePath.value = localStorage.getItem(localStorageKey.basePath) || '' azureAPIEndpoint.value = localStorage.getItem(localStorageKey.azureAPIEndpoint) || '' azureDeploymentName.value = localStorage.getItem(localStorageKey.azureDeploymentName) || '' - azureMaxTokens.value = Number(localStorage.getItem(localStorageKey.azureMaxTokens)) || 800 - azureTemperature.value = Number(localStorage.getItem(localStorageKey.azureTemperature)) || 0.7 + azureMaxTokens.value = forceNumber(localStorage.getItem(localStorageKey.azureMaxTokens)) || 800 + azureTemperature.value = forceNumber(localStorage.getItem(localStorageKey.azureTemperature)) || 0.7 palmAPIEndpoint.value = localStorage.getItem(localStorageKey.palmAPIEndpoint) || 'https://generativelanguage.googleapis.com/v1beta2' - palmMaxTokens.value = Number(localStorage.getItem(localStorageKey.palmMaxTokens)) || 800 - palmTemperature.value = Number(localStorage.getItem(localStorageKey.palmTemperature)) || 0.7 + palmMaxTokens.value = forceNumber(localStorage.getItem(localStorageKey.palmMaxTokens)) || 800 + palmTemperature.value = forceNumber(localStorage.getItem(localStorageKey.palmTemperature)) || 0.7 const palmModelTemp = localStorage.getItem(localStorageKey.palmModel) || availableModelsForPalm['text-bison-001'] if (Object.keys(availableModelsForPalm).includes(palmModelTemp)) { palmModel.value = availableModelsForPalm[palmModelTemp] @@ -574,6 +580,16 @@ onBeforeMount(async () => { } else { palmModel.value = availableModelsForPalm['text-bison-001'] } + geminiMaxTokens.value = forceNumber(localStorage.getItem(localStorageKey.geminiMaxTokens)) || 800 + geminiTemperature.value = forceNumber(localStorage.getItem(localStorageKey.geminiTemperature)) || 0.7 + const geminiModelTemp = localStorage.getItem(localStorageKey.geminiModel) || availableModelsForGemini['gemini-pro'] + if (Object.keys(availableModelsForGemini).includes(geminiModelTemp)) { + geminiModel.value = availableModelsForGemini[geminiModelTemp] + } else if (Object.values(availableModelsForGemini).includes(geminiModelTemp)) { + geminiModel.value = geminiModelTemp + } else { + geminiModel.value = availableModelsForGemini['gemini-pro'] + } insertType.value = localStorage.getItem(localStorageKey.insertType) || 'replace' as 'replace' | 'append' | 'newLine' | 'NoAction' systemPrompt.value = localStorage.getItem(localStorageKey.defaultSystemPrompt) || 'Act like a personal assistant.' await getSystemPromptList() @@ -690,6 +706,30 @@ async function template (taskType: keyof typeof buildInPrompt | 'custom') { palmMaxTokens.value, palmTemperature.value ) + } else if (api.value === 'gemini' && geminiAPIKey.value) { + historyDialog.value = [ + { + role: 'user', + parts: systemMessage + '\n' + userMessage + }, + { + role: 'model', + parts: 'Hi, what can I help you?' + } + ] + await API.gemini.createChatCompletionStream( + { + geminiAPIKey: geminiAPIKey.value, + messages: userMessage, + result, + historyDialog, + errorIssue, + loading, + maxTokens: geminiMaxTokens.value, + temperature: geminiTemperature.value, + geminiModel: geminiModel.value + } + ) } else { ElMessage.error('Set API Key or Access Token first') return @@ -710,7 +750,8 @@ function checkApiKey () { accessToken: accessToken.value, apiKey: apiKey.value, azureAPIKey: azureAPIKey.value, - palmAPIKey: palmAPIKey.value + palmAPIKey: palmAPIKey.value, + geminiAPIKey: geminiAPIKey.value } if (!checkAuth(auth)) { ElMessage.error('Set API Key or Access Token first') @@ -798,6 +839,36 @@ async function continueChat () { errorIssue.value = true console.error(error) } + } else if (api.value === 'gemini') { + try { + historyDialog.value.push(...[ + { + role: 'user', + parts: 'continue' + }, + { + role: 'model', + parts: 'OK, I will continue to help you.' + } + ]) + await API.gemini.createChatCompletionStream( + { + geminiAPIKey: geminiAPIKey.value, + messages: 'continue', + result, + historyDialog, + errorIssue, + loading, + maxTokens: geminiMaxTokens.value, + temperature: geminiTemperature.value, + geminiModel: geminiModel.value + } + ) + } catch (error) { + result.value = String(error) + errorIssue.value = true + console.error(error) + } } else if (api.value === 'web-api') { try { const config = API.webapi.setUnofficalConfig(accessToken.value) diff --git a/src/pages/SettingsPage.vue b/src/pages/SettingsPage.vue index 3e83750..eeaa99e 100644 --- a/src/pages/SettingsPage.vue +++ b/src/pages/SettingsPage.vue @@ -245,6 +245,76 @@ @change="handlePalmMaxTokensChange" /> + + + + + + + + + + + + + + + + + + @@ -388,8 +458,9 @@ diff --git a/src/utils/common.ts b/src/utils/common.ts index f5fdb45..bc0de9c 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,5 +1,5 @@ export interface Auth { - type: 'web-api' | 'official' | 'azure' | 'palm'; + type: 'web-api' | 'official' | 'azure' | 'palm' | 'gemini'; [propName: string]: any; } @@ -9,6 +9,14 @@ export function checkAuth (auth: Auth): boolean { ((auth.type === 'web-api' && !!auth.accessToken) || (auth.type === 'official' && !!auth.apiKey) || (auth.type === 'azure' && !!auth.azureAPIKey) || - (auth.type === 'palm' && !!auth.palmAPIKey)) + (auth.type === 'palm' && !!auth.palmAPIKey) || + (auth.type === 'gemini' && !!auth.geminiAPIKey)) ) } + +export function forceNumber (val: any) { + if (val === '') { + return 0 + } + return isNaN(Number(val)) ? 0 : Number(val) +} diff --git a/src/utils/constant.ts b/src/utils/constant.ts index b48405f..0de5002 100644 --- a/src/utils/constant.ts +++ b/src/utils/constant.ts @@ -72,6 +72,11 @@ export const availableModelsForPalm: IStringKeyMap = { 'text-bison-001': 'text-bison-001' } +// Gemini API 可用的模型 +export const availableModelsForGemini: IStringKeyMap = { + 'gemini-pro': 'gemini-pro' +} + export enum localStorageKey { // common api = 'api', @@ -99,6 +104,11 @@ export enum localStorageKey { palmMaxTokens = 'palmMaxTokens', palmTemperature = 'palmTemperature', palmModel = 'palmModel', + // gemini api + geminiAPIKey = 'geminiAPIKey', + geminiMaxTokens = 'geminiMaxTokens', + geminiTemperature = 'geminiTemperature', + geminiModel = 'geminiModel', // proxy enableProxy = 'enableProxy', proxy = 'proxy', diff --git a/yarn.lock b/yarn.lock index 932d88d..c8c44a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -363,10 +363,10 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.14.tgz#c7de58e8de106e88efca42ce17f0033209dfd245" integrity sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ== -"@babel/parser@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.23.5": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" + integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": version "7.22.5" @@ -1285,10 +1285,10 @@ resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@element-plus/icons-vue@^2.0.6", "@element-plus/icons-vue@^2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz#7ad90d08a8c0d5fd3af31c4f73264ca89614397a" - integrity sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA== +"@element-plus/icons-vue@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz#1f635ad5fdd5c85ed936481525570e82b5a8307a" + integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -1302,10 +1302,10 @@ resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005" integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg== -"@eslint/eslintrc@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" - integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1317,10 +1317,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.53.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" - integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== +"@eslint/js@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6" + integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== "@floating-ui/core@^1.4.1": version "1.4.1" @@ -1342,6 +1342,11 @@ resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz#1a5b1959a528e374e8037c4396c3e825d6cf4a83" integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw== +"@google/generative-ai@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@google/generative-ai/-/generative-ai-0.1.1.tgz#ecf0cd832620527f0e35c3aecc17c058d8ba52b8" + integrity sha512-cbzKa8mT9YkTrT4XUuENIuvlqiJjwDgcD2Ks4L99Az9dWLgdXn8xnETEAZLOpqzoGx+1PuATZqlUnVRAeLbMgA== + "@hapi/hoek@^9.0.0": version "9.3.0" resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" @@ -1378,26 +1383,26 @@ resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== -"@intlify/core-base@9.6.5": - version "9.6.5" - resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.6.5.tgz#af92cae122fb99e882b3d7f1433f682065a3e164" - integrity sha512-LzbGXiZkMWPIHnHI0g6q554S87Cmh2mmCmjytK/3pDQfjI84l+dgGoeQuKj02q7EbULRuUUgYVZVqAwEUawXGg== +"@intlify/core-base@9.8.0": + version "9.8.0" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.8.0.tgz#969ca59f55084e23e968ec0bfe71678774e568ec" + integrity sha512-UxaSZVZ1DwqC/CltUZrWZNaWNhfmKtfyV4BJSt/Zt4Or/fZs1iFj0B+OekYk1+MRHfIOe3+x00uXGQI4PbO/9g== dependencies: - "@intlify/message-compiler" "9.6.5" - "@intlify/shared" "9.6.5" + "@intlify/message-compiler" "9.8.0" + "@intlify/shared" "9.8.0" -"@intlify/message-compiler@9.6.5": - version "9.6.5" - resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.6.5.tgz#3a33882497417c63b23b012731d60a485c8e5558" - integrity sha512-WeJ499thIj0p7JaIO1V3JaJbqdqfBykS5R8fElFs5hNeotHtPAMBs4IiA+8/KGFkAbjJusgFefCq6ajP7F7+4Q== +"@intlify/message-compiler@9.8.0": + version "9.8.0" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.8.0.tgz#587d69b302f9b8130a4a949b0ab4add519761787" + integrity sha512-McnYWhcoYmDJvssVu6QGR0shqlkJuL1HHdi5lK7fNqvQqRYaQ4lSLjYmZxwc8tRNMdIe9/KUKfyPxU9M6yCtNQ== dependencies: - "@intlify/shared" "9.6.5" + "@intlify/shared" "9.8.0" source-map-js "^1.0.2" -"@intlify/shared@9.6.5": - version "9.6.5" - resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.6.5.tgz#a81f384d804e99ceac55bb061c344f156bd96590" - integrity sha512-gD7Ey47Xi4h/t6P+S04ymMSoA3wVRxGqjxuIMglwRO8POki9h164Epu2N8wk/GHXM/hR6ZGcsx2HArCCENjqSQ== +"@intlify/shared@9.8.0": + version "9.8.0" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.8.0.tgz#62adf8f6ef67c8eba6cf8d521e248f3503f237d3" + integrity sha512-TmgR0RCLjzrSo+W3wT0ALf9851iFMlVI9EYNGeWvZFUQTAJx0bvfsMlPdgVtV1tDNRiAfhkFsMKu6jtUY1ZLKQ== "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -1743,10 +1748,10 @@ resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== -"@types/office-js@^1.0.361": - version "1.0.361" - resolved "https://registry.yarnpkg.com/@types/office-js/-/office-js-1.0.361.tgz#2783ea1753fd2d8c38b4efad8026672e9d53d3e5" - integrity sha512-nfZ/1Qrx1o+B3pb+6CYaBfsrdRz7Y0GIwyQgaoBN1A9JR+zzdxBx5mMgPGwvmssnto+YHUUaVSLDbRuX1YdL6g== +"@types/office-js@^1.0.362": + version "1.0.362" + resolved "https://registry.yarnpkg.com/@types/office-js/-/office-js-1.0.362.tgz#1f449ddff60bad3a9d1b25fc4a4c112969aa0d47" + integrity sha512-Q3zBYmtQbvqMpP75nk9wLB4zRltnQoXs/2q65VUuV/berRRknz10LT1auhdPZARCiRgJpJcEpvpSe0dRKXmbyA== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1821,16 +1826,16 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.10.0.tgz#cfe2bd34e26d2289212946b96ab19dcad64b661a" - integrity sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg== +"@typescript-eslint/eslint-plugin@^6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz#fc1ab5f23618ba590c87e8226ff07a760be3dd7b" + integrity sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.10.0" - "@typescript-eslint/type-utils" "6.10.0" - "@typescript-eslint/utils" "6.10.0" - "@typescript-eslint/visitor-keys" "6.10.0" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/type-utils" "6.14.0" + "@typescript-eslint/utils" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -1855,15 +1860,15 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.10.0.tgz#578af79ae7273193b0b6b61a742a2bc8e02f875a" - integrity sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog== +"@typescript-eslint/parser@^6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.14.0.tgz#a2d6a732e0d2b95c73f6a26ae7362877cc1b4212" + integrity sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA== dependencies: - "@typescript-eslint/scope-manager" "6.10.0" - "@typescript-eslint/types" "6.10.0" - "@typescript-eslint/typescript-estree" "6.10.0" - "@typescript-eslint/visitor-keys" "6.10.0" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/typescript-estree" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" debug "^4.3.4" "@typescript-eslint/parser@^6.7.0": @@ -1877,13 +1882,13 @@ "@typescript-eslint/visitor-keys" "6.7.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz#b0276118b13d16f72809e3cecc86a72c93708540" - integrity sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg== +"@typescript-eslint/scope-manager@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz#53d24363fdb5ee0d1d8cda4ed5e5321272ab3d48" + integrity sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg== dependencies: - "@typescript-eslint/types" "6.10.0" - "@typescript-eslint/visitor-keys" "6.10.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" "@typescript-eslint/scope-manager@6.7.0": version "6.7.0" @@ -1893,13 +1898,13 @@ "@typescript-eslint/types" "6.7.0" "@typescript-eslint/visitor-keys" "6.7.0" -"@typescript-eslint/type-utils@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz#1007faede067c78bdbcef2e8abb31437e163e2e1" - integrity sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg== +"@typescript-eslint/type-utils@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz#ac9cb5ba0615c837f1a6b172feeb273d36e4f8af" + integrity sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw== dependencies: - "@typescript-eslint/typescript-estree" "6.10.0" - "@typescript-eslint/utils" "6.10.0" + "@typescript-eslint/typescript-estree" "6.14.0" + "@typescript-eslint/utils" "6.14.0" debug "^4.3.4" ts-api-utils "^1.0.1" @@ -1913,23 +1918,23 @@ debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.10.0.tgz#f4f0a84aeb2ac546f21a66c6e0da92420e921367" - integrity sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg== +"@typescript-eslint/types@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.14.0.tgz#935307f7a931016b7a5eb25d494ea3e1f613e929" + integrity sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA== "@typescript-eslint/types@6.7.0": version "6.7.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz#8de8ba9cafadc38e89003fe303e219c9250089ae" integrity sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q== -"@typescript-eslint/typescript-estree@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz#667381eed6f723a1a8ad7590a31f312e31e07697" - integrity sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg== +"@typescript-eslint/typescript-estree@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz#90c7ddd45cd22139adf3d4577580d04c9189ac13" + integrity sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw== dependencies: - "@typescript-eslint/types" "6.10.0" - "@typescript-eslint/visitor-keys" "6.10.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -1949,17 +1954,17 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.10.0.tgz#4d76062d94413c30e402c9b0df8c14aef8d77336" - integrity sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg== +"@typescript-eslint/utils@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.14.0.tgz#856a9e274367d99ffbd39c48128b93a86c4261e3" + integrity sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.10.0" - "@typescript-eslint/types" "6.10.0" - "@typescript-eslint/typescript-estree" "6.10.0" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/typescript-estree" "6.14.0" semver "^7.5.4" "@typescript-eslint/utils@6.7.0": @@ -1975,12 +1980,12 @@ "@typescript-eslint/typescript-estree" "6.7.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz#b9eaf855a1ac7e95633ae1073af43d451e8f84e3" - integrity sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg== +"@typescript-eslint/visitor-keys@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz#1d1d486581819287de824a56c22f32543561138e" + integrity sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw== dependencies: - "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/types" "6.14.0" eslint-visitor-keys "^3.4.1" "@typescript-eslint/visitor-keys@6.7.0": @@ -2252,47 +2257,47 @@ semver "^7.3.4" strip-ansi "^6.0.0" -"@vue/compiler-core@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313" - integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g== +"@vue/compiler-core@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.11.tgz#9fa26f8c81b9b34365f94ce1ed4d0e6e6f94a2ac" + integrity sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w== dependencies: - "@babel/parser" "^7.23.0" - "@vue/shared" "3.3.8" + "@babel/parser" "^7.23.5" + "@vue/shared" "3.3.11" estree-walker "^2.0.2" source-map-js "^1.0.2" -"@vue/compiler-dom@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b" - integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ== - dependencies: - "@vue/compiler-core" "3.3.8" - "@vue/shared" "3.3.8" - -"@vue/compiler-sfc@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1" - integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA== - dependencies: - "@babel/parser" "^7.23.0" - "@vue/compiler-core" "3.3.8" - "@vue/compiler-dom" "3.3.8" - "@vue/compiler-ssr" "3.3.8" - "@vue/reactivity-transform" "3.3.8" - "@vue/shared" "3.3.8" +"@vue/compiler-dom@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz#36a76ea3a296d41bad133a6912cb0a847d969e4f" + integrity sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw== + dependencies: + "@vue/compiler-core" "3.3.11" + "@vue/shared" "3.3.11" + +"@vue/compiler-sfc@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.11.tgz#acfae240c875d067e0e2c9a4e2d910074408c73b" + integrity sha512-U4iqPlHO0KQeK1mrsxCN0vZzw43/lL8POxgpzcJweopmqtoYy9nljJzWDIQS3EfjiYhfdtdk9Gtgz7MRXnz3GA== + dependencies: + "@babel/parser" "^7.23.5" + "@vue/compiler-core" "3.3.11" + "@vue/compiler-dom" "3.3.11" + "@vue/compiler-ssr" "3.3.11" + "@vue/reactivity-transform" "3.3.11" + "@vue/shared" "3.3.11" estree-walker "^2.0.2" magic-string "^0.30.5" - postcss "^8.4.31" + postcss "^8.4.32" source-map-js "^1.0.2" -"@vue/compiler-ssr@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce" - integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w== +"@vue/compiler-ssr@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.11.tgz#598942a73b64f2bd3f95908b104a7fbb55fc41a2" + integrity sha512-Zd66ZwMvndxRTgVPdo+muV4Rv9n9DwQ4SSgWWKWkPFebHQfVYRrVjeygmmDmPewsHyznCNvJ2P2d6iOOhdv8Qg== dependencies: - "@vue/compiler-dom" "3.3.8" - "@vue/shared" "3.3.8" + "@vue/compiler-dom" "3.3.11" + "@vue/shared" "3.3.11" "@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.3.0": version "3.3.0" @@ -2336,53 +2341,53 @@ "@typescript-eslint/parser" "^6.7.0" vue-eslint-parser "^9.3.1" -"@vue/reactivity-transform@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2" - integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw== +"@vue/reactivity-transform@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.11.tgz#2bd486f4eff60c8724309925618891e722fcfadc" + integrity sha512-fPGjH0wqJo68A0wQ1k158utDq/cRyZNlFoxGwNScE28aUFOKFEnCBsvyD8jHn+0kd0UKVpuGuaZEQ6r9FJRqCg== dependencies: - "@babel/parser" "^7.23.0" - "@vue/compiler-core" "3.3.8" - "@vue/shared" "3.3.8" + "@babel/parser" "^7.23.5" + "@vue/compiler-core" "3.3.11" + "@vue/shared" "3.3.11" estree-walker "^2.0.2" magic-string "^0.30.5" -"@vue/reactivity@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d" - integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw== +"@vue/reactivity@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.11.tgz#91f8e6c9ac60a595a5278c836b197628fd947a0d" + integrity sha512-D5tcw091f0nuu+hXq5XANofD0OXnBmaRqMYl5B3fCR+mX+cXJIGNw/VNawBqkjLNWETrFW0i+xH9NvDbTPVh7g== dependencies: - "@vue/shared" "3.3.8" + "@vue/shared" "3.3.11" -"@vue/runtime-core@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb" - integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw== +"@vue/runtime-core@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.11.tgz#63defba57bc54c1dac68a95b56c2633b1419193d" + integrity sha512-g9ztHGwEbS5RyWaOpXuyIVFTschclnwhqEbdy5AwGhYOgc7m/q3NFwr50MirZwTTzX55JY8pSkeib9BX04NIpw== dependencies: - "@vue/reactivity" "3.3.8" - "@vue/shared" "3.3.8" + "@vue/reactivity" "3.3.11" + "@vue/shared" "3.3.11" -"@vue/runtime-dom@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4" - integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA== +"@vue/runtime-dom@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.11.tgz#1146d8d280b0fec4d2e18c4a4c8f8121d0cecc09" + integrity sha512-OlhtV1PVpbgk+I2zl+Y5rQtDNcCDs12rsRg71XwaA2/Rbllw6mBLMi57VOn8G0AjOJ4Mdb4k56V37+g8ukShpQ== dependencies: - "@vue/runtime-core" "3.3.8" - "@vue/shared" "3.3.8" + "@vue/runtime-core" "3.3.11" + "@vue/shared" "3.3.11" csstype "^3.1.2" -"@vue/server-renderer@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2" - integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg== +"@vue/server-renderer@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.11.tgz#409aed8031a125791e2143552975ecd1958ad601" + integrity sha512-AIWk0VwwxCAm4wqtJyxBylRTXSy1wCLOKbWxHaHiu14wjsNYtiRCSgVuqEPVuDpErOlRdNnuRgipQfXRLjLN5A== dependencies: - "@vue/compiler-ssr" "3.3.8" - "@vue/shared" "3.3.8" + "@vue/compiler-ssr" "3.3.11" + "@vue/shared" "3.3.11" -"@vue/shared@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d" - integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw== +"@vue/shared@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.11.tgz#f6a038e15237edefcc90dbfe7edb806dd355c7bd" + integrity sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw== "@vue/vue-loader-v15@npm:vue-loader@^15.9.7": version "15.10.2" @@ -4315,13 +4320,13 @@ electron-to-chromium@^1.4.477: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.507.tgz#e99d87fcfaa6887edc18edc5dd46835df1a71f22" integrity sha512-brvPFnO1lu3UYBpBht2qWw9qqhdG4htTjT90/9oOJmxQ77VvTxL9+ghErFqQzgj7n8268ONAmlebqjBR/S+qgA== -element-plus@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.4.2.tgz#2a24632e0904ccd7bbbd64c269704f6b9969833c" - integrity sha512-E/HwXX7JF1LPvQSjs0fZ8WblIoc0quoXsRXQZiL7QDq7xJdNGSUaXtdk7xiEv7axPmLfEFtxE5du9fFspDrmJw== +element-plus@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.4.3.tgz#ff21d0207d71752eb6a47a46609bc667f222841f" + integrity sha512-b3q26j+lM4SBqiyzw8HybybGnP2pk4MWgrnzzzYW5qKQUgV6EG1Zg7nMCfgCVccI8tNvZoTiUHb2mFaiB9qT8w== dependencies: "@ctrl/tinycolor" "^3.4.1" - "@element-plus/icons-vue" "^2.0.6" + "@element-plus/icons-vue" "^2.3.1" "@floating-ui/dom" "^1.0.1" "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7" "@types/lodash" "^4.14.182" @@ -4569,10 +4574,10 @@ eslint-plugin-promise@^6.0.0: resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== -eslint-plugin-vue@^9.18.1: - version "9.18.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz#73cf29df7450ce5913296465f8d1dc545344920c" - integrity sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg== +eslint-plugin-vue@^9.19.2: + version "9.19.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.19.2.tgz#7ab83a001a1ac8bccae013c5b9cb5d2c644fb376" + integrity sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" natural-compare "^1.4.0" @@ -4638,15 +4643,15 @@ eslint-webpack-plugin@^3.1.0: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.53.0: - version "8.53.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" - integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== +eslint@^8.55.0: + version "8.55.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.55.0.tgz#078cb7b847d66f2c254ea1794fa395bf8e7e03f8" + integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.3" - "@eslint/js" "8.53.0" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.55.0" "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -6855,6 +6860,11 @@ nanoid@^3.3.6: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -7682,12 +7692,12 @@ postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.21: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.31: - version "8.4.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" - integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== +postcss@^8.4.32: + version "8.4.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9" + integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== dependencies: - nanoid "^3.3.6" + nanoid "^3.3.7" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -9159,13 +9169,13 @@ vue-hot-reload-api@^2.3.0: resolved "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== -vue-i18n@^9.6.5: - version "9.6.5" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.6.5.tgz#3a0bdc1e339ded633dc90aee640a7249efdfe3e5" - integrity sha512-dpUEjKHg7pEsaS7ZPPxp1CflaR7bGmsvZJEhnszHPKl9OTNyno5j/DvMtMSo41kpddq4felLA7GK2prjpnXVlw== +vue-i18n@^9.8.0: + version "9.8.0" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.8.0.tgz#54339daf377a31b234b027c5158e774728b6bc24" + integrity sha512-Izho+6PYjejsTq2mzjcRdBZ5VLRQoSuuexvR8029h5CpN03FYqiqBrShMyf2I1DKkN6kw/xmujcbvC+4QybpsQ== dependencies: - "@intlify/core-base" "9.6.5" - "@intlify/shared" "9.6.5" + "@intlify/core-base" "9.8.0" + "@intlify/shared" "9.8.0" "@vue/devtools-api" "^6.5.0" vue-loader@^17.0.0: @@ -9197,16 +9207,16 @@ vue-template-es2015-compiler@^1.9.0: resolved "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== -vue@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc" - integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w== +vue@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.11.tgz#898d97025f73cdb5fc4e3ae3fd07a54615232140" + integrity sha512-d4oBctG92CRO1cQfVBZp6WJAs0n8AK4Xf5fNjQCBeKCvMI1efGQ5E3Alt1slFJS9fZuPcFoiAiqFvQlv1X7t/w== dependencies: - "@vue/compiler-dom" "3.3.8" - "@vue/compiler-sfc" "3.3.8" - "@vue/runtime-dom" "3.3.8" - "@vue/server-renderer" "3.3.8" - "@vue/shared" "3.3.8" + "@vue/compiler-dom" "3.3.11" + "@vue/compiler-sfc" "3.3.11" + "@vue/runtime-dom" "3.3.11" + "@vue/server-renderer" "3.3.11" + "@vue/shared" "3.3.11" watchpack@^2.4.0: version "2.4.0"