From 12e551b4e90f16fd86a0f398007c4756f5b8632d Mon Sep 17 00:00:00 2001 From: coward Date: Wed, 21 Aug 2024 09:10:01 +0800 Subject: [PATCH] =?UTF-8?q?:art:=E6=B7=BB=E5=8A=A0=E9=9D=99=E6=80=81?= =?UTF-8?q?=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 + Dockerfile | 20 +- dist/static.go | 6 + http/router/root.go | 4 + web/.cz-config.js | 45 + web/.drone.yml | 19 + web/.editorconfig | 5 + web/.env.development | 13 + web/.env.github | 13 + web/.env.production | 16 + web/.eslint-global-variables.json | 62 + web/.eslintignore | 4 + web/.husky/_/husky.sh | 36 + web/.husky/commit-msg | 4 + web/.husky/pre-commit | 4 + web/.prettierignore | 3 + web/.prettierrc.json | 7 + web/Dockerfile | 22 + web/LICENSE | 21 + web/README.EN.md | 208 + web/README.md | 229 + web/build/constant.js | 33 + web/build/plugin/html.js | 15 + web/build/plugin/index.js | 42 + web/build/plugin/mock.js | 13 + web/build/plugin/unplugin.js | 46 + web/build/script/build-cname.js | 15 + web/build/script/index.js | 14 + web/build/utils.js | 70 + web/commitlint.config.js | 26 + web/docker/web.conf | 26 + web/docs/使用unocss.md | 3 + web/docs/使用图标.md | 40 + web/docs/安装pnpm.md | 32 + web/index.html | 35 + web/jsconfig.json | 14 + web/mock/api/auth.js | 40 + web/mock/api/index.js | 5 + web/mock/api/post.js | 138 + web/mock/api/user.js | 39 + web/mock/index.js | 6 + web/mock/utils.js | 12 + web/package.json | 82 + web/pnpm-lock.yaml | 8992 +++++++++++++++++ web/public/favicon.png | Bin 0 -> 3859 bytes web/public/favicon.svg | 1 + web/public/resource/loading.css | 85 + web/public/resource/loading.js | 9 + web/public/resource/logo.png | Bin 0 -> 8572 bytes web/settings/index.js | 1 + web/settings/theme.json | 37 + web/src/App.vue | 11 + web/src/api/user.js | 9 + web/src/assets/images/404.webp | Bin 0 -> 14344 bytes web/src/assets/images/login_banner.webp | Bin 0 -> 26198 bytes web/src/assets/images/login_bg.webp | Bin 0 -> 6944 bytes web/src/assets/images/logo.png | Bin 0 -> 8572 bytes web/src/components/common/AppFooter.vue | 23 + web/src/components/common/AppProvider.vue | 30 + web/src/components/common/ScrollX.vue | 162 + web/src/components/icon/CustomIcon.vue | 22 + web/src/components/icon/SvgIcon.vue | 24 + web/src/components/icon/TheIcon.vue | 33 + web/src/components/page/AppPage.vue | 18 + .../components/page/ClientListHeaderPage.vue | 229 + web/src/components/page/CommonPage.vue | 33 + web/src/components/query-bar/QueryBar.vue | 27 + web/src/components/query-bar/QueryBarItem.vue | 34 + web/src/components/table/CrudModal.vue | 55 + web/src/components/table/CrudTable.vue | 149 + web/src/composables/index.js | 1 + web/src/composables/useCRUD.js | 103 + web/src/layout/components/AppMain.vue | 16 + .../header/components/BreadCrumb.vue | 30 + .../header/components/FullScreen.vue | 12 + .../header/components/GiteeSite.vue | 11 + .../header/components/GithubSite.vue | 11 + .../header/components/MenuCollapse.vue | 12 + .../header/components/MessageNotification.vue | 82 + .../header/components/ThemeMode.vue | 18 + .../header/components/UserAvatar.vue | 218 + web/src/layout/components/header/index.vue | 17 + .../sidebar/components/SideLogo.vue | 15 + .../sidebar/components/SideMenu.vue | 120 + web/src/layout/components/sidebar/index.vue | 9 + .../layout/components/tags/ContextMenu.vue | 118 + web/src/layout/components/tags/index.vue | 106 + web/src/layout/index.vue | 42 + web/src/main.js | 21 + web/src/router/guard/index.js | 9 + web/src/router/guard/page-loading-guard.js | 15 + web/src/router/guard/page-title-guard.js | 12 + web/src/router/guard/permission-guard.js | 19 + web/src/router/index.js | 67 + web/src/router/routes/index.js | 34 + web/src/store/index.js | 7 + web/src/store/modules/app/index.js | 28 + web/src/store/modules/index.js | 4 + web/src/store/modules/permission/index.js | 60 + web/src/store/modules/tags/helpers.js | 6 + web/src/store/modules/tags/index.js | 83 + web/src/store/modules/user/index.js | 72 + web/src/styles/global.scss | 66 + web/src/styles/reset.css | 35 + web/src/utils/auth/auth.js | 17 + web/src/utils/auth/index.js | 2 + web/src/utils/auth/token.js | 29 + web/src/utils/common/common.js | 99 + web/src/utils/common/icon.js | 12 + web/src/utils/common/index.js | 4 + web/src/utils/common/is.js | 119 + web/src/utils/common/naiveTools.js | 99 + web/src/utils/http/helpers.js | 33 + web/src/utils/http/index.js | 19 + web/src/utils/http/interceptors.js | 75 + web/src/utils/index.js | 4 + web/src/utils/storage/index.js | 21 + web/src/utils/storage/storage.js | 55 + web/src/views/client/api.js | 10 + web/src/views/client/index.vue | 669 ++ web/src/views/client/route.js | 23 + web/src/views/login/api.js | 7 + web/src/views/login/index.vue | 150 + web/src/views/setting/api.js | 9 + web/src/views/setting/index.vue | 489 + web/src/views/setting/route.js | 23 + web/src/views/user/api.js | 7 + web/src/views/user/index.vue | 405 + web/src/views/user/route.js | 23 + web/src/views/workbench/api.js | 7 + web/src/views/workbench/index.vue | 242 + web/src/views/workbench/route.js | 23 + web/unocss.config.js | 54 + web/vercel.json | 8 + web/vite.config.js | 59 + 135 files changed, 15749 insertions(+), 3 deletions(-) create mode 100644 dist/static.go create mode 100644 web/.cz-config.js create mode 100644 web/.drone.yml create mode 100644 web/.editorconfig create mode 100644 web/.env.development create mode 100644 web/.env.github create mode 100644 web/.env.production create mode 100644 web/.eslint-global-variables.json create mode 100644 web/.eslintignore create mode 100644 web/.husky/_/husky.sh create mode 100644 web/.husky/commit-msg create mode 100644 web/.husky/pre-commit create mode 100644 web/.prettierignore create mode 100644 web/.prettierrc.json create mode 100644 web/Dockerfile create mode 100644 web/LICENSE create mode 100644 web/README.EN.md create mode 100644 web/README.md create mode 100644 web/build/constant.js create mode 100644 web/build/plugin/html.js create mode 100644 web/build/plugin/index.js create mode 100644 web/build/plugin/mock.js create mode 100644 web/build/plugin/unplugin.js create mode 100644 web/build/script/build-cname.js create mode 100644 web/build/script/index.js create mode 100644 web/build/utils.js create mode 100644 web/commitlint.config.js create mode 100644 web/docker/web.conf create mode 100644 web/docs/使用unocss.md create mode 100644 web/docs/使用图标.md create mode 100644 web/docs/安装pnpm.md create mode 100644 web/index.html create mode 100644 web/jsconfig.json create mode 100644 web/mock/api/auth.js create mode 100644 web/mock/api/index.js create mode 100644 web/mock/api/post.js create mode 100644 web/mock/api/user.js create mode 100644 web/mock/index.js create mode 100644 web/mock/utils.js create mode 100644 web/package.json create mode 100644 web/pnpm-lock.yaml create mode 100644 web/public/favicon.png create mode 100644 web/public/favicon.svg create mode 100644 web/public/resource/loading.css create mode 100644 web/public/resource/loading.js create mode 100644 web/public/resource/logo.png create mode 100644 web/settings/index.js create mode 100644 web/settings/theme.json create mode 100644 web/src/App.vue create mode 100644 web/src/api/user.js create mode 100644 web/src/assets/images/404.webp create mode 100644 web/src/assets/images/login_banner.webp create mode 100644 web/src/assets/images/login_bg.webp create mode 100644 web/src/assets/images/logo.png create mode 100644 web/src/components/common/AppFooter.vue create mode 100644 web/src/components/common/AppProvider.vue create mode 100644 web/src/components/common/ScrollX.vue create mode 100644 web/src/components/icon/CustomIcon.vue create mode 100644 web/src/components/icon/SvgIcon.vue create mode 100644 web/src/components/icon/TheIcon.vue create mode 100644 web/src/components/page/AppPage.vue create mode 100644 web/src/components/page/ClientListHeaderPage.vue create mode 100644 web/src/components/page/CommonPage.vue create mode 100644 web/src/components/query-bar/QueryBar.vue create mode 100644 web/src/components/query-bar/QueryBarItem.vue create mode 100644 web/src/components/table/CrudModal.vue create mode 100644 web/src/components/table/CrudTable.vue create mode 100644 web/src/composables/index.js create mode 100644 web/src/composables/useCRUD.js create mode 100644 web/src/layout/components/AppMain.vue create mode 100644 web/src/layout/components/header/components/BreadCrumb.vue create mode 100644 web/src/layout/components/header/components/FullScreen.vue create mode 100644 web/src/layout/components/header/components/GiteeSite.vue create mode 100644 web/src/layout/components/header/components/GithubSite.vue create mode 100644 web/src/layout/components/header/components/MenuCollapse.vue create mode 100644 web/src/layout/components/header/components/MessageNotification.vue create mode 100644 web/src/layout/components/header/components/ThemeMode.vue create mode 100644 web/src/layout/components/header/components/UserAvatar.vue create mode 100644 web/src/layout/components/header/index.vue create mode 100644 web/src/layout/components/sidebar/components/SideLogo.vue create mode 100644 web/src/layout/components/sidebar/components/SideMenu.vue create mode 100644 web/src/layout/components/sidebar/index.vue create mode 100644 web/src/layout/components/tags/ContextMenu.vue create mode 100644 web/src/layout/components/tags/index.vue create mode 100644 web/src/layout/index.vue create mode 100644 web/src/main.js create mode 100644 web/src/router/guard/index.js create mode 100644 web/src/router/guard/page-loading-guard.js create mode 100644 web/src/router/guard/page-title-guard.js create mode 100644 web/src/router/guard/permission-guard.js create mode 100644 web/src/router/index.js create mode 100644 web/src/router/routes/index.js create mode 100644 web/src/store/index.js create mode 100644 web/src/store/modules/app/index.js create mode 100644 web/src/store/modules/index.js create mode 100644 web/src/store/modules/permission/index.js create mode 100644 web/src/store/modules/tags/helpers.js create mode 100644 web/src/store/modules/tags/index.js create mode 100644 web/src/store/modules/user/index.js create mode 100644 web/src/styles/global.scss create mode 100644 web/src/styles/reset.css create mode 100644 web/src/utils/auth/auth.js create mode 100644 web/src/utils/auth/index.js create mode 100644 web/src/utils/auth/token.js create mode 100644 web/src/utils/common/common.js create mode 100644 web/src/utils/common/icon.js create mode 100644 web/src/utils/common/index.js create mode 100644 web/src/utils/common/is.js create mode 100644 web/src/utils/common/naiveTools.js create mode 100644 web/src/utils/http/helpers.js create mode 100644 web/src/utils/http/index.js create mode 100644 web/src/utils/http/interceptors.js create mode 100644 web/src/utils/index.js create mode 100644 web/src/utils/storage/index.js create mode 100644 web/src/utils/storage/storage.js create mode 100644 web/src/views/client/api.js create mode 100644 web/src/views/client/index.vue create mode 100644 web/src/views/client/route.js create mode 100644 web/src/views/login/api.js create mode 100644 web/src/views/login/index.vue create mode 100644 web/src/views/setting/api.js create mode 100644 web/src/views/setting/index.vue create mode 100644 web/src/views/setting/route.js create mode 100644 web/src/views/user/api.js create mode 100644 web/src/views/user/index.vue create mode 100644 web/src/views/user/route.js create mode 100644 web/src/views/workbench/api.js create mode 100644 web/src/views/workbench/index.vue create mode 100644 web/src/views/workbench/route.js create mode 100644 web/unocss.config.js create mode 100644 web/vercel.json create mode 100644 web/vite.config.js diff --git a/.gitignore b/.gitignore index 07a9688..ae709f0 100644 --- a/.gitignore +++ b/.gitignore @@ -261,6 +261,12 @@ web/*.njsproj web/*.sln web/tsconfig.tsbuildinfo +dist/assets +dist/resource +dist/favicon.png +dist/favicon.svg +dist/index.html + template/tmp/* logs/* app.yaml diff --git a/Dockerfile b/Dockerfile index 6f800e1..28035b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,23 @@ +# 打包前端 +FROM node:18-alpine as build-front + +WORKDIR front +COPY . . +WORKDIR web + +RUN corepack enable +RUN corepack prepare pnpm@8.6.10 --activate +RUN npm config set registry https://registry.npmmirror.com +RUN pnpm install +RUN pnpm build + # 前后端集成打包 -FROM golang:alpine as build +FROM golang:alpine as build-backend RUN apk add upx WORKDIR /build COPY . . +COPY --from=build-front /front/dist/ /build/dist # sqlite必须 ENV GO111MODULE=on ENV GOPROXY=https://goproxy.cn,direct @@ -23,8 +37,8 @@ RUN apk --no-cache add ca-certificates wireguard-tools jq iptables WORKDIR /app RUN mkdir -p db -COPY --from=build --chown=wgui:wgui /build/wgui /app -COPY --from=build /build/template/* /app/template/ +COPY --from=build-backend --chown=wgui:wgui /build/wgui /app +COPY --from=build-backend /build/template/* /app/template/ RUN chmod +x wgui diff --git a/dist/static.go b/dist/static.go new file mode 100644 index 0000000..8051f0b --- /dev/null +++ b/dist/static.go @@ -0,0 +1,6 @@ +package dist + +import "embed" + +//go:embed index.html favicon.png favicon.svg assets resource +var Static embed.FS diff --git a/http/router/root.go b/http/router/root.go index 3a58b24..75e43d2 100644 --- a/http/router/root.go +++ b/http/router/root.go @@ -2,7 +2,9 @@ package router import ( "github.com/gin-gonic/gin" + "net/http" "wireguard-ui/config" + "wireguard-ui/dist" ) type Option func(engine *gin.RouterGroup) @@ -24,6 +26,8 @@ func InitRouter() *gin.Engine { r.Static("/assets", config.Config.File.Path) } + r.StaticFS("/web", http.FS(dist.Static)) + for _, opt := range options { opt(r.Group("api")) } diff --git a/web/.cz-config.js b/web/.cz-config.js new file mode 100644 index 0000000..33b3d51 --- /dev/null +++ b/web/.cz-config.js @@ -0,0 +1,45 @@ +module.exports = { + types: [ + { value: 'feat', name:'feat: 新增功能' }, + { value: 'fix', name:'fix: 修复bug' }, + { value: 'docs', name:'docs: 文档变更' }, + { value: 'style', name:'style: 代码格式(不影响功能,例如空格、分号等格式修正)' }, + { value: 'refactor', name:'refactor: 代码重构(不包括 bug 修复、功能新增)' }, + { value: 'perf', name:'perf: 性能优化' }, + { value: 'test', name:'test: 添加、修改测试用例' }, + { value: 'build', name:'build: 构建流程、外部依赖变更(如升级 npm 包、修改 脚手架 配置等)' }, + { value: 'ci', name:'ci: 修改 CI 配置、脚本' }, + { value: 'chore', name:'chore: 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)' }, + { value: 'revert', name:'revert: 回滚 commit' }, + { value: 'wip', name:'wip: 开发中' }, + { value: 'mod', name:'mod: 不确定分类的修改' }, + { value: 'release', name:'release: 发布' }, + ], + scopes: [ + ['custom', '自定义'], + ['projects', '项目搭建'], + ['components', '组件相关'], + ['utils', 'utils 相关'], + ['styles', '样式相关'], + ['deps', '项目依赖'], + ['other', '其他修改'], + ].map(([value, description]) => { + return { + value, + name: `${value.padEnd(30)} (${description})` + } + }), + messages: { + type: '确保本次提交遵循 Angular 规范!选择你要提交的类型:\n', + scope: '选择一个 scope(可选):', + customScope: '请输入自定义的 scope:', + subject: '填写简短精炼的变更描述:', + body: '填写更加详细的变更描述(可选)。使用 "|" 换行:', + breaking: '列举非兼容性重大的变更(可选):', + footer: '列举出所有变更的 Issues Closed(可选)。 例如: #31, #34:', + confirmCommit: '确认提交?' + }, + allowBreakingChanges: ['feat', 'fix'], + subjectLimit: 100, + breaklineChar: '|' +} diff --git a/web/.drone.yml b/web/.drone.yml new file mode 100644 index 0000000..670d1a2 --- /dev/null +++ b/web/.drone.yml @@ -0,0 +1,19 @@ +kind: pipeline +type: docker +name: wireguard-ui + +trigger: + event: [tag] + +steps: + - name: builder + image: plugins/docker + settings: + registry: gitea.mrx.ltd # 镜像仓库地址 + repo: gitea.mrx.ltd/go-pkg/wireguard-ui # 镜像仓库地址 + username: + from_secret: docker_user + password: + from_secret: docker_pwd + use_cache: true + auto_tag: true \ No newline at end of file diff --git a/web/.editorconfig b/web/.editorconfig new file mode 100644 index 0000000..9b6a89f --- /dev/null +++ b/web/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf \ No newline at end of file diff --git a/web/.env.development b/web/.env.development new file mode 100644 index 0000000..aa4ea54 --- /dev/null +++ b/web/.env.development @@ -0,0 +1,13 @@ +# 资源公共路径,需要以 /开头和结尾 +VITE_PUBLIC_PATH = '/' + +VITE_USE_HASH = true + +# 是否启用MOCK +VITE_USE_MOCK = true + +# 是否启用MOCK +VITE_USE_PROXY = true + +# base api +VITE_BASE_API = '/api' diff --git a/web/.env.github b/web/.env.github new file mode 100644 index 0000000..bcfb154 --- /dev/null +++ b/web/.env.github @@ -0,0 +1,13 @@ +# 自定义域名CNAME +# VITE_CNAME = 'template.isme.top' + +# 资源公共路径,需要以 /开头和结尾 +VITE_PUBLIC_PATH = '/vue-naive-admin/' + +VITE_USE_HASH = true + +# 是否启用MOCK +VITE_USE_MOCK = true + +# base api +VITE_BASE_API = '/api' diff --git a/web/.env.production b/web/.env.production new file mode 100644 index 0000000..81b63c2 --- /dev/null +++ b/web/.env.production @@ -0,0 +1,16 @@ +# 资源公共路径,需要以 /开头和结尾 +VITE_PUBLIC_PATH = '/web' + +VITE_USE_HASH = true + +# 是否启用MOCK +VITE_USE_MOCK = false + +# base api +VITE_BASE_API = '/api' + +# 是否启用压缩 +VITE_USE_COMPRESS = false + +# 压缩类型 +VITE_COMPRESS_TYPE = gzip diff --git a/web/.eslint-global-variables.json b/web/.eslint-global-variables.json new file mode 100644 index 0000000..4336802 --- /dev/null +++ b/web/.eslint-global-variables.json @@ -0,0 +1,62 @@ +{ + "globals": { + "$loadingBar": true, + "$message": true, + "defineOptions": true, + "$dialog": true, + "$notification": true, + "EffectScope": true, + "computed": true, + "createApp": true, + "customRef": true, + "defineAsyncComponent": true, + "defineComponent": true, + "effectScope": true, + "getCurrentInstance": true, + "getCurrentScope": true, + "h": true, + "inject": true, + "isProxy": true, + "isReactive": true, + "isReadonly": true, + "isRef": true, + "markRaw": true, + "nextTick": true, + "onActivated": true, + "onBeforeMount": true, + "onBeforeUnmount": true, + "onBeforeUpdate": true, + "onDeactivated": true, + "onErrorCaptured": true, + "onMounted": true, + "onRenderTracked": true, + "onRenderTriggered": true, + "onScopeDispose": true, + "onServerPrefetch": true, + "onUnmounted": true, + "onUpdated": true, + "provide": true, + "reactive": true, + "readonly": true, + "ref": true, + "resolveComponent": true, + "shallowReactive": true, + "shallowReadonly": true, + "shallowRef": true, + "toRaw": true, + "toRef": true, + "toRefs": true, + "triggerRef": true, + "unref": true, + "useAttrs": true, + "useCssModule": true, + "useCssVars": true, + "useRoute": true, + "useRouter": true, + "useSlots": true, + "watch": true, + "watchEffect": true, + "watchPostEffect": true, + "watchSyncEffect": true + } +} diff --git a/web/.eslintignore b/web/.eslintignore new file mode 100644 index 0000000..3d0576e --- /dev/null +++ b/web/.eslintignore @@ -0,0 +1,4 @@ +node_modules +dist +public +package.json \ No newline at end of file diff --git a/web/.husky/_/husky.sh b/web/.husky/_/husky.sh new file mode 100644 index 0000000..cec959a --- /dev/null +++ b/web/.husky/_/husky.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env sh +if [ -z "$husky_skip_init" ]; then + debug () { + if [ "$HUSKY_DEBUG" = "1" ]; then + echo "husky (debug) - $1" + fi + } + + readonly hook_name="$(basename -- "$0")" + debug "starting $hook_name..." + + if [ "$HUSKY" = "0" ]; then + debug "HUSKY env variable is set to 0, skipping hook" + exit 0 + fi + + if [ -f ~/.huskyrc ]; then + debug "sourcing ~/.huskyrc" + . ~/.huskyrc + fi + + readonly husky_skip_init=1 + export husky_skip_init + sh -e "$0" "$@" + exitCode="$?" + + if [ $exitCode != 0 ]; then + echo "husky - $hook_name hook exited with code $exitCode (error)" + fi + + if [ $exitCode = 127 ]; then + echo "husky - command not found in PATH=$PATH" + fi + + exit $exitCode +fi diff --git a/web/.husky/commit-msg b/web/.husky/commit-msg new file mode 100644 index 0000000..80416c7 --- /dev/null +++ b/web/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx --no-install commitlint --edit "$1" diff --git a/web/.husky/pre-commit b/web/.husky/pre-commit new file mode 100644 index 0000000..26e0c55 --- /dev/null +++ b/web/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npm run lint:staged diff --git a/web/.prettierignore b/web/.prettierignore new file mode 100644 index 0000000..4b6d469 --- /dev/null +++ b/web/.prettierignore @@ -0,0 +1,3 @@ +/node_modules/** +/dist/* +/public/* \ No newline at end of file diff --git a/web/.prettierrc.json b/web/.prettierrc.json new file mode 100644 index 0000000..5adf1d3 --- /dev/null +++ b/web/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "printWidth": 100, + "singleQuote": true, + "semi": false, + "endOfLine": "lf", + "htmlWhitespaceSensitivity": "ignore" +} diff --git a/web/Dockerfile b/web/Dockerfile new file mode 100644 index 0000000..ca1ddba --- /dev/null +++ b/web/Dockerfile @@ -0,0 +1,22 @@ +# 打包前端 +FROM node:18-alpine as build-stage + +WORKDIR front +COPY . . +WORKDIR web + +RUN corepack enable +RUN corepack prepare pnpm@8.6.10 --activate +RUN npm config set registry https://registry.npmmirror.com +RUN pnpm install +RUN pnpm run build + +# 前端集成打包 +FROM nginx:alpine +WORKDIR /data +# 替换掉Nginx默认配置 +RUN rm /etc/nginx/conf.d/default.conf +COPY --from=build-stage /front/docker/web.conf /etc/nginx/conf.d/default.conf +COPY --from=build-stage /front/dist/ ./ +# 复制编译后的文件到容器内 +RUN /bin/sh -c 'echo init ok' \ No newline at end of file diff --git a/web/LICENSE b/web/LICENSE new file mode 100644 index 0000000..8883cd4 --- /dev/null +++ b/web/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Ronnie Zhang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/web/README.EN.md b/web/README.EN.md new file mode 100644 index 0000000..f988fe8 --- /dev/null +++ b/web/README.EN.md @@ -0,0 +1,208 @@ +

+ + Vue Naive Admin Logo + +

+

+ +

+ +

+ 英文 | + 中文 +

+ +### Introduction + +[Vue Naive Admin](https://github.com/zclzone/vue-naive-admin) is a **completely open source free and commercially allowed ** admin template,Based on the latest technology stack of front-end such as `Vue3、Vite3、Pinia、Unocss and Naive UI`. Compared with other more popular backend management templates, this project is more concise, lightweight, fresh style, very low learning costs, ideal for small and medium-sized projects or personal projects. + +### Features + +- 🍒 Integrated [Naive UI](https://www.naiveui.com),recommended by Evan You. +- 🍑 Integrated login, logout and permission verification. +- 🍐 Integrated multi-environment configuration, dev, test, production and github pages environments. +- 🍎 Integrated `eslint + prettier`. +- 🍌 Integrated `husky + commitlint`. +- 🍉 Integrated `Mock`. +- 🍍 Integrated `pinia`,lightweight, simple and easy to use alternative to vuex. +- 📦 Integrated `unplugin` auto import. +- 🤹 Integrated `iconify` icon,support custom svg icons. +- 🍇 Integrated `unocss`. + +### Preview + +[https://template.isme.top](https://template.isme.top) + +[https://base.isme.top](https://base.isme.top) + +### Docs + +[Vue Naive Admin Docs](https://zclzone.github.io/vue-naive-admin-docs) + + +### Getting Started + +```shell +# Recommended setup git autocrlf 为 false +git config --global core.autocrlf false + +# Clone Project +git clone https://github.com/zclzone/vue-naive-admin.git + +cd vue-naive-admin + +# Install dependencies(Recommended use pnpm: https://pnpm.io/zh/installation) +npm i -g pnpm # Installed and can be ignored +pnpm i # or npm i + +# Start +pnpm dev +``` + +### Build and Release + +```shell +# Test Environment +pnpm build:test + +# Github Environment +pnpm build:github + +# Prod Environment +pnpm build +``` + +### Other + +```shell +# eslint check +pnpm lint + +# eslint check and fix +pnpm lint:fix + +# Preview(Need to build first) +pnpm preview + +# Commit(husky+commitlint) +pnpm cz +``` + +### Directory description + +``` +Vue Naive Admin +|-- .github // github相关,如推送github仓库后自动部署gh pages +|-- .husky // git commit钩子 +|-- .vscode // vscode编辑器相关 +| |-- extensions.json // 插件推荐 +| |-- settings.json // 项目级别的vscode配置,优先级大于全局vscode配置 +|-- build // 构建相关配置 +| |-- constant.js // 构建相关的常量 +| |-- utils.js // 构建相关的工具方法 +| |-- config +| | |-- define.js // 注入全局常量,启动或打包后将添加到window中 +| | |-- proxy.js // 代理配置 +| |-- plugin +| | |-- html.js // vite-plugin-html插件,用于注入变量或者html标签 +| | |-- mock.js // vite-plugin-mock插件,处理mock +| | |-- unplugin.js // unplugin相关插件,包含DefineOptions和自动导入 +| |-- script // 打包完成后执行的一些node脚本(不重要) +| |-- build-cname.js // 自动生成cname +|-- mock // mock +| |-- utils.js // mock请求需要用到的工具方法 +| |-- api // mock接口 +|-- public // 公共资源,文件夹下的文件会在打包后会直接加到dist根目录下 +|-- settings // 项目配置 +| |-- proxy-config.js // 代理配置文件 +| |-- theme.json // 主题配置项,主题色等 +|-- src +| |-- api // 公共api +| |-- assets // 静态资源 +| | |-- images // 图片 +| | |-- svg // svg图标 +| |-- components // 全局组件 +| | |-- common // 公共组件 +| | |-- icon // icon相关组件 +| | |-- page // 页面组件 +| | |-- query-bar // 查询选项 +| | |-- table // 封装的表格组件 +| |-- composables // 封装的组合式函数 +| |-- layout // 布局相关组件 +| | |-- components +| | |-- AppMain.vue // 主体内容 +| | |-- header // 头部 +| | |-- sidebar // 侧边菜单栏 +| | |-- tags // 多页签栏 +| |-- router // 路由 +| | |-- guard // 路由守卫 +| | |-- routes // 路由列表 +| |-- store // 状态管理(pinia) +| | |-- modules // 模块 +| | |-- app // 管理页面重新加载、折叠菜单栏和keepAlive等 +| | |-- permission // 权限相关,管理权限菜单 +| | |-- tags // 管理多页签 +| | |-- user // 用户模块,管理用户信息、登录登出 +| |-- styles // 样式 +| |-- utils // 封装的工具方法 +| | |-- auth // 权限相关,如token、跳转登录页等 +| | |-- common // 通用 +| | |-- http // 封装axios +| | |-- storage // 封装localStorage和sessionStorage +| |-- views // 页面 +| | |-- demo // 示例 +| | |-- error-page // 错误页 +| | |-- login // 登录页 +| | |-- workbench // 首页 +| |-- App.vue +| |-- main.js +|-- .cz-config.js // git提交配置 +|-- .editorconfig // 编辑器配置 +|-- .env // 环境文件,所有环境都会载入 +|-- .env.development // 开发环境文件 +|-- .env.production // 生产环境文件 +|-- .env.test // 测试环境文件 +|-- .eslintignore // eslint忽略 +|-- .eslintrc.js // eslint配置 +|-- .gitignore // git忽略 +|-- .prettierignore // prettier格式化忽略 +|-- commitlint.config.js // commitlint规范配置 +|-- index.html +|-- jsconfig.json // js配置 +|-- LICENSE // 协议 +|-- package.json // 依赖描述文件 +|-- pnpm-lock.yaml // 依赖锁定文件 +|-- prettier.config.js // prettier格式化配置 +|-- README.md // 项目描述文档(英文) +|-- README.zh-CN.md // 项目描述文档(中文) +|-- unocss.config.js // unocss配置 +|-- vite.config.js // vite配置 +``` + +### TS version: Qs Admin + +#### source code + +- github: [https://github.com/zclzone/qs-admin](https://github.com/zclzone/qs-admin) +- gitee: [https://gitee.com/zclzone/qs-admin-ts](https://gitee.com/zclzone/qs-admin-ts) + +#### preview + +- [https://admin.isme.top](https://admin.isme.top) +- [https://zclzone.github.io/qs-admin](https://zclzone.github.io/qs-admin) + +### Open source projects that use this project: + +- [gin-vue-blog](https://github.com/szluyu99/gin-vue-blog): A full-stack blog project in Golang, the frontend of the blog backend is based on vue-naive-admin and integrates with a real backend service, implementing features such as backend-controlled routing. +- [vue-fastapi-admin](https://github.com/mizhexiaoxiao/vue-fastapi-admin): A Python backend management project that integrates RBAC permission management, dynamic routing, and JWT authentication, helping small and medium-sized applications to quickly establish a foundation. + +### Communication group & About the author + + + + + + + + + diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..6291b39 --- /dev/null +++ b/web/README.md @@ -0,0 +1,229 @@ +

+ + Vue Naive Admin Logo + +

+

+ MIT License +

+ +

+ 中文 | + English +

+ +> 🎉🎉🎉 2.0 已开源,全新重构,全面简化,后端使用 nestjs + mysql + typeOrm,[👉点击前往2.0版本 | 分支 2.x](https://github.com/zclzone/vue-naive-admin/tree/2.x), + +- 体验地址: [admin.isme.top](https://admin.isme.top) +- 后端服务: [isme-nest-serve](https://github.com/zclzone/isme-nest-serve) +- 文档: [vue-naive-admin-docs](https://docs.isme.top/web/#/624306705) + +### 简介 + +[Vue Naive Admin](https://github.com/zclzone/vue-naive-admin) 是一个 **开源免费且允许商用** 的后台管理模板,基于 `Vue3、Vite4、Pinia、Unocss 和 Naive UI` 等前端最新技术栈。相较于其他比较流行的后台管理模板,此项目更加简洁、轻量,风格清新,上手成本非常低,非常适合中小型项目或者个人项目。 + +### 功能 + +- 🍒 集成 [Naive UI](https://www.naiveui.com) +- 🍑 集成登陆、注销及权限验证 +- 🍐 集成多环境配置,dev、测试、生产环境 +- 🍎 集成 `eslint + prettier`,代码约束和格式化统一 +- 🍌 集成 `husky + commitlint`,代码提交规范化 +- 🍉 集成 `mock` 接口服务,dev 环境和发布环境都支持,可动态配置是否启用 mock 服务,不启用时不会加载 mock 包,减少打包体积 +- 🍍 集成 `pinia`,vuex 的替代方案,轻量、简单、易用 +- 📦 集成 `unplugin` 插件,自动导入,解放双手,开发效率直接起飞 +- 🤹 集成 `iconify` 图标,支持自定义 svg 图标, 优雅使用icon +- 🍇 集成 `unocss`,antfu 开源的原子 css 解决方案,非常轻量 + +> ✨✨ 双十一香港特惠服务器推荐,~~**2C4G 100M** `71/年` `142/两年`~~,[👉点击前往](https://blog.isme.top/vps-recommend/) + +### 预览 + +[https://template.isme.top](https://template.isme.top) + +[https://base.isme.top](https://base.isme.top) + +### 文档 + +项目文档: [Vue Naive Admin Docs](https://zclzone.github.io/vue-naive-admin-docs) + +从0到1搭建后台: [从0到1,带你搭建Vite+Vue3+Pinia+Naive UI后台](https://juejin.cn/column/7093180796424421384) + +如何安装pnpm: [安装pnpm](docs/安装pnpm.md) + +如何使用图标: [使用图标](docs/使用图标.md) + +如何使用unocss: [保熟的UnoCSS使用指北,优雅使用antfu大佬的原子化CSS](https://juejin.cn/post/7142466784971456548) + +### 快速开始 + +```shell +# 推荐配置git autocrlf 为 false(本项目规范使用lf换行符,此配置是为防止git自动将源文件转换为crlf) +# 不清楚为什么要这样做的请参考这篇文章:https://www.freesion.com/article/4532642129 +git config --global core.autocrlf false + +# 克隆项目 +git clone https://github.com/zclzone/vue-naive-admin.git + +# 进入项目目录 +cd vue-naive-admin + +# 安装依赖(建议使用pnpm: https://pnpm.io/zh/installation) +npm i -g pnpm # 装了可忽略 +pnpm i # 或者 npm i + +# 启动 +pnpm dev +``` + +### 构建发布 + +```shell +# 构建测试环境 +pnpm build:test + +# 构建github pages环境 +pnpm build:github + +# 构建生产环境 +pnpm build +``` + +### 其他指令 + +```shell +# eslint代码格式检查 +pnpm lint + +# 代码检查并修复 +pnpm lint:fix + +# 预览发布包效果(需先执行构建指令) +pnpm preview + +# 提交代码(husky+commitlint) +pnpm cz +``` + + +### 目录说明 + +``` +Vue Naive Admin +|-- .github // github相关,如推送github仓库后自动部署gh pages +|-- .husky // git commit钩子 +|-- .vscode // vscode编辑器相关 +| |-- extensions.json // 插件推荐 +| |-- settings.json // 项目级别的vscode配置,优先级大于全局vscode配置 +|-- build // 构建相关配置 +| |-- constant.js // 构建相关的常量 +| |-- utils.js // 构建相关的工具方法 +| |-- config +| | |-- define.js // 注入全局常量,启动或打包后将添加到window中 +| | |-- proxy.js // 代理配置 +| |-- plugin +| | |-- html.js // vite-plugin-html插件,用于注入变量或者html标签 +| | |-- mock.js // vite-plugin-mock插件,处理mock +| | |-- unplugin.js // unplugin相关插件,包含DefineOptions和自动导入 +| |-- script // 打包完成后执行的一些node脚本(不重要) +| |-- build-cname.js // 自动生成cname +|-- mock // mock +| |-- utils.js // mock请求需要用到的工具方法 +| |-- api // mock接口 +|-- public // 公共资源,文件夹下的文件会在打包后会直接加到dist根目录下 +|-- settings // 项目配置 +| |-- proxy-config.js // 代理配置文件 +| |-- theme.json // 主题配置项,主题色等 +|-- src +| |-- api // 公共api +| |-- assets // 静态资源 +| | |-- images // 图片 +| | |-- svg // svg图标 +| |-- components // 全局组件 +| | |-- common // 公共组件 +| | |-- icon // icon相关组件 +| | |-- page // 页面组件 +| | |-- query-bar // 查询选项 +| | |-- table // 封装的表格组件 +| |-- composables // 封装的组合式函数 +| |-- layout // 布局相关组件 +| | |-- components +| | |-- AppMain.vue // 主体内容 +| | |-- header // 头部 +| | |-- sidebar // 侧边菜单栏 +| | |-- tags // 多页签栏 +| |-- router // 路由 +| | |-- guard // 路由守卫 +| | |-- routes // 路由列表 +| |-- store // 状态管理(pinia) +| | |-- modules // 模块 +| | |-- app // 管理页面重新加载、折叠菜单栏和keepAlive等 +| | |-- permission // 权限相关,管理权限菜单 +| | |-- tags // 管理多页签 +| | |-- user // 用户模块,管理用户信息、登录登出 +| |-- styles // 样式 +| |-- utils // 封装的工具方法 +| | |-- auth // 权限相关,如token、跳转登录页等 +| | |-- common // 通用 +| | |-- http // 封装axios +| | |-- storage // 封装localStorage和sessionStorage +| |-- views // 页面 +| | |-- demo // 示例 +| | |-- error-page // 错误页 +| | |-- login // 登录页 +| | |-- workbench // 首页 +| |-- App.vue +| |-- main.js +|-- .cz-config.js // git提交配置 +|-- .editorconfig // 编辑器配置 +|-- .env // 环境文件,所有环境都会载入 +|-- .env.development // 开发环境文件 +|-- .env.production // 生产环境文件 +|-- .env.test // 测试环境文件 +|-- .eslintignore // eslint忽略 +|-- .eslintrc.js // eslint配置 +|-- .gitignore // git忽略 +|-- .prettierignore // prettier格式化忽略 +|-- commitlint.config.js // commitlint规范配置 +|-- index.html +|-- jsconfig.json // js配置 +|-- LICENSE // 协议 +|-- package.json // 依赖描述文件 +|-- pnpm-lock.yaml // 依赖锁定文件 +|-- prettier.config.js // prettier格式化配置 +|-- README.md // 项目描述文档(英文) +|-- README.zh-CN.md // 项目描述文档(中文) +|-- unocss.config.js // unocss配置 +|-- vite.config.js // vite配置 +``` + +### TS 版本: Qs Admin + +#### 源码 + +- github: [https://github.com/zclzone/qs-admin](https://github.com/zclzone/qs-admin) +- gitee: [https://gitee.com/zclzone/qs-admin-ts](https://gitee.com/zclzone/qs-admin-ts) + +#### 预览 + +- [https://admin.isme.top](https://admin.isme.top) +- [https://zclzone.github.io/qs-admin](https://zclzone.github.io/qs-admin) + +### 使用该项目的开源项目 + +- [gin-vue-blog](https://github.com/szluyu99/gin-vue-blog): Golang 全栈博客项目, 博客后台的前端基于 vue-naive-admin,对接真实后端服务,实现了后端控制路由等特性。 +- [vue-fastapi-admin](https://github.com/mizhexiaoxiao/vue-fastapi-admin): Python 后台管理项目, 融合了 RBAC 权限管理、动态路由,JWT 鉴权,助力中小型应用快速搭建。 + +### 入群交流 & 关于作者 + + + + + +### ☕ 赞助我 + +> 开源不易,请作者喝杯咖啡吧 +

+ + +

diff --git a/web/build/constant.js b/web/build/constant.js new file mode 100644 index 0000000..c7e96a3 --- /dev/null +++ b/web/build/constant.js @@ -0,0 +1,33 @@ +export const OUTPUT_DIR = 'dist' + +export const PROXY_CONFIG = { + /** + * @desc 替换匹配值 + * @请求路径 http://localhost:3100/api/user + * @转发路径 http://localhost:8080/user + */ + '/api': { + target: 'http://localhost:6687/api', + changeOrigin: true, + rewrite: (path) => path.replace(new RegExp('^/api'), ''), + }, + /** + * @desc 不替换匹配值 + * @请求路径 http://localhost:3100/api/v2/user + * @转发路径 http://localhost:8080/api/v2/user + */ + '/api/v2': { + target: 'http://localhost:8080', + changeOrigin: true, + }, + /** + * @desc 替换部分匹配值 + * @请求路径 http://localhost:3100/api/v3/user + * @转发路径 http://localhost:8080/user + */ + '/api/v3': { + target: 'http://localhost:8080', + changeOrigin: true, + rewrite: (path) => path.replace(new RegExp('^/api'), ''), + }, +} diff --git a/web/build/plugin/html.js b/web/build/plugin/html.js new file mode 100644 index 0000000..7ed7f76 --- /dev/null +++ b/web/build/plugin/html.js @@ -0,0 +1,15 @@ +import { createHtmlPlugin } from 'vite-plugin-html' + +export function configHtmlPlugin(viteEnv, isBuild) { + const { VITE_TITLE } = viteEnv + + const htmlPlugin = createHtmlPlugin({ + minify: isBuild, + inject: { + data: { + title: VITE_TITLE, + }, + }, + }) + return htmlPlugin +} diff --git a/web/build/plugin/index.js b/web/build/plugin/index.js new file mode 100644 index 0000000..4b6cb01 --- /dev/null +++ b/web/build/plugin/index.js @@ -0,0 +1,42 @@ +import vue from '@vitejs/plugin-vue' + +/** + * * unocss插件,原子css + * https://github.com/antfu/unocss + */ +import Unocss from 'unocss/vite' + +// rollup打包分析插件 +import visualizer from 'rollup-plugin-visualizer' +// 压缩 +import viteCompression from 'vite-plugin-compression' +// vite-vuedevtool +import VueDevTools from 'vite-plugin-vue-devtools' + +import { configHtmlPlugin } from './html' +import { configMockPlugin } from './mock' +import unplugin from './unplugin' + +export function createVitePlugins(viteEnv, isBuild) { + const plugins = [VueDevTools(), vue(), ...unplugin, configHtmlPlugin(viteEnv, isBuild), Unocss()] + + if (viteEnv?.VITE_USE_MOCK) { + plugins.push(configMockPlugin(isBuild)) + } + + if (viteEnv.VITE_USE_COMPRESS) { + plugins.push(viteCompression({ algorithm: viteEnv.VITE_COMPRESS_TYPE || 'gzip' })) + } + + if (isBuild) { + plugins.push( + visualizer({ + open: true, + gzipSize: true, + brotliSize: true, + }) + ) + } + + return plugins +} diff --git a/web/build/plugin/mock.js b/web/build/plugin/mock.js new file mode 100644 index 0000000..1f77196 --- /dev/null +++ b/web/build/plugin/mock.js @@ -0,0 +1,13 @@ +import { viteMockServe } from 'vite-plugin-mock' + +export function configMockPlugin(isBuild) { + return viteMockServe({ + mockPath: 'mock/api', + localEnabled: !isBuild, + prodEnabled: isBuild, + injectCode: ` + import { setupProdMockServer } from '../mock'; + setupProdMockServer(); + `, + }) +} diff --git a/web/build/plugin/unplugin.js b/web/build/plugin/unplugin.js new file mode 100644 index 0000000..3277682 --- /dev/null +++ b/web/build/plugin/unplugin.js @@ -0,0 +1,46 @@ +import { resolve } from 'path' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { NaiveUiResolver } from 'unplugin-vue-components/resolvers' +import { FileSystemIconLoader } from 'unplugin-icons/loaders' +import IconsResolver from 'unplugin-icons/resolver' + +/** + * * unplugin-icons插件,自动引入iconify图标 + * usage: https://github.com/antfu/unplugin-icons + * 图标库: https://icones.js.org/ + */ +import Icons from 'unplugin-icons/vite' +import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' + +import { getSrcPath } from '../utils' + +const customIconPath = resolve(getSrcPath(), 'assets/svg') + +export default [ + AutoImport({ + imports: ['vue', 'vue-router'], + dts: false, + }), + Icons({ + compiler: 'vue3', + customCollections: { + custom: FileSystemIconLoader(customIconPath), + }, + scale: 1, + defaultClass: 'inline-block', + }), + Components({ + resolvers: [ + NaiveUiResolver(), + IconsResolver({ customCollections: ['custom'], componentPrefix: 'icon' }), + ], + dts: false, + }), + createSvgIconsPlugin({ + iconDirs: [customIconPath], + symbolId: 'icon-custom-[dir]-[name]', + inject: 'body-last', + customDomId: '__CUSTOM_SVG_ICON__', + }), +] diff --git a/web/build/script/build-cname.js b/web/build/script/build-cname.js new file mode 100644 index 0000000..7658c98 --- /dev/null +++ b/web/build/script/build-cname.js @@ -0,0 +1,15 @@ +import { resolve } from 'path' +import chalk from 'chalk' +import { writeFileSync } from 'fs-extra' +import { OUTPUT_DIR } from '../constant' +import { getEnvConfig, getRootPath } from '../utils' + +export function runBuildCNAME() { + const { VITE_CNAME } = getEnvConfig() + if (!VITE_CNAME) return + try { + writeFileSync(resolve(getRootPath(), `${OUTPUT_DIR}/CNAME`), VITE_CNAME) + } catch (error) { + console.log(chalk.red('CNAME file failed to package:\n' + error)) + } +} diff --git a/web/build/script/index.js b/web/build/script/index.js new file mode 100644 index 0000000..e0efeb0 --- /dev/null +++ b/web/build/script/index.js @@ -0,0 +1,14 @@ +import chalk from 'chalk' +import { runBuildCNAME } from './build-cname' + +export const runBuild = async () => { + try { + runBuildCNAME() + console.log(`✨ ${chalk.cyan('build successfully!')}`) + } catch (error) { + console.log(chalk.red('vite build error:\n' + error)) + process.exit(1) + } +} + +runBuild() diff --git a/web/build/utils.js b/web/build/utils.js new file mode 100644 index 0000000..ee244cc --- /dev/null +++ b/web/build/utils.js @@ -0,0 +1,70 @@ +import fs from 'fs' +import path from 'path' +import dotenv from 'dotenv' + +/** + * * 项目根路径 + * @description 结尾不带/ + */ +export function getRootPath() { + return path.resolve(process.cwd()) +} + +/** + * * 项目src路径 + * @param srcName src目录名称(默认: "src") + * @description 结尾不带斜杠 + */ +export function getSrcPath(srcName = 'src') { + return path.resolve(getRootPath(), srcName) +} + +export function convertEnv(envOptions) { + const result = {} + if (!envOptions) return result + + for (const envKey in envOptions) { + let envVal = envOptions[envKey] + if (['true', 'false'].includes(envVal)) envVal = envVal === 'true' + + if (['VITE_PORT'].includes(envKey)) envVal = +envVal + + result[envKey] = envVal + } + return result +} + +/** + * 获取当前环境下生效的配置文件名 + */ +function getConfFiles() { + const script = process.env.npm_lifecycle_script + const reg = new RegExp('--mode ([a-z_\\d]+)') + const result = reg.exec(script) + if (result) { + const mode = result[1] + return ['.env', '.env.local', `.env.${mode}`] + } + return ['.env', '.env.local', '.env.production'] +} + +export function getEnvConfig(match = 'VITE_', confFiles = getConfFiles()) { + let envConfig = {} + confFiles.forEach((item) => { + try { + if (fs.existsSync(path.resolve(process.cwd(), item))) { + const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item))) + envConfig = { ...envConfig, ...env } + } + } catch (e) { + console.error(`Error in parsing ${item}`, e) + } + }) + const reg = new RegExp(`^(${match})`) + Object.keys(envConfig).forEach((key) => { + if (!reg.test(key)) { + Reflect.deleteProperty(envConfig, key) + } + }) + return envConfig +} diff --git a/web/commitlint.config.js b/web/commitlint.config.js new file mode 100644 index 0000000..3046313 --- /dev/null +++ b/web/commitlint.config.js @@ -0,0 +1,26 @@ +module.exports = { + ignores: [(commit) => commit.includes('init')], + extends: ['@commitlint/config-conventional'], + rules: { + 'type-enum': [ + 2, + 'always', + [ + 'feat', + 'fix', + 'docs', + 'style', + 'refactor', + 'perf', + 'test', + 'build', + 'ci', + 'chore', + 'revert', + 'wip', + 'mod', + 'release', + ], + ], + }, +} diff --git a/web/docker/web.conf b/web/docker/web.conf new file mode 100644 index 0000000..8ac858d --- /dev/null +++ b/web/docker/web.conf @@ -0,0 +1,26 @@ +server { + listen 80; + server_name localhost; + + proxy_send_timeout 600s; # 设置发送超时时间, + proxy_read_timeout 600s; # 设置读取超时时间。 + + # 前端打包好的dist目录文件 + root /data/; + + location / { + try_files $uri $uri/ /index.html; + } + + # 若新增后端路由前缀注意在此处添加(|新增) + location ^~ /api/ { + proxy_pass http://wireguard-srv:6687; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Forwarded-Proto $scheme; + } +} \ No newline at end of file diff --git a/web/docs/使用unocss.md b/web/docs/使用unocss.md new file mode 100644 index 0000000..083dd40 --- /dev/null +++ b/web/docs/使用unocss.md @@ -0,0 +1,3 @@ +推荐阅读作者在掘金的文章: + +[保熟的UnoCSS使用指北,优雅使用antfu大佬的原子化CSS](https://juejin.cn/post/7142466784971456548) \ No newline at end of file diff --git a/web/docs/使用图标.md b/web/docs/使用图标.md new file mode 100644 index 0000000..8e0bf91 --- /dev/null +++ b/web/docs/使用图标.md @@ -0,0 +1,40 @@ +## 使用 iconify 图标 + +首先去图标库地址:[icones](https://icones.js.org/) 找合适的图标 + +### 1. 结合 unocss 使用 + +```html + + +``` + +### 2. 结合插件 unplugin-icons 自定义标签使用 + +` + +``` + +这种方式还支持自定义 svg 图标,本项目自定义 svg 图标固定放在 src/assets/svg 下 + +` +``` + +具体配置参看 build/plugin/unplugin.js + +### 3. 结合 Naive UI 的 NIcon 组件封装使用 + +```html + + + + +``` + +封装组件参看 src/components/icon \ No newline at end of file diff --git a/web/docs/安装pnpm.md b/web/docs/安装pnpm.md new file mode 100644 index 0000000..72032c9 --- /dev/null +++ b/web/docs/安装pnpm.md @@ -0,0 +1,32 @@ +## 安装pnpm + +### 使用Corepack安装(推荐) + +从 v16.13 开始,Node.js 发布了 Corepack 来管理包管理器。 这是一项实验性功能,需要通过运行如下脚本来启用它: + +``` +npx corepack enable // 可能需要管理员权限 +``` + +这将自动在您的系统上安装 pnpm。 但是,它可能不是最新版本的 pnpm。 若要升级,请检查[最新的 pnpm 版本](https://github.com/pnpm/pnpm/releases/latest) 并运行,如 7.14.0 +``` +corepack prepare pnpm@7.14.0 --activate +``` + +如果是 Node.js v16.17 或者更新的版本,可以直接安装最新版本的 pnpm +``` +corepack prepare pnpm@latest --activate +``` + +### 使用npm安装 + +``` +npm i -g pnpm +``` + +更新,卸了重新装 + +``` +npm uninstall -g pnpm +npm i -g pnpm +``` \ No newline at end of file diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..7e3e725 --- /dev/null +++ b/web/index.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + <%= title %> + + + +
+ +
+ logo +
+
+
+
+
+
+
+
+
<%= title %>
+
+ +
+ + + diff --git a/web/jsconfig.json b/web/jsconfig.json new file mode 100644 index 0000000..270b986 --- /dev/null +++ b/web/jsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": ["src/*"], + "~/*": ["./*"] + }, + "jsx": "preserve", + "allowJs": true + }, + "exclude": ["node_modules", "dist"] +} diff --git a/web/mock/api/auth.js b/web/mock/api/auth.js new file mode 100644 index 0000000..fac75b4 --- /dev/null +++ b/web/mock/api/auth.js @@ -0,0 +1,40 @@ +import { resolveToken } from '../utils' + +const token = { + admin: 'admin', + editor: 'editor', +} + +export default [ + { + url: '/api/auth/login', + method: 'post', + response: ({ body }) => { + if (['admin', 'editor'].includes(body?.name)) { + return { + code: 0, + data: { + token: token[body.name], + }, + } + } else { + return { + code: -1, + message: '没有此用户', + } + } + }, + }, + { + url: '/api/auth/refreshToken', + method: 'post', + response: ({ headers }) => { + return { + code: 0, + data: { + token: resolveToken(headers?.authorization), + }, + } + }, + }, +] diff --git a/web/mock/api/index.js b/web/mock/api/index.js new file mode 100644 index 0000000..03c2a8f --- /dev/null +++ b/web/mock/api/index.js @@ -0,0 +1,5 @@ +import auth from './auth' +import user from './user' +import post from './post' + +export default [...auth, ...user, ...post] diff --git a/web/mock/api/post.js b/web/mock/api/post.js new file mode 100644 index 0000000..b6c3e54 --- /dev/null +++ b/web/mock/api/post.js @@ -0,0 +1,138 @@ +const posts = [ + { + title: '使用纯css优雅配置移动端rem布局', + author: '大脸怪', + category: 'Css', + description: '通常配置rem布局会使用js进行处理,比如750的设计稿会这样...', + content: '通常配置rem布局会使用js进行处理,比如750的设计稿会这样', + isRecommend: true, + isPublish: true, + createDate: '2021-11-04T04:03:36.000Z', + updateDate: '2021-11-04T04:03:36.000Z', + }, + { + title: 'Vue2&Vue3项目风格指南', + author: 'Ronnie', + category: 'Vue', + description: '总结的Vue2和Vue3的项目风格', + content: '### 1. 命名风格\n\n> 文件夹如果是由多个单词组成,应该始终是横线连接 ', + isRecommend: true, + isPublish: true, + createDate: '2021-10-25T08:57:47.000Z', + updateDate: '2022-02-28T04:02:39.000Z', + }, + { + title: '如何优雅的给图片添加水印', + author: '大脸怪', + category: 'JavaScript', + description: '优雅的给图片添加水印', + content: '我之前写过一篇文章记录了一次上传图片的优化史', + isRecommend: true, + isPublish: true, + createDate: '2021-06-24T18:46:19.000Z', + updateDate: '2021-09-23T07:51:22.000Z', + }, + + { + title: '前端缓存的理解', + author: '大脸怪', + category: 'Http', + description: '谈谈前端缓存的理解', + content: + '> 背景\n\n公司有个vue-cli3移动端web项目发版更新后发现部分用户手机在钉钉内置浏览器打开出现了缓存', + isRecommend: true, + isPublish: true, + createDate: '2021-06-10T18:51:19.000Z', + updateDate: '2021-09-17T09:33:24.000Z', + }, + { + title: 'Promise的五个静态方法', + author: '大脸怪', + category: 'JavaScript', + description: '简单介绍下在 Promise 类中,有5 种静态方法及它们的使用场景', + content: + '## 1. Promise.all\n\n并行执行多个 promise,并等待所有 promise 都准备就绪。再对它们进行处理。', + isRecommend: true, + isPublish: true, + createDate: '2021-02-22T22:37:06.000Z', + updateDate: '2021-09-17T09:33:24.000Z', + }, +] + +export default [ + { + url: '/api/posts', + method: 'get', + response: (data = {}) => { + const { title, pageNo, pageSize } = data.query + let pageData = [] + let total = 60 + const filterData = posts.filter( + (item) => item.title.includes(title) || (!title && title !== 0) + ) + if (filterData.length) { + if (pageSize) { + while (pageData.length < pageSize) { + pageData.push(filterData[Math.round(Math.random() * (filterData.length - 1))]) + } + } else { + pageData = filterData + } + pageData = pageData.map((item, index) => ({ + id: pageSize * (pageNo - 1) + index + 1, + ...item, + })) + } else { + total = 0 + } + return { + code: 0, + message: 'ok', + data: { + pageData, + total, + pageNo, + pageSize, + }, + } + }, + }, + { + url: '/api/post', + method: 'post', + response: ({ body }) => { + return { + code: 0, + message: 'ok', + data: body, + } + }, + }, + { + url: '/api/post/:id', + method: 'put', + response: ({ query, body }) => { + return { + code: 0, + message: 'ok', + data: { + id: query.id, + body, + }, + } + }, + }, + { + url: '/api/post/:id', + method: 'delete', + response: ({ query }) => { + return { + code: 0, + message: 'ok', + data: { + id: query.id, + }, + } + }, + }, +] diff --git a/web/mock/api/user.js b/web/mock/api/user.js new file mode 100644 index 0000000..10dcdd8 --- /dev/null +++ b/web/mock/api/user.js @@ -0,0 +1,39 @@ +import { resolveToken } from '../utils' + +const users = { + admin: { + id: 1, + name: '大脸怪(admin)', + avatar: 'https://static.isme.top/images/avatar.jpg', + email: 'Ronnie@123.com', + role: ['admin'], + }, + editor: { + id: 2, + name: '大脸怪(editor)', + avatar: 'https://static.isme.top/images/avatar.jpg', + email: 'Ronnie@123.com', + role: ['editor'], + }, + guest: { + id: 3, + name: '访客(guest)', + avatar: 'https://static.isme.top/images/avatar.jpg', + role: [], + }, +} +export default [ + { + url: '/api/user', + method: 'get', + response: ({ headers }) => { + const token = resolveToken(headers?.authorization) + return { + code: 0, + data: { + ...(users[token] || users.guest), + }, + } + }, + }, +] diff --git a/web/mock/index.js b/web/mock/index.js new file mode 100644 index 0000000..5f493ec --- /dev/null +++ b/web/mock/index.js @@ -0,0 +1,6 @@ +import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer' +import api from './api' + +export function setupProdMockServer() { + createProdMockServer(api) +} diff --git a/web/mock/utils.js b/web/mock/utils.js new file mode 100644 index 0000000..57cd992 --- /dev/null +++ b/web/mock/utils.js @@ -0,0 +1,12 @@ +export function resolveToken(authorization) { + /** + * * jwt token + * * Bearer + token + * ! 认证方案: Bearer + */ + const reqTokenSplit = authorization.split(' ') + if (reqTokenSplit.length === 2) { + return reqTokenSplit[1] + } + return '' +} diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..6244c83 --- /dev/null +++ b/web/package.json @@ -0,0 +1,82 @@ +{ + "name": "vue-naive-admin", + "version": "1.0.0", + "scripts": { + "build": "vite build", + "build:github": "vite build --mode github && esno ./build/script", + "build:test": "vite build --mode test", + "cz": "cz", + "dev": "vite", + "lint": "eslint --ext .js,.vue .", + "lint:fix": "eslint --fix --ext .js,.vue .", + "lint:staged": "lint-staged", + "prepare": "husky install", + "preview": "vite preview" + }, + "lint-staged": { + "*.{js,vue}": [ + "eslint --ext .js,.vue ." + ] + }, + "config": { + "commitizen": { + "path": "node_modules/cz-customizable" + } + }, + "eslintConfig": { + "extends": [ + "@zclzone", + "@unocss", + ".eslint-global-variables.json" + ] + }, + "dependencies": { + "@unocss/eslint-config": "^0.55.7", + "@vueuse/core": "^10.4.1", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "5.1.12", + "axios": "^1.5.1", + "dayjs": "^1.11.10", + "echarts": "^5.4.3", + "lodash-es": "^4.17.21", + "md-editor-v3": "^4.7.0", + "mockjs": "^1.1.0", + "pinia": "^2.1.6", + "vite": "^4.4.11", + "vue": "3.3.4", + "vue-echarts": "^6.6.1", + "vue-router": "^4.2.5", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@commitlint/cli": "^17.7.2", + "@commitlint/config-conventional": "^17.7.0", + "@iconify/json": "^2.2.125", + "@iconify/vue": "^4.1.1", + "@unocss/preset-rem-to-px": "^0.55.7", + "@vitejs/plugin-vue": "^4.4.0", + "@vue/compiler-sfc": "^3.3.4", + "@zclzone/eslint-config": "^0.0.5", + "chalk": "^5.3.0", + "commitizen": "^4.3.0", + "cz-conventional-changelog": "^3.3.0", + "cz-customizable": "^7.0.0", + "dotenv": "^16.3.1", + "esno": "^0.17.0", + "fs-extra": "^11.1.1", + "husky": "^8.0.3", + "lint-staged": "^14.0.1", + "naive-ui": "^2.39.0", + "rollup-plugin-visualizer": "^5.9.2", + "sass": "^1.69.0", + "unocss": "0.55.3", + "unplugin-auto-import": "^0.16.6", + "unplugin-icons": "^0.16.6", + "unplugin-vue-components": "^0.25.2", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-html": "^3.2.0", + "vite-plugin-mock": "2.9.6", + "vite-plugin-svg-icons": "^2.0.1", + "vite-plugin-vue-devtools": "1.0.0-rc.7" + } +} diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml new file mode 100644 index 0000000..eec360c --- /dev/null +++ b/web/pnpm-lock.yaml @@ -0,0 +1,8992 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@unocss/eslint-config': + specifier: ^0.55.7 + version: 0.55.7(eslint@8.50.0)(typescript@5.2.2) + '@vueuse/core': + specifier: ^10.4.1 + version: 10.4.1(vue@3.3.4) + '@wangeditor/editor': + specifier: ^5.1.23 + version: 5.1.23 + '@wangeditor/editor-for-vue': + specifier: 5.1.12 + version: 5.1.12(@wangeditor/editor@5.1.23)(vue@3.3.4) + axios: + specifier: ^1.5.1 + version: 1.5.1 + dayjs: + specifier: ^1.11.10 + version: 1.11.10 + echarts: + specifier: ^5.4.3 + version: 5.4.3 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + md-editor-v3: + specifier: ^4.7.0 + version: 4.7.0(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0)(vue@3.3.4) + mockjs: + specifier: ^1.1.0 + version: 1.1.0 + pinia: + specifier: ^2.1.6 + version: 2.1.6(typescript@5.2.2)(vue@3.3.4) + vite: + specifier: ^4.4.11 + version: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + vue: + specifier: 3.3.4 + version: 3.3.4 + vue-echarts: + specifier: ^6.6.1 + version: 6.6.1(echarts@5.4.3)(vue@3.3.4) + vue-router: + specifier: ^4.2.5 + version: 4.2.5(vue@3.3.4) + xlsx: + specifier: ^0.18.5 + version: 0.18.5 + devDependencies: + '@commitlint/cli': + specifier: ^17.7.2 + version: 17.7.2 + '@commitlint/config-conventional': + specifier: ^17.7.0 + version: 17.7.0 + '@iconify/json': + specifier: ^2.2.125 + version: 2.2.125 + '@iconify/vue': + specifier: ^4.1.1 + version: 4.1.1(vue@3.3.4) + '@unocss/preset-rem-to-px': + specifier: ^0.55.7 + version: 0.55.7 + '@vitejs/plugin-vue': + specifier: ^4.4.0 + version: 4.4.0(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0))(vue@3.3.4) + '@vue/compiler-sfc': + specifier: ^3.3.4 + version: 3.3.4 + '@zclzone/eslint-config': + specifier: ^0.0.5 + version: 0.0.5 + chalk: + specifier: ^5.3.0 + version: 5.3.0 + commitizen: + specifier: ^4.3.0 + version: 4.3.0 + cz-conventional-changelog: + specifier: ^3.3.0 + version: 3.3.0 + cz-customizable: + specifier: ^7.0.0 + version: 7.0.0 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 + esno: + specifier: ^0.17.0 + version: 0.17.0 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + husky: + specifier: ^8.0.3 + version: 8.0.3 + lint-staged: + specifier: ^14.0.1 + version: 14.0.1 + naive-ui: + specifier: ^2.39.0 + version: 2.39.0(vue@3.3.4) + rollup-plugin-visualizer: + specifier: ^5.9.2 + version: 5.9.2(rollup@3.29.4) + sass: + specifier: ^1.69.0 + version: 1.69.0 + unocss: + specifier: 0.55.3 + version: 0.55.3(postcss@5.2.18)(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + unplugin-auto-import: + specifier: ^0.16.6 + version: 0.16.6(@vueuse/core@10.4.1(vue@3.3.4))(rollup@3.29.4) + unplugin-icons: + specifier: ^0.16.6 + version: 0.16.6(@vue/compiler-sfc@3.3.4)(vue-template-compiler@2.7.15) + unplugin-vue-components: + specifier: ^0.25.2 + version: 0.25.2(@babel/parser@7.25.3)(rollup@3.29.4)(vue@3.3.4) + vite-plugin-compression: + specifier: ^0.5.1 + version: 0.5.1(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + vite-plugin-html: + specifier: ^3.2.0 + version: 3.2.0(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + vite-plugin-mock: + specifier: 2.9.6 + version: 2.9.6(mockjs@1.1.0)(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + vite-plugin-svg-icons: + specifier: ^2.0.1 + version: 2.0.1(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + vite-plugin-vue-devtools: + specifier: 1.0.0-rc.7 + version: 1.0.0-rc.7(pug@3.0.2)(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + +packages: + + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@ampproject/remapping@2.2.1': + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + + '@antfu/install-pkg@0.1.1': + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + + '@antfu/utils@0.7.6': + resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==} + + '@babel/code-frame@7.22.13': + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.23.5': + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.23.5': + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.23.5': + resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.23.5': + resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.22.5': + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.22.15': + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.23.5': + resolution: {integrity: sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.23.0': + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.22.15': + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.23.3': + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.22.5': + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.22.5': + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.22.20': + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.22.5': + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.23.4': + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.23.5': + resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.22.20': + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.23.4': + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.23.0': + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.23.5': + resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.25.3': + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-proposal-decorators@7.23.5': + resolution: {integrity: sha512-6IsY8jOeWibsengGlWIezp7cuZEFzNlAghFpzh9wiZwhQ42/hRcPnY/QV9HJoKTlujupinSlnQPiEy/u2C1ZfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.23.3': + resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.23.3': + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.23.3': + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.23.3': + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.23.5': + resolution: {integrity: sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.23.1': + resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.22.15': + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.23.5': + resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.23.0': + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.23.5': + resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + + '@codemirror/autocomplete@6.9.2': + resolution: {integrity: sha512-suItGf7PhtfgQMCd8ofYzycdsAHDBB8BkNrmyxeLvptW7yNT6zGT6ZzwhAfmB94TUyAAStrHjaDGC4/foenF2A==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + + '@codemirror/commands@6.3.0': + resolution: {integrity: sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q==} + + '@codemirror/lang-angular@0.1.2': + resolution: {integrity: sha512-Nq7lmx9SU+JyoaRcs6SaJs7uAmW2W06HpgJVQYeZptVGNWDzDvzhjwVb/ZuG1rwTlOocY4Y9GwNOBuKCeJbKtw==} + + '@codemirror/lang-cpp@6.0.2': + resolution: {integrity: sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==} + + '@codemirror/lang-css@6.2.1': + resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==} + + '@codemirror/lang-html@6.4.6': + resolution: {integrity: sha512-E4C8CVupBksXvgLSme/zv31x91g06eZHSph7NczVxZW+/K+3XgJGWNT//2WLzaKSBoxpAjaOi5ZnPU1SHhjh3A==} + + '@codemirror/lang-java@6.0.1': + resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==} + + '@codemirror/lang-javascript@6.2.1': + resolution: {integrity: sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==} + + '@codemirror/lang-json@6.0.1': + resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} + + '@codemirror/lang-less@6.0.1': + resolution: {integrity: sha512-ABcsKBjLbyPZwPR5gePpc8jEKCQrFF4pby2WlMVdmJOOr7OWwwyz8DZonPx/cKDE00hfoSLc8F7yAcn/d6+rTQ==} + + '@codemirror/lang-markdown@6.2.2': + resolution: {integrity: sha512-wmwM9Y5n/e4ndU51KcYDaQnb9goYdhXjU71dDW9goOc1VUTIPph6WKAPdJ6BzC0ZFy+UTsDwTXGWSP370RH69Q==} + + '@codemirror/lang-php@6.0.1': + resolution: {integrity: sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==} + + '@codemirror/lang-python@6.1.3': + resolution: {integrity: sha512-S9w2Jl74hFlD5nqtUMIaXAq9t5WlM0acCkyuQWUUSvZclk1sV+UfnpFiZzuZSG+hfEaOmxKR5UxY/Uxswn7EhQ==} + + '@codemirror/lang-rust@6.0.1': + resolution: {integrity: sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==} + + '@codemirror/lang-sass@6.0.2': + resolution: {integrity: sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==} + + '@codemirror/lang-sql@6.5.4': + resolution: {integrity: sha512-5Gq7fYtT/5HbNyIG7a8vYaqOYQU3JbgtBe3+derkrFUXRVcjkf8WVgz++PIbMFAQsOFMDdDR+uiNM8ZRRuXH+w==} + + '@codemirror/lang-vue@0.1.2': + resolution: {integrity: sha512-D4YrefiRBAr+CfEIM4S3yvGSbYW+N69mttIfGMEf7diHpRbmygDxS+R/5xSqjgtkY6VO6qmUrre1GkRcWeZa9A==} + + '@codemirror/lang-wast@6.0.1': + resolution: {integrity: sha512-sQLsqhRjl2MWG3rxZysX+2XAyed48KhLBHLgq9xcKxIJu3npH/G+BIXW5NM5mHeDUjG0jcGh9BcjP0NfMStuzA==} + + '@codemirror/lang-xml@6.0.2': + resolution: {integrity: sha512-JQYZjHL2LAfpiZI2/qZ/qzDuSqmGKMwyApYmEUUCTxLM4MWS7sATUEfIguZQr9Zjx/7gcdnewb039smF6nC2zw==} + + '@codemirror/language-data@6.3.1': + resolution: {integrity: sha512-p6jhJmvhGe1TG1EGNhwH7nFWWFSTJ8NDKnB2fVx5g3t+PpO0+63R7GJNxjS0TmmH3cdMxZbzejsik+rlEh1EyQ==} + + '@codemirror/language@6.9.1': + resolution: {integrity: sha512-lWRP3Y9IUdOms6DXuBpoWwjkR7yRmnS0hKYCbSfPz9v6Em1A1UCRujAkDiCrdYfs1Z0Eu4dGtwovNPStIfkgNA==} + + '@codemirror/legacy-modes@6.3.3': + resolution: {integrity: sha512-X0Z48odJ0KIoh/HY8Ltz75/4tDYc9msQf1E/2trlxFaFFhgjpVHjZ/BCXe1Lk7s4Gd67LL/CeEEHNI+xHOiESg==} + + '@codemirror/lint@6.4.2': + resolution: {integrity: sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==} + + '@codemirror/search@6.5.4': + resolution: {integrity: sha512-YoTrvjv9e8EbPs58opjZKyJ3ewFrVSUzQ/4WXlULQLSDDr1nGPJ67mMXFNNVYwdFhybzhrzrtqgHmtpJwIF+8g==} + + '@codemirror/state@6.2.1': + resolution: {integrity: sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==} + + '@codemirror/view@6.21.3': + resolution: {integrity: sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A==} + + '@commitlint/cli@17.7.2': + resolution: {integrity: sha512-t3N7TZq7lOeqTOyEgfGcaltHqEJf7YDlPg75MldeVPPyz14jZq/+mbGF9tueDLFX8R6RwdymrN6D+U5XwZ8Iwg==} + engines: {node: '>=v14'} + hasBin: true + + '@commitlint/config-conventional@17.7.0': + resolution: {integrity: sha512-iicqh2o6et+9kWaqsQiEYZzfLbtoWv9uZl8kbI8EGfnc0HeGafQBF7AJ0ylN9D/2kj6txltsdyQs8+2fTMwWEw==} + engines: {node: '>=v14'} + + '@commitlint/config-validator@17.6.7': + resolution: {integrity: sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==} + engines: {node: '>=v14'} + + '@commitlint/ensure@17.6.7': + resolution: {integrity: sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==} + engines: {node: '>=v14'} + + '@commitlint/execute-rule@17.4.0': + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} + engines: {node: '>=v14'} + + '@commitlint/format@17.4.4': + resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} + engines: {node: '>=v14'} + + '@commitlint/is-ignored@17.7.0': + resolution: {integrity: sha512-043rA7m45tyEfW7Zv2vZHF++176MLHH9h70fnPoYlB1slKBeKl8BwNIlnPg4xBdRBVNPaCqvXxWswx2GR4c9Hw==} + engines: {node: '>=v14'} + + '@commitlint/lint@17.7.0': + resolution: {integrity: sha512-TCQihm7/uszA5z1Ux1vw+Nf3yHTgicus/+9HiUQk+kRSQawByxZNESeQoX9ujfVd3r4Sa+3fn0JQAguG4xvvbA==} + engines: {node: '>=v14'} + + '@commitlint/load@17.7.2': + resolution: {integrity: sha512-XA7WTnsjHZ4YH6ZYsrnxgLdXzriwMMq+utZUET6spbOEEIPBCDLdOQXS26P+v3TTO4hUHOEhzUquaBv3jbBixw==} + engines: {node: '>=v14'} + + '@commitlint/message@17.4.2': + resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} + engines: {node: '>=v14'} + + '@commitlint/parse@17.7.0': + resolution: {integrity: sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==} + engines: {node: '>=v14'} + + '@commitlint/read@17.5.1': + resolution: {integrity: sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==} + engines: {node: '>=v14'} + + '@commitlint/resolve-extends@17.6.7': + resolution: {integrity: sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==} + engines: {node: '>=v14'} + + '@commitlint/rules@17.7.0': + resolution: {integrity: sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA==} + engines: {node: '>=v14'} + + '@commitlint/to-lines@17.4.0': + resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} + engines: {node: '>=v14'} + + '@commitlint/top-level@17.4.0': + resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} + engines: {node: '>=v14'} + + '@commitlint/types@17.4.4': + resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} + engines: {node: '>=v14'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@css-render/plugin-bem@0.15.12': + resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==} + peerDependencies: + css-render: ~0.15.12 + + '@css-render/vue3-ssr@0.15.12': + resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==} + peerDependencies: + vue: ^3.0.11 + + '@emotion/hash@0.8.0': + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.9.1': + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.2': + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.50.0': + resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@humanwhocodes/config-array@0.11.11': + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@1.2.1': + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + + '@iconify/json@2.2.125': + resolution: {integrity: sha512-FtazQikTTUrM4OvaLtzu+yi8htSf1nnjsHJ7SAR501i4o2b+OcvUmjaBJ1Z6DzfoAyHXuDkuF+mjEeLy64F3wg==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.1.11': + resolution: {integrity: sha512-M/w3PkN8zQYXi8N6qK/KhnYMfEbbb6Sk8RZVn8g+Pmmu5ybw177RpsaGwpziyHeUsu4etrexYSWq3rwnIqzYCg==} + + '@iconify/vue@4.1.1': + resolution: {integrity: sha512-RL85Bm/DAe8y6rT6pux7D2FJSiUEM/TPfyK7GrbAOfTSwrhvwJW+S5yijdGcmtXouA8MtuH9C7l4hiSE4mLMjg==} + peerDependencies: + vue: '>=3' + + '@jridgewell/gen-mapping@0.3.3': + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.1': + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.1.2': + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.5': + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.19': + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@juggle/resize-observer@3.4.0': + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + + '@lezer/common@1.1.0': + resolution: {integrity: sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw==} + + '@lezer/cpp@1.1.1': + resolution: {integrity: sha512-eS1M3L3U2mDowoFVPG7tEp01SWu9/68Nx3HEBgLJVn3N9ku7g5S7WdFv0jzmcTipAyONYfZJ+7x4WRkfdB2Ung==} + + '@lezer/css@1.1.3': + resolution: {integrity: sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==} + + '@lezer/highlight@1.1.6': + resolution: {integrity: sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==} + + '@lezer/html@1.3.6': + resolution: {integrity: sha512-Kk9HJARZTc0bAnMQUqbtuhFVsB4AnteR2BFUWfZV7L/x1H0aAKz6YabrfJ2gk/BEgjh9L3hg5O4y2IDZRBdzuQ==} + + '@lezer/java@1.0.4': + resolution: {integrity: sha512-POc53LHf2AuNeRXjqZbXNu88GKj0KZTjjSx0L7tYeXlrEHF+3NAQx+dEwKVuCbkl0ZMtpRy2VsDYOV7KKV0oyg==} + + '@lezer/javascript@1.4.8': + resolution: {integrity: sha512-QRmw/5xrcyRLyWr3JT3KCzn2XZr5NYNqQMGsqnYy+FghbQn9DZPuj6JDkE6uSXvfMLpdapu8KBIaeoJFaR4QVw==} + + '@lezer/json@1.0.1': + resolution: {integrity: sha512-nkVC27qiEZEjySbi6gQRuMwa2sDu2PtfjSgz0A4QF81QyRGm3kb2YRzLcOPcTEtmcwvrX/cej7mlhbwViA4WJw==} + + '@lezer/lr@1.3.13': + resolution: {integrity: sha512-RLAbau/4uSzKgIKj96mI5WUtG1qtiR0Frn0Ei9zhPj8YOkHM+1Bb8SgdVvmR/aWJCFIzjo2KFnDiRZ75Xf5NdQ==} + + '@lezer/markdown@1.1.0': + resolution: {integrity: sha512-JYOI6Lkqbl83semCANkO3CKbKc0pONwinyagBufWBm+k4yhIcqfCF8B8fpEpvJLmIy7CAfwiq7dQ/PzUZA340g==} + + '@lezer/php@1.0.1': + resolution: {integrity: sha512-aqdCQJOXJ66De22vzdwnuC502hIaG9EnPK2rSi+ebXyUd+j7GAX1mRjWZOVOmf3GST1YUfUCu6WXDiEgDGOVwA==} + + '@lezer/python@1.1.8': + resolution: {integrity: sha512-1T/XsmeF57ijrjpC0Zmrf9YeO5mn2zC1XeSNrOnc0KB+6PgxJ5m7kWKt0CnwyS74oHQXbJxUUL+QDQJR26c1Gw==} + + '@lezer/rust@1.0.1': + resolution: {integrity: sha512-j+ToFKM6Wpglv3OQ4ebHYdYIMT2dh0ziCCV0rTf47AWiHOVhR0WjaKrBq+yuvDQNEhr5sxPxVI7+naJIgpqcsQ==} + + '@lezer/sass@1.0.3': + resolution: {integrity: sha512-n4l2nVOB7gWiGU/Cg2IVxpt2Ic9Hgfgy/7gk+p/XJibAsPXs0lSbsfGwQgwsAw9B/euYo3oS6lEFr9WytoqcZg==} + + '@lezer/xml@1.0.2': + resolution: {integrity: sha512-dlngsWceOtQBMuBPw5wtHpaxdPJ71aVntqjbpGkFtWsp4WtQmCnuTjQGocviymydN6M18fhj6UQX3oiEtSuY7w==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgr/utils@2.4.2': + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.23': + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + + '@rollup/plugin-node-resolve@13.3.0': + resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.42.0 + + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/pluginutils@5.0.5': + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@transloadit/prettier-bytes@0.0.7': + resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@tsconfig/node10@1.0.9': + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/estree@0.0.39': + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + + '@types/estree@1.0.2': + resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + + '@types/event-emitter@0.3.3': + resolution: {integrity: sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q==} + + '@types/json-schema@7.0.13': + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} + + '@types/katex@0.16.3': + resolution: {integrity: sha512-CeVMX9EhVUW8MWnei05eIRks4D5Wscw/W9Byz1s3PA+yJvcdvq9SaDjiUKvRvEgjpdTyJMjQA43ae4KTwsvOPg==} + + '@types/linkify-it@3.0.3': + resolution: {integrity: sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g==} + + '@types/lodash-es@4.17.9': + resolution: {integrity: sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==} + + '@types/lodash@4.14.199': + resolution: {integrity: sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==} + + '@types/markdown-it@12.2.3': + resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + + '@types/mdurl@1.0.3': + resolution: {integrity: sha512-T5k6kTXak79gwmIOaDF2UUQXFbnBE0zBUzF20pz7wDYu0RQMzWg+Ml/Pz50214NsFHBITkoi5VtdjFZnJ2ijjA==} + + '@types/minimist@1.2.3': + resolution: {integrity: sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==} + + '@types/mockjs@1.0.8': + resolution: {integrity: sha512-20t7Fcx3QPbv4wPGeZ0SFOz1l51W3fO3dtO5Ed8KhkUjJ2VsKLRwhgV12lTvQmHnmkJ99ziH0mDmIOrbe8Gs6A==} + + '@types/node@20.5.1': + resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} + + '@types/node@20.8.2': + resolution: {integrity: sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==} + + '@types/normalize-package-data@2.4.2': + resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==} + + '@types/resolve@1.17.1': + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + + '@types/semver@7.5.3': + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + + '@types/svgo@2.6.4': + resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} + + '@types/web-bluetooth@0.0.17': + resolution: {integrity: sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==} + + '@typescript-eslint/scope-manager@6.7.4': + resolution: {integrity: sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@6.7.4': + resolution: {integrity: sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@6.7.4': + resolution: {integrity: sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.7.4': + resolution: {integrity: sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@6.7.4': + resolution: {integrity: sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@unocss/astro@0.55.3': + resolution: {integrity: sha512-WyRvx1RvT3x4c19jrKYq9dN2KHJ8YYOHUmFKWaPVc9EpkTG802ElWq23Ly5G+tv6l3lITRT+tUVloL4i43Ipiw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@0.55.3': + resolution: {integrity: sha512-r5WcO/L0g8jUlUge/jdRKt1rG8Cm5K46edIHI2GL59uEXYq4T1Llh8gfIMXeP0Geqfml69E1QRNNocwRxYGDcA==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@0.55.3': + resolution: {integrity: sha512-d1AK44n8DeYA1gIMaWg5lR/zx2FgVS6luaeMMGm5985VJqZoj7WJAj+Av/BOaEFJEP9ruYO1Hsb2ng2ega0ybQ==} + engines: {node: '>=14'} + + '@unocss/config@0.55.7': + resolution: {integrity: sha512-+X6rPScyFEWbkZyCyM+HfoJhJNN+CEl2n2izWkm0kuDj3w9fY9B3f/0dsk+jmx/gJEI5Y797q9zspNMNDib1AA==} + engines: {node: '>=14'} + + '@unocss/core@0.55.3': + resolution: {integrity: sha512-2hV9QlE/iOM4DHQ7i6L8sMC1t5/OVAz6AfGHjetTXcgbNfDCsHWqE8jhLZ1y2DeUvKwJvj2A09sYbYQ8E27+Gg==} + + '@unocss/core@0.55.7': + resolution: {integrity: sha512-c+bWe844Xjlwc1EPwHj0+n3LpntJG7ELPbEOOxNIG+CQdcEX0l1G0rkM8+nKstJ9WJmgpf1HdJQLVMF62HXvhw==} + + '@unocss/eslint-config@0.55.7': + resolution: {integrity: sha512-ykRUpPeT5kJSXHAduOJ2PxnEoaYsGOS2jG9iVjbbvER36ZQ+71xdwep/qpBlAr4LWLeoICy7Om+No1r43ZDntw==} + engines: {node: '>=14'} + + '@unocss/eslint-plugin@0.55.7': + resolution: {integrity: sha512-U+poFU/GJH8NvFBQxLp64zRRfnLWSbY41+Q8Vnlw/nP/tizZumO2lNJ+UBIGFLa1TwyMulFjru6CXt2uSFKtaA==} + engines: {node: '>=14'} + + '@unocss/extractor-arbitrary-variants@0.55.3': + resolution: {integrity: sha512-ATVNywbUw0DhIT+iau35WQuoij/NPCPd5uKshhs+vnS4c7BVKUMXE1fk9df9AgVPVhwBN4A256EqkcPHrfv70w==} + + '@unocss/inspector@0.55.3': + resolution: {integrity: sha512-AHgjYbeaqSKSMIKkyUqFrXs9qi2hPhkIahMtv4nS0HZDzzrGGHv5lAmdYr4CxJEGs9G1lgrl2g7a4nz23LTRMQ==} + + '@unocss/postcss@0.55.3': + resolution: {integrity: sha512-JWfjtSLGuYFWcZwP3eUT2ItdRwehnpmry36cMSuuPNLXG0SPtklP2LRFahvgH85YhASNDAL2OIHP4jGTlG2Jfw==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@0.55.3': + resolution: {integrity: sha512-h3t6hPIk8pll3LubIIIsgRigvJivK3PX308Pi9Q0IUdw0vFq4S80iLQ1N0kRchQtgOaAIGffo9ux+TCbyunP3A==} + + '@unocss/preset-icons@0.55.3': + resolution: {integrity: sha512-UVpzkvO1ghNBNRMGylgYE73ufRFdU1l3pY11ePV8a/80HWFKL3QNq4Hoqa00M5CEnxBZT8dECTuj+f+l3Pn5wg==} + + '@unocss/preset-mini@0.55.3': + resolution: {integrity: sha512-TsDPatfA3nGybRDHtxWz7mGuXQqzFWqgOZDZlPEq+HQxK2DY5KdVekkq8G3kp8N8Alu/Tf52aDwIBSn/RC2qFg==} + + '@unocss/preset-rem-to-px@0.55.7': + resolution: {integrity: sha512-aGSOFivnKwyDdW4Z9dVJuAy7pi2KffmV8oSnuKiPG5B/mT1YluicCRKniDRR/5Km8kkdhjsV/yzqGPaWIOiJhQ==} + + '@unocss/preset-tagify@0.55.3': + resolution: {integrity: sha512-5nvKAREDkoAkwmbMKBwBDZjrhP2+pMeKMIdd8IOsEWpKbhJThXCRDcMZWuJ+nqm0kGkgZTtqzNso68+WjEwhuw==} + + '@unocss/preset-typography@0.55.3': + resolution: {integrity: sha512-O6YvQQ3b+qbqLVlCASmNFj1PfCkqgWVu+gnMFloFofB9olGix9H0qjsOyC6vJg9m2f9+MzPoNR4s2Du0V8fj5A==} + + '@unocss/preset-uno@0.55.3': + resolution: {integrity: sha512-6/JYKsgsHi24QFU8cXeXvRFmsosXdb6dmjsBma7ywEmzV2187uDDqI6NG/Aah5y5s2/QCyqqQFKN4vfatPARlQ==} + + '@unocss/preset-web-fonts@0.55.3': + resolution: {integrity: sha512-Mmj5HMvGOaDjobGno7rcLHUFHxIorw5kjobYJnEj48Wy7ixkYGQCvwguVZfE3YKsTEYVsMDojxC7ETK6Qae6vQ==} + + '@unocss/preset-wind@0.55.3': + resolution: {integrity: sha512-3K/46j4tRLMspVR4MvY6l7yBe8Eb+csTLOrDFKmj5+uZc7Y4+PTjFqURifrtgEpnwgW9SfXbXjPo/ALzA6x0XA==} + + '@unocss/reset@0.55.3': + resolution: {integrity: sha512-zl3mogr3z6huA5CHZggOljoYFQDTidEw5T6pGPahfHB5qS9DH0UGozg5T9UtYWiidHL3xqyv6ZU27nyIMnlnhg==} + + '@unocss/scope@0.55.3': + resolution: {integrity: sha512-h9OlxjXYwtASw8Lm/ucuWOIlrLFXHH9Cek17kPG3upWPKBMRQJl3GT18jTtPim0mqakhZY+8GQM1itHyOtHkSQ==} + + '@unocss/transformer-attributify-jsx-babel@0.55.3': + resolution: {integrity: sha512-EDmliP9NYJZKg13SdfHfFaE0HroH+mNEEoICqiuvAKr3YVc+qhdk105+xwZDUGEJi/wVf1q8AZ3oEmwpAqtd9g==} + + '@unocss/transformer-attributify-jsx@0.55.3': + resolution: {integrity: sha512-Z+jCSRCxMkAFyjye52rFL+yrIvu6AxwOqhDT8jVLyVGgMFRYm79FP6fsDhsgr/EipHE9Szk+H0yt16aNlPYU4Q==} + + '@unocss/transformer-compile-class@0.55.3': + resolution: {integrity: sha512-g6UgDqTwhbpuyN/tCse2p+bQvyGmEyQk3kOFq8P9P7+mtfOXPmkkVnShDSs2K4FyfTpFGouOSTge0rrJyVj3LQ==} + + '@unocss/transformer-directives@0.55.3': + resolution: {integrity: sha512-9la+Gk7doqTl+drg9RflkFqN7bXavzI119amJ6xa+ZlUm04vaC5WxFMxZD3V29zu505IhGWMOVJNfnV6g4hLvg==} + + '@unocss/transformer-variant-group@0.55.3': + resolution: {integrity: sha512-3Pe04N6If+1o0tsa1n58ysV6Yt7OW6ER6lNtbpyZcuG+gMgjU6u7FsCC+IuZ50aHsXRVpFbFtjMeugN9KaO5ow==} + + '@unocss/vite@0.55.3': + resolution: {integrity: sha512-ykHIBwssTZMQ2FC2wj8+LDrrYkq8PUIekdyeazznX38CNxAwZtwrrtUjieoJkAl6Ebxv8oMadxamqnP/0E8Ygw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 + + '@uppy/companion-client@2.2.2': + resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==} + + '@uppy/core@2.3.4': + resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==} + + '@uppy/store-default@2.1.1': + resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==} + + '@uppy/utils@4.1.3': + resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==} + + '@uppy/xhr-upload@2.1.3': + resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==} + peerDependencies: + '@uppy/core': ^2.3.3 + + '@vavt/util@1.4.0': + resolution: {integrity: sha512-qLhaokwifMTFqoo4UE2JZUyaxCzX9T4WcIt2KzznbtBrCM4CG119pY/cKqq6jDa3c1phUvPCoIfjWfnF9nj4NA==} + + '@vite-plugin-vue-devtools/core@1.0.0-rc.7': + resolution: {integrity: sha512-Tv9JeRZQ6KDwSkOQJvXc5TBcc4fkSazA96GDhi99v4VCthTgXjnhaah41CeZD3hFDKnNS0MHKFFqN+RHAgYDyQ==} + peerDependencies: + vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 + + '@vitejs/plugin-vue@4.4.0': + resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + + '@vue/babel-helper-vue-transform-on@1.1.5': + resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==} + + '@vue/babel-plugin-jsx@1.1.5': + resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.3.4': + resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} + + '@vue/compiler-dom@3.3.4': + resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} + + '@vue/compiler-sfc@3.3.4': + resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} + + '@vue/compiler-ssr@3.3.4': + resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} + + '@vue/devtools-api@6.5.0': + resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} + + '@vue/reactivity-transform@3.3.4': + resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} + + '@vue/reactivity@3.3.4': + resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} + + '@vue/runtime-core@3.3.4': + resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} + + '@vue/runtime-dom@3.3.4': + resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} + + '@vue/server-renderer@3.3.4': + resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} + peerDependencies: + vue: 3.3.4 + + '@vue/shared@3.3.4': + resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + + '@vueuse/core@10.4.1': + resolution: {integrity: sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==} + + '@vueuse/metadata@10.4.1': + resolution: {integrity: sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==} + + '@vueuse/shared@10.4.1': + resolution: {integrity: sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==} + + '@wangeditor/basic-modules@1.1.7': + resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/code-highlight@1.0.3': + resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/core@1.1.19': + resolution: {integrity: sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==} + peerDependencies: + '@uppy/core': ^2.1.1 + '@uppy/xhr-upload': ^2.0.3 + dom7: ^3.0.0 + is-hotkey: ^0.2.0 + lodash.camelcase: ^4.3.0 + lodash.clonedeep: ^4.5.0 + lodash.debounce: ^4.0.8 + lodash.foreach: ^4.5.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + lodash.toarray: ^4.4.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/editor-for-vue@5.1.12': + resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==} + peerDependencies: + '@wangeditor/editor': '>=5.1.0' + vue: ^3.0.5 + + '@wangeditor/editor@5.1.23': + resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==} + + '@wangeditor/list-module@1.0.5': + resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/table-module@1.1.4': + resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/upload-image-module@1.0.2': + resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==} + peerDependencies: + '@uppy/core': ^2.0.3 + '@uppy/xhr-upload': ^2.0.3 + '@wangeditor/basic-modules': 1.x + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.foreach: ^4.5.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/video-module@1.1.4': + resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==} + peerDependencies: + '@uppy/core': ^2.1.4 + '@uppy/xhr-upload': ^2.0.7 + '@wangeditor/core': 1.x + dom7: ^3.0.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@webfansplz/vuedoc-parser@0.0.4': + resolution: {integrity: sha512-OnJxUtZOvKHonA9wmW1F0E+UkjP4RZdNRZyUWF1Nrh0TAm4uzX4a99EgHH33Rc2dJgkhMdtaZ9P+ekVJ42Y0kg==} + engines: {node: '>=16.6'} + peerDependencies: + pug: ^3.0.2 + + '@zclzone/eslint-config@0.0.5': + resolution: {integrity: sha512-/vYNEoGGPYSC0uBKRLK3YSfIIg+MWLsrSUBFADmhf5yjLtC/CAIMYikY6hLj2bfNtz6UnNAonlKjtHQgetUoBA==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} + engines: {node: '>=0.8'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assert-never@1.3.0: + resolution: {integrity: sha512-9Z3vxQ+berkL/JJo0dK+EY3Lp0s3NtSnP3VCLsh5HDcZPrh0M+KQRK5sWhUeyPPH+/RCxZqOxLMR+YC6vlviEQ==} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + axios@1.5.1: + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + + babel-walk@3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + birpc@0.2.14: + resolution: {integrity: sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + cachedir@2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001566: + resolution: {integrity: sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==} + + cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} + engines: {node: '>=0.8'} + + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-parser@2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + clean-css@5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + engines: {node: '>= 10.0'} + + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} + engines: {node: '>=6'} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-width@2.2.1: + resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + codemirror@6.0.1: + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} + + codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} + engines: {node: '>=0.8'} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commitizen@4.3.0: + resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} + engines: {node: '>= 12'} + hasBin: true + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + component-emitter@1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + + constantinople@4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + + conventional-changelog-angular@6.0.0: + resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} + engines: {node: '>=14'} + + conventional-changelog-conventionalcommits@6.1.0: + resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} + engines: {node: '>=14'} + + conventional-commit-types@3.0.0: + resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} + + conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig-typescript-loader@4.4.0: + resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} + engines: {node: '>=v14.21.3'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=4' + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css-render@0.15.12: + resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + csstype@3.0.11: + resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} + + csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cz-conventional-changelog@3.3.0: + resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} + engines: {node: '>= 10'} + + cz-customizable@7.0.0: + resolution: {integrity: sha512-pQKkGSm+8SY9VY/yeJqDOla1MjrGaG7WG4EYLLEV4VNctGO7WdzdGtWEr2ydKSkrpmTs7f8fmBksg/FaTrUAyw==} + hasBin: true + + d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + + dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + + date-fns-tz@2.0.0: + resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==} + peerDependencies: + date-fns: '>=2.0.0' + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + + default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + defu@6.1.2: + resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + destr@2.0.1: + resolution: {integrity: sha512-M1Ob1zPSIvlARiJUkKqvAZ3VAqQY6Jcuth/pBKQ2b1dX/Qx0OnJ8Vux6J2H5PTMQeRzWrrbTu70VxBfv/OPDJA==} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + doctypes@1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom7@3.0.0: + resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==} + + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv-expand@8.0.3: + resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==} + engines: {node: '>=12'} + + dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + echarts@5.4.3: + resolution: {integrity: sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==} + + editor@1.0.0: + resolution: {integrity: sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.4.609: + resolution: {integrity: sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser-es@0.1.1: + resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + + esbuild@0.11.3: + resolution: {integrity: sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==} + hasBin: true + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@4.2.1: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + + eslint-plugin-vue@9.17.0: + resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.50.0: + resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + esno@0.17.0: + resolution: {integrity: sha512-w78cQGlptQfsBYfootUCitsKS+MD74uR5L6kNsvwVkJsfzEepIafbvWsx2xK4rcFP4IUftt4F6J8EhagUxX+Bg==} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + evtd@0.2.4: + resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + find-config@1.0.0: + resolution: {integrity: sha512-Z+suHH+7LSE40WfUeZPIxSxypCWvrzdVc60xAjUShZeT5eMWM0/FQUduq3HjluyfAHWvC/aOBkT1pTZktyF/jg==} + engines: {node: '>= 0.12'} + + find-node-modules@2.1.3: + resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + findup-sync@4.0.0: + resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} + engines: {node: '>= 8'} + + flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} + + flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + + follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + frac@1.1.2: + resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} + engines: {node: '>=0.8'} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + git-raw-commits@2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + + has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + highlight.js@11.8.0: + resolution: {integrity: sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==} + engines: {node: '>=12.0.0'} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + + htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + i18next@20.6.1: + resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inquirer@6.5.2: + resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} + engines: {node: '>=6.0.0'} + + inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + + is-accessor-descriptor@0.1.6: + resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} + engines: {node: '>=0.10.0'} + + is-accessor-descriptor@1.0.0: + resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} + engines: {node: '>=0.10.0'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} + + is-data-descriptor@0.1.4: + resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} + engines: {node: '>=0.10.0'} + + is-data-descriptor@1.0.0: + resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} + engines: {node: '>=0.10.0'} + + is-descriptor@0.1.6: + resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} + engines: {node: '>=0.10.0'} + + is-descriptor@1.0.2: + resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} + engines: {node: '>=0.10.0'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-expression@4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-text-path@1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + + jiti@1.20.0: + resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} + hasBin: true + + js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + + js-stringify@1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jstransformer@1.0.0: + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + + keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + + lint-staged@14.0.1: + resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + + listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.map@4.6.0: + resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash.toarray@4.4.0: + resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + longest@2.0.1: + resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} + engines: {node: '>=0.10.0'} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@8.0.5: + resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} + engines: {node: '>=16.14'} + + magic-string@0.30.4: + resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} + engines: {node: '>=12'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + markdown-it-image-figures@2.1.1: + resolution: {integrity: sha512-mwXSQ2nPeVUzCMIE3HlLvjRioopiqyJLNph0pyx38yf9mpqFDhNGnMpAXF9/A2Xv0oiF2cVyg9xwfF0HNAz05g==} + engines: {node: '>=12.0.0'} + peerDependencies: + markdown-it: '*' + + markdown-it-task-lists@2.1.1: + resolution: {integrity: sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==} + + markdown-it@13.0.2: + resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==} + hasBin: true + + md-editor-v3@4.7.0: + resolution: {integrity: sha512-f+HuC0zV4bJu1hfDnVldOM0ykNZar+7NbojjUhwqnjMJiYA3WscQUVJ7e/JiUUhkOPxbb1VWYdh9apJjimA36A==} + peerDependencies: + vue: ^3.2.47 + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + + medium-zoom@1.0.8: + resolution: {integrity: sha512-CjFVuFq/IfrdqesAXfg+hzlDKu6A2n80ZIq0Kl9kWjoHh9j1N9Uvk5X0/MmN0hOfm5F9YBswlClhcwnmtwz7gA==} + + meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + + merge-options@1.0.1: + resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==} + engines: {node: '>=4'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + micromatch@3.1.0: + resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-match@1.0.2: + resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + + mockjs@1.1.0: + resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} + hasBin: true + + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + mute-stream@0.0.7: + resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + naive-ui@2.39.0: + resolution: {integrity: sha512-5oUJzRG+rtLSH8eRU+fJvVYiQids2BxF9jp+fwGoAqHOptEINrBlgBu9uy+95RHE5FLJ7Q/z41o+qkoGnUrKxQ==} + peerDependencies: + vue: ^3.0.0 + + namespace-emitter@2.0.1: + resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==} + + nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-fetch-native@1.4.0: + resolution: {integrity: sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==} + + node-html-parser@5.4.2: + resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + ofetch@1.3.3: + resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + + pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pinia@2.1.6: + resolution: {integrity: sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + postcss-prefix-selector@1.16.0: + resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==} + peerDependencies: + postcss: '>4 <9' + + postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + + postcss@5.2.18: + resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==} + engines: {node: '>=0.12'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + posthtml-parser@0.2.1: + resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==} + + posthtml-rename-id@1.0.12: + resolution: {integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==} + + posthtml-render@1.4.0: + resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==} + engines: {node: '>=10'} + + posthtml-svg-mode@1.0.3: + resolution: {integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==} + + posthtml@0.9.2: + resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==} + engines: {node: '>=0.10.0'} + + preact@10.18.1: + resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pug-attrs@3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + + pug-code-gen@3.0.3: + resolution: {integrity: sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==} + + pug-error@2.1.0: + resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} + + pug-filters@4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + + pug-lexer@5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + + pug-linker@4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + + pug-load@3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + + pug-parser@6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + + pug-runtime@3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + + pug-strip-comments@2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + + pug-walk@2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + + pug@3.0.2: + resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + query-string@4.3.4: + resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} + engines: {node: '>=0.10.0'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resize-detector@0.3.0: + resolution: {integrity: sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-global@1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve@1.22.6: + resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} + hasBin: true + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rollup-plugin-visualizer@5.9.2: + resolution: {integrity: sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.69.0: + resolution: {integrity: sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + scule@1.0.0: + resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} + + seemly@0.3.8: + resolution: {integrity: sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slate-history@0.66.0: + resolution: {integrity: sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==} + peerDependencies: + slate: '>=0.65.3' + + slate@0.72.8: + resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + snabbdom@3.5.1: + resolution: {integrity: sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==} + engines: {node: '>=8.3.0'} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + ssf@0.11.2: + resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} + engines: {node: '>=0.8'} + + ssr-window@3.0.0: + resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==} + + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + + style-mod@4.1.0: + resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==} + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + + supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-baker@1.7.0: + resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + + temp@0.9.4: + resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} + engines: {node: '>=6.0.0'} + + terser@5.21.0: + resolution: {integrity: sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==} + engines: {node: '>=10'} + hasBin: true + + text-extensions@1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + token-stream@1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + traverse@0.6.7: + resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} + + treemate@0.3.11: + resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + ts-api-utils@1.0.3: + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + + ts-node@10.9.1: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tsx@3.13.0: + resolution: {integrity: sha512-rjmRpTu3as/5fjNq/kOkOtihgLxuIz6pbKdj9xwP4J5jOLkBxw/rjN5ANw+KyrrOXV5uB7HC8+SrrSJxT65y+A==} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + + type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + + typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + + ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + + unconfig@0.3.11: + resolution: {integrity: sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==} + + unimport@3.4.0: + resolution: {integrity: sha512-M/lfFEgufIT156QAr/jWHLUn55kEmxBBiQsMxvRSIbquwmeJEyQYgshHDEvQDWlSJrVOOTAgnJ3FvlsrpGkanA==} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + + unocss@0.55.3: + resolution: {integrity: sha512-laHtypsgqXQ8798h8cYO1fkxPumSQG8Y7GDvvSY1TWmha+mbl1YzbHqakxiJvoThJrMFLiwmpZ2vD7KFbzfGfg==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.55.3 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-auto-import@0.16.6: + resolution: {integrity: sha512-M+YIITkx3C/Hg38hp8HmswP5mShUUyJOzpifv7RTlAbeFlO2Tyw0pwrogSSxnipHDPTtI8VHFBpkYkNKzYSuyA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-icons@0.16.6: + resolution: {integrity: sha512-jL70sAC7twp4hI/MTfm+vyvTRtHqiEIzf3XOjJz7yzhMEEQnk5Ey5YIXRAU03Mc4BF99ITvvnBzfyRZee86OeA==} + peerDependencies: + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + vue-template-compiler: ^2.6.12 + vue-template-es2015-compiler: ^1.9.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + vue-template-compiler: + optional: true + vue-template-es2015-compiler: + optional: true + + unplugin-vue-components@0.25.2: + resolution: {integrity: sha512-OVmLFqILH6w+eM8fyt/d/eoJT9A6WO51NZLf1vC5c1FZ4rmq2bbGxTy8WP2Jm7xwFdukaIdv819+UI7RClPyCA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + + unplugin@1.5.0: + resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + user-home@2.0.0: + resolution: {integrity: sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==} + engines: {node: '>=0.10.0'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vdirs@0.1.8: + resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} + peerDependencies: + vue: ^3.0.11 + + vite-hot-client@0.2.3: + resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 + + vite-plugin-compression@0.5.1: + resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-html@3.2.0: + resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-inspect@0.7.42: + resolution: {integrity: sha512-JCyX86wr3siQc+p9Kd0t8VkFHAJag0RaQVIpdFGSv5FEaePEVB6+V/RGtz2dQkkGSXQzRWrPs4cU3dRKg32bXw==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-mock@2.9.6: + resolution: {integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==} + engines: {node: '>=12.0.0'} + peerDependencies: + mockjs: '>=1.1.0' + vite: '>=2.0.0' + + vite-plugin-svg-icons@2.0.1: + resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-vue-devtools@1.0.0-rc.7: + resolution: {integrity: sha512-vkAj9a6s7Qo8yJ4R6mpa1wMovnZNZrWezsXorAoguydWrzYirKOhu8FrosK/csbjqTibKktmgfpzMxtqCqMaqQ==} + engines: {node: '>=v14.21.3'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 + + vite-plugin-vue-inspector@4.0.2: + resolution: {integrity: sha512-KPvLEuafPG13T7JJuQbSm5PwSxKFnVS965+MP1we2xGw9BPkkc/+LPix5MMWenpKWqtjr0ws8THrR+KuoDC8hg==} + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 + + vite@4.4.11: + resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + vooks@0.2.12: + resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==} + peerDependencies: + vue: ^3.0.0 + + vue-demi@0.13.11: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-demi@0.14.6: + resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-echarts@6.6.1: + resolution: {integrity: sha512-EpreTzlNeJ+eaUn0AhXEmKJk98xJGecgTqAdyZovoXWnhTxnlW2HuBM0ei3y8rLw1JCUabf8/sYvxjlr8SzBKQ==} + peerDependencies: + '@vue/composition-api': ^1.0.5 + echarts: ^5.4.1 + vue: ^2.6.12 || ^3.1.1 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@9.3.1: + resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + vue-router@4.2.5: + resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} + peerDependencies: + vue: ^3.2.0 + + vue-template-compiler@2.7.15: + resolution: {integrity: sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==} + + vue@3.3.4: + resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} + + vueuc@0.4.58: + resolution: {integrity: sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==} + peerDependencies: + vue: ^3.0.11 + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wildcard@1.1.2: + resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==} + + with@7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + + wmf@1.0.2: + resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} + engines: {node: '>=0.8'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + word@0.3.0: + resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} + engines: {node: '>=0.8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xlsx@0.18.5: + resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} + engines: {node: '>=0.8'} + hasBin: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zrender@5.4.4: + resolution: {integrity: sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@ampproject/remapping@2.2.1': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + '@antfu/install-pkg@0.1.1': + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + + '@antfu/utils@0.7.6': {} + + '@babel/code-frame@7.22.13': + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + + '@babel/code-frame@7.23.5': + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + + '@babel/compat-data@7.23.5': {} + + '@babel/core@7.23.5': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/helpers': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.23.5': + dependencies: + '@babel/types': 7.23.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.22.5': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-compilation-targets@7.22.15': + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-function-name@7.23.0': + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.5 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.23.5 + + '@babel/helper-member-expression-to-functions@7.23.0': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/helper-optimise-call-expression@7.22.5': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-plugin-utils@7.22.5': {} + + '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.23.5 + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.23.5 + + '@babel/helper-string-parser@7.22.5': {} + + '@babel/helper-string-parser@7.23.4': {} + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.22.20': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.23.5': {} + + '@babel/helpers@7.23.5': + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 + transitivePeerDependencies: + - supports-color + + '@babel/highlight@7.22.20': + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/highlight@7.23.4': + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/parser@7.23.0': + dependencies: + '@babel/types': 7.23.0 + + '@babel/parser@7.23.5': + dependencies: + '@babel/types': 7.23.5 + + '@babel/parser@7.25.3': + dependencies: + '@babel/types': 7.25.2 + + '@babel/plugin-proposal-decorators@7.23.5(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.5) + + '@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-typescript@7.23.5(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.5) + + '@babel/runtime@7.23.1': + dependencies: + regenerator-runtime: 0.14.0 + + '@babel/template@7.22.15': + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 + + '@babel/traverse@7.23.5': + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.23.0': + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@babel/types@7.23.5': + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@babel/types@7.25.2': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@codemirror/autocomplete@6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0)': + dependencies: + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 + + '@codemirror/commands@6.3.0': + dependencies: + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 + + '@codemirror/lang-angular@0.1.2': + dependencies: + '@codemirror/lang-html': 6.4.6 + '@codemirror/lang-javascript': 6.2.1 + '@codemirror/language': 6.9.1 + '@lezer/common': 1.1.0 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@codemirror/lang-cpp@6.0.2': + dependencies: + '@codemirror/language': 6.9.1 + '@lezer/cpp': 1.1.1 + + '@codemirror/lang-css@6.2.1(@codemirror/view@6.21.3)': + dependencies: + '@codemirror/autocomplete': 6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@lezer/common': 1.1.0 + '@lezer/css': 1.1.3 + transitivePeerDependencies: + - '@codemirror/view' + + '@codemirror/lang-html@6.4.6': + dependencies: + '@codemirror/autocomplete': 6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/lang-css': 6.2.1(@codemirror/view@6.21.3) + '@codemirror/lang-javascript': 6.2.1 + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 + '@lezer/css': 1.1.3 + '@lezer/html': 1.3.6 + + '@codemirror/lang-java@6.0.1': + dependencies: + '@codemirror/language': 6.9.1 + '@lezer/java': 1.0.4 + + '@codemirror/lang-javascript@6.2.1': + dependencies: + '@codemirror/autocomplete': 6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/language': 6.9.1 + '@codemirror/lint': 6.4.2 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 + '@lezer/javascript': 1.4.8 + + '@codemirror/lang-json@6.0.1': + dependencies: + '@codemirror/language': 6.9.1 + '@lezer/json': 1.0.1 + + '@codemirror/lang-less@6.0.1(@codemirror/view@6.21.3)': + dependencies: + '@codemirror/lang-css': 6.2.1(@codemirror/view@6.21.3) + '@codemirror/language': 6.9.1 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + transitivePeerDependencies: + - '@codemirror/view' + + '@codemirror/lang-markdown@6.2.2': + dependencies: + '@codemirror/autocomplete': 6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/lang-html': 6.4.6 + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 + '@lezer/markdown': 1.1.0 + + '@codemirror/lang-php@6.0.1': + dependencies: + '@codemirror/lang-html': 6.4.6 + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@lezer/common': 1.1.0 + '@lezer/php': 1.0.1 + + '@codemirror/lang-python@6.1.3(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0)': + dependencies: + '@codemirror/autocomplete': 6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/language': 6.9.1 + '@lezer/python': 1.1.8 + transitivePeerDependencies: + - '@codemirror/state' + - '@codemirror/view' + - '@lezer/common' + + '@codemirror/lang-rust@6.0.1': + dependencies: + '@codemirror/language': 6.9.1 + '@lezer/rust': 1.0.1 + + '@codemirror/lang-sass@6.0.2(@codemirror/view@6.21.3)': + dependencies: + '@codemirror/lang-css': 6.2.1(@codemirror/view@6.21.3) + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@lezer/common': 1.1.0 + '@lezer/sass': 1.0.3 + transitivePeerDependencies: + - '@codemirror/view' + + '@codemirror/lang-sql@6.5.4(@codemirror/view@6.21.3)(@lezer/common@1.1.0)': + dependencies: + '@codemirror/autocomplete': 6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + transitivePeerDependencies: + - '@codemirror/view' + - '@lezer/common' + + '@codemirror/lang-vue@0.1.2': + dependencies: + '@codemirror/lang-html': 6.4.6 + '@codemirror/lang-javascript': 6.2.1 + '@codemirror/language': 6.9.1 + '@lezer/common': 1.1.0 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@codemirror/lang-wast@6.0.1': + dependencies: + '@codemirror/language': 6.9.1 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@codemirror/lang-xml@6.0.2(@codemirror/view@6.21.3)': + dependencies: + '@codemirror/autocomplete': 6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.2.1 + '@lezer/common': 1.1.0 + '@lezer/xml': 1.0.2 + transitivePeerDependencies: + - '@codemirror/view' + + '@codemirror/language-data@6.3.1(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0)': + dependencies: + '@codemirror/lang-angular': 0.1.2 + '@codemirror/lang-cpp': 6.0.2 + '@codemirror/lang-css': 6.2.1(@codemirror/view@6.21.3) + '@codemirror/lang-html': 6.4.6 + '@codemirror/lang-java': 6.0.1 + '@codemirror/lang-javascript': 6.2.1 + '@codemirror/lang-json': 6.0.1 + '@codemirror/lang-less': 6.0.1(@codemirror/view@6.21.3) + '@codemirror/lang-markdown': 6.2.2 + '@codemirror/lang-php': 6.0.1 + '@codemirror/lang-python': 6.1.3(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/lang-rust': 6.0.1 + '@codemirror/lang-sass': 6.0.2(@codemirror/view@6.21.3) + '@codemirror/lang-sql': 6.5.4(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/lang-vue': 0.1.2 + '@codemirror/lang-wast': 6.0.1 + '@codemirror/lang-xml': 6.0.2(@codemirror/view@6.21.3) + '@codemirror/language': 6.9.1 + '@codemirror/legacy-modes': 6.3.3 + transitivePeerDependencies: + - '@codemirror/state' + - '@codemirror/view' + - '@lezer/common' + + '@codemirror/language@6.9.1': + dependencies: + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + style-mod: 4.1.0 + + '@codemirror/legacy-modes@6.3.3': + dependencies: + '@codemirror/language': 6.9.1 + + '@codemirror/lint@6.4.2': + dependencies: + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + crelt: 1.0.6 + + '@codemirror/search@6.5.4': + dependencies: + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + crelt: 1.0.6 + + '@codemirror/state@6.2.1': {} + + '@codemirror/view@6.21.3': + dependencies: + '@codemirror/state': 6.2.1 + style-mod: 4.1.0 + w3c-keyname: 2.2.8 + + '@commitlint/cli@17.7.2': + dependencies: + '@commitlint/format': 17.4.4 + '@commitlint/lint': 17.7.0 + '@commitlint/load': 17.7.2 + '@commitlint/read': 17.5.1 + '@commitlint/types': 17.4.4 + execa: 5.1.1 + lodash.isfunction: 3.0.9 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + '@commitlint/config-conventional@17.7.0': + dependencies: + conventional-changelog-conventionalcommits: 6.1.0 + + '@commitlint/config-validator@17.6.7': + dependencies: + '@commitlint/types': 17.4.4 + ajv: 8.12.0 + + '@commitlint/ensure@17.6.7': + dependencies: + '@commitlint/types': 17.4.4 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@17.4.0': {} + + '@commitlint/format@17.4.4': + dependencies: + '@commitlint/types': 17.4.4 + chalk: 4.1.2 + + '@commitlint/is-ignored@17.7.0': + dependencies: + '@commitlint/types': 17.4.4 + semver: 7.5.4 + + '@commitlint/lint@17.7.0': + dependencies: + '@commitlint/is-ignored': 17.7.0 + '@commitlint/parse': 17.7.0 + '@commitlint/rules': 17.7.0 + '@commitlint/types': 17.4.4 + + '@commitlint/load@17.7.2': + dependencies: + '@commitlint/config-validator': 17.6.7 + '@commitlint/execute-rule': 17.4.0 + '@commitlint/resolve-extends': 17.6.7 + '@commitlint/types': 17.4.4 + '@types/node': 20.5.1 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.2.2) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.2.2))(ts-node@10.9.1(@types/node@20.5.1)(typescript@5.2.2))(typescript@5.2.2) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 + ts-node: 10.9.1(@types/node@20.5.1)(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + '@commitlint/message@17.4.2': {} + + '@commitlint/parse@17.7.0': + dependencies: + '@commitlint/types': 17.4.4 + conventional-changelog-angular: 6.0.0 + conventional-commits-parser: 4.0.0 + + '@commitlint/read@17.5.1': + dependencies: + '@commitlint/top-level': 17.4.0 + '@commitlint/types': 17.4.4 + fs-extra: 11.1.1 + git-raw-commits: 2.0.11 + minimist: 1.2.8 + + '@commitlint/resolve-extends@17.6.7': + dependencies: + '@commitlint/config-validator': 17.6.7 + '@commitlint/types': 17.4.4 + import-fresh: 3.3.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + + '@commitlint/rules@17.7.0': + dependencies: + '@commitlint/ensure': 17.6.7 + '@commitlint/message': 17.4.2 + '@commitlint/to-lines': 17.4.0 + '@commitlint/types': 17.4.4 + execa: 5.1.1 + + '@commitlint/to-lines@17.4.0': {} + + '@commitlint/top-level@17.4.0': + dependencies: + find-up: 5.0.0 + + '@commitlint/types@17.4.4': + dependencies: + chalk: 4.1.2 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@css-render/plugin-bem@0.15.12(css-render@0.15.12)': + dependencies: + css-render: 0.15.12 + + '@css-render/vue3-ssr@0.15.12(vue@3.3.4)': + dependencies: + vue: 3.3.4 + + '@emotion/hash@0.8.0': {} + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.50.0)': + dependencies: + eslint: 8.50.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.9.1': {} + + '@eslint/eslintrc@2.1.2': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.50.0': {} + + '@humanwhocodes/config-array@0.11.11': + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@1.2.1': {} + + '@iconify/json@2.2.125': + dependencies: + '@iconify/types': 2.0.0 + pathe: 1.1.1 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.11': + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.6 + '@iconify/types': 2.0.0 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.4.3 + transitivePeerDependencies: + - supports-color + + '@iconify/vue@4.1.1(vue@3.3.4)': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.3.4 + + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/set-array@1.1.2': {} + + '@jridgewell/source-map@0.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.19': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@juggle/resize-observer@3.4.0': {} + + '@lezer/common@1.1.0': {} + + '@lezer/cpp@1.1.1': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/css@1.1.3': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/highlight@1.1.6': + dependencies: + '@lezer/common': 1.1.0 + + '@lezer/html@1.3.6': + dependencies: + '@lezer/common': 1.1.0 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/java@1.0.4': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/javascript@1.4.8': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/json@1.0.1': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/lr@1.3.13': + dependencies: + '@lezer/common': 1.1.0 + + '@lezer/markdown@1.1.0': + dependencies: + '@lezer/common': 1.1.0 + '@lezer/highlight': 1.1.6 + + '@lezer/php@1.0.1': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/python@1.1.8': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/rust@1.0.1': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/sass@1.0.3': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@lezer/xml@1.0.2': + dependencies: + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.13 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + '@pkgr/utils@2.4.2': + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.1 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + + '@polka/url@1.0.0-next.23': {} + + '@rollup/plugin-node-resolve@13.3.0(rollup@3.29.4)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@3.29.4) + '@types/resolve': 1.17.1 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.6 + rollup: 3.29.4 + + '@rollup/pluginutils@3.1.0(rollup@3.29.4)': + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 3.29.4 + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/pluginutils@5.0.5(rollup@3.29.4)': + dependencies: + '@types/estree': 1.0.2 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 3.29.4 + + '@transloadit/prettier-bytes@0.0.7': {} + + '@trysound/sax@0.2.0': {} + + '@tsconfig/node10@1.0.9': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/estree@0.0.39': {} + + '@types/estree@1.0.2': {} + + '@types/event-emitter@0.3.3': {} + + '@types/json-schema@7.0.13': {} + + '@types/katex@0.16.3': {} + + '@types/linkify-it@3.0.3': {} + + '@types/lodash-es@4.17.9': + dependencies: + '@types/lodash': 4.14.199 + + '@types/lodash@4.14.199': {} + + '@types/markdown-it@12.2.3': + dependencies: + '@types/linkify-it': 3.0.3 + '@types/mdurl': 1.0.3 + + '@types/mdurl@1.0.3': {} + + '@types/minimist@1.2.3': {} + + '@types/mockjs@1.0.8': {} + + '@types/node@20.5.1': {} + + '@types/node@20.8.2': {} + + '@types/normalize-package-data@2.4.2': {} + + '@types/resolve@1.17.1': + dependencies: + '@types/node': 20.8.2 + + '@types/semver@7.5.3': {} + + '@types/svgo@2.6.4': + dependencies: + '@types/node': 20.8.2 + + '@types/web-bluetooth@0.0.17': {} + + '@typescript-eslint/scope-manager@6.7.4': + dependencies: + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/visitor-keys': 6.7.4 + + '@typescript-eslint/types@6.7.4': {} + + '@typescript-eslint/typescript-estree@6.7.4(typescript@5.2.2)': + dependencies: + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/visitor-keys': 6.7.4 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + optionalDependencies: + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.7.4(eslint@8.50.0)(typescript@5.2.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + eslint: 8.50.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@6.7.4': + dependencies: + '@typescript-eslint/types': 6.7.4 + eslint-visitor-keys: 3.4.3 + + '@unocss/astro@0.55.3(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0))': + dependencies: + '@unocss/core': 0.55.3 + '@unocss/reset': 0.55.3 + '@unocss/vite': 0.55.3(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + optionalDependencies: + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + transitivePeerDependencies: + - rollup + + '@unocss/cli@0.55.3(rollup@3.29.4)': + dependencies: + '@ampproject/remapping': 2.2.1 + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@unocss/config': 0.55.3 + '@unocss/core': 0.55.3 + '@unocss/preset-uno': 0.55.3 + cac: 6.7.14 + chokidar: 3.5.3 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.1 + magic-string: 0.30.4 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + + '@unocss/config@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + unconfig: 0.3.11 + + '@unocss/config@0.55.7': + dependencies: + '@unocss/core': 0.55.7 + unconfig: 0.3.11 + + '@unocss/core@0.55.3': {} + + '@unocss/core@0.55.7': {} + + '@unocss/eslint-config@0.55.7(eslint@8.50.0)(typescript@5.2.2)': + dependencies: + '@unocss/eslint-plugin': 0.55.7(eslint@8.50.0)(typescript@5.2.2) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@unocss/eslint-plugin@0.55.7(eslint@8.50.0)(typescript@5.2.2)': + dependencies: + '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@unocss/config': 0.55.7 + '@unocss/core': 0.55.7 + magic-string: 0.30.4 + synckit: 0.8.5 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@unocss/extractor-arbitrary-variants@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + + '@unocss/inspector@0.55.3': + dependencies: + gzip-size: 6.0.0 + sirv: 2.0.3 + + '@unocss/postcss@0.55.3(postcss@5.2.18)': + dependencies: + '@unocss/config': 0.55.3 + '@unocss/core': 0.55.3 + css-tree: 2.3.1 + fast-glob: 3.3.1 + magic-string: 0.30.4 + postcss: 5.2.18 + + '@unocss/preset-attributify@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + + '@unocss/preset-icons@0.55.3': + dependencies: + '@iconify/utils': 2.1.11 + '@unocss/core': 0.55.3 + ofetch: 1.3.3 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + '@unocss/extractor-arbitrary-variants': 0.55.3 + + '@unocss/preset-rem-to-px@0.55.7': + dependencies: + '@unocss/core': 0.55.7 + + '@unocss/preset-tagify@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + + '@unocss/preset-typography@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + '@unocss/preset-mini': 0.55.3 + + '@unocss/preset-uno@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + '@unocss/preset-mini': 0.55.3 + '@unocss/preset-wind': 0.55.3 + + '@unocss/preset-web-fonts@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + ofetch: 1.3.3 + + '@unocss/preset-wind@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + '@unocss/preset-mini': 0.55.3 + + '@unocss/reset@0.55.3': {} + + '@unocss/scope@0.55.3': {} + + '@unocss/transformer-attributify-jsx-babel@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + + '@unocss/transformer-attributify-jsx@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + + '@unocss/transformer-compile-class@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + + '@unocss/transformer-directives@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + css-tree: 2.3.1 + + '@unocss/transformer-variant-group@0.55.3': + dependencies: + '@unocss/core': 0.55.3 + + '@unocss/vite@0.55.3(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0))': + dependencies: + '@ampproject/remapping': 2.2.1 + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@unocss/config': 0.55.3 + '@unocss/core': 0.55.3 + '@unocss/inspector': 0.55.3 + '@unocss/scope': 0.55.3 + '@unocss/transformer-directives': 0.55.3 + chokidar: 3.5.3 + fast-glob: 3.3.1 + magic-string: 0.30.4 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + transitivePeerDependencies: + - rollup + + '@uppy/companion-client@2.2.2': + dependencies: + '@uppy/utils': 4.1.3 + namespace-emitter: 2.0.1 + + '@uppy/core@2.3.4': + dependencies: + '@transloadit/prettier-bytes': 0.0.7 + '@uppy/store-default': 2.1.1 + '@uppy/utils': 4.1.3 + lodash.throttle: 4.1.1 + mime-match: 1.0.2 + namespace-emitter: 2.0.1 + nanoid: 3.3.6 + preact: 10.18.1 + + '@uppy/store-default@2.1.1': {} + + '@uppy/utils@4.1.3': + dependencies: + lodash.throttle: 4.1.1 + + '@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4)': + dependencies: + '@uppy/companion-client': 2.2.2 + '@uppy/core': 2.3.4 + '@uppy/utils': 4.1.3 + nanoid: 3.3.6 + + '@vavt/util@1.4.0': {} + + '@vite-plugin-vue-devtools/core@1.0.0-rc.7(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0))': + dependencies: + '@babel/parser': 7.23.0 + birpc: 0.2.14 + estree-walker: 2.0.2 + magic-string: 0.30.4 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + vite-hot-client: 0.2.3(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + + '@vitejs/plugin-vue@4.4.0(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0))(vue@3.3.4)': + dependencies: + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + vue: 3.3.4 + + '@vue/babel-helper-vue-transform-on@1.1.5': {} + + '@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.5)': + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.0 + '@vue/babel-helper-vue-transform-on': 1.1.5 + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.3.4': + dependencies: + '@babel/parser': 7.23.0 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + + '@vue/compiler-dom@3.3.4': + dependencies: + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + + '@vue/compiler-sfc@3.3.4': + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.4 + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-ssr': 3.3.4 + '@vue/reactivity-transform': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.4 + postcss: 8.4.31 + source-map-js: 1.0.2 + + '@vue/compiler-ssr@3.3.4': + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/shared': 3.3.4 + + '@vue/devtools-api@6.5.0': {} + + '@vue/reactivity-transform@3.3.4': + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.4 + + '@vue/reactivity@3.3.4': + dependencies: + '@vue/shared': 3.3.4 + + '@vue/runtime-core@3.3.4': + dependencies: + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + + '@vue/runtime-dom@3.3.4': + dependencies: + '@vue/runtime-core': 3.3.4 + '@vue/shared': 3.3.4 + csstype: 3.1.2 + + '@vue/server-renderer@3.3.4(vue@3.3.4)': + dependencies: + '@vue/compiler-ssr': 3.3.4 + '@vue/shared': 3.3.4 + vue: 3.3.4 + + '@vue/shared@3.3.4': {} + + '@vueuse/core@10.4.1(vue@3.3.4)': + dependencies: + '@types/web-bluetooth': 0.0.17 + '@vueuse/metadata': 10.4.1 + '@vueuse/shared': 10.4.1(vue@3.3.4) + vue-demi: 0.14.6(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@10.4.1': {} + + '@vueuse/shared@10.4.1(vue@3.3.4)': + dependencies: + vue-demi: 0.14.6(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + dom7: 3.0.0 + is-url: 1.2.4 + lodash.throttle: 4.1.1 + nanoid: 3.3.6 + slate: 0.72.8 + snabbdom: 3.5.1 + + '@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.5.1)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + dom7: 3.0.0 + prismjs: 1.29.0 + slate: 0.72.8 + snabbdom: 3.5.1 + + '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1)': + dependencies: + '@types/event-emitter': 0.3.3 + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + dom7: 3.0.0 + event-emitter: 0.3.5 + html-void-elements: 2.0.1 + i18next: 20.6.1 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.6 + scroll-into-view-if-needed: 2.2.31 + slate: 0.72.8 + slate-history: 0.66.0(slate@0.72.8) + snabbdom: 3.5.1 + + '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.3.4)': + dependencies: + '@wangeditor/editor': 5.1.23 + vue: 3.3.4 + + '@wangeditor/editor@5.1.23': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.5.1) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.5.1) + '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.5.1) + '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + dom7: 3.0.0 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.6 + slate: 0.72.8 + snabbdom: 3.5.1 + + '@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.5.1)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + dom7: 3.0.0 + slate: 0.72.8 + snabbdom: 3.5.1 + + '@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + dom7: 3.0.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + nanoid: 3.3.6 + slate: 0.72.8 + snabbdom: 3.5.1 + + '@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.5.1)': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + dom7: 3.0.0 + lodash.foreach: 4.5.0 + slate: 0.72.8 + snabbdom: 3.5.1 + + '@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1))(dom7@3.0.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1)': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1) + dom7: 3.0.0 + nanoid: 3.3.6 + slate: 0.72.8 + snabbdom: 3.5.1 + + '@webfansplz/vuedoc-parser@0.0.4(pug@3.0.2)': + dependencies: + '@babel/parser': 7.23.0 + '@babel/traverse': 7.23.5 + pug: 3.0.2 + resolve: 1.22.6 + vue-template-compiler: 2.7.15 + transitivePeerDependencies: + - supports-color + + '@zclzone/eslint-config@0.0.5': + dependencies: + eslint: 8.50.0 + eslint-config-prettier: 8.10.0(eslint@8.50.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.50.0))(eslint@8.50.0)(prettier@2.8.8) + eslint-plugin-vue: 9.17.0(eslint@8.50.0) + prettier: 2.8.8 + transitivePeerDependencies: + - supports-color + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + acorn-jsx@5.3.2(acorn@8.10.0): + dependencies: + acorn: 8.10.0 + + acorn-walk@8.2.0: {} + + acorn@7.4.1: {} + + acorn@8.10.0: {} + + adler-32@1.3.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ansi-escapes@3.2.0: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + + ansi-regex@2.1.1: {} + + ansi-regex@3.0.1: {} + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@2.2.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + argparse@2.0.1: {} + + arr-diff@4.0.0: {} + + arr-flatten@1.1.0: {} + + arr-union@3.1.0: {} + + array-ify@1.0.0: {} + + array-union@2.1.0: {} + + array-unique@0.3.2: {} + + arrify@1.0.1: {} + + asap@2.0.6: {} + + assert-never@1.3.0: {} + + assign-symbols@1.0.0: {} + + async-validator@4.2.5: {} + + async@3.2.4: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + atob@2.1.2: {} + + axios@1.5.1: + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-walk@3.0.0-canary-5: + dependencies: + '@babel/types': 7.25.2 + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + big-integer@1.6.51: {} + + big.js@5.2.2: {} + + binary-extensions@2.2.0: {} + + birpc@0.2.14: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.7.2: {} + + boolbase@1.0.0: {} + + bplist-parser@0.2.0: + dependencies: + big-integer: 1.6.51 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + + browserslist@4.22.2: + dependencies: + caniuse-lite: 1.0.30001566 + electron-to-chromium: 1.4.609 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@3.3.0: {} + + bundle-name@3.0.0: + dependencies: + run-applescript: 5.0.0 + + cac@6.7.14: {} + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + + cachedir@2.3.0: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001566: {} + + cfb@1.2.2: + dependencies: + adler-32: 1.3.1 + crc-32: 1.2.2 + + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + character-parser@2.2.0: + dependencies: + is-regex: 1.1.4 + + chardet@0.7.0: {} + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + clean-css@5.3.2: + dependencies: + source-map: 0.6.1 + + cli-cursor@2.1.0: + dependencies: + restore-cursor: 2.0.0 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-spinners@2.9.1: {} + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + cli-width@2.2.1: {} + + cli-width@3.0.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + clone@2.1.2: {} + + codemirror@6.0.1(@lezer/common@1.1.0): + dependencies: + '@codemirror/autocomplete': 6.9.2(@codemirror/language@6.9.1)(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/commands': 6.3.0 + '@codemirror/language': 6.9.1 + '@codemirror/lint': 6.4.2 + '@codemirror/search': 6.5.4 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.21.3 + transitivePeerDependencies: + - '@lezer/common' + + codepage@1.15.0: {} + + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@11.0.0: {} + + commander@2.20.3: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + commitizen@4.3.0: + dependencies: + cachedir: 2.3.0 + cz-conventional-changelog: 3.3.0 + dedent: 0.7.0 + detect-indent: 6.1.0 + find-node-modules: 2.1.3 + find-root: 1.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + inquirer: 8.2.5 + is-utf8: 0.2.1 + lodash: 4.17.21 + minimist: 1.2.7 + strip-bom: 4.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + component-emitter@1.3.0: {} + + compute-scroll-into-view@1.0.20: {} + + concat-map@0.0.1: {} + + connect-history-api-fallback@1.6.0: {} + + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + consola@2.15.3: {} + + consola@3.2.3: {} + + constantinople@4.0.1: + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + conventional-changelog-angular@6.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@6.1.0: + dependencies: + compare-func: 2.0.0 + + conventional-commit-types@3.0.0: {} + + conventional-commits-parser@4.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + meow: 8.1.2 + split2: 3.2.2 + + convert-source-map@2.0.0: {} + + copy-descriptor@0.1.1: {} + + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.2.2))(ts-node@10.9.1(@types/node@20.5.1)(typescript@5.2.2))(typescript@5.2.2): + dependencies: + '@types/node': 20.5.1 + cosmiconfig: 8.3.6(typescript@5.2.2) + ts-node: 10.9.1(@types/node@20.5.1)(typescript@5.2.2) + typescript: 5.2.2 + + cosmiconfig@8.3.6(typescript@5.2.2): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.2.2 + + crc-32@1.2.2: {} + + create-require@1.1.1: {} + + crelt@1.0.6: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-render@0.15.12: + dependencies: + '@emotion/hash': 0.8.0 + csstype: 3.0.11 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + csstype@3.0.11: {} + + csstype@3.1.2: {} + + csstype@3.1.3: {} + + cz-conventional-changelog@3.3.0: + dependencies: + chalk: 2.4.2 + commitizen: 4.3.0 + conventional-commit-types: 3.0.0 + lodash.map: 4.6.0 + longest: 2.0.1 + word-wrap: 1.2.5 + optionalDependencies: + '@commitlint/load': 17.7.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + cz-customizable@7.0.0: + dependencies: + editor: 1.0.0 + find-config: 1.0.0 + inquirer: 6.5.2 + lodash: 4.17.21 + temp: 0.9.4 + word-wrap: 1.2.5 + + d@1.0.1: + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + + dargs@7.0.0: {} + + date-fns-tz@2.0.0(date-fns@2.30.0): + dependencies: + date-fns: 2.30.0 + + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.23.1 + + dayjs@1.11.10: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decode-uri-component@0.2.2: {} + + dedent@0.7.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-browser-id@3.0.0: + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + + default-browser@4.0.0: + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.6 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.2 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + + defu@6.1.2: {} + + delayed-stream@1.0.0: {} + + destr@2.0.1: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + diff@4.0.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + doctypes@1.1.0: {} + + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom7@3.0.0: + dependencies: + ssr-window: 3.0.0 + + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domhandler@2.4.2: + dependencies: + domelementtype: 1.3.1 + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv-expand@8.0.3: {} + + dotenv@16.3.1: {} + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + echarts@5.4.3: + dependencies: + tslib: 2.3.0 + zrender: 5.4.4 + + editor@1.0.0: {} + + ee-first@1.1.1: {} + + ejs@3.1.9: + dependencies: + jake: 10.8.7 + + electron-to-chromium@1.4.609: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encodeurl@1.0.2: {} + + entities@1.1.2: {} + + entities@2.2.0: {} + + entities@3.0.1: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser-es@0.1.1: {} + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es5-ext@0.10.62: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + + es6-symbol@3.1.3: + dependencies: + d: 1.0.1 + ext: 1.7.0 + + esbuild@0.11.3: {} + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + escalade@3.1.1: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-prettier@8.10.0(eslint@8.50.0): + dependencies: + eslint: 8.50.0 + + eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.50.0))(eslint@8.50.0)(prettier@2.8.8): + dependencies: + eslint: 8.50.0 + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + optionalDependencies: + eslint-config-prettier: 8.10.0(eslint@8.50.0) + + eslint-plugin-vue@9.17.0(eslint@8.50.0): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + eslint: 8.50.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.13 + semver: 7.5.4 + vue-eslint-parser: 9.3.1(eslint@8.50.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.50.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/regexpp': 4.9.1 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.50.0 + '@humanwhocodes/config-array': 0.11.11 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + esno@0.17.0: + dependencies: + tsx: 3.13.0 + + espree@9.6.1: + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@1.0.1: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + + eventemitter3@5.0.1: {} + + evtd@0.2.4: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + ext@1.7.0: + dependencies: + type: 2.7.2 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.15.0: + dependencies: + reusify: 1.0.4 + + figures@2.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.1.0 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-config@1.0.0: + dependencies: + user-home: 2.0.0 + + find-node-modules@2.1.3: + dependencies: + findup-sync: 4.0.0 + merge: 2.1.1 + + find-root@1.1.0: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + findup-sync@4.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.5 + resolve-dir: 1.0.1 + + flat-cache@3.1.0: + dependencies: + flatted: 3.2.9 + keyv: 4.5.3 + rimraf: 3.0.2 + + flatted@3.2.9: {} + + follow-redirects@1.15.3: {} + + for-in@1.0.2: {} + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + frac@1.1.2: {} + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + fs-extra@11.1.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-tsconfig@4.7.2: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-value@2.0.6: {} + + git-raw-commits@2.0.11: + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-dirs@0.1.1: + dependencies: + ini: 1.3.8 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.23.0: + dependencies: + type-fest: 0.20.2 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + hard-rejection@2.1.0: {} + + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + + has-flag@1.0.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + has@1.0.4: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + highlight.js@11.8.0: {} + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.2 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.21.0 + + html-tags@3.3.1: {} + + html-void-elements@2.0.1: {} + + htmlparser2@3.10.1: + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + human-signals@5.0.0: {} + + husky@8.0.3: {} + + i18next@20.6.1: + dependencies: + '@babel/runtime': 7.23.1 + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.2.4: {} + + image-size@0.5.5: {} + + immer@9.0.21: {} + + immutable@4.3.4: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + inquirer@6.5.2: + dependencies: + ansi-escapes: 3.2.0 + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-width: 2.2.1 + external-editor: 3.1.0 + figures: 2.0.0 + lodash: 4.17.21 + mute-stream: 0.0.7 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 2.1.1 + strip-ansi: 5.2.0 + through: 2.3.8 + + inquirer@8.2.5: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + + is-accessor-descriptor@0.1.6: + dependencies: + kind-of: 3.2.2 + + is-accessor-descriptor@1.0.0: + dependencies: + kind-of: 6.0.3 + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.2.0 + + is-buffer@1.1.6: {} + + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + + is-core-module@2.13.0: + dependencies: + has: 1.0.4 + + is-core-module@2.15.0: + dependencies: + hasown: 2.0.2 + + is-data-descriptor@0.1.4: + dependencies: + kind-of: 3.2.2 + + is-data-descriptor@1.0.0: + dependencies: + kind-of: 6.0.3 + + is-descriptor@0.1.6: + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + + is-descriptor@1.0.2: + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-expression@4.0.0: + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hotkey@0.2.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@1.0.0: {} + + is-module@1.0.0: {} + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@1.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-promise@2.2.2: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-text-path@1.0.1: + dependencies: + text-extensions: 1.9.0 + + is-unicode-supported@0.1.0: {} + + is-url@1.2.4: {} + + is-utf8@0.2.1: {} + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + jake@10.8.7: + dependencies: + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jiti@1.20.0: {} + + js-base64@2.6.4: {} + + js-stringify@1.0.2: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonc-parser@3.2.0: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jstransformer@1.0.0: + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + + keyv@4.5.3: + dependencies: + json-buffer: 3.0.1 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@5.1.0: {} + + kind-of@6.0.3: {} + + kolorist@1.8.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + linkify-it@4.0.1: + dependencies: + uc.micro: 1.0.6 + + lint-staged@14.0.1: + dependencies: + chalk: 5.3.0 + commander: 11.0.0 + debug: 4.3.4 + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 6.6.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + + listr2@6.6.1: + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.3.0 + wrap-ansi: 8.1.0 + + loader-utils@1.4.2: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + + local-pkg@0.4.3: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.debounce@4.0.8: {} + + lodash.foreach@4.5.0: {} + + lodash.isequal@4.5.0: {} + + lodash.isfunction@3.0.9: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.map@4.6.0: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.throttle@4.1.1: {} + + lodash.toarray@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@5.0.1: + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + + longest@2.0.1: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.6.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-cache@8.0.5: {} + + magic-string@0.30.4: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + make-error@1.3.6: {} + + map-cache@0.2.2: {} + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + markdown-it-image-figures@2.1.1(markdown-it@13.0.2): + dependencies: + markdown-it: 13.0.2 + + markdown-it-task-lists@2.1.1: {} + + markdown-it@13.0.2: + dependencies: + argparse: 2.0.1 + entities: 3.0.1 + linkify-it: 4.0.1 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + md-editor-v3@4.7.0(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0)(vue@3.3.4): + dependencies: + '@codemirror/lang-markdown': 6.2.2 + '@codemirror/language-data': 6.3.1(@codemirror/state@6.2.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@types/markdown-it': 12.2.3 + '@vavt/util': 1.4.0 + codemirror: 6.0.1(@lezer/common@1.1.0) + copy-to-clipboard: 3.3.3 + lru-cache: 8.0.5 + markdown-it: 13.0.2 + markdown-it-image-figures: 2.1.1(markdown-it@13.0.2) + markdown-it-task-lists: 2.1.1 + medium-zoom: 1.0.8 + punycode: 2.3.0 + vue: 3.3.4 + transitivePeerDependencies: + - '@codemirror/state' + - '@codemirror/view' + - '@lezer/common' + + mdn-data@2.0.14: {} + + mdn-data@2.0.30: {} + + mdurl@1.0.1: {} + + medium-zoom@1.0.8: {} + + meow@8.1.2: + dependencies: + '@types/minimist': 1.2.3 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-options@1.0.1: + dependencies: + is-plain-obj: 1.1.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + micromatch@3.1.0: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 1.0.0 + extend-shallow: 2.0.1 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 5.1.0 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.5: + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-match@1.0.2: + dependencies: + wildcard: 1.1.2 + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@1.2.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.7: {} + + minimist@1.2.8: {} + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mlly@1.4.2: + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.1 + + mockjs@1.1.0: + dependencies: + commander: 11.0.0 + + mrmime@1.0.1: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + mute-stream@0.0.7: {} + + mute-stream@0.0.8: {} + + naive-ui@2.39.0(vue@3.3.4): + dependencies: + '@css-render/plugin-bem': 0.15.12(css-render@0.15.12) + '@css-render/vue3-ssr': 0.15.12(vue@3.3.4) + '@types/katex': 0.16.3 + '@types/lodash': 4.14.199 + '@types/lodash-es': 4.17.9 + async-validator: 4.2.5 + css-render: 0.15.12 + csstype: 3.1.3 + date-fns: 2.30.0 + date-fns-tz: 2.0.0(date-fns@2.30.0) + evtd: 0.2.4 + highlight.js: 11.8.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + seemly: 0.3.8 + treemate: 0.3.11 + vdirs: 0.1.8(vue@3.3.4) + vooks: 0.2.12(vue@3.3.4) + vue: 3.3.4 + vueuc: 0.4.58(vue@3.3.4) + + namespace-emitter@2.0.1: {} + + nanoid@3.3.6: {} + + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + natural-compare@1.4.0: {} + + next-tick@1.1.0: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + + node-fetch-native@1.4.0: {} + + node-html-parser@5.4.2: + dependencies: + css-select: 4.3.0 + he: 1.2.0 + + node-releases@2.0.14: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.6 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.13.0 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.1.0: + dependencies: + path-key: 4.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + ofetch@1.3.3: + dependencies: + destr: 2.0.1 + node-fetch-native: 1.4.0 + ufo: 1.3.1 + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@2.0.1: + dependencies: + mimic-fn: 1.2.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@9.1.0: + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.1 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-homedir@1.0.2: {} + + os-tmpdir@1.0.2: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.22.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-passwd@1.0.0: {} + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + + pascalcase@0.1.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-to-regexp@6.2.1: {} + + path-type@4.0.0: {} + + pathe@0.2.0: {} + + pathe@1.1.1: {} + + perfect-debounce@1.0.0: {} + + picocolors@1.0.0: {} + + picomatch@2.3.1: {} + + pidtree@0.6.0: {} + + pinia@2.1.6(typescript@5.2.2)(vue@3.3.4): + dependencies: + '@vue/devtools-api': 6.5.0 + vue: 3.3.4 + vue-demi: 0.14.6(vue@3.3.4) + optionalDependencies: + typescript: 5.2.2 + + pkg-types@1.0.3: + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + + posix-character-classes@0.1.1: {} + + postcss-prefix-selector@1.16.0(postcss@5.2.18): + dependencies: + postcss: 5.2.18 + + postcss-selector-parser@6.0.13: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@5.2.18: + dependencies: + chalk: 1.1.3 + js-base64: 2.6.4 + source-map: 0.5.7 + supports-color: 3.2.3 + + postcss@8.4.31: + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + posthtml-parser@0.2.1: + dependencies: + htmlparser2: 3.10.1 + isobject: 2.1.0 + + posthtml-rename-id@1.0.12: + dependencies: + escape-string-regexp: 1.0.5 + + posthtml-render@1.4.0: {} + + posthtml-svg-mode@1.0.3: + dependencies: + merge-options: 1.0.1 + posthtml: 0.9.2 + posthtml-parser: 0.2.1 + posthtml-render: 1.4.0 + + posthtml@0.9.2: + dependencies: + posthtml-parser: 0.2.1 + posthtml-render: 1.4.0 + + preact@10.18.1: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@2.8.8: {} + + prismjs@1.29.0: {} + + promise@7.3.1: + dependencies: + asap: 2.0.6 + + proxy-from-env@1.1.0: {} + + pug-attrs@3.0.0: + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + + pug-code-gen@3.0.3: + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.1.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + + pug-error@2.1.0: {} + + pug-filters@4.0.0: + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.1.0 + pug-walk: 2.0.0 + resolve: 1.22.8 + + pug-lexer@5.0.1: + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.1.0 + + pug-linker@4.0.0: + dependencies: + pug-error: 2.1.0 + pug-walk: 2.0.0 + + pug-load@3.0.0: + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + + pug-parser@6.0.0: + dependencies: + pug-error: 2.1.0 + token-stream: 1.0.0 + + pug-runtime@3.0.1: {} + + pug-strip-comments@2.0.0: + dependencies: + pug-error: 2.1.0 + + pug-walk@2.0.0: {} + + pug@3.0.2: + dependencies: + pug-code-gen: 3.0.3 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + + punycode@2.3.0: {} + + query-string@4.3.4: + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + + queue-microtask@1.2.3: {} + + quick-lru@4.0.1: {} + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.2 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + regenerator-runtime@0.14.0: {} + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + relateurl@0.2.7: {} + + repeat-element@1.1.4: {} + + repeat-string@1.6.1: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resize-detector@0.3.0: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-global@1.0.0: + dependencies: + global-dirs: 0.1.1 + + resolve-pkg-maps@1.0.0: {} + + resolve-url@0.2.1: {} + + resolve@1.22.6: + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + ret@0.1.15: {} + + reusify@1.0.4: {} + + rfdc@1.3.0: {} + + rimraf@2.6.3: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup-plugin-visualizer@5.9.2(rollup@3.29.4): + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.7.2 + optionalDependencies: + rollup: 3.29.4 + + rollup@3.29.4: + optionalDependencies: + fsevents: 2.3.3 + + run-applescript@5.0.0: + dependencies: + execa: 5.1.1 + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.1: + dependencies: + tslib: 2.6.2 + + safe-buffer@5.2.1: {} + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + safer-buffer@2.1.2: {} + + sass@1.69.0: + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + scule@1.0.0: {} + + seemly@0.3.8: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@2.0.3: + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + + slash@3.0.0: {} + + slate-history@0.66.0(slate@0.72.8): + dependencies: + is-plain-object: 5.0.0 + slate: 0.72.8 + + slate@0.72.8: + dependencies: + immer: 9.0.21 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + snabbdom@3.5.1: {} + + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + source-map-js@1.0.2: {} + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-url@0.4.1: {} + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + + spdx-exceptions@2.3.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + + spdx-license-ids@3.0.16: {} + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + ssf@0.11.2: + dependencies: + frac: 1.1.2 + + ssr-window@3.0.0: {} + + stable@0.1.8: {} + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + statuses@1.5.0: {} + + strict-uri-encode@1.1.0: {} + + string-argv@0.3.2: {} + + string-width@2.1.1: + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@4.0.0: + dependencies: + ansi-regex: 3.0.1 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + strip-literal@1.3.0: + dependencies: + acorn: 8.10.0 + + style-mod@4.1.0: {} + + supports-color@2.0.0: {} + + supports-color@3.2.3: + dependencies: + has-flag: 1.0.0 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-baker@1.7.0: + dependencies: + bluebird: 3.7.2 + clone: 2.1.2 + he: 1.2.0 + image-size: 0.5.5 + loader-utils: 1.4.2 + merge-options: 1.0.1 + micromatch: 3.1.0 + postcss: 5.2.18 + postcss-prefix-selector: 1.16.0(postcss@5.2.18) + posthtml-rename-id: 1.0.12 + posthtml-svg-mode: 1.0.3 + query-string: 4.3.4 + traverse: 0.6.7 + transitivePeerDependencies: + - supports-color + + svg-tags@1.0.0: {} + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + + synckit@0.8.5: + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + + temp@0.9.4: + dependencies: + mkdirp: 0.5.6 + rimraf: 2.6.3 + + terser@5.21.0: + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-extensions@1.9.0: {} + + text-table@0.2.0: {} + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + + tiny-warning@1.0.3: {} + + titleize@3.0.0: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-fast-properties@2.0.0: {} + + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + + toggle-selection@1.0.6: {} + + token-stream@1.0.0: {} + + totalist@3.0.1: {} + + traverse@0.6.7: {} + + treemate@0.3.11: {} + + trim-newlines@3.0.1: {} + + ts-api-utils@1.0.3(typescript@5.2.2): + dependencies: + typescript: 5.2.2 + + ts-node@10.9.1(@types/node@20.5.1)(typescript@5.2.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.5.1 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tslib@1.14.1: {} + + tslib@2.3.0: {} + + tslib@2.6.2: {} + + tsx@3.13.0: + dependencies: + esbuild: 0.18.20 + get-tsconfig: 4.7.2 + source-map-support: 0.5.21 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.18.1: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@1.4.0: {} + + type@1.2.0: {} + + type@2.7.2: {} + + typescript@5.2.2: {} + + uc.micro@1.0.6: {} + + ufo@1.3.1: {} + + unconfig@0.3.11: + dependencies: + '@antfu/utils': 0.7.6 + defu: 6.1.2 + jiti: 1.20.0 + mlly: 1.4.2 + + unimport@3.4.0(rollup@3.29.4): + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + escape-string-regexp: 5.0.0 + fast-glob: 3.3.1 + local-pkg: 0.4.3 + magic-string: 0.30.4 + mlly: 1.4.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.0.0 + strip-literal: 1.3.0 + unplugin: 1.5.0 + transitivePeerDependencies: + - rollup + + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + + universalify@2.0.0: {} + + unocss@0.55.3(postcss@5.2.18)(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + '@unocss/astro': 0.55.3(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + '@unocss/cli': 0.55.3(rollup@3.29.4) + '@unocss/core': 0.55.3 + '@unocss/extractor-arbitrary-variants': 0.55.3 + '@unocss/postcss': 0.55.3(postcss@5.2.18) + '@unocss/preset-attributify': 0.55.3 + '@unocss/preset-icons': 0.55.3 + '@unocss/preset-mini': 0.55.3 + '@unocss/preset-tagify': 0.55.3 + '@unocss/preset-typography': 0.55.3 + '@unocss/preset-uno': 0.55.3 + '@unocss/preset-web-fonts': 0.55.3 + '@unocss/preset-wind': 0.55.3 + '@unocss/reset': 0.55.3 + '@unocss/transformer-attributify-jsx': 0.55.3 + '@unocss/transformer-attributify-jsx-babel': 0.55.3 + '@unocss/transformer-compile-class': 0.55.3 + '@unocss/transformer-directives': 0.55.3 + '@unocss/transformer-variant-group': 0.55.3 + '@unocss/vite': 0.55.3(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + optionalDependencies: + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + + unpipe@1.0.0: {} + + unplugin-auto-import@0.16.6(@vueuse/core@10.4.1(vue@3.3.4))(rollup@3.29.4): + dependencies: + '@antfu/utils': 0.7.6 + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + fast-glob: 3.3.1 + local-pkg: 0.4.3 + magic-string: 0.30.4 + minimatch: 9.0.3 + unimport: 3.4.0(rollup@3.29.4) + unplugin: 1.5.0 + optionalDependencies: + '@vueuse/core': 10.4.1(vue@3.3.4) + transitivePeerDependencies: + - rollup + + unplugin-icons@0.16.6(@vue/compiler-sfc@3.3.4)(vue-template-compiler@2.7.15): + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.6 + '@iconify/utils': 2.1.11 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.4.3 + unplugin: 1.5.0 + optionalDependencies: + '@vue/compiler-sfc': 3.3.4 + vue-template-compiler: 2.7.15 + transitivePeerDependencies: + - supports-color + + unplugin-vue-components@0.25.2(@babel/parser@7.25.3)(rollup@3.29.4)(vue@3.3.4): + dependencies: + '@antfu/utils': 0.7.6 + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + chokidar: 3.5.3 + debug: 4.3.4 + fast-glob: 3.3.1 + local-pkg: 0.4.3 + magic-string: 0.30.4 + minimatch: 9.0.3 + resolve: 1.22.6 + unplugin: 1.5.0 + vue: 3.3.4 + optionalDependencies: + '@babel/parser': 7.25.3 + transitivePeerDependencies: + - rollup + - supports-color + + unplugin@1.5.0: + dependencies: + acorn: 8.10.0 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + untildify@4.0.0: {} + + update-browserslist-db@1.0.13(browserslist@4.22.2): + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.0 + + urix@0.1.0: {} + + use@3.1.1: {} + + user-home@2.0.0: + dependencies: + os-homedir: 1.0.2 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + v8-compile-cache-lib@3.0.1: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vary@1.1.2: {} + + vdirs@0.1.8(vue@3.3.4): + dependencies: + evtd: 0.2.4 + vue: 3.3.4 + + vite-hot-client@0.2.3(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + + vite-plugin-compression@0.5.1(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + chalk: 4.1.2 + debug: 4.3.4 + fs-extra: 10.1.0 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + transitivePeerDependencies: + - supports-color + + vite-plugin-html@3.2.0(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + '@rollup/pluginutils': 4.2.1 + colorette: 2.0.20 + connect-history-api-fallback: 1.6.0 + consola: 2.15.3 + dotenv: 16.3.1 + dotenv-expand: 8.0.3 + ejs: 3.1.9 + fast-glob: 3.3.1 + fs-extra: 10.1.0 + html-minifier-terser: 6.1.0 + node-html-parser: 5.4.2 + pathe: 0.2.0 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + + vite-plugin-inspect@0.7.42(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + '@antfu/utils': 0.7.6 + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + debug: 4.3.4 + error-stack-parser-es: 0.1.1 + fs-extra: 11.1.1 + open: 9.1.0 + picocolors: 1.0.0 + sirv: 2.0.3 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + transitivePeerDependencies: + - rollup + - supports-color + + vite-plugin-mock@2.9.6(mockjs@1.1.0)(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + '@rollup/plugin-node-resolve': 13.3.0(rollup@3.29.4) + '@types/mockjs': 1.0.8 + chalk: 4.1.2 + chokidar: 3.5.3 + connect: 3.7.0 + debug: 4.3.4 + esbuild: 0.11.3 + fast-glob: 3.3.1 + mockjs: 1.1.0 + path-to-regexp: 6.2.1 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + transitivePeerDependencies: + - rollup + - supports-color + + vite-plugin-svg-icons@2.0.1(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + '@types/svgo': 2.6.4 + cors: 2.8.5 + debug: 4.3.4 + etag: 1.8.1 + fs-extra: 10.1.0 + pathe: 0.2.0 + svg-baker: 1.7.0 + svgo: 2.8.0 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + transitivePeerDependencies: + - supports-color + + vite-plugin-vue-devtools@1.0.0-rc.7(pug@3.0.2)(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + '@vite-plugin-vue-devtools/core': 1.0.0-rc.7(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + '@webfansplz/vuedoc-parser': 0.0.4(pug@3.0.2) + birpc: 0.2.14 + execa: 8.0.1 + sirv: 2.0.3 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + vite-plugin-inspect: 0.7.42(rollup@3.29.4)(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + vite-plugin-vue-inspector: 4.0.2(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)) + transitivePeerDependencies: + - '@nuxt/kit' + - pug + - rollup + - supports-color + + vite-plugin-vue-inspector@4.0.2(vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0)): + dependencies: + '@babel/core': 7.23.5 + '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.23.5) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.23.5) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.5) + '@vue/compiler-dom': 3.3.4 + kolorist: 1.8.0 + magic-string: 0.30.4 + vite: 4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0) + transitivePeerDependencies: + - supports-color + + vite@4.4.11(@types/node@20.5.1)(sass@1.69.0)(terser@5.21.0): + dependencies: + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + optionalDependencies: + '@types/node': 20.5.1 + fsevents: 2.3.3 + sass: 1.69.0 + terser: 5.21.0 + + void-elements@3.1.0: {} + + vooks@0.2.12(vue@3.3.4): + dependencies: + evtd: 0.2.4 + vue: 3.3.4 + + vue-demi@0.13.11(vue@3.3.4): + dependencies: + vue: 3.3.4 + + vue-demi@0.14.6(vue@3.3.4): + dependencies: + vue: 3.3.4 + + vue-echarts@6.6.1(echarts@5.4.3)(vue@3.3.4): + dependencies: + echarts: 5.4.3 + resize-detector: 0.3.0 + vue: 3.3.4 + vue-demi: 0.13.11(vue@3.3.4) + + vue-eslint-parser@9.3.1(eslint@8.50.0): + dependencies: + debug: 4.3.4 + eslint: 8.50.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + + vue-router@4.2.5(vue@3.3.4): + dependencies: + '@vue/devtools-api': 6.5.0 + vue: 3.3.4 + + vue-template-compiler@2.7.15: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue@3.3.4: + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-sfc': 3.3.4 + '@vue/runtime-dom': 3.3.4 + '@vue/server-renderer': 3.3.4(vue@3.3.4) + '@vue/shared': 3.3.4 + + vueuc@0.4.58(vue@3.3.4): + dependencies: + '@css-render/vue3-ssr': 0.15.12(vue@3.3.4) + '@juggle/resize-observer': 3.4.0 + css-render: 0.15.12 + evtd: 0.2.4 + seemly: 0.3.8 + vdirs: 0.1.8(vue@3.3.4) + vooks: 0.2.12(vue@3.3.4) + vue: 3.3.4 + + w3c-keyname@2.2.8: {} + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.5.0: {} + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wildcard@1.1.2: {} + + with@7.0.2: + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + assert-never: 1.3.0 + babel-walk: 3.0.0-canary-5 + + wmf@1.0.2: {} + + word-wrap@1.2.5: {} + + word@0.3.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + xlsx@0.18.5: + dependencies: + adler-32: 1.3.1 + cfb: 1.2.2 + codepage: 1.15.0 + crc-32: 1.2.2 + ssf: 0.11.2 + wmf: 1.0.2 + word: 0.3.0 + + xml-name-validator@4.0.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@2.3.1: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + zrender@5.4.4: + dependencies: + tslib: 2.3.0 diff --git a/web/public/favicon.png b/web/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..929c58aa1707fb2320f9bab31262bfaab60a6a47 GIT binary patch literal 3859 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 F{|9)eUV#7r literal 0 HcmV?d00001 diff --git a/web/public/favicon.svg b/web/public/favicon.svg new file mode 100644 index 0000000..13bc487 --- /dev/null +++ b/web/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/public/resource/loading.css b/web/public/resource/loading.css new file mode 100644 index 0000000..5194db5 --- /dev/null +++ b/web/public/resource/loading.css @@ -0,0 +1,85 @@ +.loading-container { + position: fixed; + left: 0; + top: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; +} + +.loading-spin__container { + width: 56px; + height: 56px; + margin: 36px 0; +} + +.loading-spin { + position: relative; + height: 100%; + animation: loadingSpin 1s linear infinite; +} + +.left-0 { + left: 0; +} +.right-0 { + right: 0; +} +.top-0 { + top: 0; +} +.bottom-0 { + bottom: 0; +} + +.loading-spin-item { + position: absolute; + height: 16px; + width: 16px; + background-color: var(--primary-color); + border-radius: 8px; + -webkit-animation: loadingPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + animation: loadingPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; +} + +@keyframes loadingSpin { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes loadingPulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: .5; + } +} + +.loading-delay-500 { + -webkit-animation-delay: 500ms; + animation-delay: 500ms; +} +.loading-delay-1000 { + -webkit-animation-delay: 1000ms; + animation-delay: 1000ms; +} +.loading-delay-1500 { + -webkit-animation-delay: 1500ms; + animation-delay: 1500ms; +} + +.loading-title { + font-size: 28px; + font-weight: 500; + color: #6a6a6a; +} diff --git a/web/public/resource/loading.js b/web/public/resource/loading.js new file mode 100644 index 0000000..5740fde --- /dev/null +++ b/web/public/resource/loading.js @@ -0,0 +1,9 @@ +function addThemeColorCssVars() { + const key = '__THEME_COLOR__' + const defaultColor = '#316c72' + const themeColor = window.localStorage.getItem(key) || defaultColor + const cssVars = `--primary-color: ${themeColor}` + document.documentElement.style.cssText = cssVars +} + +addThemeColorCssVars() diff --git a/web/public/resource/logo.png b/web/public/resource/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..187ff0bc8b5d29c1a573702ca1b64dda2293cdcd GIT binary patch literal 8572 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 + + + + + + + + diff --git a/web/src/api/user.js b/web/src/api/user.js new file mode 100644 index 0000000..af00c0d --- /dev/null +++ b/web/src/api/user.js @@ -0,0 +1,9 @@ +import { request } from '@/utils' + +export default { + getUser: () => request.get('/user/info'), // 获取当前登陆用户信息 + logout: () => request.post('/user/logout'), // 退出登陆 + changePassword: (data) => request.put('/user/change-password',data), // 修改密码 + generateAvatar: () => request.post('/user/generate-avatar'), // 生成头像 + addOrUpdateUser: (data) => request.post('/user',data), // 新增/编辑用户信息 +} diff --git a/web/src/assets/images/404.webp b/web/src/assets/images/404.webp new file mode 100644 index 0000000000000000000000000000000000000000..3482bf96530efee4fbb405eea59b32a875c0e575 GIT binary patch literal 14344 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 z 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 P{02Y92SmId2<`s?>zme* literal 0 HcmV?d00001 diff --git a/web/src/assets/images/logo.png b/web/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..187ff0bc8b5d29c1a573702ca1b64dda2293cdcd GIT binary patch literal 8572 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 +
+

+ Copyright © 2022-present + + + + + + + +

+

+ + + + + + + +

+
+ diff --git a/web/src/components/common/AppProvider.vue b/web/src/components/common/AppProvider.vue new file mode 100644 index 0000000..bdb9794 --- /dev/null +++ b/web/src/components/common/AppProvider.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/components/common/ScrollX.vue b/web/src/components/common/ScrollX.vue new file mode 100644 index 0000000..cb9c2b3 --- /dev/null +++ b/web/src/components/common/ScrollX.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/web/src/components/icon/CustomIcon.vue b/web/src/components/icon/CustomIcon.vue new file mode 100644 index 0000000..bf8d62f --- /dev/null +++ b/web/src/components/icon/CustomIcon.vue @@ -0,0 +1,22 @@ + + + diff --git a/web/src/components/icon/SvgIcon.vue b/web/src/components/icon/SvgIcon.vue new file mode 100644 index 0000000..7adfe73 --- /dev/null +++ b/web/src/components/icon/SvgIcon.vue @@ -0,0 +1,24 @@ + + + diff --git a/web/src/components/icon/TheIcon.vue b/web/src/components/icon/TheIcon.vue new file mode 100644 index 0000000..62edef1 --- /dev/null +++ b/web/src/components/icon/TheIcon.vue @@ -0,0 +1,33 @@ + + + diff --git a/web/src/components/page/AppPage.vue b/web/src/components/page/AppPage.vue new file mode 100644 index 0000000..9e30448 --- /dev/null +++ b/web/src/components/page/AppPage.vue @@ -0,0 +1,18 @@ + + + diff --git a/web/src/components/page/ClientListHeaderPage.vue b/web/src/components/page/ClientListHeaderPage.vue new file mode 100644 index 0000000..02516b1 --- /dev/null +++ b/web/src/components/page/ClientListHeaderPage.vue @@ -0,0 +1,229 @@ + + + \ No newline at end of file diff --git a/web/src/components/page/CommonPage.vue b/web/src/components/page/CommonPage.vue new file mode 100644 index 0000000..182f7c1 --- /dev/null +++ b/web/src/components/page/CommonPage.vue @@ -0,0 +1,33 @@ + + + diff --git a/web/src/components/query-bar/QueryBar.vue b/web/src/components/query-bar/QueryBar.vue new file mode 100644 index 0000000..a1f8798 --- /dev/null +++ b/web/src/components/query-bar/QueryBar.vue @@ -0,0 +1,27 @@ + + + diff --git a/web/src/components/query-bar/QueryBarItem.vue b/web/src/components/query-bar/QueryBarItem.vue new file mode 100644 index 0000000..7434ed5 --- /dev/null +++ b/web/src/components/query-bar/QueryBarItem.vue @@ -0,0 +1,34 @@ + + + diff --git a/web/src/components/table/CrudModal.vue b/web/src/components/table/CrudModal.vue new file mode 100644 index 0000000..d3e5e33 --- /dev/null +++ b/web/src/components/table/CrudModal.vue @@ -0,0 +1,55 @@ + + + diff --git a/web/src/components/table/CrudTable.vue b/web/src/components/table/CrudTable.vue new file mode 100644 index 0000000..f2a36c0 --- /dev/null +++ b/web/src/components/table/CrudTable.vue @@ -0,0 +1,149 @@ + + + diff --git a/web/src/composables/index.js b/web/src/composables/index.js new file mode 100644 index 0000000..e410b83 --- /dev/null +++ b/web/src/composables/index.js @@ -0,0 +1 @@ +export { default as useCRUD } from './useCRUD' diff --git a/web/src/composables/useCRUD.js b/web/src/composables/useCRUD.js new file mode 100644 index 0000000..11fefeb --- /dev/null +++ b/web/src/composables/useCRUD.js @@ -0,0 +1,103 @@ +import { isNullOrWhitespace } from '@/utils' + +const ACTIONS = { + view: '查看', + edit: '编辑', + add: '新增', +} + +export default function ({ name, initForm = {}, doCreate, doDelete, doUpdate, refresh }) { + const modalVisible = ref(false) + const modalAction = ref('') + const modalTitle = computed(() => ACTIONS[modalAction.value] + name) + const modalLoading = ref(false) + const modalFormRef = ref(null) + const modalForm = ref({ ...initForm }) + + /** 新增 */ + function handleAdd() { + modalAction.value = 'add' + modalVisible.value = true + modalForm.value = { ...initForm } + } + + /** 修改 */ + function handleEdit(row) { + modalAction.value = 'edit' + modalVisible.value = true + modalForm.value = { ...row } + } + + /** 查看 */ + function handleView(row) { + modalAction.value = 'view' + modalVisible.value = true + modalForm.value = { ...row } + } + + /** 保存 */ + function handleSave() { + if (!['edit', 'add'].includes(modalAction.value)) { + modalVisible.value = false + return + } + modalFormRef.value?.validate(async (err) => { + if (err) return + const actions = { + add: { + api: () => doCreate(modalForm.value), + cb: () => $message.success('新增成功'), + }, + edit: { + api: () => doUpdate(modalForm.value), + cb: () => $message.success('编辑成功'), + }, + } + const action = actions[modalAction.value] + + try { + modalLoading.value = true + const data = await action.api() + action.cb() + modalLoading.value = modalVisible.value = false + data && refresh(data) + } catch (error) { + modalLoading.value = false + } + }) + } + + /** 删除 */ + function handleDelete(id, confirmOptions) { + if (isNullOrWhitespace(id)) return + $dialog.confirm({ + content: '确定删除?', + async confirm() { + try { + modalLoading.value = true + const data = await doDelete(id) + $message.success('删除成功') + modalLoading.value = false + refresh(data) + } catch (error) { + modalLoading.value = false + } + }, + ...confirmOptions, + }) + } + + return { + modalVisible, + modalAction, + modalTitle, + modalLoading, + handleAdd, + handleDelete, + handleEdit, + handleView, + handleSave, + modalForm, + modalFormRef, + } +} diff --git a/web/src/layout/components/AppMain.vue b/web/src/layout/components/AppMain.vue new file mode 100644 index 0000000..e0f9fae --- /dev/null +++ b/web/src/layout/components/AppMain.vue @@ -0,0 +1,16 @@ + + + diff --git a/web/src/layout/components/header/components/BreadCrumb.vue b/web/src/layout/components/header/components/BreadCrumb.vue new file mode 100644 index 0000000..07b374c --- /dev/null +++ b/web/src/layout/components/header/components/BreadCrumb.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/layout/components/header/components/FullScreen.vue b/web/src/layout/components/header/components/FullScreen.vue new file mode 100644 index 0000000..66e873d --- /dev/null +++ b/web/src/layout/components/header/components/FullScreen.vue @@ -0,0 +1,12 @@ + + + diff --git a/web/src/layout/components/header/components/GiteeSite.vue b/web/src/layout/components/header/components/GiteeSite.vue new file mode 100644 index 0000000..9231f7c --- /dev/null +++ b/web/src/layout/components/header/components/GiteeSite.vue @@ -0,0 +1,11 @@ + + + diff --git a/web/src/layout/components/header/components/GithubSite.vue b/web/src/layout/components/header/components/GithubSite.vue new file mode 100644 index 0000000..c3efc93 --- /dev/null +++ b/web/src/layout/components/header/components/GithubSite.vue @@ -0,0 +1,11 @@ + + + diff --git a/web/src/layout/components/header/components/MenuCollapse.vue b/web/src/layout/components/header/components/MenuCollapse.vue new file mode 100644 index 0000000..8c721fb --- /dev/null +++ b/web/src/layout/components/header/components/MenuCollapse.vue @@ -0,0 +1,12 @@ + + + diff --git a/web/src/layout/components/header/components/MessageNotification.vue b/web/src/layout/components/header/components/MessageNotification.vue new file mode 100644 index 0000000..4e45cf9 --- /dev/null +++ b/web/src/layout/components/header/components/MessageNotification.vue @@ -0,0 +1,82 @@ + + + diff --git a/web/src/layout/components/header/components/ThemeMode.vue b/web/src/layout/components/header/components/ThemeMode.vue new file mode 100644 index 0000000..01ce41e --- /dev/null +++ b/web/src/layout/components/header/components/ThemeMode.vue @@ -0,0 +1,18 @@ + + + diff --git a/web/src/layout/components/header/components/UserAvatar.vue b/web/src/layout/components/header/components/UserAvatar.vue new file mode 100644 index 0000000..3a355e6 --- /dev/null +++ b/web/src/layout/components/header/components/UserAvatar.vue @@ -0,0 +1,218 @@ + + + diff --git a/web/src/layout/components/header/index.vue b/web/src/layout/components/header/index.vue new file mode 100644 index 0000000..1f381eb --- /dev/null +++ b/web/src/layout/components/header/index.vue @@ -0,0 +1,17 @@ + + + diff --git a/web/src/layout/components/sidebar/components/SideLogo.vue b/web/src/layout/components/sidebar/components/SideLogo.vue new file mode 100644 index 0000000..2b4082f --- /dev/null +++ b/web/src/layout/components/sidebar/components/SideLogo.vue @@ -0,0 +1,15 @@ + + + diff --git a/web/src/layout/components/sidebar/components/SideMenu.vue b/web/src/layout/components/sidebar/components/SideMenu.vue new file mode 100644 index 0000000..53720a6 --- /dev/null +++ b/web/src/layout/components/sidebar/components/SideMenu.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/web/src/layout/components/sidebar/index.vue b/web/src/layout/components/sidebar/index.vue new file mode 100644 index 0000000..ffd659d --- /dev/null +++ b/web/src/layout/components/sidebar/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/web/src/layout/components/tags/ContextMenu.vue b/web/src/layout/components/tags/ContextMenu.vue new file mode 100644 index 0000000..af7ac5a --- /dev/null +++ b/web/src/layout/components/tags/ContextMenu.vue @@ -0,0 +1,118 @@ + + + diff --git a/web/src/layout/components/tags/index.vue b/web/src/layout/components/tags/index.vue new file mode 100644 index 0000000..815e1e3 --- /dev/null +++ b/web/src/layout/components/tags/index.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/web/src/layout/index.vue b/web/src/layout/index.vue new file mode 100644 index 0000000..c9e18a5 --- /dev/null +++ b/web/src/layout/index.vue @@ -0,0 +1,42 @@ + + + diff --git a/web/src/main.js b/web/src/main.js new file mode 100644 index 0000000..5633ce7 --- /dev/null +++ b/web/src/main.js @@ -0,0 +1,21 @@ +/** 重置样式 */ +import '@/styles/reset.css' +import 'uno.css' +import '@/styles/global.scss' +import 'virtual:svg-icons-register' + +import { createApp } from 'vue' +import { setupRouter } from '@/router' +import { setupStore } from '@/store' +import App from './App.vue' +import { setupNaiveDiscreteApi } from './utils' + +async function setupApp() { + const app = createApp(App) + setupStore(app) + await setupRouter(app) + app.mount('#app') + setupNaiveDiscreteApi() +} + +setupApp() diff --git a/web/src/router/guard/index.js b/web/src/router/guard/index.js new file mode 100644 index 0000000..59d0dee --- /dev/null +++ b/web/src/router/guard/index.js @@ -0,0 +1,9 @@ +import { createPageLoadingGuard } from './page-loading-guard' +import { createPageTitleGuard } from './page-title-guard' +import { createPermissionGuard } from './permission-guard' + +export function setupRouterGuard(router) { + createPageLoadingGuard(router) + createPermissionGuard(router) + createPageTitleGuard(router) +} diff --git a/web/src/router/guard/page-loading-guard.js b/web/src/router/guard/page-loading-guard.js new file mode 100644 index 0000000..bd0f038 --- /dev/null +++ b/web/src/router/guard/page-loading-guard.js @@ -0,0 +1,15 @@ +export function createPageLoadingGuard(router) { + router.beforeEach(() => { + window.$loadingBar?.start() + }) + + router.afterEach(() => { + setTimeout(() => { + window.$loadingBar?.finish() + }, 200) + }) + + router.onError(() => { + window.$loadingBar?.error() + }) +} diff --git a/web/src/router/guard/page-title-guard.js b/web/src/router/guard/page-title-guard.js new file mode 100644 index 0000000..2a95278 --- /dev/null +++ b/web/src/router/guard/page-title-guard.js @@ -0,0 +1,12 @@ +const baseTitle = import.meta.env.VITE_TITLE + +export function createPageTitleGuard(router) { + router.afterEach((to) => { + const pageTitle = to.meta?.title + if (pageTitle) { + document.title = `${pageTitle} | ${baseTitle}` + } else { + document.title = baseTitle + } + }) +} diff --git a/web/src/router/guard/permission-guard.js b/web/src/router/guard/permission-guard.js new file mode 100644 index 0000000..cb9ba63 --- /dev/null +++ b/web/src/router/guard/permission-guard.js @@ -0,0 +1,19 @@ +import { getToken, isNullOrWhitespace } from '@/utils' + +const WHITE_LIST = ['/login', '/404'] +export function createPermissionGuard(router) { + router.beforeEach(async (to) => { + const token = getToken() + + /** 没有token的情况 */ + if (isNullOrWhitespace(token)) { + if (WHITE_LIST.includes(to.path)) return true + return { path: 'login', query: { ...to.query, redirect: to.path } } + } + + /** 有token的情况 */ + if (to.path === '/login') return { path: '/' } + + return true + }) +} diff --git a/web/src/router/index.js b/web/src/router/index.js new file mode 100644 index 0000000..5ab6b9b --- /dev/null +++ b/web/src/router/index.js @@ -0,0 +1,67 @@ +import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router' +import { setupRouterGuard } from './guard' +import { basicRoutes, EMPTY_ROUTE, NOT_FOUND_ROUTE } from './routes' +import { getToken, isNullOrWhitespace } from '@/utils' +import { useUserStore, usePermissionStore } from '@/store' + +const isHash = import.meta.env.VITE_USE_HASH === 'true' +export const router = createRouter({ + history: isHash ? createWebHashHistory('/') : createWebHistory('/'), + routes: basicRoutes, + scrollBehavior: () => ({ left: 0, top: 0 }), +}) + +export async function setupRouter(app) { + await addDynamicRoutes() + setupRouterGuard(router) + app.use(router) +} + +export async function resetRouter() { + const basicRouteNames = getRouteNames(basicRoutes) + router.getRoutes().forEach((route) => { + const name = route.name + if (!basicRouteNames.includes(name)) { + router.removeRoute(name) + } + }) +} + +export async function addDynamicRoutes() { + const token = getToken() + // 没有token情况 + if (isNullOrWhitespace(token)) { + router.addRoute(EMPTY_ROUTE) + return + } + // 有token的情况 + const userStore = useUserStore() + try { + + const permissionStore = usePermissionStore() + !userStore.id && (await userStore.getUserInfo()) + + const accessRoutes = permissionStore.generateRoutes(userStore.role) + accessRoutes.forEach((route) => { + !router.hasRoute(route.name) && router.addRoute(route) + }) + router.hasRoute(EMPTY_ROUTE.name) && router.removeRoute(EMPTY_ROUTE.name) + router.addRoute(NOT_FOUND_ROUTE) + } catch (error) { + console.error(error) + $message.error('初始化用户信息失败: ' + error) + userStore.logout() + } +} + +export function getRouteNames(routes) { + return routes.map((route) => getRouteName(route)).flat(1) +} + +function getRouteName(route) { + const names = [route.name] + if (route.children && route.children.length) { + names.push(...route.children.map((item) => getRouteName(item)).flat(1)) + } + return names +} diff --git a/web/src/router/routes/index.js b/web/src/router/routes/index.js new file mode 100644 index 0000000..95bd48d --- /dev/null +++ b/web/src/router/routes/index.js @@ -0,0 +1,34 @@ +const Layout = () => import('@/layout/index.vue') + +export const basicRoutes = [ + { + name: 'Login', + path: '/login', + component: () => import('@/views/login/index.vue'), + isHidden: true, + meta: { + title: '登录页', + }, + } +] + +export const NOT_FOUND_ROUTE = { + name: 'NotFound', + path: '/:pathMatch(.*)*', + redirect: '/404', + isHidden: true, +} + +export const EMPTY_ROUTE = { + name: 'Empty', + path: '/:pathMatch(.*)*', + component: null, +} + +const modules = import.meta.glob('@/views/**/route.js', { eager: true }) +const asyncRoutes = [] +Object.keys(modules).forEach((key) => { + asyncRoutes.push(modules[key].default) +}) + +export { asyncRoutes } diff --git a/web/src/store/index.js b/web/src/store/index.js new file mode 100644 index 0000000..1dec2e9 --- /dev/null +++ b/web/src/store/index.js @@ -0,0 +1,7 @@ +import { createPinia } from 'pinia' + +export function setupStore(app) { + app.use(createPinia()) +} + +export * from './modules' diff --git a/web/src/store/modules/app/index.js b/web/src/store/modules/app/index.js new file mode 100644 index 0000000..41117f2 --- /dev/null +++ b/web/src/store/modules/app/index.js @@ -0,0 +1,28 @@ +import { defineStore } from 'pinia' +import { useDark } from '@vueuse/core' + +const isDark = useDark() +export const useAppStore = defineStore('app', { + state() { + return { + collapsed: false, + isDark, + } + }, + actions: { + switchCollapsed() { + this.collapsed = !this.collapsed + }, + setCollapsed(collapsed) { + this.collapsed = collapsed + }, + /** 设置暗黑模式 */ + setDark(isDark) { + this.isDark = isDark + }, + /** 切换/关闭 暗黑模式 */ + toggleDark() { + this.isDark = !this.isDark + }, + }, +}) diff --git a/web/src/store/modules/index.js b/web/src/store/modules/index.js new file mode 100644 index 0000000..edeeee1 --- /dev/null +++ b/web/src/store/modules/index.js @@ -0,0 +1,4 @@ +export * from './app' +export * from './permission' +export * from './tags' +export * from './user' diff --git a/web/src/store/modules/permission/index.js b/web/src/store/modules/permission/index.js new file mode 100644 index 0000000..c551d18 --- /dev/null +++ b/web/src/store/modules/permission/index.js @@ -0,0 +1,60 @@ +import { defineStore } from 'pinia' +import { asyncRoutes, basicRoutes } from '@/router/routes' + +function hasPermission(route, role) { + // * 不需要权限直接返回true + if (!route.meta?.requireAuth) return true + + const routeRole = route.meta?.role ? route.meta.role : [] + + // * 登录用户没有角色或者路由没有设置角色判定为没有权限 + if (!role.length || !routeRole.length) return false + + // * 路由指定的角色包含任一登录用户角色则判定有权限 + return role.some((item) => routeRole.includes(item)) +} + +function filterAsyncRoutes(routes = [], role) { + const ret = [] + routes.forEach((route) => { + if (hasPermission(route, role)) { + const curRoute = { + ...route, + children: [], + } + if (route.children && route.children.length) { + curRoute.children = filterAsyncRoutes(route.children, role) + } else { + Reflect.deleteProperty(curRoute, 'children') + } + ret.push(curRoute) + } + }) + return ret +} + +export const usePermissionStore = defineStore('permission', { + state() { + return { + accessRoutes: [], + } + }, + getters: { + routes() { + return basicRoutes.concat(this.accessRoutes) + }, + menus() { + return this.routes.filter((route) => route.name && !route.isHidden) + }, + }, + actions: { + generateRoutes(role = []) { + const accessRoutes = filterAsyncRoutes(asyncRoutes, role) + this.accessRoutes = accessRoutes + return accessRoutes + }, + resetPermission() { + this.$reset() + }, + }, +}) diff --git a/web/src/store/modules/tags/helpers.js b/web/src/store/modules/tags/helpers.js new file mode 100644 index 0000000..d7c94c9 --- /dev/null +++ b/web/src/store/modules/tags/helpers.js @@ -0,0 +1,6 @@ +import { sStorage } from '@/utils' + +export const activeTag = sStorage.get('activeTag') +export const tags = sStorage.get('tags') + +export const WITHOUT_TAG_PATHS = ['/404', '/login'] diff --git a/web/src/store/modules/tags/index.js b/web/src/store/modules/tags/index.js new file mode 100644 index 0000000..5d615bf --- /dev/null +++ b/web/src/store/modules/tags/index.js @@ -0,0 +1,83 @@ +import { defineStore } from 'pinia' +import { activeTag, tags, WITHOUT_TAG_PATHS } from './helpers' +import { router } from '@/router' +import { sStorage } from '@/utils' + +export const useTagsStore = defineStore('tag', { + state() { + return { + tags: tags || [], + activeTag: activeTag || '', + reloading: false, + } + }, + getters: { + activeIndex() { + return this.tags.findIndex((item) => item.path === this.activeTag) + }, + }, + actions: { + setActiveTag(path) { + this.activeTag = path + sStorage.set('activeTag', path) + }, + setTags(tags) { + this.tags = tags + sStorage.set('tags', tags) + }, + addTag(tag = {}) { + if (WITHOUT_TAG_PATHS.includes(tag.path)) return + let findItem = this.tags.find((item) => item.path === tag.path) + if (findItem) findItem = tag + else this.setTags([...this.tags, tag]) + this.setActiveTag(tag.path) + }, + async reloadTag(path, keepAlive) { + const findItem = this.tags.find((item) => item.path === path) + // 更新key可让keepAlive失效 + if (findItem && keepAlive) findItem.keepAlive = false + + $loadingBar.start() + this.reloading = true + await nextTick() + this.reloading = false + findItem.keepAlive = keepAlive + setTimeout(() => { + document.documentElement.scrollTo({ left: 0, top: 0 }) + $loadingBar.finish() + }, 100) + }, + removeTag(path) { + this.setTags(this.tags.filter((tag) => tag.path !== path)) + if (path === this.activeTag) { + router.push(this.tags[this.tags.length - 1].path) + } + }, + removeOther(curPath = this.activeTag) { + this.setTags(this.tags.filter((tag) => tag.path === curPath)) + if (curPath !== this.activeTag) { + router.push(this.tags[this.tags.length - 1].path) + } + }, + removeLeft(curPath) { + const curIndex = this.tags.findIndex((item) => item.path === curPath) + const filterTags = this.tags.filter((item, index) => index >= curIndex) + this.setTags(filterTags) + if (!filterTags.find((item) => item.path === this.activeTag)) { + router.push(filterTags[filterTags.length - 1].path) + } + }, + removeRight(curPath) { + const curIndex = this.tags.findIndex((item) => item.path === curPath) + const filterTags = this.tags.filter((item, index) => index <= curIndex) + this.setTags(filterTags) + if (!filterTags.find((item) => item.path === this.activeTag)) { + router.push(filterTags[filterTags.length - 1].path) + } + }, + resetTags() { + this.setTags([]) + this.setActiveTag('') + }, + }, +}) diff --git a/web/src/store/modules/user/index.js b/web/src/store/modules/user/index.js new file mode 100644 index 0000000..6fc4801 --- /dev/null +++ b/web/src/store/modules/user/index.js @@ -0,0 +1,72 @@ +import { defineStore } from 'pinia' +import { resetRouter } from '@/router' +import { useTagsStore, usePermissionStore } from '@/store' +import { removeToken, toLogin } from '@/utils' +import api from '@/api/user' + +export const useUserStore = defineStore('user', { + state() { + return { + userInfo: { + id: '', + account: '', + nickname: '', + avatar: '', + contact: '', + isAdmin: 0, + status: 1 + }, + } + }, + getters: { + id() { + return this.userInfo?.id + }, + account() { + return this.userInfo?.account + }, + nickname() { + return this.userInfo?.nickname + }, + avatar() { + return this.userInfo?.avatar + }, + contact() { + return this.userInfo?.contact + }, + isAdmin() { + return this.userInfo?.isAdmin + }, + status() { + return this.userInfo?.status + }, + localUserInfo() { + return this.userInfo + } + }, + actions: { + async getUserInfo() { + try { + const res = await api.getUser() + const { id, account,nickname, avatar,contact,isAdmin,status } = res.data.data + this.userInfo = { id, account,nickname, avatar, contact,isAdmin,status } + return Promise.resolve(res.data) + } catch (error) { + return Promise.reject(error) + } + }, + async logout() { + const { resetTags } = useTagsStore() + const { resetPermission } = usePermissionStore() + removeToken() + resetTags() + resetPermission() + resetRouter() + this.$reset() + toLogin() + }, + setUserInfo(userInfo = {}) { + this.userInfo = { ...this.userInfo, ...userInfo } + }, + }, +}) diff --git a/web/src/styles/global.scss b/web/src/styles/global.scss new file mode 100644 index 0000000..7d8dd50 --- /dev/null +++ b/web/src/styles/global.scss @@ -0,0 +1,66 @@ +html, +body { + width: 100%; + height: 100%; + overflow: hidden; +} + +#app { + width: 100%; + height: 100%; +} + +/* transition fade-slide */ +.fade-slide-leave-active, +.fade-slide-enter-active { + transition: all 0.3s; +} + +.fade-slide-enter-from { + opacity: 0; + transform: translateX(-30px); +} + +.fade-slide-leave-to { + opacity: 0; + transform: translateX(30px); +} + +/* 自定义滚动条样式 */ +.cus-scroll { + overflow: auto; + &::-webkit-scrollbar { + width: 8px; + height: 8px; + } +} +.cus-scroll-x { + overflow-x: auto; + &::-webkit-scrollbar { + width: 0; + height: 8px; + } +} +.cus-scroll-y { + overflow-y: auto; + &::-webkit-scrollbar { + width: 8px; + height: 0; + } +} +.cus-scroll, +.cus-scroll-x, +.cus-scroll-y { + &::-webkit-scrollbar-thumb { + background-color: transparent; + border-radius: 4px; + } + &:hover { + &::-webkit-scrollbar-thumb { + background: #bfbfbf; + } + &::-webkit-scrollbar-thumb:hover { + background: var(--primary-color); + } + } +} diff --git a/web/src/styles/reset.css b/web/src/styles/reset.css new file mode 100644 index 0000000..5af4258 --- /dev/null +++ b/web/src/styles/reset.css @@ -0,0 +1,35 @@ +html { + box-sizing: border-box; +} + +*, +::before, +::after { + margin: 0; + padding: 0; + box-sizing: inherit; +} + +a { + text-decoration: none; + color: inherit; +} + +a:hover, +a:link, +a:visited, +a:active { + text-decoration: none; +} + +ol, +ul { + list-style: none; +} + +input, +textarea { + outline: none; + border: none; + resize: none; +} diff --git a/web/src/utils/auth/auth.js b/web/src/utils/auth/auth.js new file mode 100644 index 0000000..0106aa1 --- /dev/null +++ b/web/src/utils/auth/auth.js @@ -0,0 +1,17 @@ +import { router } from '@/router' + +export function toLogin() { + const currentRoute = unref(router.currentRoute) + const needRedirect = + !currentRoute.meta.requireAuth && !['/404', '/login'].includes(router.currentRoute.value.path) + router.replace({ + path: '/login', + query: needRedirect ? { ...currentRoute.query, redirect: currentRoute.path } : {}, + }) +} + +export function toFourZeroFour() { + router.replace({ + path: '/404', + }) +} diff --git a/web/src/utils/auth/index.js b/web/src/utils/auth/index.js new file mode 100644 index 0000000..8c6545d --- /dev/null +++ b/web/src/utils/auth/index.js @@ -0,0 +1,2 @@ +export * from './auth' +export * from './token' diff --git a/web/src/utils/auth/token.js b/web/src/utils/auth/token.js new file mode 100644 index 0000000..19e5977 --- /dev/null +++ b/web/src/utils/auth/token.js @@ -0,0 +1,29 @@ +import { lStorage } from '@/utils' + +const TOKEN_CODE = 'token' +const X_TOKEN_CODE = 'X_TOKEN_CODE' + +export function getToken() { + return lStorage.get(TOKEN_CODE) +} + +export function getTokenAll() { + return lStorage.getItem(TOKEN_CODE) +} + +export function getXToken() { + return lStorage.get(X_TOKEN_CODE) +} + +export function setXToken(token) { + lStorage.set(X_TOKEN_CODE,token) +} + +export function setToken(token,expireAt) { + lStorage.set(TOKEN_CODE, token,expireAt) +} + +export function removeToken() { + lStorage.remove(TOKEN_CODE) +} + diff --git a/web/src/utils/common/common.js b/web/src/utils/common/common.js new file mode 100644 index 0000000..f872f23 --- /dev/null +++ b/web/src/utils/common/common.js @@ -0,0 +1,99 @@ +import dayjs from 'dayjs' + +/** + * @desc 格式化时间 + * @param {(Object|string|number)} time + * @param {string} format + * @returns {string | null} + */ +export function formatDateTime(time = undefined, format = 'YYYY-MM-DD HH:mm:ss') { + return dayjs(time).format(format) +} + +export function formatDate(date = undefined, format = 'YYYY-MM-DD') { + return formatDateTime(date, format) +} + +/** + * @desc 函数节流 + * @param {Function} fn + * @param {Number} wait + * @returns {Function} + */ +export function throttle(fn, wait) { + var context, args + var previous = 0 + + return function () { + var now = +new Date() + context = this + args = arguments + if (now - previous > wait) { + fn.apply(context, args) + previous = now + } + } +} + +/** + * @desc 函数防抖 + * @param {Function} func + * @param {number} wait + * @param {boolean} immediate + * @return {*} + */ +export function debounce(method, wait, immediate) { + let timeout + return function (...args) { + let context = this + if (timeout) { + clearTimeout(timeout) + } + // 立即执行需要两个条件,一是immediate为true,二是timeout未被赋值或被置为null + if (immediate) { + /** + * 如果定时器不存在,则立即执行,并设置一个定时器,wait毫秒后将定时器置为null + * 这样确保立即执行后wait毫秒内不会被再次触发 + */ + let callNow = !timeout + timeout = setTimeout(() => { + timeout = null + }, wait) + if (callNow) { + method.apply(context, args) + } + } else { + // 如果immediate为false,则函数wait毫秒后执行 + timeout = setTimeout(() => { + /** + * args是一个类数组对象,所以使用fn.apply + * 也可写作method.call(context, ...args) + */ + method.apply(context, args) + }, wait) + } + } +} + +/** + * + * @param {HTMLElement} el + * @param {Function} cb + * @return {ResizeObserver} + */ +export function useResize(el, cb) { + const observer = new ResizeObserver((entries) => { + cb(entries[0].contentRect) + }) + observer.observe(el) + return observer +} + + // 超长省略号显示 +export function ellipsis(str) { + if (!str) return ""; + if (str.length >= 10) { + return str.slice(0, 10) + "..."; + } + return str; +} \ No newline at end of file diff --git a/web/src/utils/common/icon.js b/web/src/utils/common/icon.js new file mode 100644 index 0000000..b49cb9d --- /dev/null +++ b/web/src/utils/common/icon.js @@ -0,0 +1,12 @@ +import { h } from 'vue' +import { Icon } from '@iconify/vue' +import { NIcon } from 'naive-ui' +import SvgIcon from '@/components/icon/SvgIcon.vue' + +export function renderIcon(icon, props = { size: 12 }) { + return () => h(NIcon, props, { default: () => h(Icon, { icon }) }) +} + +export function renderCustomIcon(icon, props = { size: 12 }) { + return () => h(NIcon, props, { default: () => h(SvgIcon, { icon }) }) +} diff --git a/web/src/utils/common/index.js b/web/src/utils/common/index.js new file mode 100644 index 0000000..1a359a1 --- /dev/null +++ b/web/src/utils/common/index.js @@ -0,0 +1,4 @@ +export * from './common' +export * from './is' +export * from './icon' +export * from './naiveTools' diff --git a/web/src/utils/common/is.js b/web/src/utils/common/is.js new file mode 100644 index 0000000..0981213 --- /dev/null +++ b/web/src/utils/common/is.js @@ -0,0 +1,119 @@ +const toString = Object.prototype.toString + +export function is(val, type) { + return toString.call(val) === `[object ${type}]` +} + +export function isDef(val) { + return typeof val !== 'undefined' +} + +export function isUndef(val) { + return typeof val === 'undefined' +} + +export function isNull(val) { + return val === null +} + +export function isWhitespace(val) { + return val === '' +} + +export function isObject(val) { + return !isNull(val) && is(val, 'Object') +} + +export function isArray(val) { + return val && Array.isArray(val) +} + +export function isString(val) { + return is(val, 'String') +} + +export function isNumber(val) { + return is(val, 'Number') +} + +export function isBoolean(val) { + return is(val, 'Boolean') +} + +export function isDate(val) { + return is(val, 'Date') +} + +export function isRegExp(val) { + return is(val, 'RegExp') +} + +export function isFunction(val) { + return typeof val === 'function' +} + +export function isPromise(val) { + return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch) +} + +export function isElement(val) { + return isObject(val) && !!val.tagName +} + +export function isWindow(val) { + return typeof window !== 'undefined' && isDef(window) && is(val, 'Window') +} + +export function isNullOrUndef(val) { + return isNull(val) || isUndef(val) +} + +export function isNullOrWhitespace(val) { + return isNullOrUndef(val) || isWhitespace(val) +} + +/** 空数组 | 空字符串 | 空对象 | 空Map | 空Set */ +export function isEmpty(val) { + if (isArray(val) || isString(val)) { + return val.length === 0 + } + + if (val instanceof Map || val instanceof Set) { + return val.size === 0 + } + + if (isObject(val)) { + return Object.keys(val).length === 0 + } + + return false +} + +/** + * * 类似mysql的IFNULL函数 + * * 第一个参数为null/undefined/'' 则返回第二个参数作为备用值,否则返回第一个参数 + * @param {Number|Boolean|String} val + * @param {Number|Boolean|String} def + * @returns + */ +export function ifNull(val, def = '') { + return isNullOrWhitespace(val) ? def : val +} + +export function isUrl(path) { + const reg = + /(((^https?:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[\w]*))?)$/ + return reg.test(path) +} + +/** + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path) { + return /^(https?:|mailto:|tel:)/.test(path) +} + +export const isServer = typeof window === 'undefined' + +export const isClient = !isServer diff --git a/web/src/utils/common/naiveTools.js b/web/src/utils/common/naiveTools.js new file mode 100644 index 0000000..9f54055 --- /dev/null +++ b/web/src/utils/common/naiveTools.js @@ -0,0 +1,99 @@ +import * as NaiveUI from 'naive-ui' +import { isNullOrUndef } from '@/utils' +import { naiveThemeOverrides as themeOverrides } from '~/settings' +import { useAppStore } from '@/store/modules/app' + +export function setupMessage(NMessage) { + let loadingMessage = null + class Message { + /** + * 规则: + * * loading message只显示一个,新的message会替换正在显示的loading message + * * loading message不会自动清除,除非被替换成非loading message,非loading message默认2秒后自动清除 + */ + + removeMessage(message = loadingMessage, duration = 2000) { + setTimeout(() => { + if (message) { + message.destroy() + message = null + } + }, duration) + } + + showMessage(type, content, option = {}) { + if (loadingMessage && loadingMessage.type === 'loading') { + // 如果存在则替换正在显示的loading message + loadingMessage.type = type + loadingMessage.content = content + + if (type !== 'loading') { + // 非loading message需设置自动清除 + this.removeMessage(loadingMessage, option.duration) + } + } else { + // 不存在正在显示的loading则新建一个message,如果新建的message是loading message则将message赋值存储下来 + let message = NMessage[type](content, option) + if (type === 'loading') { + loadingMessage = message + } + } + } + + loading(content) { + this.showMessage('loading', content, { duration: 0 }) + } + + success(content, option = {}) { + this.showMessage('success', content, option) + } + + error(content, option = {}) { + this.showMessage('error', content, option) + } + + info(content, option = {}) { + this.showMessage('info', content, option) + } + + warning(content, option = {}) { + this.showMessage('warning', content, option) + } + } + + return new Message() +} + +export function setupDialog(NDialog) { + NDialog.confirm = function (option = {}) { + const showIcon = !isNullOrUndef(option.title) + return NDialog[option.type || 'warning']({ + showIcon, + positiveText: '确定', + negativeText: '取消', + onPositiveClick: option.confirm, + onNegativeClick: option.cancel, + onMaskClick: option.cancel, + ...option, + }) + } + + return NDialog +} + +export function setupNaiveDiscreteApi() { + const appStore = useAppStore() + const configProviderProps = computed(() => ({ + theme: appStore.isDark ? NaiveUI.darkTheme : undefined, + themeOverrides, + })) + const { message, dialog, notification, loadingBar } = NaiveUI.createDiscreteApi( + ['message', 'dialog', 'notification', 'loadingBar'], + { configProviderProps } + ) + + window.$loadingBar = loadingBar + window.$notification = notification + window.$message = setupMessage(message) + window.$dialog = setupDialog(dialog) +} diff --git a/web/src/utils/http/helpers.js b/web/src/utils/http/helpers.js new file mode 100644 index 0000000..0cb3a7a --- /dev/null +++ b/web/src/utils/http/helpers.js @@ -0,0 +1,33 @@ +import { useUserStore } from '@/store' + +export function addBaseParams(params) { + if (!params.userId) { + params.userId = useUserStore().id + } +} + +export function resolveResError(code, message) { + switch (code) { + case 400: + message = message ?? '请求参数错误' + break + case 401: + message = message ?? '登录已过期' + useUserStore().logout() + break + case 403: + message = message ?? '没有权限' + break + case 404: + message = message ?? '资源或接口不存在' + break + case 500: + message = message ?? '服务器异常' + useUserStore().logout() + break + default: + message = message ?? `【${code}】: 未知异常!` + break + } + return message +} diff --git a/web/src/utils/http/index.js b/web/src/utils/http/index.js new file mode 100644 index 0000000..6dcda20 --- /dev/null +++ b/web/src/utils/http/index.js @@ -0,0 +1,19 @@ +import axios from 'axios' +import { resReject, resResolve, reqReject, reqResolve } from './interceptors' + +export function createAxios(options = {}) { + const defaultOptions = { + timeout: 120000, + } + const service = axios.create({ + ...defaultOptions, + ...options, + }) + service.interceptors.request.use(reqResolve, reqReject) + service.interceptors.response.use(resResolve, resReject) + return service +} + +export const request = createAxios({ + baseURL: import.meta.env.VITE_BASE_API, +}) diff --git a/web/src/utils/http/interceptors.js b/web/src/utils/http/interceptors.js new file mode 100644 index 0000000..61bc74c --- /dev/null +++ b/web/src/utils/http/interceptors.js @@ -0,0 +1,75 @@ +import { getToken, getTokenAll, getXToken, setToken, setXToken } from '@/utils' +import { resolveResError } from './helpers' + +export function reqResolve(config) { + // 处理不需要token的请求 + if (config.noNeedToken) { + return config + } + + const token = getToken() + if (!token) { + return Promise.reject({ code: 401, message: '登录已过期,请重新登录!' }) + } + + // if (expire < Date.now()) { + // return Promise.reject({ code: 401, message: '登录已过期,请重新登录!' }) + // } + + /** + * * 加上 token + * ! 认证方案: JWT Bearer + */ + config.headers.Authorization = config.headers.Authorization || token + config.headers.set('X-TOKEN', getXToken()) + + return config +} + +export function reqReject(error) { + return Promise.reject(error) +} + +export function resResolve(response) { + // 设置token + if (response.headers.get('Authorization')) { + const { expire } = getTokenAll() + setToken(response.headers.get('Authorization'),expire / 1000) + setXToken(response.headers.get('X-TOKEN')) + } + // TODO: 处理不同的 response.headers + const { data, status, config, statusText } = response + if (data?.code !== 200 && status !== 200) { + const code = data?.code ?? status + + /** 根据code处理对应的操作,并返回处理后的message */ + const message = resolveResError(code, data?.message ?? statusText) + + /** 需要错误提醒 */ + !config.noNeedTip && window.$message?.error(message) + return Promise.reject({ code, message, error: data || response }) + } + + return Promise.resolve(response) +} + +export function resReject(error) { + if (!error || !error.response) { + const code = error?.code + /** 根据code处理对应的操作,并返回处理后的message */ + const message = resolveResError(code, error.message) + window.$message?.error(message) + return Promise.reject({ code, message, error }) + } + if (error.response.headers.get('Authorization')) { + const { expire } = getTokenAll() + setToken(error.response.headers.get('Authorization'),expire / 1000) + setXToken(error.response.headers.get('X-TOKEN')) + } + const { data, status, config } = error.response + const code = data?.code ?? status + const message = resolveResError(code, data?.message ?? error.message) + /** 需要错误提醒 */ + !config?.noNeedTip && window.$message?.error(message) + return Promise.reject({ code, message, error: error.response?.data || error.response }) +} diff --git a/web/src/utils/index.js b/web/src/utils/index.js new file mode 100644 index 0000000..8ca6753 --- /dev/null +++ b/web/src/utils/index.js @@ -0,0 +1,4 @@ +export * from './common' +export * from './storage' +export * from './http' +export * from './auth' diff --git a/web/src/utils/storage/index.js b/web/src/utils/storage/index.js new file mode 100644 index 0000000..3d567f3 --- /dev/null +++ b/web/src/utils/storage/index.js @@ -0,0 +1,21 @@ +import { createStorage } from './storage' + +const prefixKey = 'Vue_Naive_Admin_' + +export const createLocalStorage = function (option = {}) { + return createStorage({ + prefixKey: option.prefixKey || '', + storage: localStorage, + }) +} + +export const createSessionStorage = function (option = {}) { + return createStorage({ + prefixKey: option.prefixKey || '', + storage: sessionStorage, + }) +} + +export const lStorage = createLocalStorage({ prefixKey }) + +export const sStorage = createSessionStorage({ prefixKey }) diff --git a/web/src/utils/storage/storage.js b/web/src/utils/storage/storage.js new file mode 100644 index 0000000..478ac00 --- /dev/null +++ b/web/src/utils/storage/storage.js @@ -0,0 +1,55 @@ +import { isNullOrUndef } from '@/utils' + +class Storage { + constructor(option) { + this.storage = option.storage + this.prefixKey = option.prefixKey + } + + getKey(key) { + return `${this.prefixKey}${key}`.toUpperCase() + } + + set(key, value, expire) { + const stringData = JSON.stringify({ + value, + time: Date.now(), + expire: !isNullOrUndef(expire) ? expire * 1000 : null, + }) + this.storage.setItem(this.getKey(key), stringData) + } + + get(key) { + const { value } = this.getItem(key, {}) + return value + } + + getItem(key, def = null) { + const val = this.storage.getItem(this.getKey(key)) + if (!val) return def + try { + const data = JSON.parse(val) + const { value, time, expire } = data + if (isNullOrUndef(expire) || expire > Date.now()) { + return { value, time, expire } + } + this.remove(key) + return def + } catch (error) { + this.remove(key) + return def + } + } + + remove(key) { + this.storage.removeItem(this.getKey(key)) + } + + clear() { + this.storage.clear() + } +} + +export function createStorage({ prefixKey = '', storage = sessionStorage }) { + return new Storage({ prefixKey, storage }) +} diff --git a/web/src/views/client/api.js b/web/src/views/client/api.js new file mode 100644 index 0000000..5bd4603 --- /dev/null +++ b/web/src/views/client/api.js @@ -0,0 +1,10 @@ +import { request } from '@/utils' + +export default { + clientList: (params) => request.get('/client/list',{ params }), // 客户端列表 + downloadClient: (type,id) => request.get(`/client/download/${id}/${type}`), // 下载客户端配置文件 + deleteClient: (id) => request.delete(`/client/${id}`), // 删除客户端 + saveClient: (data) => request.post(`/client`, data), // 新增/编辑客户端 + generateClientKeys: () => request.post(`/client/generate-keys`), // 生成密钥对 + generateClientIP: () => request.post(`/client/generate-ip`), // 生成客户端IP +} diff --git a/web/src/views/client/index.vue b/web/src/views/client/index.vue new file mode 100644 index 0000000..9201fe4 --- /dev/null +++ b/web/src/views/client/index.vue @@ -0,0 +1,669 @@ + + + \ No newline at end of file diff --git a/web/src/views/client/route.js b/web/src/views/client/route.js new file mode 100644 index 0000000..766acbe --- /dev/null +++ b/web/src/views/client/route.js @@ -0,0 +1,23 @@ +const Layout = () => import('@/layout/index.vue') + +export default { + name: 'Client', + path: '/', + component: Layout, + redirect: '/client', + meta: { + order: 2, + }, + children: [ + { + name: 'Client', + path: 'client', + component: () => import('./index.vue'), + meta: { + title: '客户端', + icon: 'ph:network-duotone', + order: 2, + }, + }, + ], +} diff --git a/web/src/views/login/api.js b/web/src/views/login/api.js new file mode 100644 index 0000000..a9d911b --- /dev/null +++ b/web/src/views/login/api.js @@ -0,0 +1,7 @@ +import { request } from '@/utils' + +export default { + // 获取验证码 + captcha: () => request.get('/login/captcha',{ noNeedToken: true }), + login: (data) => request.post('/login', data, { noNeedToken: true }), +} diff --git a/web/src/views/login/index.vue b/web/src/views/login/index.vue new file mode 100644 index 0000000..12d7c01 --- /dev/null +++ b/web/src/views/login/index.vue @@ -0,0 +1,150 @@ + + + diff --git a/web/src/views/setting/api.js b/web/src/views/setting/api.js new file mode 100644 index 0000000..afdaf2d --- /dev/null +++ b/web/src/views/setting/api.js @@ -0,0 +1,9 @@ +import { request } from '@/utils' + +export default { + getSetting: (params) => request.get('/setting',{params}), // 获取配置 + setSetting: (data) => request.post('/setting', data), // 设置配置 + delSetting: (code) => request.delete(`/setting/${code}`), // 删除配置 + allSettings: () => request.get('/setting/all'), // 所有配置 + publicAddr: () => request.get('/setting/public-addr'), // 获取公网地址 +} diff --git a/web/src/views/setting/index.vue b/web/src/views/setting/index.vue new file mode 100644 index 0000000..4916792 --- /dev/null +++ b/web/src/views/setting/index.vue @@ -0,0 +1,489 @@ + + + \ No newline at end of file diff --git a/web/src/views/setting/route.js b/web/src/views/setting/route.js new file mode 100644 index 0000000..e7b8815 --- /dev/null +++ b/web/src/views/setting/route.js @@ -0,0 +1,23 @@ +const Layout = () => import('@/layout/index.vue') + +export default { + name: 'Setting', + path: '/', + component: Layout, + redirect: '/setting', + meta: { + order: 3, + }, + children: [ + { + name: 'Setting', + path: 'setting', + component: () => import('./index.vue'), + meta: { + title: '设置', + icon: 'ant-design:setting-outlined', + order: 3, + }, + }, + ], +} diff --git a/web/src/views/user/api.js b/web/src/views/user/api.js new file mode 100644 index 0000000..a4bfc53 --- /dev/null +++ b/web/src/views/user/api.js @@ -0,0 +1,7 @@ +import { request } from '@/utils' + +export default { + userList: (params = {}) => request.get('/user/list',{ params }), // 用户列表 + deleteUser: (id) => request.delete(`/user/${id}`,), // 删除用户 + resetPassword: (id) => request.put(`/user/reset-password/${id}`), // 重置用户密码 +} diff --git a/web/src/views/user/index.vue b/web/src/views/user/index.vue new file mode 100644 index 0000000..83646ab --- /dev/null +++ b/web/src/views/user/index.vue @@ -0,0 +1,405 @@ + + + + \ No newline at end of file diff --git a/web/src/views/user/route.js b/web/src/views/user/route.js new file mode 100644 index 0000000..fd3b9ad --- /dev/null +++ b/web/src/views/user/route.js @@ -0,0 +1,23 @@ +const Layout = () => import('@/layout/index.vue') + +export default { + name: 'User', + path: '/', + component: Layout, + redirect: '/user', + meta: { + order: 1, + }, + children: [ + { + name: 'User', + path: 'user', + component: () => import('./index.vue'), + meta: { + title: '管理员', + icon: 'ph:users-bold', + order: 1, + }, + }, + ], +} diff --git a/web/src/views/workbench/api.js b/web/src/views/workbench/api.js new file mode 100644 index 0000000..bfc3594 --- /dev/null +++ b/web/src/views/workbench/api.js @@ -0,0 +1,7 @@ +import { request } from '@/utils' + +export default { + logsList: (params) => request.get('/dashboard/request/list',{ params }), // 操作日志列表 + dailyPoetry: () => request.get('/dashboard/daily-poetry'), // 每日诗词 + clientConnections: () => request.get('/dashboard/connections') // 客户端链接信息 +} diff --git a/web/src/views/workbench/index.vue b/web/src/views/workbench/index.vue new file mode 100644 index 0000000..7751f40 --- /dev/null +++ b/web/src/views/workbench/index.vue @@ -0,0 +1,242 @@ + + + diff --git a/web/src/views/workbench/route.js b/web/src/views/workbench/route.js new file mode 100644 index 0000000..3c8f000 --- /dev/null +++ b/web/src/views/workbench/route.js @@ -0,0 +1,23 @@ +const Layout = () => import('@/layout/index.vue') + +export default { + name: 'Dashboard', + path: '/', + component: Layout, + redirect: '/workbench', + meta: { + order: 0, + }, + children: [ + { + name: 'Workbench', + path: 'workbench', + component: () => import('./index.vue'), + meta: { + title: '工作台', + icon: 'mdi:home', + order: 0, + }, + }, + ], +} diff --git a/web/unocss.config.js b/web/unocss.config.js new file mode 100644 index 0000000..63e65e8 --- /dev/null +++ b/web/unocss.config.js @@ -0,0 +1,54 @@ +import { defineConfig, presetAttributify, presetUno } from 'unocss' +import presetRemToPx from '@unocss/preset-rem-to-px' + +export default defineConfig({ + content: { + pipeline: { + include: [/\.(vue|svelte|[jt]sx|mdx?|html)($|\?)/], + }, + }, + presets: [presetUno(), presetAttributify(), presetRemToPx({ baseFontSize: 4 })], + shortcuts: [ + ['wh-full', 'w-full h-full'], + ['f-c-c', 'flex justify-center items-center'], + ['flex-col', 'flex flex-col'], + ['absolute-lt', 'absolute left-0 top-0'], + ['absolute-lb', 'absolute left-0 bottom-0'], + ['absolute-rt', 'absolute right-0 top-0'], + ['absolute-rb', 'absolute right-0 bottom-0'], + ['absolute-center', 'absolute-lt f-c-c wh-full'], + ['text-ellipsis', 'truncate'], + ], + rules: [ + [/^bc-(.+)$/, ([, color]) => ({ 'border-color': `#${color}` })], + [ + 'card-shadow', + { 'box-shadow': '0 1px 2px -2px #00000029, 0 3px 6px #0000001f, 0 5px 12px 4px #00000017' }, + ], + ], + theme: { + colors: { + primary: 'var(--primary-color)', + primary_hover: 'var(--primary-color-hover)', + primary_pressed: 'var(--primary-color-pressed)', + primary_active: 'var(--primary-color-active)', + info: 'var(--info-color)', + info_hover: 'var(--info-color-hover)', + info_pressed: 'var(--info-color-pressed)', + info_active: 'var(--info-color-active)', + success: 'var(--success-color)', + success_hover: 'var(--success-color-hover)', + success_pressed: 'var(--success-color-pressed)', + success_active: 'var(--success-color-active)', + warning: 'var(--warning-color)', + warning_hover: 'var(--warning-color-hover)', + warning_pressed: 'var(--warning-color-pressed)', + warning_active: 'var(--warning-color-active)', + error: 'var(--error-color)', + error_hover: 'var(--error-color-hover)', + error_pressed: 'var(--error-color-pressed)', + error_active: 'var(--error-color-active)', + dark: '#18181c', + }, + }, +}) diff --git a/web/vercel.json b/web/vercel.json new file mode 100644 index 0000000..1323cda --- /dev/null +++ b/web/vercel.json @@ -0,0 +1,8 @@ +{ + "rewrites": [ + { + "source": "/(.*)", + "destination": "/index.html" + } + ] +} diff --git a/web/vite.config.js b/web/vite.config.js new file mode 100644 index 0000000..04c252f --- /dev/null +++ b/web/vite.config.js @@ -0,0 +1,59 @@ +import { defineConfig, loadEnv } from 'vite' + +import { convertEnv, getSrcPath, getRootPath } from './build/utils' +import { createVitePlugins } from './build/plugin' +import { OUTPUT_DIR, PROXY_CONFIG } from './build/constant' + +const INVALID_CHAR_REGEX = /[\x00-\x1F\x7F<>*#"{}|^[\]`;?:&=+$,]/g; +const DRIVE_LETTER_REGEX = /^[a-z]:/i; + +export default defineConfig(({ command, mode }) => { + const srcPath = getSrcPath() + const rootPath = getRootPath() + const isBuild = command === 'build' + + const env = loadEnv(mode, process.cwd()) + const viteEnv = convertEnv(env) + const { VITE_PORT, VITE_PUBLIC_PATH, VITE_USE_PROXY, VITE_BASE_API } = viteEnv + + return { + base: VITE_PUBLIC_PATH || '/', + resolve: { + alias: { + '~': rootPath, + '@': srcPath, + }, + }, + plugins: createVitePlugins(viteEnv, isBuild), + server: { + host: '0.0.0.0', + port: VITE_PORT, + open: false, + proxy: VITE_USE_PROXY + ? { + [VITE_BASE_API]: PROXY_CONFIG[VITE_BASE_API], + '/api/v2': PROXY_CONFIG['/api/v2'], + } + : undefined, + }, + build: { + target: 'es2015', + outDir: OUTPUT_DIR || 'dist', + reportCompressedSize: false, // 启用/禁用 gzip 压缩大小报告 + chunkSizeWarningLimit: 1024, // chunk 大小警告的限制(单位kb) + rollupOptions: { + output: { + sanitizeFileName(name) { + const match = DRIVE_LETTER_REGEX.exec(name); + const driveLetter = match ? match[0] : ''; + // substr 是被淘汰語法,因此要改 slice + return ( + driveLetter + + name.slice(driveLetter.length).replace(INVALID_CHAR_REGEX, "") + ); + } + } + } + }, + } +})