From c856eaf72ecc392592980a71ddc885aec138c269 Mon Sep 17 00:00:00 2001 From: terwer Date: Thu, 14 Mar 2024 16:00:25 +0800 Subject: [PATCH] feat: add router and pages --- packages/picgo-plugin-app/.gitignore | 1 - packages/picgo-plugin-app/package.json | 4 + packages/picgo-plugin-app/src/App.vue | 10 +- .../src/components/ExternalPicgoSetting.vue | 16 ++ .../src/components/PicGoIndex.vue | 16 ++ .../src/components/PicgoSetting.vue | 16 ++ .../src/components/SiyuanSetting.vue | 16 ++ .../src/components/TransportSelect.vue | 16 ++ .../src/composables/useSiyuanDevice.ts | 56 +++++++ .../src/composables/useVueI18n.ts | 26 +++ .../src/composables/useVueRouter.ts | 21 +++ packages/picgo-plugin-app/src/i18n/en_US.ts | 127 +++++++++++++++ packages/picgo-plugin-app/src/i18n/index.ts | 24 +++ packages/picgo-plugin-app/src/i18n/zh_CN.ts | 122 ++++++++++++++ .../src/layouts/AppLayout.vue | 21 +++ .../src/layouts/default/AppLayoutDefault.vue | 32 ++++ .../src/layouts/default/DefaultFooter.vue | 100 ++++++++++++ .../src/layouts/default/DefaultHeader.vue | 16 ++ packages/picgo-plugin-app/src/main.ts | 9 ++ packages/picgo-plugin-app/src/routes/index.ts | 26 +++ pnpm-lock.yaml | 151 +++++++++++++++--- 21 files changed, 804 insertions(+), 22 deletions(-) create mode 100644 packages/picgo-plugin-app/src/components/ExternalPicgoSetting.vue create mode 100644 packages/picgo-plugin-app/src/components/PicGoIndex.vue create mode 100644 packages/picgo-plugin-app/src/components/PicgoSetting.vue create mode 100644 packages/picgo-plugin-app/src/components/SiyuanSetting.vue create mode 100644 packages/picgo-plugin-app/src/components/TransportSelect.vue create mode 100644 packages/picgo-plugin-app/src/composables/useSiyuanDevice.ts create mode 100644 packages/picgo-plugin-app/src/composables/useVueI18n.ts create mode 100644 packages/picgo-plugin-app/src/composables/useVueRouter.ts create mode 100644 packages/picgo-plugin-app/src/i18n/en_US.ts create mode 100644 packages/picgo-plugin-app/src/i18n/index.ts create mode 100644 packages/picgo-plugin-app/src/i18n/zh_CN.ts create mode 100644 packages/picgo-plugin-app/src/layouts/AppLayout.vue create mode 100644 packages/picgo-plugin-app/src/layouts/default/AppLayoutDefault.vue create mode 100644 packages/picgo-plugin-app/src/layouts/default/DefaultFooter.vue create mode 100644 packages/picgo-plugin-app/src/layouts/default/DefaultHeader.vue create mode 100644 packages/picgo-plugin-app/src/routes/index.ts diff --git a/packages/picgo-plugin-app/.gitignore b/packages/picgo-plugin-app/.gitignore index 09caeba..51ee1ae 100644 --- a/packages/picgo-plugin-app/.gitignore +++ b/packages/picgo-plugin-app/.gitignore @@ -12,7 +12,6 @@ dist dist-ssr *.local build -lib __pycache__ components.d.ts diff --git a/packages/picgo-plugin-app/package.json b/packages/picgo-plugin-app/package.json index 0d825c0..2beb8d2 100644 --- a/packages/picgo-plugin-app/package.json +++ b/packages/picgo-plugin-app/package.json @@ -21,7 +21,11 @@ "vue-tsc": "^2.0.6" }, "dependencies": { + "@vueuse/core": "^10.9.0", "vue": "^3.4.21", + "vue-i18n": "^9.10.1", + "vue-router": "^4.3.0", + "zhi-common": "^1.31.0", "zhi-lib-base": "^0.8.0" } } \ No newline at end of file diff --git a/packages/picgo-plugin-app/src/App.vue b/packages/picgo-plugin-app/src/App.vue index 9db0609..f784faa 100644 --- a/packages/picgo-plugin-app/src/App.vue +++ b/packages/picgo-plugin-app/src/App.vue @@ -7,8 +7,12 @@ - of this license document, but changing it is not allowed. --> - - + + diff --git a/packages/picgo-plugin-app/src/components/ExternalPicgoSetting.vue b/packages/picgo-plugin-app/src/components/ExternalPicgoSetting.vue new file mode 100644 index 0000000..5b3e433 --- /dev/null +++ b/packages/picgo-plugin-app/src/components/ExternalPicgoSetting.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/packages/picgo-plugin-app/src/components/PicGoIndex.vue b/packages/picgo-plugin-app/src/components/PicGoIndex.vue new file mode 100644 index 0000000..cd5fc45 --- /dev/null +++ b/packages/picgo-plugin-app/src/components/PicGoIndex.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/packages/picgo-plugin-app/src/components/PicgoSetting.vue b/packages/picgo-plugin-app/src/components/PicgoSetting.vue new file mode 100644 index 0000000..bc45dc7 --- /dev/null +++ b/packages/picgo-plugin-app/src/components/PicgoSetting.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/packages/picgo-plugin-app/src/components/SiyuanSetting.vue b/packages/picgo-plugin-app/src/components/SiyuanSetting.vue new file mode 100644 index 0000000..cdc6de8 --- /dev/null +++ b/packages/picgo-plugin-app/src/components/SiyuanSetting.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/packages/picgo-plugin-app/src/components/TransportSelect.vue b/packages/picgo-plugin-app/src/components/TransportSelect.vue new file mode 100644 index 0000000..a63fd6a --- /dev/null +++ b/packages/picgo-plugin-app/src/components/TransportSelect.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/packages/picgo-plugin-app/src/composables/useSiyuanDevice.ts b/packages/picgo-plugin-app/src/composables/useSiyuanDevice.ts new file mode 100644 index 0000000..358afa8 --- /dev/null +++ b/packages/picgo-plugin-app/src/composables/useSiyuanDevice.ts @@ -0,0 +1,56 @@ +/* + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 + * + * Copyright (C) 2022-2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. + */ + +import { DeviceDetection, DeviceTypeEnum } from "zhi-device" +import { createAppLogger } from "@/utils/appLogger.ts" + +/** + * 设备检测 + */ +export const useSiyuanDevice = () => { + const logger = createAppLogger("use-siyuan-device") + + const isInSiyuanMainWin = () => { + const deviceType = DeviceDetection.getDevice() + const isSiyuanOrSiyuanNewWin = deviceType === DeviceTypeEnum.DeviceType_Siyuan_MainWin + logger.debug("deviceType=>", deviceType) + logger.debug("isSiyuanOrSiyuanNewWin=>", String(isSiyuanOrSiyuanNewWin)) + return isSiyuanOrSiyuanNewWin + } + + const isInSiyuanWidget = () => { + const deviceType = DeviceDetection.getDevice() + const isSiyuanOrSiyuanNewWin = deviceType === DeviceTypeEnum.DeviceType_Siyuan_Widget + logger.debug("deviceType=>", deviceType) + logger.debug("isSiyuanOrSiyuanNewWin=>", String(isSiyuanOrSiyuanNewWin)) + return isSiyuanOrSiyuanNewWin + } + + const isInChromeExtension = () => { + const deviceType = DeviceDetection.getDevice() + const isSiyuanOrSiyuanNewWin = deviceType === DeviceTypeEnum.DeviceType_Chrome_Extension + logger.debug("deviceType=>", deviceType) + logger.debug("isSiyuanOrSiyuanNewWin=>", String(isSiyuanOrSiyuanNewWin)) + return isSiyuanOrSiyuanNewWin + } + + const isInSiyuanOrSiyuanNewWin = () => { + const deviceType = DeviceDetection.getDevice() + // 三种情况,主窗口、挂件、新窗口 + const isSiyuanOrSiyuanNewWin = + deviceType === DeviceTypeEnum.DeviceType_Siyuan_MainWin || + deviceType === DeviceTypeEnum.DeviceType_Siyuan_RendererWin || + deviceType === DeviceTypeEnum.DeviceType_Siyuan_Widget + logger.debug("deviceType=>", deviceType) + logger.debug("isSiyuanOrSiyuanNewWin=>", String(isSiyuanOrSiyuanNewWin)) + return isSiyuanOrSiyuanNewWin + } + + return { isInSiyuanMainWin, isInSiyuanWidget, isInChromeExtension, isInSiyuanOrSiyuanNewWin } +} diff --git a/packages/picgo-plugin-app/src/composables/useVueI18n.ts b/packages/picgo-plugin-app/src/composables/useVueI18n.ts new file mode 100644 index 0000000..63a50f0 --- /dev/null +++ b/packages/picgo-plugin-app/src/composables/useVueI18n.ts @@ -0,0 +1,26 @@ +/* + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 + * + * Copyright (C) 2022-2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. + */ + +import { useI18n } from "vue-i18n" + +/** + * 多语言封装,解决 CSP + * + * https://github.com/intlify/vue-i18n-next/issues/543 + */ +export const useVueI18n = () => { + const { messages, locale } = useI18n() + + const translate = (key: any) => { + const localeMessages = messages.value?.[locale.value] + return localeMessages[key] || key + } + + return { t: translate, locale } +} diff --git a/packages/picgo-plugin-app/src/composables/useVueRouter.ts b/packages/picgo-plugin-app/src/composables/useVueRouter.ts new file mode 100644 index 0000000..f1478fd --- /dev/null +++ b/packages/picgo-plugin-app/src/composables/useVueRouter.ts @@ -0,0 +1,21 @@ +/* + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 + * + * Copyright (C) 2022-2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. + */ + +import { createRouter, createWebHashHistory, Router } from "vue-router" +import { routes } from "@/routes" + +/** + * 用于创建路由的函数 + */ +export const useVueRouter = (): Router => { + return createRouter({ + history: createWebHashHistory(), + routes, + }) +} diff --git a/packages/picgo-plugin-app/src/i18n/en_US.ts b/packages/picgo-plugin-app/src/i18n/en_US.ts new file mode 100644 index 0000000..c569c74 --- /dev/null +++ b/packages/picgo-plugin-app/src/i18n/en_US.ts @@ -0,0 +1,127 @@ +/* + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 + * + * Copyright (C) 2022-2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. + */ + +export default { + "setting.picgo.refer.to": "For details, please refer to:", + "setting.picgo.refer.to.online.doc": "Picgo configuration online documentation", + "setting.picgo.picbed": "Picbed setting", + "setting.picgo.picgo": "PicGO setting", + "setting.picgo.picgo.open.config.file": "Open config file", + "setting.picgo.picgo.click.to.open": "Click open", + "setting.picgo.picgo.choose.showed.picbed": "Please select showed picbed", + "setting.picgo.picbed.selected.tip": "Selected", + "setting.picgo.picbed.unselected.tip": "Unselected", + "setting.picgo.picbed.set.default": "Set as default picbed", + "setting.picgo.picbed.current.selected.tip": "Current selected picbed is:", + "setting.picgo.picbed.current.tip": "Current picbed is:", + "setting.picgo.picbed.uploader.config.name": "Picbed config name", + "setting.picgo.picbed.uploader.config.name.placeholder": "Please input config name", + "setting.picgo.config.name": "Config name", + "setting.picgo.config.name.placeholder": "Please input config name", + "setting.picgo.index.tip": + "Note: The image uploaded here will not be automatically inserted into the document. Please manually click the copy button to copy the link, and then Ctrl+V to paste it into the document. This picture list only shows the pictures contained in this document.", + "setting.picgo.index.copy.link": "Copy link", + "setting.picgo.setting.timestamp.rename": "Timestamp rename", + "setting.picgo.setting.close": "Close", + "setting.picgo.setting.open": "Open", + "setting.picgo.setting.log.file": "Log file", + "setting.picgo.plugin": "Plugin setting", + "setting.picgo.plugin.list": "Plugin list", + "setting.picgo.plugin.import.local": "Import local plugin", + "setting.picgo.plugin.install": "Install", + "setting.picgo.plugin.installing": "Installing", + "setting.picgo.plugin.installed": "Installed", + "setting.picgo.plugin.doing.something": "Loading", + "setting.picgo.plugin.search.placeholder": + "Search the picgo plug -in on NPM, or click the button above to view the excellent plug -in list", + "setting.picgo.plugin.gui.not.implemented": + "This plug -in does not optimize the visual interface, is it continued to be installed?", + "setting.picgo.setting.node.path": "Node install path", + "setting.picgo.setting.node.path.tip": + "Please enter Node to install the full path, for example: /opt/node-v16.14.0-darwin-x64/bin, node version> = 16", + "setting.picgo.setting.node.registry": "NPM registry", + "setting.picgo.setting.node.registry.tip": "Mainland recommend:https://registry.npmmirror.com", + "setting.picgo.setting.node.proxy": "NPM proxy", + "setting.picgo.setting.node.proxy.tip": + "Generally, you can leave empty. If you have special needs, you can set a custom agent", + "setting.picgo.setting.config.tip": + "Note: The attributes above the horizontal line will change the behavior of uploading pictures, and the configuration can be stored automatically. The attribute below the horizontal line is only used when installing the plug -in, and you need to click the [Confirm] button to save.", + "setting.picgo.plugin.install.success": + "The plug -in has been successfully installed, please clear the search keyword refresh list. Click the plug -in corresponding [Settings] icon to view the plug -in details and customize the plug -in", + "setting.picgo.plugin.uninstall": "Uninstall plugin", + "setting.picgo.plugin.uninstall.success": "Plugin is uninstalled successfully", + "setting.picgo.plugin.enable": "Enable plugin", + "setting.picgo.plugin.disable": "Disable plugin", + "setting.picgo.plugin.update": "Update plugin", + "setting.picgo.plugin.config.setting": "Plugin setting", + "setting.picgo.plugin.work": "Work", + "setting.picgo.plugin.nowork": "Nowork", + "setting.picgo.plugin.nouse": "Nouse", + "setting.picgo.plugin.update.success": "Update success", + "setting.picgo.manage": "Picture manage", + "picgo.chrome.tip": + "If you are using a browser plug -in, you need to download the configuration Picgo client from here: https://github.com/Molunerfinn/PicGo/releases", + "picgo.siyuan.tip": + "If you are using Siyuan notes pendants, you need to configure your own integration of PICGO. The pendant version of the PICGO configuration file is:`[Siyuan Workspace]/data/widgets/sy-post-publisher/lib/picgo/picgo.cfg.json`,Please refer to the official picgo document for configuration:https://picgo.github.io/PicGo-Core-Doc/zh/guide/config.html#%E6%89%8B%E5%8A%A8%E7%94%9F%E6%88%90", + "picgo.upload.status": "Upload status", + "picgo.upload.select.pic": "Select picture", + "picgo.upload.clipboard": "Clipboard picture", + "picgo.upload.onclick": "One click upload", + "picgo.download.onclick": "One click download", + "picgo.download.local.to.bed": "Upload picture to bed", + "picgo.download.bed.to.local": "Upload picture from bed", + "picgo.pic.preview": "Picture preview", + "picgo.pic.setting": "Picture setting", + "picgo.pic.setting.no.tip": + "You are currently using the browser plug -in and cannot inherit PicGo. You can only call the local Picgo client on the local Picgo client through HTTP", + "syp.about": "About me", + "theme.mode.choose": "Mode", + "theme.mode.dark": "Dark mode", + "theme.mode.light": "Light mode", + "setting.conf.export": "Export config", + "setting.conf.import": "Import config", + "setting.conf.clear": "Clear config", + "setting.conf.transport": "Transport", + "main.opt.success": "Success", + "main.opt.failure": "Error", + "main.opt.edit": "Edit", + "main.opt.delete": "Delete", + "main.opt.loading": "In operation...", + "main.opt.warning": "Warn tips", + "main.opt.tip": "Kind tips", + "main.opt.save": "Save", + "main.opt.ok": "Confirm", + "main.opt.cancel": "Cancel", + "main.opt.warning.tip": "This operation cannot be undone, continue?", + "switch.active.text": "Debug", + "switch.unactive.text": "Normal", + "setting.conf.import.picgo": "Import PicGO configuration", + "setting.conf.export.syp.tip": + "The corresponding json configuration file will be exported, and regular configuration backup is strongly recommended. In principle, backward compatibility is supported. If there is any incompatibility problem, it will be specially explained.", + "setting.conf.export.picgo": "Export PicGO configuration", + "setting.conf.import.picgo.tip": + "Please select a valid historical backup json file to import. Note: PicGO plug-in registration information will not be imported. For configuration compatibility, please uninstall all plug-ins and then perform PicGO configuration export operation. Uninstalling PicGO plug-ins will not delete the plug-in configuration, only Plug-in files and plug-in registration records will be deleted. Please feel free to uninstall.", + "setting.conf.export.picgo.tip": + "The corresponding json configuration file will be exported, and regular configuration backup is strongly recommended. In principle, backward compatibility is supported. If there is any incompatibility problem, it will be specially explained.", + "setting.conf.clear.picgo": "Clear PicGO configuration", + "setting.conf.clear.picgo.tip": + "Empty configuration cannot be restored, please operate with caution. It is strongly recommended to back up the configuration first. This operation will delete PicGO related configuration folders, including configuration, plug-ins, cache, etc., and only use it when PicGO loads abnormally and cannot be used at all, otherwise Lost configuration at your own risk!", + "picgo.type.switch.active.text": "Use the built-in PicGO", + "picgo.type.switch.unactive.text": "Use an external PicGo", + "picgo.type.external.title": "External PicGO settings", + "setting.picgo.external.setting.apiurl": "API address", + "setting.picgo.external.setting.apiurl.tip": + "Please enter the API address of the external external PicGO, the default is: http://127.0.0.1:36677", + "siyuan.config.setting": "Source settings", + "setting.blog.siyuan.apiurl": "Siyuan API address", + "setting.blog.siyuan.apiurl.tip": "The default address of Siyuan API is: http://127.0.0.1;6806", + "setting.blog.siyuan.password": "Siyuan Token", + "setting.blog.siyuan.password.tip": "Siyuan Token, which is empty by default", + "form.validate.name.required": "Please enter a name", +} diff --git a/packages/picgo-plugin-app/src/i18n/index.ts b/packages/picgo-plugin-app/src/i18n/index.ts new file mode 100644 index 0000000..90986be --- /dev/null +++ b/packages/picgo-plugin-app/src/i18n/index.ts @@ -0,0 +1,24 @@ +/* + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 + * + * Copyright (C) 2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. + */ + +import { createI18n } from "vue-i18n" +import zh_CN from "./zh_CN" +import en_US from "./en_US" + +const i18n = createI18n({ + legacy: false, + locale: "zh_CN", // 默认显示语言 + fallbackLocale: "en_US", // 次要语言 + messages: { + zh_CN, + en_US, + }, +}) + +export default i18n diff --git a/packages/picgo-plugin-app/src/i18n/zh_CN.ts b/packages/picgo-plugin-app/src/i18n/zh_CN.ts new file mode 100644 index 0000000..15445bc --- /dev/null +++ b/packages/picgo-plugin-app/src/i18n/zh_CN.ts @@ -0,0 +1,122 @@ +/* + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 + * + * Copyright (C) 2022-2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. + */ + +export default { + "setting.picgo.refer.to": "详情请参考:", + "setting.picgo.refer.to.online.doc": "PicGO配置在线文档", + "setting.picgo.picbed": "图床设置", + "setting.picgo.picgo": "PicGO设置", + "setting.picgo.picgo.open.config.file": "打开配置文件", + "setting.picgo.picgo.click.to.open": "点击打开", + "setting.picgo.picgo.choose.showed.picbed": "请选择显示的图床", + "setting.picgo.picbed.selected.tip": "已选中", + "setting.picgo.picbed.unselected.tip": "未选中", + "setting.picgo.picbed.set.default": "设为默认图床", + "setting.picgo.picbed.current.selected.tip": "已选中图床:", + "setting.picgo.picbed.current.tip": "当前默认图床是:", + "setting.picgo.picbed.uploader.config.name": "图床配置名", + "setting.picgo.picbed.uploader.config.name.placeholder": "请输入配置名称", + "setting.picgo.config.name": "配置名称", + "setting.picgo.config.name.placeholder": "请输入配置名称", + "setting.picgo.index.tip": + "注意:1、此处上传的图片不会自动插入文档中,请手动点击按钮复制链接,然后 Ctrl+V 粘贴到文档中。2、对于文档当中原本已经存在的本地图片,点击上传之后不会直接替换原始图片,只会存储本地图片与图床图片的映射信息,需要在发布文章时手动勾选【使用图床】才会进行临时链接替换,请知悉。这样做是为了不破坏其他地方对文档图片的处理。当然,您也可以手动复制图床链接,然后删除原图片,替换为图床图片。3、该图片列表仅展示此文档包含的图片。", + "setting.picgo.index.copy.link": "复制链接", + "setting.picgo.setting.timestamp.rename": "时间戳重命名", + "setting.picgo.setting.close": "关", + "setting.picgo.setting.open": "开", + "setting.picgo.setting.log.file": "日志文件", + "setting.picgo.plugin": "插件设置", + "setting.picgo.plugin.list": "插件列表", + "setting.picgo.plugin.import.local": "导入本地插件", + "setting.picgo.plugin.install": "安装", + "setting.picgo.plugin.installing": "安装中", + "setting.picgo.plugin.installed": "已安装", + "setting.picgo.plugin.doing.something": "进行中", + "setting.picgo.plugin.search.placeholder": + "搜索npm上的PicGo插件,或者点击上方按钮查看优秀插件列表。推荐:watermark-elec、s3", + "setting.picgo.plugin.gui.not.implemented": "该插件未对可视化界面进行优化, 是否继续安装?", + "setting.picgo.setting.node.path": "Node安装路径", + "setting.picgo.setting.node.path.tip": "请输入Node安装完整路径,例如:/opt/node16/bin,Node版本>=16", + "setting.picgo.setting.node.registry": "NPM的registry", + "setting.picgo.setting.node.registry.tip": "国内推荐:https://registry.npmmirror.com", + "setting.picgo.setting.node.proxy": "NPM代理", + "setting.picgo.setting.node.proxy.tip": "一般可留空,如有特殊需求可设置自定义代理", + "setting.picgo.setting.config.tip": + "注意:横线以上的属性会改变上传图片的行为,配置可自动保存。横线以下的属性仅仅在安装插件时用到,并且需要点击【确认】按钮才能保存。", + "setting.picgo.plugin.install.success": + "插件已经成功安装,请清除搜索关键字刷新列表。点击插件对应【设置】图标可查看插件详情,并对插件进行自定义设置。如果是图床扩展,请关闭重新打开,然后启用图床并进行设置。", + "setting.picgo.plugin.uninstall": "卸载插件", + "setting.picgo.plugin.uninstall.success": "插件已经成功卸载。", + "setting.picgo.plugin.enable": "启用插件", + "setting.picgo.plugin.disable": "禁用插件", + "setting.picgo.plugin.update": "更新插件", + "setting.picgo.plugin.config.setting": "插件设置", + "setting.picgo.plugin.work": "已兼容", + "setting.picgo.plugin.nowork": "不兼容", + "setting.picgo.plugin.nouse": "不可用", + "setting.picgo.plugin.update.success": "更新成功", + "setting.picgo.manage": "图床管理", + "picgo.chrome.tip": + "您当前使用的是浏览器插件,需要从这里下载配置 PicGO 客户端:https://github.com/Molunerfinn/PicGo/releases", + "picgo.siyuan.tip": "您当前使用的是思源笔记PC客户端,PicGO已内置,只需配置即可", + "picgo.upload.status": "上传状态", + "picgo.upload.select.pic": "选择图片", + "picgo.upload.clipboard": "剪贴板图片", + "picgo.upload.onclick": "一键上传本地图片到图床", + "picgo.download.onclick": "一键下载远程图片到本地", + "picgo.download.local.to.bed": "上传本地图片到图床", + "picgo.download.bed.to.local": "下载远程图片到本地", + "picgo.pic.preview": "图片预览", + "picgo.pic.setting": "内置PicGO设置", + "picgo.pic.setting.no.tip": + "由于您当前使用的是浏览器环境,无法直接集成 PicGO ,只能通过 HTTP 请求间接调用本地 PicGO 客户端上图片,请直接在本地 PicGO 客户端进行设置。如需体验更加完整的功能,请通过PC客户端使用。", + "syp.about": "关于作者", + "theme.mode.choose": "切换模式", + "theme.mode.dark": "暗黑模式", + "theme.mode.light": "浅色模式", + "setting.conf.export": "导出配置", + "setting.conf.import": "导入配置", + "setting.conf.clear": "清空配置", + "setting.conf.transport": "导入导出", + "main.opt.success": "操作成功", + "main.opt.failure": "操作失败", + "main.opt.edit": "编辑", + "main.opt.delete": "删除", + "main.opt.loading": "操作中...", + "main.opt.warning": "警告信息", + "main.opt.tip": "温馨提示", + "main.opt.save": "保存", + "main.opt.ok": "确认", + "main.opt.cancel": "取消", + "main.opt.warning.tip": "此操作不可恢复,是否继续?", + "switch.active.text": "调试模式", + "switch.unactive.text": "正常模式", + "setting.conf.import.picgo": "导入PicGO配置", + "setting.conf.export.syp.tip": + "将导出对应的json配置文件,强烈建议定期进行配置备份。原则上支持向后兼容。如有不兼容问题,会特别说明。", + "setting.conf.export.picgo": "导出PicGO配置", + "setting.conf.import.picgo.tip": + "请选择有效的历史备份json文件进行导入。注意:PicGO插件的注册信息不导入。为了配置的兼容性,请卸载所有插件之后,进行PicGO配置导出操作。卸载PicGO插件不会删除插件配置,只会删除插件文件以及插件注册记录。请放心卸载。", + "setting.conf.export.picgo.tip": + "将导出对应的json配置文件,强烈建议定期进行配置备份。原则上支持向后兼容。如有不兼容问题,会特别说明。", + "setting.conf.clear.picgo": "清空PicGO配置", + "setting.conf.clear.picgo.tip": + "清空配置不可恢复,请谨慎操作。强烈建议先备份配置。此操作会删除PicGO相关配置文件夹,包括配置、插件、缓存等,仅在PicGO加载发生异常,并且完全无法使用的时候使用,否则丢失配置后果自负!", + "picgo.type.switch.active.text": "切换到内置PicGO", + "picgo.type.switch.unactive.text": "切换到外部PicGO", + "picgo.type.external.title": "外部PicGO设置", + "setting.picgo.external.setting.apiurl": "API地址", + "setting.picgo.external.setting.apiurl.tip": "请输入外部外部PicGO的API地址,默认是:http://127.0.0.1:36677", + "siyuan.config.setting": "思源设置", + "setting.blog.siyuan.apiurl": "思源API地址", + "setting.blog.siyuan.apiurl.tip": "思源API地址,默认是:http://127.0.0.1:6806", + "setting.blog.siyuan.password": "思源Token", + "setting.blog.siyuan.password.tip": "思源Token,默认是空", + "form.validate.name.required": "请输入名称", +} diff --git a/packages/picgo-plugin-app/src/layouts/AppLayout.vue b/packages/picgo-plugin-app/src/layouts/AppLayout.vue new file mode 100644 index 0000000..5fec438 --- /dev/null +++ b/packages/picgo-plugin-app/src/layouts/AppLayout.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/packages/picgo-plugin-app/src/layouts/default/AppLayoutDefault.vue b/packages/picgo-plugin-app/src/layouts/default/AppLayoutDefault.vue new file mode 100644 index 0000000..962dc98 --- /dev/null +++ b/packages/picgo-plugin-app/src/layouts/default/AppLayoutDefault.vue @@ -0,0 +1,32 @@ + + + + + + + diff --git a/packages/picgo-plugin-app/src/layouts/default/DefaultFooter.vue b/packages/picgo-plugin-app/src/layouts/default/DefaultFooter.vue new file mode 100644 index 0000000..da2749a --- /dev/null +++ b/packages/picgo-plugin-app/src/layouts/default/DefaultFooter.vue @@ -0,0 +1,100 @@ + + + + + + + diff --git a/packages/picgo-plugin-app/src/layouts/default/DefaultHeader.vue b/packages/picgo-plugin-app/src/layouts/default/DefaultHeader.vue new file mode 100644 index 0000000..f778274 --- /dev/null +++ b/packages/picgo-plugin-app/src/layouts/default/DefaultHeader.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/packages/picgo-plugin-app/src/main.ts b/packages/picgo-plugin-app/src/main.ts index dd855a2..d78271e 100644 --- a/packages/picgo-plugin-app/src/main.ts +++ b/packages/picgo-plugin-app/src/main.ts @@ -10,6 +10,8 @@ import App from "./App.vue" import { createApp } from "vue" import { createAppLogger } from "@/utils/appLogger.ts" +import i18n from "@/i18n" +import { useVueRouter } from "$composables/useVueRouter.ts" const logger = createAppLogger("vue-main-entry") @@ -25,6 +27,13 @@ const createVueApp = async () => { // https://stackoverflow.com/a/62383325/4037224 const app = createApp(App) + // router + const router = useVueRouter() + app.use(router) + + // 国际化 + app.use(i18n) + // 挂载 vue app app.mount("#app") logger.info("vue app created") diff --git a/packages/picgo-plugin-app/src/routes/index.ts b/packages/picgo-plugin-app/src/routes/index.ts new file mode 100644 index 0000000..4c9b9e6 --- /dev/null +++ b/packages/picgo-plugin-app/src/routes/index.ts @@ -0,0 +1,26 @@ +/* + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 + * + * Copyright (C) 2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. + */ + +import PicGoIndex from "$components/PicGoIndex.vue" +import PicgoSetting from "$components/PicgoSetting.vue" +import ExternalPicgoSetting from "$components/ExternalPicgoSetting.vue" +import SiyuanSetting from "$components/SiyuanSetting.vue" +import TransportSelect from "$components/TransportSelect.vue" +import { RouteRecordRaw } from "vue-router" + +/** + * 路由定义 + */ +export const routes: RouteRecordRaw[] = [ + { path: "/", component: PicGoIndex }, + { path: "/setting", component: PicgoSetting }, + { path: "/setting/external", component: ExternalPicgoSetting }, + { path: "/setting/transport", component: TransportSelect }, + { path: "/setting/siyuan", component: SiyuanSetting }, +] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98e5181..df6c41d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,9 +20,21 @@ importers: packages/picgo-plugin-app: dependencies: + '@vueuse/core': + specifier: ^10.9.0 + version: 10.9.0(vue@3.4.21) vue: specifier: ^3.4.21 version: 3.4.21(typescript@5.4.2) + vue-i18n: + specifier: ^9.10.1 + version: 9.10.1(vue@3.4.21) + vue-router: + specifier: ^4.3.0 + version: 4.3.0(vue@3.4.21) + zhi-common: + specifier: ^1.31.0 + version: 1.31.0(typescript@5.4.2) zhi-lib-base: specifier: ^0.8.0 version: 0.8.0 @@ -148,6 +160,7 @@ packages: /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} + requiresBuild: true dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 @@ -164,6 +177,7 @@ packages: /@babel/highlight@7.23.4: resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} + requiresBuild: true dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 @@ -738,6 +752,27 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true + /@intlify/core-base@9.10.1: + resolution: {integrity: sha512-0+Wtjj04GIyglh5KKiNjRwgjpHrhqqGZhaKY/QVjjogWKZq5WHROrTi84pNVsRN18QynyPmjtsVUWqFKPQ45xQ==} + engines: {node: '>= 16'} + dependencies: + '@intlify/message-compiler': 9.10.1 + '@intlify/shared': 9.10.1 + dev: false + + /@intlify/message-compiler@9.10.1: + resolution: {integrity: sha512-b68UTmRhgZfswJZI7VAgW6BXZK5JOpoi5swMLGr4j6ss2XbFY13kiw+Hu+xYAfulMPSapcHzdWHnq21VGnMCnA==} + engines: {node: '>= 16'} + dependencies: + '@intlify/shared': 9.10.1 + source-map-js: 1.0.2 + dev: false + + /@intlify/shared@9.10.1: + resolution: {integrity: sha512-liyH3UMoglHBUn70iCYcy9CQlInx/lp50W2aeSxqqrvmG+LDj/Jj7tBJhBoQL4fECkldGhbmW0g2ommHfL6Wmw==} + engines: {node: '>= 16'} + dev: false + /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1198,6 +1233,10 @@ packages: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true + /@types/web-bluetooth@0.0.20: + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + dev: false + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.9.5): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1563,6 +1602,10 @@ packages: '@vue/compiler-dom': 3.4.21 '@vue/shared': 3.4.21 + /@vue/devtools-api@6.6.1: + resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} + dev: false + /@vue/language-core@1.8.27(typescript@5.4.2): resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: @@ -1631,6 +1674,31 @@ packages: /@vue/shared@3.4.21: resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + /@vueuse/core@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.9.0 + '@vueuse/shared': 10.9.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/metadata@10.9.0: + resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} + dev: false + + /@vueuse/shared@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} + dependencies: + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -1710,7 +1778,6 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: true /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -1724,7 +1791,6 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -1751,7 +1817,6 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} @@ -2149,7 +2214,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} @@ -2177,7 +2241,6 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} @@ -2185,7 +2248,6 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -2688,7 +2750,6 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -2700,6 +2761,7 @@ packages: /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + requiresBuild: true dependencies: is-arrayish: 0.2.1 dev: true @@ -2750,7 +2812,6 @@ packages: /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -3223,7 +3284,6 @@ packages: /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -3666,6 +3726,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + requiresBuild: true dev: true /is-binary-path@2.1.0: @@ -3706,7 +3767,6 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} @@ -3840,6 +3900,7 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + requiresBuild: true dev: true /js-tokens@8.0.3: @@ -3851,7 +3912,6 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: true /jsdom@24.0.0: resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} @@ -3904,6 +3964,7 @@ packages: /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + requiresBuild: true dev: true /json-stable-stringify-without-jsonify@1.0.1: @@ -4910,11 +4971,11 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: true /requires-port@1.0.0: @@ -5138,6 +5199,10 @@ packages: engines: {node: '>=8'} dev: true + /shorthash2@1.0.3: + resolution: {integrity: sha512-oB8s64JsyJ2xhHJlnTwGg++Y3BTF6XnXeXMC7OygD8vtNcCRDiMxEGONvUOeZbxfwEXENmRlqPDouMR/OtGDsw==} + dev: false + /side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -5267,7 +5332,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -5300,7 +5364,6 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: true /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} @@ -5511,6 +5574,14 @@ packages: punycode: 2.3.1 dev: true + /transliteration@2.3.5: + resolution: {integrity: sha512-HAGI4Lq4Q9dZ3Utu2phaWgtm3vB6PkLUFqWAScg/UW+1eZ/Tg6Exo4oC0/3VUol/w4BlefLhUUSVBr/9/ZGQOw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + yargs: 17.7.2 + dev: false + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -5991,6 +6062,21 @@ packages: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true + /vue-demi@0.14.7(vue@3.4.21): + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.4.21(typescript@5.4.2) + dev: false + /vue-eslint-parser@9.4.2(eslint@8.57.0): resolution: {integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==} engines: {node: ^14.17.0 || >=16.0.0} @@ -6009,6 +6095,27 @@ packages: - supports-color dev: true + /vue-i18n@9.10.1(vue@3.4.21): + resolution: {integrity: sha512-37HVJQZ/pZaRXGzFmmMomM1u1k7kndv3xCBPYHKEVfv5W3UVK67U/TpBug71ILYLNmjHLHdvTUPRF81pFT5fFg==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@intlify/core-base': 9.10.1 + '@intlify/shared': 9.10.1 + '@vue/devtools-api': 6.6.1 + vue: 3.4.21(typescript@5.4.2) + dev: false + + /vue-router@4.3.0(vue@3.4.21): + resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.6.1 + vue: 3.4.21(typescript@5.4.2) + dev: false + /vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} dependencies: @@ -6149,7 +6256,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -6203,7 +6309,6 @@ packages: /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -6222,7 +6327,6 @@ packages: /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: true /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} @@ -6235,7 +6339,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} @@ -6264,6 +6367,18 @@ packages: commander: 9.5.0 dev: true + /zhi-common@1.31.0(typescript@5.4.2): + resolution: {integrity: sha512-s9x5e3dLhFmh514yvT1JtP7xriWMVxQ11AyIjOgx5Xo2cKcDv5b6nKDaLj2Jkvms9iwZRSinDY8y/FK3jrfbrg==} + dependencies: + js-yaml: 4.1.0 + shorthash2: 1.0.3 + transliteration: 2.3.5 + vue: 3.4.21(typescript@5.4.2) + zhi-lib-base: 0.8.0 + transitivePeerDependencies: + - typescript + dev: false + /zhi-device@2.11.0: resolution: {integrity: sha512-HKcEHVULUcGboePoSBWJ6vDHYqXEiZS/xetzTRV8DRPkRTmeWzJWs5Xu3BTz21Iz3DGy43hFahpm2Yz2+MFUcA==} dev: false