From 6a3c73d457e394c4c3ef2c56cb14e619e8eca395 Mon Sep 17 00:00:00 2001
From: weipengfei <2187978347@qq.com>
Date: Fri, 31 May 2024 09:18:45 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 4 +
.env.development.example | 4 +
.env.production.example | 3 +
.eslintrc.cjs | 42 +
.gitignore | 35 +
README.md | 46 +
global.d.ts | 1 +
index.html | 66 +
package-lock.json | 8743 +++++++++++++++++
package.json | 65 +
postcss.config.js | 6 +
scripts/release.mjs | 35 +
src/App.vue | 58 +
src/api/app.ts | 16 +
src/api/app/recharge.ts | 10 +
src/api/category.ts | 26 +
src/api/consumer.ts | 21 +
src/api/file.ts | 39 +
src/api/label.ts | 26 +
src/api/org/department.ts | 31 +
src/api/org/post.ts | 31 +
src/api/perms/admin.ts | 29 +
src/api/perms/menu.ts | 30 +
src/api/perms/role.ts | 27 +
src/api/setting/dict.ts | 61 +
src/api/setting/storage.ts | 21 +
src/api/setting/system.ts | 51 +
src/api/setting/website.ts | 27 +
src/api/tools/code.ts | 51 +
src/api/user.ts | 22 +
src/assets/icons/Androidfanhui.svg | 1 +
src/assets/icons/KMSguanli.svg | 1 +
src/assets/icons/KTVyuding.svg | 1 +
src/assets/icons/a-tixingdengpao.svg | 1 +
src/assets/icons/anquan.svg | 1 +
src/assets/icons/anquan_mian.svg | 1 +
src/assets/icons/anquan_mian1.svg | 1 +
src/assets/icons/banxing_mian.svg | 1 +
src/assets/icons/baoxian.svg | 1 +
src/assets/icons/bendishenghuodaxue.svg | 1 +
src/assets/icons/bianji.svg | 1 +
src/assets/icons/biaoqing.svg | 1 +
src/assets/icons/bukejian.svg | 1 +
src/assets/icons/caipinguanli.svg | 1 +
src/assets/icons/caiwu.svg | 1 +
src/assets/icons/caiwu_jifen.svg | 1 +
src/assets/icons/caiwu_tixian.svg | 1 +
src/assets/icons/canyinfuwu.svg | 1 +
src/assets/icons/carryout.svg | 1 +
src/assets/icons/chexiao.svg | 1 +
src/assets/icons/chihuohongbao.svg | 1 +
src/assets/icons/chuangyiwuliao.svg | 1 +
src/assets/icons/close.svg | 1 +
src/assets/icons/daiyunying.svg | 1 +
src/assets/icons/danwei.svg | 1 +
src/assets/icons/danxuankuang.svg | 1 +
src/assets/icons/danxuanxuanzhong.svg | 1 +
src/assets/icons/dayin.svg | 1 +
src/assets/icons/dayin_mian.svg | 1 +
src/assets/icons/del.svg | 1 +
src/assets/icons/diancanshezhi.svg | 1 +
src/assets/icons/dianhua.svg | 1 +
src/assets/icons/dianhua_mian.svg | 1 +
src/assets/icons/dianpu_fengge.svg | 1 +
src/assets/icons/dianputuijian.svg | 1 +
src/assets/icons/dianzifapiao.svg | 1 +
src/assets/icons/dingcan.svg | 1 +
src/assets/icons/dingdan.svg | 1 +
src/assets/icons/dingdan1.svg | 1 +
src/assets/icons/dingdan_mian.svg | 1 +
src/assets/icons/dingwei.svg | 1 +
src/assets/icons/dingwei_mian.svg | 1 +
src/assets/icons/ditu.svg | 1 +
src/assets/icons/ditu_mian.svg | 1 +
src/assets/icons/duizhang.svg | 1 +
src/assets/icons/elemo.svg | 1 +
src/assets/icons/ezhanggui.svg | 1 +
src/assets/icons/falvfuwubaoxiaohei.svg | 1 +
src/assets/icons/fengniaopaotui.svg | 1 +
src/assets/icons/fenxiang.svg | 1 +
src/assets/icons/fukuan.svg | 1 +
src/assets/icons/fukuan_mian.svg | 1 +
src/assets/icons/fullscreen-exit.svg | 1 +
src/assets/icons/fullscreen.svg | 1 +
src/assets/icons/fuwushichang.svg | 1 +
src/assets/icons/fuzhi.svg | 1 +
src/assets/icons/gaode.svg | 1 +
src/assets/icons/gengduo.svg | 1 +
src/assets/icons/gengduoandroid.svg | 1 +
src/assets/icons/gift.svg | 1 +
src/assets/icons/gongyingshang.svg | 1 +
src/assets/icons/goods.svg | 1 +
src/assets/icons/gou.svg | 1 +
src/assets/icons/gouwuche.svg | 1 +
src/assets/icons/gouxuan.svg | 1 +
src/assets/icons/gouxuan_mian.svg | 1 +
src/assets/icons/guanbi.svg | 1 +
src/assets/icons/guanli.svg | 1 +
src/assets/icons/guanli_mian.svg | 1 +
src/assets/icons/gukefapiao.svg | 1 +
src/assets/icons/haibaosheji.svg | 1 +
src/assets/icons/heshoujilu.svg | 1 +
src/assets/icons/heshoujilu1.svg | 1 +
src/assets/icons/hexiao_order.svg | 1 +
src/assets/icons/hide-2.svg | 1 +
src/assets/icons/hide.svg | 1 +
src/assets/icons/hongbao.svg | 1 +
src/assets/icons/huiche.svg | 1 +
src/assets/icons/huiyuanyingxiao.svg | 1 +
src/assets/icons/huodongbaoming.svg | 1 +
src/assets/icons/huodongguanli.svg | 1 +
src/assets/icons/huodongzhongxin.svg | 1 +
src/assets/icons/huojian.svg | 1 +
src/assets/icons/huojian_mian.svg | 1 +
src/assets/icons/huolala.svg | 1 +
src/assets/icons/iOSfanhui.svg | 1 +
src/assets/icons/jia.svg | 1 +
src/assets/icons/jia_mian.svg | 1 +
src/assets/icons/jian.svg | 1 +
src/assets/icons/jian_mian.svg | 1 +
src/assets/icons/jianpan.svg | 1 +
src/assets/icons/jianpanshanchu.svg | 1 +
src/assets/icons/jianshao.svg | 1 +
src/assets/icons/jiaopeiwangputong.svg | 1 +
src/assets/icons/jiaoyi.svg | 1 +
src/assets/icons/jiedan.svg | 1 +
src/assets/icons/jiekuan.svg | 1 +
src/assets/icons/jingshi.svg | 1 +
src/assets/icons/jingshi_mian.svg | 1 +
src/assets/icons/jingshi_mian1.svg | 1 +
src/assets/icons/jingyin.svg | 1 +
src/assets/icons/jingyin_mian.svg | 1 +
src/assets/icons/jingying.svg | 1 +
src/assets/icons/jingying_mian.svg | 1 +
src/assets/icons/jingyinggonglve.svg | 1 +
src/assets/icons/jingzhunyingxiao.svg | 1 +
src/assets/icons/jinhuo.svg | 1 +
src/assets/icons/kaitongwaimai.svg | 1 +
src/assets/icons/kanjia.svg | 1 +
src/assets/icons/kefu.svg | 1 +
src/assets/icons/kejian.svg | 1 +
src/assets/icons/kejian_mian.svg | 1 +
src/assets/icons/keziyuyue.svg | 1 +
src/assets/icons/kezizhongxin.svg | 1 +
src/assets/icons/koubei.svg | 1 +
src/assets/icons/kuaijiehuifu.svg | 1 +
src/assets/icons/ladu_mian.svg | 1 +
src/assets/icons/lanyadingwei.svg | 1 +
src/assets/icons/list-2.svg | 1 +
src/assets/icons/mendiandongtai.svg | 1 +
src/assets/icons/mishiyuding.svg | 1 +
src/assets/icons/mishiyuding1.svg | 1 +
src/assets/icons/notice_buyer.svg | 1 +
src/assets/icons/open.svg | 1 +
src/assets/icons/paiduiquhao.svg | 1 +
src/assets/icons/paimai.svg | 1 +
src/assets/icons/pingjia.svg | 1 +
src/assets/icons/pingtaifapiao.svg | 1 +
src/assets/icons/pinpai.svg | 1 +
src/assets/icons/qianbao.svg | 1 +
src/assets/icons/qianbao_mian.svg | 1 +
src/assets/icons/qiehuan.svg | 1 +
src/assets/icons/qingchu.svg | 1 +
src/assets/icons/qingchu_mian.svg | 1 +
src/assets/icons/qishoupeisong.svg | 1 +
src/assets/icons/qiyedingcan.svg | 1 +
src/assets/icons/qiyedingcan1.svg | 1 +
src/assets/icons/quanbu.svg | 1 +
src/assets/icons/quanping.svg | 1 +
src/assets/icons/qudao.svg | 1 +
src/assets/icons/qudao_xiaochengxu.svg | 1 +
src/assets/icons/rencaizhaopin.svg | 1 +
src/assets/icons/rili.svg | 1 +
src/assets/icons/rili2.svg | 1 +
src/assets/icons/rizhi.svg | 1 +
src/assets/icons/saoma.svg | 1 +
src/assets/icons/set_pay.svg | 1 +
src/assets/icons/set_peisong.svg | 1 +
src/assets/icons/set_user.svg | 1 +
src/assets/icons/set_weihu.svg | 1 +
src/assets/icons/shanchu.svg | 1 +
src/assets/icons/shanchu_mian.svg | 1 +
src/assets/icons/shangchuan.svg | 1 +
src/assets/icons/shangchuanzhaopian.svg | 1 +
src/assets/icons/shangpinguanli.svg | 1 +
src/assets/icons/shangpinzhushou.svg | 1 +
src/assets/icons/shangpuyuding.svg | 1 +
src/assets/icons/shebeiguanli.svg | 1 +
src/assets/icons/shengfuwangputong.svg | 1 +
src/assets/icons/shengyin.svg | 1 +
src/assets/icons/shengyin_mian.svg | 1 +
src/assets/icons/shezhi.svg | 1 +
src/assets/icons/shezhi_mian.svg | 1 +
src/assets/icons/shichang.svg | 1 +
src/assets/icons/shichang_mian.svg | 1 +
src/assets/icons/shijian.svg | 1 +
src/assets/icons/shijian_mian.svg | 1 +
src/assets/icons/shoudan.svg | 1 +
src/assets/icons/shouqi.svg | 1 +
src/assets/icons/shouqi_mian.svg | 1 +
src/assets/icons/shouye.svg | 1 +
src/assets/icons/shouye_mian.svg | 1 +
src/assets/icons/shouyiren.svg | 1 +
src/assets/icons/show.svg | 1 +
src/assets/icons/shuangjiantouxiangyou.svg | 1 +
src/assets/icons/shuangjiantouxiangzuo.svg | 1 +
src/assets/icons/shuaxin.svg | 1 +
src/assets/icons/shuju.svg | 1 +
src/assets/icons/shuju2.svg | 1 +
src/assets/icons/shuju_liuliang.svg | 1 +
src/assets/icons/shuju_mian.svg | 1 +
src/assets/icons/sort.svg | 1 +
src/assets/icons/sousuo.svg | 1 +
src/assets/icons/sucai.svg | 1 +
src/assets/icons/tianjia.svg | 1 +
src/assets/icons/tishi.svg | 1 +
src/assets/icons/tishi_mian.svg | 1 +
src/assets/icons/tongxunlu_mian.svg | 1 +
src/assets/icons/tongzhi.svg | 1 +
src/assets/icons/tongzhi_mian.svg | 1 +
src/assets/icons/tuichuquanping.svg | 1 +
src/assets/icons/tuiguang.svg | 1 +
src/assets/icons/tuiguang_mian.svg | 1 +
src/assets/icons/tupian.svg | 1 +
src/assets/icons/tupian_mian.svg | 1 +
src/assets/icons/user_biaoqian.svg | 1 +
src/assets/icons/user_gaikuang.svg | 1 +
src/assets/icons/user_guanli.svg | 1 +
src/assets/icons/wangpudiandan.svg | 1 +
src/assets/icons/weixin.svg | 1 +
src/assets/icons/weixin_mian.svg | 1 +
src/assets/icons/wode.svg | 1 +
src/assets/icons/wode_mian.svg | 1 +
src/assets/icons/xiangji.svg | 1 +
src/assets/icons/xiaoxi.svg | 1 +
src/assets/icons/xiazai.svg | 1 +
src/assets/icons/xitongquanxian.svg | 1 +
src/assets/icons/yingxiao_qipao.svg | 1 +
src/assets/icons/yingyezizhi.svg | 1 +
src/assets/icons/yinhangka.svg | 1 +
src/assets/icons/yiwen.svg | 1 +
src/assets/icons/youhui.svg | 1 +
src/assets/icons/youjian.svg | 1 +
src/assets/icons/youjiantou.svg | 1 +
src/assets/icons/yulibao.svg | 1 +
src/assets/icons/yuyin.svg | 1 +
src/assets/icons/yuyueguanli.svg | 1 +
src/assets/icons/yuyueguanlishezhi.svg | 1 +
src/assets/icons/zhankai.svg | 1 +
src/assets/icons/zhankai_mian.svg | 1 +
src/assets/icons/zhibo.svg | 1 +
src/assets/icons/zhibo_mian.svg | 1 +
src/assets/icons/zhuangxiu.svg | 1 +
src/assets/icons/zhuangxiu_mian.svg | 1 +
src/assets/icons/zhuoweiguanli.svg | 1 +
src/assets/icons/zichanzhuanrang.svg | 1 +
src/assets/icons/zuliao.svg | 1 +
src/assets/icons/zuliaoyuding.svg | 1 +
src/assets/images/icon_folder.png | Bin 0 -> 605 bytes
src/assets/images/no_perms.png | Bin 0 -> 14619 bytes
src/assets/images/theme_black.png | Bin 0 -> 2564 bytes
src/assets/images/theme_white.png | Bin 0 -> 2559 bytes
src/components/app-link/index.vue | 38 +
src/components/color-picker/index.vue | 33 +
src/components/daterange-picker/index.vue | 43 +
src/components/del-wrap/index.vue | 51 +
src/components/dict-value/index.vue | 35 +
src/components/editor/index.vue | 143 +
src/components/export-data/index.vue | 149 +
src/components/footer-btns/index.vue | 30 +
src/components/icon/index.ts | 19 +
src/components/icon/index.vue | 48 +
src/components/icon/picker.vue | 185 +
src/components/icon/svg-icon.vue | 38 +
src/components/image-contain/index.vue | 42 +
src/components/material/file.vue | 55 +
src/components/material/hook.ts | 209 +
src/components/material/index.vue | 566 ++
src/components/material/picker.vue | 303 +
src/components/material/preview.vue | 72 +
src/components/overflow-tooltip/index.vue | 47 +
src/components/pagination/index.vue | 50 +
src/components/popover-input/index.vue | 130 +
src/components/popup/index.vue | 132 +
src/components/upload/index.vue | 151 +
src/components/vditor/index.vue | 50 +
src/components/video-player/index.vue | 72 +
src/config/index.ts | 10 +
src/config/setting.ts | 16 +
src/enums/appEnums.ts | 40 +
src/enums/cacheEnums.ts | 8 +
src/enums/pageEnum.ts | 7 +
src/enums/requestEnums.ts | 18 +
src/hooks/useDictOptions.ts | 67 +
src/hooks/useLockFn.ts | 21 +
src/hooks/useMultipleTabs.ts | 47 +
src/hooks/usePaging.ts | 62 +
src/hooks/useWatchRoute.ts | 17 +
src/install/directives/copy.ts | 28 +
src/install/directives/perms.ts | 29 +
src/install/index.ts | 27 +
src/install/plugins/echart.ts | 63 +
src/install/plugins/element.ts | 11 +
src/install/plugins/hljs.ts | 8 +
src/install/plugins/pinia.ts | 6 +
src/install/plugins/router.ts | 6 +
src/layout/components/footer.vue | 22 +
.../default/components/header/breadcrumb.vue | 20 +
.../default/components/header/cache.vue | 21 +
src/layout/default/components/header/fold.vue | 15 +
.../default/components/header/full-screen.vue | 10 +
.../default/components/header/index.vue | 59 +
.../components/header/multiple-tabs.vue | 122 +
.../default/components/header/refresh.vue | 14 +
.../components/header/user-drop-down.vue | 34 +
src/layout/default/components/main.vue | 26 +
.../default/components/setting/drawer.vue | 220 +
.../default/components/setting/index.vue | 19 +
.../default/components/sidebar/index.vue | 44 +
.../default/components/sidebar/logo.vue | 61 +
.../default/components/sidebar/menu-item.vue | 87 +
.../default/components/sidebar/menu.vue | 101 +
.../default/components/sidebar/side.vue | 66 +
src/layout/default/index.vue | 22 +
src/main.ts | 10 +
src/permission.ts | 83 +
src/router/index.ts | 110 +
src/router/routes.ts | 85 +
src/stores/index.ts | 3 +
src/stores/modules/app.ts | 51 +
src/stores/modules/multipleTabs.ts | 169 +
src/stores/modules/setting.ts | 55 +
src/stores/modules/user.ts | 82 +
src/styles/dark.css | 49 +
src/styles/element.scss | 151 +
src/styles/index.scss | 6 +
src/styles/public.scss | 18 +
src/styles/tailwind.css | 3 +
src/styles/var.css | 48 +
src/utils/auth.ts | 18 +
src/utils/cache.ts | 53 +
src/utils/env.ts | 13 +
src/utils/feedback.ts | 95 +
src/utils/request/axios.ts | 165 +
src/utils/request/cancel.ts | 31 +
src/utils/request/index.ts | 123 +
src/utils/request/type.d.ts | 38 +
src/utils/theme.ts | 74 +
src/utils/util.ts | 162 +
src/utils/validate.ts | 7 +
src/views/account/images/login_bg.png | Bin 0 -> 59273 bytes
src/views/account/login.vue | 130 +
src/views/category/edit.vue | 157 +
src/views/category/index.vue | 134 +
src/views/dev_tools/code/edit.vue | 528 +
src/views/dev_tools/code/index.vue | 232 +
.../dev_tools/components/code-preview.vue | 63 +
src/views/dev_tools/components/data-table.vue | 104 +
.../dev_tools/components/relations-add.vue | 160 +
src/views/error/403.vue | 15 +
src/views/error/404.vue | 9 +
src/views/error/components/error.vue | 57 +
src/views/label/edit.vue | 109 +
src/views/label/index.vue | 131 +
src/views/material/index.vue | 63 +
src/views/organization/department/edit.vue | 161 +
src/views/organization/department/index.vue | 166 +
src/views/organization/post/edit.vue | 120 +
src/views/organization/post/index.vue | 128 +
src/views/permission/admin/edit.vue | 274 +
src/views/permission/admin/index.vue | 183 +
src/views/permission/menu/edit.vue | 299 +
src/views/permission/menu/index.vue | 151 +
src/views/permission/role/auth.vue | 154 +
src/views/permission/role/edit.vue | 101 +
src/views/permission/role/index.vue | 107 +
src/views/setting/dict/data/edit.vue | 126 +
src/views/setting/dict/data/index.vue | 181 +
src/views/setting/dict/type/edit.vue | 109 +
src/views/setting/dict/type/index.vue | 170 +
src/views/setting/storage/edit.vue | 194 +
src/views/setting/storage/index.vue | 65 +
src/views/setting/system/cache.vue | 45 +
src/views/setting/system/environment.vue | 79 +
src/views/setting/system/journal.vue | 149 +
src/views/setting/website/filing.vue | 89 +
src/views/setting/website/information.vue | 219 +
src/views/setting/website/protocol.vue | 57 +
src/views/user/setting.vue | 156 +
src/views/workbench/index.vue | 193 +
tailwind.config.js | 119 +
tsconfig.config.json | 8 +
tsconfig.json | 23 +
typings/index.d.ts | 5 +
typings/router.d.ts | 14 +
vite.config.ts | 60 +
396 files changed, 21499 insertions(+)
create mode 100644 .env.development
create mode 100644 .env.development.example
create mode 100644 .env.production.example
create mode 100644 .eslintrc.cjs
create mode 100644 .gitignore
create mode 100644 README.md
create mode 100644 global.d.ts
create mode 100644 index.html
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 postcss.config.js
create mode 100644 scripts/release.mjs
create mode 100644 src/App.vue
create mode 100644 src/api/app.ts
create mode 100644 src/api/app/recharge.ts
create mode 100644 src/api/category.ts
create mode 100644 src/api/consumer.ts
create mode 100644 src/api/file.ts
create mode 100644 src/api/label.ts
create mode 100644 src/api/org/department.ts
create mode 100644 src/api/org/post.ts
create mode 100644 src/api/perms/admin.ts
create mode 100644 src/api/perms/menu.ts
create mode 100644 src/api/perms/role.ts
create mode 100644 src/api/setting/dict.ts
create mode 100644 src/api/setting/storage.ts
create mode 100644 src/api/setting/system.ts
create mode 100644 src/api/setting/website.ts
create mode 100644 src/api/tools/code.ts
create mode 100644 src/api/user.ts
create mode 100644 src/assets/icons/Androidfanhui.svg
create mode 100644 src/assets/icons/KMSguanli.svg
create mode 100644 src/assets/icons/KTVyuding.svg
create mode 100644 src/assets/icons/a-tixingdengpao.svg
create mode 100644 src/assets/icons/anquan.svg
create mode 100644 src/assets/icons/anquan_mian.svg
create mode 100644 src/assets/icons/anquan_mian1.svg
create mode 100644 src/assets/icons/banxing_mian.svg
create mode 100644 src/assets/icons/baoxian.svg
create mode 100644 src/assets/icons/bendishenghuodaxue.svg
create mode 100644 src/assets/icons/bianji.svg
create mode 100644 src/assets/icons/biaoqing.svg
create mode 100644 src/assets/icons/bukejian.svg
create mode 100644 src/assets/icons/caipinguanli.svg
create mode 100644 src/assets/icons/caiwu.svg
create mode 100644 src/assets/icons/caiwu_jifen.svg
create mode 100644 src/assets/icons/caiwu_tixian.svg
create mode 100644 src/assets/icons/canyinfuwu.svg
create mode 100644 src/assets/icons/carryout.svg
create mode 100644 src/assets/icons/chexiao.svg
create mode 100644 src/assets/icons/chihuohongbao.svg
create mode 100644 src/assets/icons/chuangyiwuliao.svg
create mode 100644 src/assets/icons/close.svg
create mode 100644 src/assets/icons/daiyunying.svg
create mode 100644 src/assets/icons/danwei.svg
create mode 100644 src/assets/icons/danxuankuang.svg
create mode 100644 src/assets/icons/danxuanxuanzhong.svg
create mode 100644 src/assets/icons/dayin.svg
create mode 100644 src/assets/icons/dayin_mian.svg
create mode 100644 src/assets/icons/del.svg
create mode 100644 src/assets/icons/diancanshezhi.svg
create mode 100644 src/assets/icons/dianhua.svg
create mode 100644 src/assets/icons/dianhua_mian.svg
create mode 100644 src/assets/icons/dianpu_fengge.svg
create mode 100644 src/assets/icons/dianputuijian.svg
create mode 100644 src/assets/icons/dianzifapiao.svg
create mode 100644 src/assets/icons/dingcan.svg
create mode 100644 src/assets/icons/dingdan.svg
create mode 100644 src/assets/icons/dingdan1.svg
create mode 100644 src/assets/icons/dingdan_mian.svg
create mode 100644 src/assets/icons/dingwei.svg
create mode 100644 src/assets/icons/dingwei_mian.svg
create mode 100644 src/assets/icons/ditu.svg
create mode 100644 src/assets/icons/ditu_mian.svg
create mode 100644 src/assets/icons/duizhang.svg
create mode 100644 src/assets/icons/elemo.svg
create mode 100644 src/assets/icons/ezhanggui.svg
create mode 100644 src/assets/icons/falvfuwubaoxiaohei.svg
create mode 100644 src/assets/icons/fengniaopaotui.svg
create mode 100644 src/assets/icons/fenxiang.svg
create mode 100644 src/assets/icons/fukuan.svg
create mode 100644 src/assets/icons/fukuan_mian.svg
create mode 100644 src/assets/icons/fullscreen-exit.svg
create mode 100644 src/assets/icons/fullscreen.svg
create mode 100644 src/assets/icons/fuwushichang.svg
create mode 100644 src/assets/icons/fuzhi.svg
create mode 100644 src/assets/icons/gaode.svg
create mode 100644 src/assets/icons/gengduo.svg
create mode 100644 src/assets/icons/gengduoandroid.svg
create mode 100644 src/assets/icons/gift.svg
create mode 100644 src/assets/icons/gongyingshang.svg
create mode 100644 src/assets/icons/goods.svg
create mode 100644 src/assets/icons/gou.svg
create mode 100644 src/assets/icons/gouwuche.svg
create mode 100644 src/assets/icons/gouxuan.svg
create mode 100644 src/assets/icons/gouxuan_mian.svg
create mode 100644 src/assets/icons/guanbi.svg
create mode 100644 src/assets/icons/guanli.svg
create mode 100644 src/assets/icons/guanli_mian.svg
create mode 100644 src/assets/icons/gukefapiao.svg
create mode 100644 src/assets/icons/haibaosheji.svg
create mode 100644 src/assets/icons/heshoujilu.svg
create mode 100644 src/assets/icons/heshoujilu1.svg
create mode 100644 src/assets/icons/hexiao_order.svg
create mode 100644 src/assets/icons/hide-2.svg
create mode 100644 src/assets/icons/hide.svg
create mode 100644 src/assets/icons/hongbao.svg
create mode 100644 src/assets/icons/huiche.svg
create mode 100644 src/assets/icons/huiyuanyingxiao.svg
create mode 100644 src/assets/icons/huodongbaoming.svg
create mode 100644 src/assets/icons/huodongguanli.svg
create mode 100644 src/assets/icons/huodongzhongxin.svg
create mode 100644 src/assets/icons/huojian.svg
create mode 100644 src/assets/icons/huojian_mian.svg
create mode 100644 src/assets/icons/huolala.svg
create mode 100644 src/assets/icons/iOSfanhui.svg
create mode 100644 src/assets/icons/jia.svg
create mode 100644 src/assets/icons/jia_mian.svg
create mode 100644 src/assets/icons/jian.svg
create mode 100644 src/assets/icons/jian_mian.svg
create mode 100644 src/assets/icons/jianpan.svg
create mode 100644 src/assets/icons/jianpanshanchu.svg
create mode 100644 src/assets/icons/jianshao.svg
create mode 100644 src/assets/icons/jiaopeiwangputong.svg
create mode 100644 src/assets/icons/jiaoyi.svg
create mode 100644 src/assets/icons/jiedan.svg
create mode 100644 src/assets/icons/jiekuan.svg
create mode 100644 src/assets/icons/jingshi.svg
create mode 100644 src/assets/icons/jingshi_mian.svg
create mode 100644 src/assets/icons/jingshi_mian1.svg
create mode 100644 src/assets/icons/jingyin.svg
create mode 100644 src/assets/icons/jingyin_mian.svg
create mode 100644 src/assets/icons/jingying.svg
create mode 100644 src/assets/icons/jingying_mian.svg
create mode 100644 src/assets/icons/jingyinggonglve.svg
create mode 100644 src/assets/icons/jingzhunyingxiao.svg
create mode 100644 src/assets/icons/jinhuo.svg
create mode 100644 src/assets/icons/kaitongwaimai.svg
create mode 100644 src/assets/icons/kanjia.svg
create mode 100644 src/assets/icons/kefu.svg
create mode 100644 src/assets/icons/kejian.svg
create mode 100644 src/assets/icons/kejian_mian.svg
create mode 100644 src/assets/icons/keziyuyue.svg
create mode 100644 src/assets/icons/kezizhongxin.svg
create mode 100644 src/assets/icons/koubei.svg
create mode 100644 src/assets/icons/kuaijiehuifu.svg
create mode 100644 src/assets/icons/ladu_mian.svg
create mode 100644 src/assets/icons/lanyadingwei.svg
create mode 100644 src/assets/icons/list-2.svg
create mode 100644 src/assets/icons/mendiandongtai.svg
create mode 100644 src/assets/icons/mishiyuding.svg
create mode 100644 src/assets/icons/mishiyuding1.svg
create mode 100644 src/assets/icons/notice_buyer.svg
create mode 100644 src/assets/icons/open.svg
create mode 100644 src/assets/icons/paiduiquhao.svg
create mode 100644 src/assets/icons/paimai.svg
create mode 100644 src/assets/icons/pingjia.svg
create mode 100644 src/assets/icons/pingtaifapiao.svg
create mode 100644 src/assets/icons/pinpai.svg
create mode 100644 src/assets/icons/qianbao.svg
create mode 100644 src/assets/icons/qianbao_mian.svg
create mode 100644 src/assets/icons/qiehuan.svg
create mode 100644 src/assets/icons/qingchu.svg
create mode 100644 src/assets/icons/qingchu_mian.svg
create mode 100644 src/assets/icons/qishoupeisong.svg
create mode 100644 src/assets/icons/qiyedingcan.svg
create mode 100644 src/assets/icons/qiyedingcan1.svg
create mode 100644 src/assets/icons/quanbu.svg
create mode 100644 src/assets/icons/quanping.svg
create mode 100644 src/assets/icons/qudao.svg
create mode 100644 src/assets/icons/qudao_xiaochengxu.svg
create mode 100644 src/assets/icons/rencaizhaopin.svg
create mode 100644 src/assets/icons/rili.svg
create mode 100644 src/assets/icons/rili2.svg
create mode 100644 src/assets/icons/rizhi.svg
create mode 100644 src/assets/icons/saoma.svg
create mode 100644 src/assets/icons/set_pay.svg
create mode 100644 src/assets/icons/set_peisong.svg
create mode 100644 src/assets/icons/set_user.svg
create mode 100644 src/assets/icons/set_weihu.svg
create mode 100644 src/assets/icons/shanchu.svg
create mode 100644 src/assets/icons/shanchu_mian.svg
create mode 100644 src/assets/icons/shangchuan.svg
create mode 100644 src/assets/icons/shangchuanzhaopian.svg
create mode 100644 src/assets/icons/shangpinguanli.svg
create mode 100644 src/assets/icons/shangpinzhushou.svg
create mode 100644 src/assets/icons/shangpuyuding.svg
create mode 100644 src/assets/icons/shebeiguanli.svg
create mode 100644 src/assets/icons/shengfuwangputong.svg
create mode 100644 src/assets/icons/shengyin.svg
create mode 100644 src/assets/icons/shengyin_mian.svg
create mode 100644 src/assets/icons/shezhi.svg
create mode 100644 src/assets/icons/shezhi_mian.svg
create mode 100644 src/assets/icons/shichang.svg
create mode 100644 src/assets/icons/shichang_mian.svg
create mode 100644 src/assets/icons/shijian.svg
create mode 100644 src/assets/icons/shijian_mian.svg
create mode 100644 src/assets/icons/shoudan.svg
create mode 100644 src/assets/icons/shouqi.svg
create mode 100644 src/assets/icons/shouqi_mian.svg
create mode 100644 src/assets/icons/shouye.svg
create mode 100644 src/assets/icons/shouye_mian.svg
create mode 100644 src/assets/icons/shouyiren.svg
create mode 100644 src/assets/icons/show.svg
create mode 100644 src/assets/icons/shuangjiantouxiangyou.svg
create mode 100644 src/assets/icons/shuangjiantouxiangzuo.svg
create mode 100644 src/assets/icons/shuaxin.svg
create mode 100644 src/assets/icons/shuju.svg
create mode 100644 src/assets/icons/shuju2.svg
create mode 100644 src/assets/icons/shuju_liuliang.svg
create mode 100644 src/assets/icons/shuju_mian.svg
create mode 100644 src/assets/icons/sort.svg
create mode 100644 src/assets/icons/sousuo.svg
create mode 100644 src/assets/icons/sucai.svg
create mode 100644 src/assets/icons/tianjia.svg
create mode 100644 src/assets/icons/tishi.svg
create mode 100644 src/assets/icons/tishi_mian.svg
create mode 100644 src/assets/icons/tongxunlu_mian.svg
create mode 100644 src/assets/icons/tongzhi.svg
create mode 100644 src/assets/icons/tongzhi_mian.svg
create mode 100644 src/assets/icons/tuichuquanping.svg
create mode 100644 src/assets/icons/tuiguang.svg
create mode 100644 src/assets/icons/tuiguang_mian.svg
create mode 100644 src/assets/icons/tupian.svg
create mode 100644 src/assets/icons/tupian_mian.svg
create mode 100644 src/assets/icons/user_biaoqian.svg
create mode 100644 src/assets/icons/user_gaikuang.svg
create mode 100644 src/assets/icons/user_guanli.svg
create mode 100644 src/assets/icons/wangpudiandan.svg
create mode 100644 src/assets/icons/weixin.svg
create mode 100644 src/assets/icons/weixin_mian.svg
create mode 100644 src/assets/icons/wode.svg
create mode 100644 src/assets/icons/wode_mian.svg
create mode 100644 src/assets/icons/xiangji.svg
create mode 100644 src/assets/icons/xiaoxi.svg
create mode 100644 src/assets/icons/xiazai.svg
create mode 100644 src/assets/icons/xitongquanxian.svg
create mode 100644 src/assets/icons/yingxiao_qipao.svg
create mode 100644 src/assets/icons/yingyezizhi.svg
create mode 100644 src/assets/icons/yinhangka.svg
create mode 100644 src/assets/icons/yiwen.svg
create mode 100644 src/assets/icons/youhui.svg
create mode 100644 src/assets/icons/youjian.svg
create mode 100644 src/assets/icons/youjiantou.svg
create mode 100644 src/assets/icons/yulibao.svg
create mode 100644 src/assets/icons/yuyin.svg
create mode 100644 src/assets/icons/yuyueguanli.svg
create mode 100644 src/assets/icons/yuyueguanlishezhi.svg
create mode 100644 src/assets/icons/zhankai.svg
create mode 100644 src/assets/icons/zhankai_mian.svg
create mode 100644 src/assets/icons/zhibo.svg
create mode 100644 src/assets/icons/zhibo_mian.svg
create mode 100644 src/assets/icons/zhuangxiu.svg
create mode 100644 src/assets/icons/zhuangxiu_mian.svg
create mode 100644 src/assets/icons/zhuoweiguanli.svg
create mode 100644 src/assets/icons/zichanzhuanrang.svg
create mode 100644 src/assets/icons/zuliao.svg
create mode 100644 src/assets/icons/zuliaoyuding.svg
create mode 100644 src/assets/images/icon_folder.png
create mode 100644 src/assets/images/no_perms.png
create mode 100644 src/assets/images/theme_black.png
create mode 100644 src/assets/images/theme_white.png
create mode 100644 src/components/app-link/index.vue
create mode 100644 src/components/color-picker/index.vue
create mode 100644 src/components/daterange-picker/index.vue
create mode 100644 src/components/del-wrap/index.vue
create mode 100644 src/components/dict-value/index.vue
create mode 100644 src/components/editor/index.vue
create mode 100644 src/components/export-data/index.vue
create mode 100644 src/components/footer-btns/index.vue
create mode 100644 src/components/icon/index.ts
create mode 100644 src/components/icon/index.vue
create mode 100644 src/components/icon/picker.vue
create mode 100644 src/components/icon/svg-icon.vue
create mode 100644 src/components/image-contain/index.vue
create mode 100644 src/components/material/file.vue
create mode 100644 src/components/material/hook.ts
create mode 100644 src/components/material/index.vue
create mode 100644 src/components/material/picker.vue
create mode 100644 src/components/material/preview.vue
create mode 100644 src/components/overflow-tooltip/index.vue
create mode 100644 src/components/pagination/index.vue
create mode 100644 src/components/popover-input/index.vue
create mode 100644 src/components/popup/index.vue
create mode 100644 src/components/upload/index.vue
create mode 100644 src/components/vditor/index.vue
create mode 100644 src/components/video-player/index.vue
create mode 100644 src/config/index.ts
create mode 100644 src/config/setting.ts
create mode 100644 src/enums/appEnums.ts
create mode 100644 src/enums/cacheEnums.ts
create mode 100644 src/enums/pageEnum.ts
create mode 100644 src/enums/requestEnums.ts
create mode 100644 src/hooks/useDictOptions.ts
create mode 100644 src/hooks/useLockFn.ts
create mode 100644 src/hooks/useMultipleTabs.ts
create mode 100644 src/hooks/usePaging.ts
create mode 100644 src/hooks/useWatchRoute.ts
create mode 100644 src/install/directives/copy.ts
create mode 100644 src/install/directives/perms.ts
create mode 100644 src/install/index.ts
create mode 100644 src/install/plugins/echart.ts
create mode 100644 src/install/plugins/element.ts
create mode 100644 src/install/plugins/hljs.ts
create mode 100644 src/install/plugins/pinia.ts
create mode 100644 src/install/plugins/router.ts
create mode 100644 src/layout/components/footer.vue
create mode 100644 src/layout/default/components/header/breadcrumb.vue
create mode 100644 src/layout/default/components/header/cache.vue
create mode 100644 src/layout/default/components/header/fold.vue
create mode 100644 src/layout/default/components/header/full-screen.vue
create mode 100644 src/layout/default/components/header/index.vue
create mode 100644 src/layout/default/components/header/multiple-tabs.vue
create mode 100644 src/layout/default/components/header/refresh.vue
create mode 100644 src/layout/default/components/header/user-drop-down.vue
create mode 100644 src/layout/default/components/main.vue
create mode 100644 src/layout/default/components/setting/drawer.vue
create mode 100644 src/layout/default/components/setting/index.vue
create mode 100644 src/layout/default/components/sidebar/index.vue
create mode 100644 src/layout/default/components/sidebar/logo.vue
create mode 100644 src/layout/default/components/sidebar/menu-item.vue
create mode 100644 src/layout/default/components/sidebar/menu.vue
create mode 100644 src/layout/default/components/sidebar/side.vue
create mode 100644 src/layout/default/index.vue
create mode 100644 src/main.ts
create mode 100644 src/permission.ts
create mode 100644 src/router/index.ts
create mode 100644 src/router/routes.ts
create mode 100644 src/stores/index.ts
create mode 100644 src/stores/modules/app.ts
create mode 100644 src/stores/modules/multipleTabs.ts
create mode 100644 src/stores/modules/setting.ts
create mode 100644 src/stores/modules/user.ts
create mode 100644 src/styles/dark.css
create mode 100644 src/styles/element.scss
create mode 100644 src/styles/index.scss
create mode 100644 src/styles/public.scss
create mode 100644 src/styles/tailwind.css
create mode 100644 src/styles/var.css
create mode 100644 src/utils/auth.ts
create mode 100644 src/utils/cache.ts
create mode 100644 src/utils/env.ts
create mode 100644 src/utils/feedback.ts
create mode 100644 src/utils/request/axios.ts
create mode 100644 src/utils/request/cancel.ts
create mode 100644 src/utils/request/index.ts
create mode 100644 src/utils/request/type.d.ts
create mode 100644 src/utils/theme.ts
create mode 100644 src/utils/util.ts
create mode 100644 src/utils/validate.ts
create mode 100644 src/views/account/images/login_bg.png
create mode 100644 src/views/account/login.vue
create mode 100644 src/views/category/edit.vue
create mode 100644 src/views/category/index.vue
create mode 100644 src/views/dev_tools/code/edit.vue
create mode 100644 src/views/dev_tools/code/index.vue
create mode 100644 src/views/dev_tools/components/code-preview.vue
create mode 100644 src/views/dev_tools/components/data-table.vue
create mode 100644 src/views/dev_tools/components/relations-add.vue
create mode 100644 src/views/error/403.vue
create mode 100644 src/views/error/404.vue
create mode 100644 src/views/error/components/error.vue
create mode 100644 src/views/label/edit.vue
create mode 100644 src/views/label/index.vue
create mode 100644 src/views/material/index.vue
create mode 100644 src/views/organization/department/edit.vue
create mode 100644 src/views/organization/department/index.vue
create mode 100644 src/views/organization/post/edit.vue
create mode 100644 src/views/organization/post/index.vue
create mode 100644 src/views/permission/admin/edit.vue
create mode 100644 src/views/permission/admin/index.vue
create mode 100644 src/views/permission/menu/edit.vue
create mode 100644 src/views/permission/menu/index.vue
create mode 100644 src/views/permission/role/auth.vue
create mode 100644 src/views/permission/role/edit.vue
create mode 100644 src/views/permission/role/index.vue
create mode 100644 src/views/setting/dict/data/edit.vue
create mode 100644 src/views/setting/dict/data/index.vue
create mode 100644 src/views/setting/dict/type/edit.vue
create mode 100644 src/views/setting/dict/type/index.vue
create mode 100644 src/views/setting/storage/edit.vue
create mode 100644 src/views/setting/storage/index.vue
create mode 100644 src/views/setting/system/cache.vue
create mode 100644 src/views/setting/system/environment.vue
create mode 100644 src/views/setting/system/journal.vue
create mode 100644 src/views/setting/website/filing.vue
create mode 100644 src/views/setting/website/information.vue
create mode 100644 src/views/setting/website/protocol.vue
create mode 100644 src/views/user/setting.vue
create mode 100644 src/views/workbench/index.vue
create mode 100644 tailwind.config.js
create mode 100644 tsconfig.config.json
create mode 100644 tsconfig.json
create mode 100644 typings/index.d.ts
create mode 100644 typings/router.d.ts
create mode 100644 vite.config.ts
diff --git a/.env.development b/.env.development
new file mode 100644
index 000000000..a57c38573
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,4 @@
+NODE_ENV = 'development'
+
+# Base API
+VITE_APP_BASE_URL='http://127.0.0.1:8787'
\ No newline at end of file
diff --git a/.env.development.example b/.env.development.example
new file mode 100644
index 000000000..a57c38573
--- /dev/null
+++ b/.env.development.example
@@ -0,0 +1,4 @@
+NODE_ENV = 'development'
+
+# Base API
+VITE_APP_BASE_URL='http://127.0.0.1:8787'
\ No newline at end of file
diff --git a/.env.production.example b/.env.production.example
new file mode 100644
index 000000000..1e1ea2b3c
--- /dev/null
+++ b/.env.production.example
@@ -0,0 +1,3 @@
+NODE_ENV = 'production'
+# Base API
+VITE_APP_BASE_URL=''
\ No newline at end of file
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 000000000..44a42f0bb
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,42 @@
+/* eslint-env node */
+require('@rushstack/eslint-patch/modern-module-resolution')
+
+module.exports = {
+ root: true,
+ ignorePatterns: ['/auto-imports.d.ts', '/components.d.ts'],
+ extends: [
+ 'plugin:vue/vue3-essential',
+ 'eslint:recommended',
+ '@vue/eslint-config-typescript/recommended',
+ '@vue/eslint-config-prettier',
+ './.eslintrc-auto-import.json'
+ ],
+ rules: {
+ 'prettier/prettier': [
+ 'warn',
+ {
+ semi: false,
+ singleQuote: true,
+ printWidth: 100,
+ proseWrap: 'preserve',
+ bracketSameLine: false,
+ endOfLine: 'lf',
+ tabWidth: 4,
+ useTabs: false,
+ trailingComma: 'none'
+ }
+ ],
+ 'vue/multi-word-component-names': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/ban-ts-comment': 'off',
+ 'no-undef': 'off',
+ 'vue/prefer-import-from-vue': 'off',
+ 'no-prototype-builtins': 'off',
+ 'prefer-spread': 'off',
+ '@typescript-eslint/no-non-null-assertion': 'off',
+ '@typescript-eslint/no-non-null-asserted-optional-chain': 'off'
+ },
+ globals: {
+ module: 'readonly'
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..ca17936ec
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+# unplugin-auto-import
+auto-imports.d.ts
+components.d.ts
+.eslintrc-auto-import.json
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# .env
+# .env.development
+# .env.production
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..077a56864
--- /dev/null
+++ b/README.md
@@ -0,0 +1,46 @@
+# vue-project
+
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
+
+## Type Support for `.vue` Imports in TS
+
+TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
+
+If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
+
+1. Disable the built-in TypeScript Extension
+ 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
+ 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
+2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vitejs.dev/config/).
+
+## Project Setup
+
+```sh
+npm install
+```
+
+### Compile and Hot-Reload for Development
+
+```sh
+npm run dev
+```
+
+### Type-Check, Compile and Minify for Production
+
+```sh
+npm run build
+```
+
+### Lint with [ESLint](https://eslint.org/)
+
+```sh
+npm run lint
+```
diff --git a/global.d.ts b/global.d.ts
new file mode 100644
index 000000000..11f02fe2a
--- /dev/null
+++ b/global.d.ts
@@ -0,0 +1 @@
+///
diff --git a/index.html b/index.html
new file mode 100644
index 000000000..71d3dbbdb
--- /dev/null
+++ b/index.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ 后台管理系统
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 000000000..277d005c7
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,8743 @@
+{
+ "name": "vue-project",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "vue-project",
+ "version": "0.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@element-plus/icons-vue": "^2.0.6",
+ "@highlightjs/vue-plugin": "^2.1.0",
+ "@wangeditor/editor": "^5.1.12",
+ "@wangeditor/editor-for-vue": "^5.1.12",
+ "axios": "^0.27.2",
+ "css-color-function": "^1.3.3",
+ "echarts": "^5.3.3",
+ "element-plus": "^2.2.9",
+ "highlight.js": "^11.6.0",
+ "mavon-editor": "3.0.1",
+ "nprogress": "^0.2.0",
+ "pinia": "^2.0.14",
+ "vditor": "^3.9.9",
+ "vue": "^3.2.37",
+ "vue-clipboard3": "^2.0.0",
+ "vue-echarts": "^6.2.3",
+ "vue-router": "^4.0.16",
+ "vue3-video-play": "^1.3.2",
+ "vuedraggable": "^4.1.0"
+ },
+ "devDependencies": {
+ "@rushstack/eslint-patch": "^1.1.0",
+ "@tailwindcss/line-clamp": "^0.4.2",
+ "@types/lodash-es": "^4.17.6",
+ "@types/node": "^16.11.41",
+ "@types/nprogress": "^0.2.0",
+ "@vitejs/plugin-legacy": "^2.3.1",
+ "@vitejs/plugin-vue": "^3.0.0",
+ "@vitejs/plugin-vue-jsx": "^2.0.0",
+ "@vue/eslint-config-prettier": "^7.0.0",
+ "@vue/eslint-config-typescript": "^11.0.0",
+ "@vue/tsconfig": "^0.1.3",
+ "autoprefixer": "^10.4.7",
+ "consola": "^2.15.3",
+ "eslint": "^8.5.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "execa": "^6.1.0",
+ "fs-extra": "^10.1.0",
+ "postcss": "^8.4.14",
+ "prettier": "^2.5.1",
+ "sass": "^1.53.0",
+ "tailwindcss": "^3.0.24",
+ "terser": "^5.15.1",
+ "typescript": "~4.7.4",
+ "unplugin-auto-import": "^0.9.2",
+ "unplugin-vue-components": "^0.19.9",
+ "vite": "^3.0.0",
+ "vite-plugin-style-import": "^2.0.0",
+ "vite-plugin-svg-icons": "^2.0.1",
+ "vite-plugin-vue-setup-extend": "^0.4.0",
+ "vue-tsc": "^0.38.1"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.5.2.tgz",
+ "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz",
+ "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@babel/template": "^7.23.9",
+ "@babel/traverse": "^7.23.9",
+ "@babel/types": "^7.23.9",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.6",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.23.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz",
+ "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==",
+ "dev": true,
+ "dependencies": {
+ "@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/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "dev": true,
+ "dependencies": {
+ "@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"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
+ "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz",
+ "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.23.9",
+ "@babel/traverse": "^7.23.9",
+ "@babel/types": "^7.23.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
+ "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+ "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
+ "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
+ "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-typescript": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
+ "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
+ "node_modules/@babel/standalone": {
+ "version": "7.23.10",
+ "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.23.10.tgz",
+ "integrity": "sha512-xqWviI/pt1Zb/d+6ilWa5IDL2mkDzsBnlHbreqnfyP3/QB/ofQ1bNVcHj8YQX154Rf/xZKR6y0s1ydVF3nAS8g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
+ "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.23.9",
+ "@babel/types": "^7.23.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
+ "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@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.9",
+ "@babel/types": "^7.23.9",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
+ "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@ctrl/tinycolor": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+ "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@element-plus/icons-vue": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+ "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
+ "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
+ "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
+ "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz",
+ "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.1"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz",
+ "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==",
+ "dependencies": {
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.1"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
+ "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
+ },
+ "node_modules/@highlightjs/vue-plugin": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@highlightjs/vue-plugin/-/vue-plugin-2.1.0.tgz",
+ "integrity": "sha512-E+bmk4ncca+hBEYRV2a+1aIzIV0VSY/e5ArjpuSN9IO7wBJrzUE2u4ESCwrbQD7sAy+jWQjkV5qCCWgc+pu7CQ==",
+ "peerDependencies": {
+ "highlight.js": "^11.0.1",
+ "vue": "^3"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
+ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.22",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
+ "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "name": "@sxzz/popperjs-es",
+ "version": "2.11.7",
+ "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+ "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
+ "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
+ "dev": true
+ },
+ "node_modules/@tailwindcss/line-clamp": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.4.tgz",
+ "integrity": "sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==",
+ "dev": true,
+ "peerDependencies": {
+ "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
+ }
+ },
+ "node_modules/@transloadit/prettier-bytes": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
+ "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA=="
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/@types/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ=="
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.14.202",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz",
+ "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ=="
+ },
+ "node_modules/@types/lodash-es": {
+ "version": "4.17.12",
+ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+ "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "16.18.79",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.79.tgz",
+ "integrity": "sha512-Qd7jdLR5zmnIyMhfDrfPqN5tUCvreVpP3Qrf2oSM+F7SNzlb/MwHISGUkdFHtevfkPJ3iAGyeQI/jsbh9EStgQ==",
+ "dev": true
+ },
+ "node_modules/@types/nprogress": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.3.tgz",
+ "integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==",
+ "dev": true
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.6",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
+ "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
+ "dev": true
+ },
+ "node_modules/@types/svgo": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-2.6.4.tgz",
+ "integrity": "sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/web-bluetooth": {
+ "version": "0.0.16",
+ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+ "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
+ "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.4.0",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/type-utils": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "natural-compare-lite": "^1.4.0",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^5.0.0",
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
+ "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
+ "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
+ "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
+ "debug": "^4.3.4",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
+ "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
+ "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
+ "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "eslint-scope": "^5.1.1",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
+ "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/@uppy/companion-client": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.2.2.tgz",
+ "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==",
+ "dependencies": {
+ "@uppy/utils": "^4.1.2",
+ "namespace-emitter": "^2.0.1"
+ }
+ },
+ "node_modules/@uppy/core": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.3.4.tgz",
+ "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
+ "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.1.25",
+ "preact": "^10.5.13"
+ }
+ },
+ "node_modules/@uppy/store-default": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.1.1.tgz",
+ "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ=="
+ },
+ "node_modules/@uppy/utils": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.1.3.tgz",
+ "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==",
+ "dependencies": {
+ "lodash.throttle": "^4.1.1"
+ }
+ },
+ "node_modules/@uppy/xhr-upload": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
+ "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
+ "dependencies": {
+ "@uppy/companion-client": "^2.2.2",
+ "@uppy/utils": "^4.1.2",
+ "nanoid": "^3.1.25"
+ },
+ "peerDependencies": {
+ "@uppy/core": "^2.3.3"
+ }
+ },
+ "node_modules/@vitejs/plugin-legacy": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-2.3.1.tgz",
+ "integrity": "sha512-J5KaGBlSt2tEYPVjM/C8dA6DkRzkFkbPe+Xb4IX5G+XOV5OGbVAfkMjKywdrkO3gGynO8S98i71Lmsff4cWkCQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/standalone": "^7.20.0",
+ "core-js": "^3.26.0",
+ "magic-string": "^0.26.7",
+ "regenerator-runtime": "^0.13.10",
+ "systemjs": "^6.13.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "terser": "^5.4.0",
+ "vite": "^3.0.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz",
+ "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==",
+ "dev": true,
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^3.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-2.1.1.tgz",
+ "integrity": "sha512-JgDhxstQlwnHBvZ1BSnU5mbmyQ14/t5JhREc6YH5kWyu2QdAAOsLF6xgHoIWarj8tddaiwFrNzLbWJPudpXKYA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.19.6",
+ "@babel/plugin-transform-typescript": "^7.20.0",
+ "@vue/babel-plugin-jsx": "^1.1.1"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^3.0.0",
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@volar/code-gen": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.38.9.tgz",
+ "integrity": "sha512-n6LClucfA+37rQeskvh9vDoZV1VvCVNy++MAPKj2dT4FT+Fbmty/SDQqnsEBtdEe6E3OQctFvA/IcKsx3Mns0A==",
+ "dev": true,
+ "dependencies": {
+ "@volar/source-map": "0.38.9"
+ }
+ },
+ "node_modules/@volar/source-map": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.38.9.tgz",
+ "integrity": "sha512-ba0UFoHDYry+vwKdgkWJ6xlQT+8TFtZg1zj9tSjj4PykW1JZDuM0xplMotLun4h3YOoYfY9K1huY5gvxmrNLIw==",
+ "dev": true
+ },
+ "node_modules/@volar/vue-code-gen": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.38.9.tgz",
+ "integrity": "sha512-tzj7AoarFBKl7e41MR006ncrEmNPHALuk8aG4WdDIaG387X5//5KhWC5Ff3ZfB2InGSeNT+CVUd74M0gS20rjA==",
+ "deprecated": "WARNING: This project has been renamed to @vue/language-core. Install using @vue/language-core instead.",
+ "dev": true,
+ "dependencies": {
+ "@volar/code-gen": "0.38.9",
+ "@volar/source-map": "0.38.9",
+ "@vue/compiler-core": "^3.2.37",
+ "@vue/compiler-dom": "^3.2.37",
+ "@vue/shared": "^3.2.37"
+ }
+ },
+ "node_modules/@volar/vue-typescript": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-0.38.9.tgz",
+ "integrity": "sha512-iJMQGU91ADi98u8V1vXd2UBmELDAaeSP0ZJaFjwosClQdKlJQYc6MlxxKfXBZisHqfbhdtrGRyaryulnYtliZw==",
+ "deprecated": "WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.",
+ "dev": true,
+ "dependencies": {
+ "@volar/code-gen": "0.38.9",
+ "@volar/source-map": "0.38.9",
+ "@volar/vue-code-gen": "0.38.9",
+ "@vue/compiler-sfc": "^3.2.37",
+ "@vue/reactivity": "^3.2.37"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.1.tgz",
+ "integrity": "sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.1.tgz",
+ "integrity": "sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6",
+ "@vue/babel-helper-vue-transform-on": "1.2.1",
+ "@vue/babel-plugin-resolve-type": "1.2.1",
+ "camelcase": "^6.3.0",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.1.tgz",
+ "integrity": "sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/parser": "^7.23.6",
+ "@vue/compiler-sfc": "^3.4.15"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz",
+ "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==",
+ "dependencies": {
+ "@babel/parser": "^7.23.6",
+ "@vue/shared": "3.4.15",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz",
+ "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==",
+ "dependencies": {
+ "@vue/compiler-core": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz",
+ "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==",
+ "dependencies": {
+ "@babel/parser": "^7.23.6",
+ "@vue/compiler-core": "3.4.15",
+ "@vue/compiler-dom": "3.4.15",
+ "@vue/compiler-ssr": "3.4.15",
+ "@vue/shared": "3.4.15",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.5",
+ "postcss": "^8.4.33",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
+ "version": "0.30.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
+ "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz",
+ "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+ },
+ "node_modules/@vue/eslint-config-prettier": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz",
+ "integrity": "sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==",
+ "dev": true,
+ "dependencies": {
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-plugin-prettier": "^4.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">= 7.28.0",
+ "prettier": ">= 2.0.0"
+ }
+ },
+ "node_modules/@vue/eslint-config-typescript": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz",
+ "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.59.1",
+ "@typescript-eslint/parser": "^5.59.1",
+ "vue-eslint-parser": "^9.1.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz",
+ "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==",
+ "dependencies": {
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz",
+ "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==",
+ "dependencies": {
+ "@vue/reactivity": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz",
+ "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==",
+ "dependencies": {
+ "@vue/runtime-core": "3.4.15",
+ "@vue/shared": "3.4.15",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz",
+ "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.4.15",
+ "@vue/shared": "3.4.15"
+ },
+ "peerDependencies": {
+ "vue": "3.4.15"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
+ "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g=="
+ },
+ "node_modules/@vue/tsconfig": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz",
+ "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==",
+ "dev": true,
+ "peerDependencies": {
+ "@types/node": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/core": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
+ "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+ "dependencies": {
+ "@types/web-bluetooth": "^0.0.16",
+ "@vueuse/metadata": "9.13.0",
+ "@vueuse/shared": "9.13.0",
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/core/node_modules/vue-demi": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/metadata": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
+ "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
+ "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+ "dependencies": {
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared/node_modules/vue-demi": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@wangeditor/basic-modules": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
+ "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
+ "dependencies": {
+ "is-url": "^1.2.4"
+ },
+ "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"
+ }
+ },
+ "node_modules/@wangeditor/code-highlight": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
+ "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
+ "dependencies": {
+ "prismjs": "^1.23.0"
+ },
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/core": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz",
+ "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
+ "dependencies": {
+ "@types/event-emitter": "^0.3.3",
+ "event-emitter": "^0.3.5",
+ "html-void-elements": "^2.0.0",
+ "i18next": "^20.4.0",
+ "scroll-into-view-if-needed": "^2.2.28",
+ "slate-history": "^0.66.0"
+ },
+ "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"
+ }
+ },
+ "node_modules/@wangeditor/editor": {
+ "version": "5.1.23",
+ "resolved": "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.23.tgz",
+ "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
+ "dependencies": {
+ "@uppy/core": "^2.1.1",
+ "@uppy/xhr-upload": "^2.0.3",
+ "@wangeditor/basic-modules": "^1.1.7",
+ "@wangeditor/code-highlight": "^1.0.3",
+ "@wangeditor/core": "^1.1.19",
+ "@wangeditor/list-module": "^1.0.5",
+ "@wangeditor/table-module": "^1.1.4",
+ "@wangeditor/upload-image-module": "^1.0.2",
+ "@wangeditor/video-module": "^1.1.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.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/editor-for-vue": {
+ "version": "5.1.12",
+ "resolved": "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
+ "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==",
+ "peerDependencies": {
+ "@wangeditor/editor": ">=5.1.0",
+ "vue": "^3.0.5"
+ }
+ },
+ "node_modules/@wangeditor/list-module": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz",
+ "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==",
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/table-module": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz",
+ "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"
+ }
+ },
+ "node_modules/@wangeditor/upload-image-module": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
+ "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"
+ }
+ },
+ "node_modules/@wangeditor/video-module": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz",
+ "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"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/async-validator": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+ "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true,
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.17",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz",
+ "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.22.2",
+ "caniuse-lite": "^1.0.30001578",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/axios": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
+ "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
+ "dependencies": {
+ "follow-redirects": "^1.14.9",
+ "form-data": "^4.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz",
+ "integrity": "sha512-4xb6XqAEo3Z+5pEDJz33R8BZXI8FRJU+cDNLdKgDpmnz+pKKRVYLpdv+VvUAC7yUhBMj4izmyt19eCGv1QGV7A=="
+ },
+ "node_modules/base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "dependencies": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/brace-expansion/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
+ "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001580",
+ "electron-to-chromium": "^1.4.648",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "dependencies": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cache-base/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camel-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+ "dev": true,
+ "dependencies": {
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001584",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz",
+ "integrity": "sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/capital-case": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz",
+ "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/change-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz",
+ "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
+ "dev": true,
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "capital-case": "^1.0.4",
+ "constant-case": "^3.0.4",
+ "dot-case": "^3.0.4",
+ "header-case": "^2.0.4",
+ "no-case": "^3.0.4",
+ "param-case": "^3.0.4",
+ "pascal-case": "^3.1.2",
+ "path-case": "^3.0.4",
+ "sentence-case": "^3.0.4",
+ "snake-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/class-utils/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "dependencies": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dev": true,
+ "dependencies": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/color": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
+ "integrity": "sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==",
+ "dependencies": {
+ "clone": "^1.0.2",
+ "color-convert": "^1.3.0",
+ "color-string": "^0.3.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/color-string": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
+ "integrity": "sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==",
+ "dependencies": {
+ "color-name": "^1.0.0"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+ "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+ "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/consola": {
+ "version": "2.15.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
+ "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
+ "dev": true
+ },
+ "node_modules/console": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/console/-/console-0.7.2.tgz",
+ "integrity": "sha512-+JSDwGunA4MTEgAV/4VBKwUHonP8CzJ/6GIuwPi6acKFqFfHUdSGCm89ZxZ5FfGWdZfkdgAroy5bJ5FSeN/t4g==",
+ "dev": true
+ },
+ "node_modules/constant-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
+ "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case": "^2.0.2"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.35.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz",
+ "integrity": "sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-color-function": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz",
+ "integrity": "sha512-YD/WhiRZIYgadwFJ48X5QmlOQ/w8Me4yQI6/eSUoiE8spIFp+S/rGpsAH48iyq/0ZWkCDWqVQKUlQmUzn7BQ9w==",
+ "dependencies": {
+ "balanced-match": "0.1.0",
+ "color": "^0.11.0",
+ "debug": "^3.1.0",
+ "rgb": "~0.1.0"
+ }
+ },
+ "node_modules/css-color-function/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-select/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/css-select/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssfilter": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
+ "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw=="
+ },
+ "node_modules/csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dev": true,
+ "dependencies": {
+ "css-tree": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/d": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+ "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "dependencies": {
+ "es5-ext": "^0.10.50",
+ "type": "^1.0.1"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.10",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+ "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true
+ },
+ "node_modules/diff-match-patch": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
+ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/dom-serializer/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/dom7": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz",
+ "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
+ "dependencies": {
+ "ssr-window": "^3.0.0-alpha.1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "node_modules/domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "node_modules/echarts": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz",
+ "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==",
+ "dependencies": {
+ "tslib": "2.3.0",
+ "zrender": "5.4.4"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.657",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.657.tgz",
+ "integrity": "sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w==",
+ "dev": true
+ },
+ "node_modules/element-plus": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.5.5.tgz",
+ "integrity": "sha512-yGU/MruLOWI0ImQPFCyFM4cXtHtILJNAi0hhLImcxjRukjgQLYNkvcvbwqNgBUt808KSeKF9MyxENFyBQLTg+Q==",
+ "dependencies": {
+ "@ctrl/tinycolor": "^3.4.1",
+ "@element-plus/icons-vue": "^2.3.1",
+ "@floating-ui/dom": "^1.0.1",
+ "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+ "@types/lodash": "^4.14.182",
+ "@types/lodash-es": "^4.17.6",
+ "@vueuse/core": "^9.1.0",
+ "async-validator": "^4.2.5",
+ "dayjs": "^1.11.3",
+ "escape-html": "^1.0.3",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.21",
+ "lodash-unified": "^1.0.2",
+ "memoize-one": "^6.0.0",
+ "normalize-wheel-es": "^1.2.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
+ "dev": true
+ },
+ "node_modules/es5-ext": {
+ "version": "0.10.62",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
+ "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
+ "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "dependencies": {
+ "d": "^1.0.1",
+ "ext": "^1.1.2"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
+ "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.15.18",
+ "@esbuild/linux-loong64": "0.15.18",
+ "esbuild-android-64": "0.15.18",
+ "esbuild-android-arm64": "0.15.18",
+ "esbuild-darwin-64": "0.15.18",
+ "esbuild-darwin-arm64": "0.15.18",
+ "esbuild-freebsd-64": "0.15.18",
+ "esbuild-freebsd-arm64": "0.15.18",
+ "esbuild-linux-32": "0.15.18",
+ "esbuild-linux-64": "0.15.18",
+ "esbuild-linux-arm": "0.15.18",
+ "esbuild-linux-arm64": "0.15.18",
+ "esbuild-linux-mips64le": "0.15.18",
+ "esbuild-linux-ppc64le": "0.15.18",
+ "esbuild-linux-riscv64": "0.15.18",
+ "esbuild-linux-s390x": "0.15.18",
+ "esbuild-netbsd-64": "0.15.18",
+ "esbuild-openbsd-64": "0.15.18",
+ "esbuild-sunos-64": "0.15.18",
+ "esbuild-windows-32": "0.15.18",
+ "esbuild-windows-64": "0.15.18",
+ "esbuild-windows-arm64": "0.15.18"
+ }
+ },
+ "node_modules/esbuild-android-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
+ "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-android-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
+ "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
+ "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
+ "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
+ "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
+ "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-32": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
+ "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
+ "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
+ "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
+ "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-mips64le": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
+ "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-ppc64le": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
+ "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-riscv64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
+ "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-s390x": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
+ "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-netbsd-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
+ "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-openbsd-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
+ "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-sunos-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
+ "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-32": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
+ "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
+ "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
+ "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
+ "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.56.0",
+ "@humanwhocodes/config-array": "^0.11.13",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "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.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "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"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz",
+ "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-prettier": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
+ "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+ "dev": true,
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.28.0",
+ "prettier": ">=2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-vue": {
+ "version": "9.21.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.21.1.tgz",
+ "integrity": "sha512-XVtI7z39yOVBFJyi8Ljbn7kY9yHzznKXL02qQYn+ta63Iy4A9JFBw6o4OSB9hyD2++tVT+su9kQqetUyCCwhjw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.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.4.2",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "node_modules/execa": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
+ "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^3.0.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"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "dependencies": {
+ "type": "^2.7.2"
+ }
+ },
+ "node_modules/ext/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "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.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dev": true,
+ "dependencies": {
+ "map-cache": "^0.2.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "dependencies": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/header-case": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz",
+ "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
+ "dev": true,
+ "dependencies": {
+ "capital-case": "^1.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "11.9.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz",
+ "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/hls.js": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.3.tgz",
+ "integrity": "sha512-gonnYpZ5bxuVdwpcbzfylUlNZ8917LjACUjpWXiaeo8zPAIDfPcMZjEQPy6CeeRSJbcg1P+aVqwxrXr2J+SeUg=="
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/html-void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
+ "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
+ },
+ "node_modules/human-signals": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz",
+ "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/i18next": {
+ "version": "20.6.1",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz",
+ "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "dev": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/immer": {
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
+ "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==",
+ "dev": true
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/is-accessor-descriptor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
+ "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-descriptor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
+ "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-descriptor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hotkey": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz",
+ "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw=="
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
+ "dev": true
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
+ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==",
+ "dev": true
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/loader-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/loader-utils/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/local-pkg": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
+ "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "node_modules/lodash-unified": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+ "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+ "peerDependencies": {
+ "@types/lodash-es": "*",
+ "lodash": "*",
+ "lodash-es": "*"
+ }
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+ },
+ "node_modules/lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ=="
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
+ },
+ "node_modules/lodash.toarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
+ "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw=="
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.26.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
+ "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dev": true,
+ "dependencies": {
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mavon-editor": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-3.0.1.tgz",
+ "integrity": "sha512-973cYCwv+AB+fcecsU6Ua6UXATxDMaY0Q7QzKQ/GmRW1sg+3DolZDnCGXth7XHDgrmqKTO57N42fVYujt0wfFw==",
+ "dependencies": {
+ "xss": "^1.0.10"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "dev": true
+ },
+ "node_modules/memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+ },
+ "node_modules/merge-options": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz",
+ "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz",
+ "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==",
+ "dependencies": {
+ "wildcard": "^1.1.0"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "dependencies": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mlly": {
+ "version": "0.5.17",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.17.tgz",
+ "integrity": "sha512-Rn+ai4G+CQXptDFSRNnChEgNr+xAEauYhwRvpPl/UHStTlgkIftplgJRsA2OXPuoUn86K4XAjB26+x5CEvVb6A==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.1",
+ "pathe": "^1.0.0",
+ "pkg-types": "^1.0.0",
+ "ufo": "^1.0.0"
+ }
+ },
+ "node_modules/mlly/node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "dev": true
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/namespace-emitter": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
+ "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g=="
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "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.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/natural-compare-lite": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+ "dev": true
+ },
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dev": true,
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "dev": true
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-wheel-es": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+ "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+ },
+ "node_modules/npm-run-path": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz",
+ "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nprogress": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
+ "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "dev": true,
+ "dependencies": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object-copy/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-visit/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
+ "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz",
+ "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+ "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": ">=0.14.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "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
+ }
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
+ "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
+ "dev": true,
+ "dependencies": {
+ "jsonc-parser": "^3.2.0",
+ "mlly": "^1.2.0",
+ "pathe": "^1.1.0"
+ }
+ },
+ "node_modules/pkg-types/node_modules/mlly": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz",
+ "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.11.3",
+ "pathe": "^1.1.2",
+ "pkg-types": "^1.0.3",
+ "ufo": "^1.3.2"
+ }
+ },
+ "node_modules/pkg-types/node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "dev": true
+ },
+ "node_modules/posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.34",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.34.tgz",
+ "integrity": "sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "dev": true,
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
+ "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.11"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-prefix-selector": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz",
+ "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==",
+ "dev": true,
+ "peerDependencies": {
+ "postcss": ">4 <9"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.15",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "node_modules/posthtml": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz",
+ "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==",
+ "dev": true,
+ "dependencies": {
+ "posthtml-parser": "^0.2.0",
+ "posthtml-render": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/posthtml-parser": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
+ "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==",
+ "dev": true,
+ "dependencies": {
+ "htmlparser2": "^3.8.3",
+ "isobject": "^2.1.0"
+ }
+ },
+ "node_modules/posthtml-rename-id": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
+ "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "node_modules/posthtml-render": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz",
+ "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/posthtml-svg-mode": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
+ "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
+ "dev": true,
+ "dependencies": {
+ "merge-options": "1.0.1",
+ "posthtml": "^0.9.2",
+ "posthtml-parser": "^0.2.1",
+ "posthtml-render": "^1.0.6"
+ }
+ },
+ "node_modules/preact": {
+ "version": "10.19.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.3.tgz",
+ "integrity": "sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "dev": true
+ },
+ "node_modules/regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/resize-detector": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz",
+ "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+ "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+ "dev": true
+ },
+ "node_modules/ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rgb": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz",
+ "integrity": "sha512-F49dXX73a92N09uQkfCp2QjwXpmJcn9/i9PvjmwsSIXUGqRLCf/yx5Q9gRxuLQTq248kakqQuc8GX/U/CxSqlA==",
+ "bin": {
+ "rgb": "bin/rgb"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.79.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+ "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "dependencies": {
+ "ret": "~0.1.10"
+ }
+ },
+ "node_modules/sass": {
+ "version": "1.70.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz",
+ "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/scroll-into-view-if-needed": {
+ "version": "2.2.31",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
+ "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
+ "dependencies": {
+ "compute-scroll-into-view": "^1.0.20"
+ }
+ },
+ "node_modules/scule": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-0.2.1.tgz",
+ "integrity": "sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==",
+ "dev": true
+ },
+ "node_modules/select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/sentence-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz",
+ "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slate": {
+ "version": "0.72.8",
+ "resolved": "https://registry.npmjs.org/slate/-/slate-0.72.8.tgz",
+ "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
+ "dependencies": {
+ "immer": "^9.0.6",
+ "is-plain-object": "^5.0.0",
+ "tiny-warning": "^1.0.3"
+ }
+ },
+ "node_modules/slate-history": {
+ "version": "0.66.0",
+ "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.66.0.tgz",
+ "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
+ "dependencies": {
+ "is-plain-object": "^5.0.0"
+ },
+ "peerDependencies": {
+ "slate": ">=0.65.3"
+ }
+ },
+ "node_modules/snabbdom": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.6.2.tgz",
+ "integrity": "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==",
+ "engines": {
+ "node": ">=12.17.0"
+ }
+ },
+ "node_modules/snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "dependencies": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/snapdragon/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/snapdragon/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sortablejs": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz",
+ "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w=="
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+ "dev": true,
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
+ "dev": true
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead",
+ "dev": true
+ },
+ "node_modules/split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ssr-window": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
+ "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
+ },
+ "node_modules/stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "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",
+ "dev": true
+ },
+ "node_modules/static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-literal": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz",
+ "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/sucrase/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-baker": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz",
+ "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
+ "dev": true,
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "clone": "^2.1.1",
+ "he": "^1.1.1",
+ "image-size": "^0.5.1",
+ "loader-utils": "^1.1.0",
+ "merge-options": "1.0.1",
+ "micromatch": "3.1.0",
+ "postcss": "^5.2.17",
+ "postcss-prefix-selector": "^1.6.0",
+ "posthtml-rename-id": "^1.0",
+ "posthtml-svg-mode": "^1.0.3",
+ "query-string": "^4.3.2",
+ "traverse": "^0.6.6"
+ }
+ },
+ "node_modules/svg-baker/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/chalk/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/svg-baker/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/micromatch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz",
+ "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.2.2",
+ "define-property": "^1.0.0",
+ "extend-shallow": "^2.0.1",
+ "extglob": "^2.0.2",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^5.0.2",
+ "nanomatch": "^1.2.1",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/svg-baker/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/svgo": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
+ "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+ "dev": true,
+ "dependencies": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^4.1.3",
+ "css-tree": "^1.1.3",
+ "csso": "^4.2.0",
+ "picocolors": "^1.0.0",
+ "stable": "^0.1.8"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/svgo/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/systemjs": {
+ "version": "6.14.3",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.14.3.tgz",
+ "integrity": "sha512-hQv45irdhXudAOr8r6SVSpJSGtogdGZUbJBRKCE5nsIS7tsxxvnIHqT4IOPWj+P+HcSzeWzHlGCGpmhPDIKe+w==",
+ "dev": true
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
+ "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
+ "dev": true,
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.19.1",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.27.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz",
+ "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/throttle-debounce": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
+ "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+ },
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-object-path/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/traverse": {
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz",
+ "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true
+ },
+ "node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
+ "node_modules/tsutils/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
+ "devOptional": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz",
+ "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==",
+ "dev": true
+ },
+ "node_modules/unimport": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-0.4.7.tgz",
+ "integrity": "sha512-V2Pbscd1VSdgWm1/OI2pjtydEOTjE7DDnHZKhpOq7bSUBc1i8+1f6PK8jI1lJ1plRDcSNr0DLtAmtU9NPkFQpw==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^4.2.1",
+ "escape-string-regexp": "^5.0.0",
+ "fast-glob": "^3.2.11",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.26.2",
+ "mlly": "^0.5.5",
+ "pathe": "^0.3.2",
+ "scule": "^0.2.1",
+ "strip-literal": "^0.4.0",
+ "unplugin": "^0.7.2"
+ }
+ },
+ "node_modules/unimport/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unplugin": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.7.2.tgz",
+ "integrity": "sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.7.1",
+ "chokidar": "^3.5.3",
+ "webpack-sources": "^3.2.3",
+ "webpack-virtual-modules": "^0.4.4"
+ },
+ "peerDependencies": {
+ "esbuild": ">=0.13",
+ "rollup": "^2.50.0",
+ "vite": "^2.3.0 || ^3.0.0-0",
+ "webpack": "4 || 5"
+ },
+ "peerDependenciesMeta": {
+ "esbuild": {
+ "optional": true
+ },
+ "rollup": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.9.5.tgz",
+ "integrity": "sha512-CskZjMM+p/QZev7y4JgaAFrf63ui4VGS4HrDMm6VIiVjwnmQ0wPugo58GGhYa+W2Hyv6zGffYO6uYHfeVlDZDA==",
+ "dev": true,
+ "dependencies": {
+ "@antfu/utils": "^0.5.2",
+ "@rollup/pluginutils": "^4.2.1",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.26.2",
+ "unimport": "^0.4.5",
+ "unplugin": "^0.7.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vueuse/core": "*"
+ },
+ "peerDependenciesMeta": {
+ "@vueuse/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-vue-components": {
+ "version": "0.19.9",
+ "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.19.9.tgz",
+ "integrity": "sha512-i5mZtg85euPWZrGswFkoa9pf4WjKCP5qOjnwOyg3KOKVzFjnP3osCdrunQMjtoMKehTdz1vV6baZH8bZR4PNgg==",
+ "dev": true,
+ "dependencies": {
+ "@antfu/utils": "^0.5.2",
+ "@rollup/pluginutils": "^4.2.1",
+ "chokidar": "^3.5.3",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.11",
+ "local-pkg": "^0.4.1",
+ "magic-string": "^0.26.2",
+ "minimatch": "^5.1.0",
+ "resolve": "^1.22.0",
+ "unplugin": "^0.7.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@babel/parser": "^7.15.8",
+ "@babel/traverse": "^7.15.4",
+ "vue": "2 || 3"
+ },
+ "peerDependenciesMeta": {
+ "@babel/parser": {
+ "optional": true
+ },
+ "@babel/traverse": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-vue-components/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/unplugin-vue-components/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/unplugin-vue-components/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dev": true,
+ "dependencies": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/upper-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
+ "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/upper-case-first": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz",
+ "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+ "dev": true
+ },
+ "node_modules/use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vditor": {
+ "version": "3.9.9",
+ "resolved": "https://registry.npmjs.org/vditor/-/vditor-3.9.9.tgz",
+ "integrity": "sha512-yeUb6E//ppiN0bX85O0sDCZ7tf/b3Lz6CcR8n77mwuZWNYOmJaqG15CfSFHg21NyNFStdN54A3P/s+eq/TkwLg==",
+ "dependencies": {
+ "diff-match-patch": "^1.0.5"
+ },
+ "funding": {
+ "url": "https://ld246.com/sponsor"
+ }
+ },
+ "node_modules/vite": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.8.tgz",
+ "integrity": "sha512-EtQU16PLIJpAZol2cTLttNP1mX6L0SyI0pgQB1VOoWeQnMSvtiwovV3D6NcjN8CZQWWyESD2v5NGnpz5RvgOZA==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.15.9",
+ "postcss": "^8.4.18",
+ "resolve": "^1.22.1",
+ "rollup": "^2.79.1"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-style-import": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-style-import/-/vite-plugin-style-import-2.0.0.tgz",
+ "integrity": "sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^4.1.2",
+ "change-case": "^4.1.2",
+ "console": "^0.7.2",
+ "es-module-lexer": "^0.9.3",
+ "fs-extra": "^10.0.0",
+ "magic-string": "^0.25.7",
+ "pathe": "^0.2.0"
+ },
+ "peerDependencies": {
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/vite-plugin-style-import/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/vite-plugin-style-import/node_modules/pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true
+ },
+ "node_modules/vite-plugin-svg-icons": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/vite-plugin-svg-icons/-/vite-plugin-svg-icons-2.0.1.tgz",
+ "integrity": "sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==",
+ "dev": true,
+ "dependencies": {
+ "@types/svgo": "^2.6.1",
+ "cors": "^2.8.5",
+ "debug": "^4.3.3",
+ "etag": "^1.8.1",
+ "fs-extra": "^10.0.0",
+ "pathe": "^0.2.0",
+ "svg-baker": "1.7.0",
+ "svgo": "^2.8.0"
+ },
+ "peerDependencies": {
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/vite-plugin-svg-icons/node_modules/pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true
+ },
+ "node_modules/vite-plugin-vue-setup-extend": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-setup-extend/-/vite-plugin-vue-setup-extend-0.4.0.tgz",
+ "integrity": "sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-sfc": "^3.2.29",
+ "magic-string": "^0.25.7"
+ },
+ "peerDependencies": {
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/vite-plugin-vue-setup-extend/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz",
+ "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.15",
+ "@vue/compiler-sfc": "3.4.15",
+ "@vue/runtime-dom": "3.4.15",
+ "@vue/server-renderer": "3.4.15",
+ "@vue/shared": "3.4.15"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-clipboard3": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz",
+ "integrity": "sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==",
+ "dependencies": {
+ "clipboard": "^2.0.6"
+ }
+ },
+ "node_modules/vue-echarts": {
+ "version": "6.6.8",
+ "resolved": "https://registry.npmjs.org/vue-echarts/-/vue-echarts-6.6.8.tgz",
+ "integrity": "sha512-3EGrxKGCGjHnkhudRQQ4fkK5iJxxXNQ1fXvSWA/7mzR/oV7BBSHYvC3gDbG/WIW0A/Fcx2H8k5H3NDyWgjyi8g==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "resize-detector": "^0.3.0",
+ "vue-demi": "^0.13.11"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.5",
+ "@vue/runtime-core": "^3.0.0",
+ "echarts": "^5.4.1",
+ "vue": "^2.6.12 || ^3.1.1"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "@vue/runtime-core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-echarts/node_modules/vue-demi": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz",
+ "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-eslint-parser": {
+ "version": "9.4.2",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz",
+ "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/vue-router": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+ "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-tsc": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.38.9.tgz",
+ "integrity": "sha512-Yoy5phgvGqyF98Fb4mYqboR4Q149jrdcGv5kSmufXJUq++RZJ2iMVG0g6zl+v3t4ORVWkQmRpsV4x2szufZ0LQ==",
+ "dev": true,
+ "dependencies": {
+ "@volar/vue-typescript": "0.38.9"
+ },
+ "bin": {
+ "vue-tsc": "bin/vue-tsc.js"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/vue3-video-play": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/vue3-video-play/-/vue3-video-play-1.3.2.tgz",
+ "integrity": "sha512-eEwCJ0NIkfVQgTj0I3Kf9b1E/04Qne8mQQiE8r77BocblHsZ2T6af3q8l8Zzs/OvjlpQAQvkN/ACVUOJC3RSXg==",
+ "dependencies": {
+ "hls.js": "^1.0.10",
+ "throttle-debounce": "^3.0.1",
+ "vue": "^3.2.2"
+ }
+ },
+ "node_modules/vuedraggable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz",
+ "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
+ "dependencies": {
+ "sortablejs": "1.14.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.1"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz",
+ "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==",
+ "dev": true
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wildcard": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz",
+ "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng=="
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/xss": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz",
+ "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==",
+ "dependencies": {
+ "commander": "^2.20.3",
+ "cssfilter": "0.0.10"
+ },
+ "bin": {
+ "xss": "bin/xss"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/xss/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yaml": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zrender": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz",
+ "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==",
+ "dependencies": {
+ "tslib": "2.3.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..052632ff0
--- /dev/null
+++ b/package.json
@@ -0,0 +1,65 @@
+{
+ "name": "vue-project",
+ "version": "0.0.0",
+ "license": "MIT",
+ "scripts": {
+ "dev": "vite",
+ "preview": "vite preview --port 4173",
+ "build": "vite build && node scripts/release.mjs",
+ "type-check": "vue-tsc --noEmit",
+ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
+ },
+ "dependencies": {
+ "@element-plus/icons-vue": "^2.0.6",
+ "@highlightjs/vue-plugin": "^2.1.0",
+ "@wangeditor/editor": "^5.1.12",
+ "@wangeditor/editor-for-vue": "^5.1.12",
+ "axios": "^0.27.2",
+ "css-color-function": "^1.3.3",
+ "echarts": "^5.3.3",
+ "element-plus": "^2.2.9",
+ "highlight.js": "^11.6.0",
+ "mavon-editor": "3.0.1",
+ "nprogress": "^0.2.0",
+ "pinia": "^2.0.14",
+ "vditor": "^3.9.9",
+ "vue": "^3.2.37",
+ "vue-clipboard3": "^2.0.0",
+ "vue-echarts": "^6.2.3",
+ "vue-router": "^4.0.16",
+ "vue3-video-play": "^1.3.2",
+ "vuedraggable": "^4.1.0"
+ },
+ "devDependencies": {
+ "@rushstack/eslint-patch": "^1.1.0",
+ "@tailwindcss/line-clamp": "^0.4.2",
+ "@types/lodash-es": "^4.17.6",
+ "@types/node": "^16.11.41",
+ "@types/nprogress": "^0.2.0",
+ "@vitejs/plugin-legacy": "^2.3.1",
+ "@vitejs/plugin-vue": "^3.0.0",
+ "@vitejs/plugin-vue-jsx": "^2.0.0",
+ "@vue/eslint-config-prettier": "^7.0.0",
+ "@vue/eslint-config-typescript": "^11.0.0",
+ "@vue/tsconfig": "^0.1.3",
+ "autoprefixer": "^10.4.7",
+ "consola": "^2.15.3",
+ "eslint": "^8.5.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "execa": "^6.1.0",
+ "fs-extra": "^10.1.0",
+ "postcss": "^8.4.14",
+ "prettier": "^2.5.1",
+ "sass": "^1.53.0",
+ "tailwindcss": "^3.0.24",
+ "terser": "^5.15.1",
+ "typescript": "~4.7.4",
+ "unplugin-auto-import": "^0.9.2",
+ "unplugin-vue-components": "^0.19.9",
+ "vite": "^3.0.0",
+ "vite-plugin-style-import": "^2.0.0",
+ "vite-plugin-svg-icons": "^2.0.1",
+ "vite-plugin-vue-setup-extend": "^0.4.0",
+ "vue-tsc": "^0.38.1"
+ }
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 000000000..ff8ef3cff
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {}
+ }
+}
diff --git a/scripts/release.mjs b/scripts/release.mjs
new file mode 100644
index 000000000..84461b677
--- /dev/null
+++ b/scripts/release.mjs
@@ -0,0 +1,35 @@
+import path from 'path'
+import fsExtra from 'fs-extra'
+const { existsSync, remove, copy } = fsExtra
+const cwd = process.cwd()
+//打包发布路径,谨慎改动
+const releaseRelativePath = '../server/public/admin'
+const distPath = path.resolve(cwd, 'dist')
+const releasePath = path.resolve(cwd, releaseRelativePath)
+
+async function build() {
+ if (existsSync(releasePath)) {
+ await remove(releasePath)
+ }
+ console.log(`文件正在复制 ==> ${releaseRelativePath}`)
+ try {
+ await copyFile(distPath, releasePath)
+ } catch (error) {
+ console.log(`\n ${error}`)
+ }
+ console.log(`文件已复制 ==> ${releaseRelativePath}`)
+}
+
+function copyFile(sourceDir, targetDir) {
+ return new Promise((resolve, reject) => {
+ copy(sourceDir, targetDir, (err) => {
+ if (err) {
+ reject(err)
+ } else {
+ resolve()
+ }
+ })
+ })
+}
+
+build()
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 000000000..09f98d148
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/api/app.ts b/src/api/app.ts
new file mode 100644
index 000000000..fec3423be
--- /dev/null
+++ b/src/api/app.ts
@@ -0,0 +1,16 @@
+import request from '@/utils/request'
+
+// 配置
+export function getConfig() {
+ return request.get({ url: '/config/getConfig' })
+}
+
+// 工作台主页
+export function getWorkbench() {
+ return request.get({ url: '/workbench/index' })
+}
+
+//字典数据
+export function getDictData(params: any) {
+ return request.get({ url: '/config/dict', params })
+}
diff --git a/src/api/app/recharge.ts b/src/api/app/recharge.ts
new file mode 100644
index 000000000..e243f2a98
--- /dev/null
+++ b/src/api/app/recharge.ts
@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+export function getRechargeConfig() {
+ return request.get({ url: '/recharge/recharge/getConfig' })
+}
+
+// 设置
+export function setRechargeConfig(params: any) {
+ return request.post({ url: '/recharge/recharge/setConfig', params })
+}
diff --git a/src/api/category.ts b/src/api/category.ts
new file mode 100644
index 000000000..dba8c4d13
--- /dev/null
+++ b/src/api/category.ts
@@ -0,0 +1,26 @@
+import request from "@/utils/request";
+
+// 分类表列表
+export function apiCategoryLists(params: any) {
+ return request.get({ url: "/setting/category/lists", params });
+}
+
+// 添加分类表
+export function apiCategoryAdd(params: any) {
+ return request.post({ url: "/setting/category/add", params });
+}
+
+// 编辑分类表
+export function apiCategoryEdit(params: any) {
+ return request.post({ url: "/setting/category/edit", params });
+}
+
+// 删除分类表
+export function apiCategoryDelete(params: any) {
+ return request.post({ url: "/setting/category/delete", params });
+}
+
+// 分类表详情
+export function apiCategoryDetail(params: any) {
+ return request.get({ url: "/setting/category/detail", params });
+}
diff --git a/src/api/consumer.ts b/src/api/consumer.ts
new file mode 100644
index 000000000..81165793c
--- /dev/null
+++ b/src/api/consumer.ts
@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+// 用户列表
+export function getUserList(params: any) {
+ return request.get({ url: '/user/user/lists', params }, { ignoreCancelToken: true })
+}
+
+// 用户详情
+export function getUserDetail(params: any) {
+ return request.get({ url: '/user/user/detail', params })
+}
+
+// 用户编辑
+export function userEdit(params: any) {
+ return request.post({ url: '/user/user/edit', params })
+}
+
+// 用户编辑
+export function adjustMoney(params: any) {
+ return request.post({ url: '/user/user/adjustMoney', params })
+}
diff --git a/src/api/file.ts b/src/api/file.ts
new file mode 100644
index 000000000..21810016d
--- /dev/null
+++ b/src/api/file.ts
@@ -0,0 +1,39 @@
+import request from '@/utils/request'
+
+export function fileCateAdd(params: Record) {
+ return request.post({url: '/file/addCate', params})
+}
+
+export function fileCateEdit(params: Record) {
+ return request.post({url: '/file/editCate', params})
+}
+
+// 文件分类删除
+export function fileCateDelete(params: Record) {
+ return request.post({url: '/file/delCate', params})
+}
+
+// 文件分类列表
+export function fileCateLists(params: Record) {
+ return request.get({url: '/file/listCate', params})
+}
+
+// 文件列表
+export function fileList(params: Record) {
+ return request.get({url: '/file/lists', params}, {ignoreCancelToken: true, isOpenRetry: false})
+}
+
+// 文件删除
+export function fileDelete(params: Record) {
+ return request.post({url: '/file/delete', params})
+}
+
+// 文件移动
+export function fileMove(params: Record) {
+ return request.post({url: '/file/move', params})
+}
+
+// 文件重命名
+export function fileRename(params: { id: number; name: string }) {
+ return request.post({url: '/file/rename', params})
+}
diff --git a/src/api/label.ts b/src/api/label.ts
new file mode 100644
index 000000000..6838a4b73
--- /dev/null
+++ b/src/api/label.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 标签列表
+export function apiLabelLists(params: any) {
+ return request.get({ url: '/setting/label/lists', params })
+}
+
+// 添加标签
+export function apiLabelAdd(params: any) {
+ return request.post({ url: '/setting/label/add', params })
+}
+
+// 编辑标签
+export function apiLabelEdit(params: any) {
+ return request.post({ url: '/setting/label/edit', params })
+}
+
+// 删除标签
+export function apiLabelDelete(params: any) {
+ return request.post({ url: '/setting/label/delete', params })
+}
+
+// 标签详情
+export function apiLabelDetail(params: any) {
+ return request.get({ url: '/setting/label/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/org/department.ts b/src/api/org/department.ts
new file mode 100644
index 000000000..bc51c21a7
--- /dev/null
+++ b/src/api/org/department.ts
@@ -0,0 +1,31 @@
+import request from '@/utils/request'
+
+// 部门列表
+export function deptLists(params?: any) {
+ return request.get({ url: '/dept/dept/lists', params })
+}
+
+// 添加部门
+export function deptAdd(params: any) {
+ return request.post({ url: '/dept/dept/add', params })
+}
+
+// 编辑部门
+export function deptEdit(params: any) {
+ return request.post({ url: '/dept/dept/edit', params })
+}
+
+// 删除部门
+export function deptDelete(params: any) {
+ return request.post({ url: '/dept/dept/delete', params })
+}
+
+// 部门详情
+export function deptDetail(params: any) {
+ return request.get({ url: '/dept/dept/detail', params })
+}
+
+// 部门列表全部
+export function deptAll() {
+ return request.get({ url: '/dept/dept/all' })
+}
diff --git a/src/api/org/post.ts b/src/api/org/post.ts
new file mode 100644
index 000000000..40aed0927
--- /dev/null
+++ b/src/api/org/post.ts
@@ -0,0 +1,31 @@
+import request from '@/utils/request'
+
+// 岗位列表
+export function jobsLists(params: any) {
+ return request.get({ url: '/dept/jobs/lists', params }, { ignoreCancelToken: true })
+}
+
+// 岗位列表全部
+export function jobsAll(params: any) {
+ return request.get({ url: '/dept/jobs/all', params })
+}
+
+// 添加岗位
+export function jobsAdd(params: any) {
+ return request.post({ url: '/dept/jobs/add', params })
+}
+
+// 编辑岗位
+export function jobsEdit(params: any) {
+ return request.post({ url: '/dept/jobs/edit', params })
+}
+
+// 删除岗位
+export function jobsDelete(params: any) {
+ return request.post({ url: '/dept/jobs/delete', params })
+}
+
+// 岗位详情
+export function jobsDetail(params: any) {
+ return request.get({ url: '/dept/jobs/detail', params })
+}
diff --git a/src/api/perms/admin.ts b/src/api/perms/admin.ts
new file mode 100644
index 000000000..98ef2a6b3
--- /dev/null
+++ b/src/api/perms/admin.ts
@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+// 管理员列表
+export function adminLists(params: any) {
+ return request.get({ url: '/auth/admin/lists', params }, { ignoreCancelToken: true })
+}
+// 管理员列表全部
+export function adminAll(params: any) {
+ return request.get({ url: '/auth/admin/all', params })
+}
+// 管理员添加
+export function adminAdd(params: any) {
+ return request.post({ url: '/auth/admin/add', params })
+}
+
+// 管理员编辑
+export function adminEdit(params: any) {
+ return request.post({ url: '/auth/admin/edit', params })
+}
+
+// 管理员删除
+export function adminDelete(params: any) {
+ return request.post({ url: '/auth/admin/delete', params })
+}
+
+// 管理员详情
+export function adminDetail(params: any) {
+ return request.get({ url: '/auth/admin/detail', params })
+}
diff --git a/src/api/perms/menu.ts b/src/api/perms/menu.ts
new file mode 100644
index 000000000..b3932a2b5
--- /dev/null
+++ b/src/api/perms/menu.ts
@@ -0,0 +1,30 @@
+import request from '@/utils/request'
+
+// 菜单列表
+export function menuLists(params: Record) {
+ return request.get({ url: '/auth/menu/lists', params })
+}
+// 菜单全部
+export function menuAll(params?: Record) {
+ return request.get({ url: '/auth/menu/all', params })
+}
+
+// 添加菜单
+export function menuAdd(params: Record) {
+ return request.post({ url: '/auth/menu/add', params })
+}
+
+// 编辑菜单
+export function menuEdit(params: Record) {
+ return request.post({ url: '/auth/menu/edit', params })
+}
+
+// 菜单删除
+export function menuDelete(params: Record) {
+ return request.post({ url: '/auth/menu/delete', params })
+}
+
+// 菜单详情
+export function menuDetail(params: Record) {
+ return request.get({ url: '/auth/menu/detail', params })
+}
diff --git a/src/api/perms/role.ts b/src/api/perms/role.ts
new file mode 100644
index 000000000..390765e57
--- /dev/null
+++ b/src/api/perms/role.ts
@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+// 角色列表
+export function roleLists(params: any) {
+ return request.get({ url: '/auth/role/lists', params })
+}
+// 角色列表全部
+export function roleAll(params: any) {
+ return request.get({ url: '/auth/role/all', params })
+}
+// 添加角色
+export function roleAdd(params: any) {
+ return request.post({ url: '/auth/role/add', params })
+}
+// 编辑角色
+export function roleEdit(params: any) {
+ return request.post({ url: '/auth/role/edit', params })
+}
+// 删除角色
+export function roleDelete(params: any) {
+ return request.post({ url: '/auth/role/delete', params })
+}
+
+// 角色详情
+export function roleDetail(params: any) {
+ return request.get({ url: '/auth/role/detail', params })
+}
diff --git a/src/api/setting/dict.ts b/src/api/setting/dict.ts
new file mode 100644
index 000000000..66f65dae8
--- /dev/null
+++ b/src/api/setting/dict.ts
@@ -0,0 +1,61 @@
+import request from '@/utils/request'
+
+// 字典类型列表
+export function dictTypeLists(params: any) {
+ return request.get({ url: '/setting/dict/dictType/lists', params })
+}
+
+// 字典类型列表全部
+export function dictTypeAll(params: any) {
+ return request.get({ url: '/setting/dict/dictType/all', params })
+}
+
+// 添加字典类型
+export function dictTypeAdd(params: any) {
+ return request.post({ url: '/setting/dict/dictType/add', params })
+}
+
+// 编辑字典类型
+export function dictTypeEdit(params: any) {
+ return request.post({ url: '/setting/dict/dictType/edit', params })
+}
+
+// 删除字典类型
+export function dictTypeDelete(params: any) {
+ return request.post({ url: '/setting/dict/dictType/delete', params })
+}
+
+// 字典类型详情
+export function dictTypeDetail(params: any) {
+ return request.get({ url: '/setting/dict/dictType/detail', params })
+}
+
+// 字典数据列表
+export function dictDataLists(params: any) {
+ return request.get(
+ { url: '/setting/dict/dictData/lists', params },
+ {
+ ignoreCancelToken: true
+ }
+ )
+}
+
+// 添加字典数据
+export function dictDataAdd(params: any) {
+ return request.post({ url: '/setting/dict/dictData/add', params })
+}
+
+// 编辑字典数据
+export function dictDataEdit(params: any) {
+ return request.post({ url: '/setting/dict/dictData/edit', params })
+}
+
+// 删除字典数据
+export function dictDataDelete(params: any) {
+ return request.post({ url: '/setting/dict/dictData/delete', params })
+}
+
+// 字典数据详情
+export function dictDataDetail(params: any) {
+ return request.get({ url: '/setting/dict/dictData/detail', params })
+}
diff --git a/src/api/setting/storage.ts b/src/api/setting/storage.ts
new file mode 100644
index 000000000..f1f3f4393
--- /dev/null
+++ b/src/api/setting/storage.ts
@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+// 获取存储引擎列表
+export function storageLists() {
+ return request.get({ url: '/setting/storage/lists' })
+}
+
+// 设置存储引擎信息
+export function storageChange(params: any) {
+ return request.post({ url: '/setting/storage/change', params })
+}
+
+// 设置存储引擎信息
+export function storageSetup(params: any) {
+ return request.post({ url: '/setting/storage/setup', params })
+}
+
+// 获取存储配置信息
+export function storageDetail(params: any) {
+ return request.get({ url: '/setting/storage/detail', params })
+}
diff --git a/src/api/setting/system.ts b/src/api/setting/system.ts
new file mode 100644
index 000000000..6508a4dae
--- /dev/null
+++ b/src/api/setting/system.ts
@@ -0,0 +1,51 @@
+import request from '@/utils/request'
+
+// 获取系统环境
+export function systemInfo() {
+ return request.get({ url: '/setting/system/system/info' })
+}
+
+// 获取系统日志列表
+export function systemLogLists(params: any) {
+ return request.get({ url: '/setting/system/log/lists', params }, { ignoreCancelToken: true })
+}
+
+// 清除系统缓存
+export function systemCacheClear() {
+ return request.post({ url: '/setting/system/cache/clear' })
+}
+
+// 定时任务列表
+export function crontabLists(params: any) {
+ return request.get({ url: '/crontab/crontab/lists', params })
+}
+
+// 添加定时任务
+export function crontabAdd(params: any) {
+ return request.post({ url: '/crontab/crontab/add', params })
+}
+
+// 定时任务详情
+export function crontabDetail(params: any) {
+ return request.get({ url: '/crontab/crontab/detail', params })
+}
+
+// 编辑定时任务
+export function crontabEdit(params: any) {
+ return request.post({ url: '/crontab/crontab/edit', params })
+}
+
+// 删除定时任务
+export function crontabDel(params: any) {
+ return request.post({ url: '/crontab/crontab/delete', params })
+}
+
+// 获取规则执行时间
+export function crontabExpression(params: any) {
+ return request.get({ url: '/crontab/crontab/expression', params })
+}
+
+// 操作定时任务
+export function srontabOperate(params: any) {
+ return request.post({ url: '/crontab/crontab/operate', params })
+}
diff --git a/src/api/setting/website.ts b/src/api/setting/website.ts
new file mode 100644
index 000000000..4f4de9909
--- /dev/null
+++ b/src/api/setting/website.ts
@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+// 获取备案信息
+export function getCopyright() {
+ return request.get({ url: '/setting/web/webSetting/getCopyright' })
+}
+// 设置备案信息
+export function setCopyright(params: any) {
+ return request.post({ url: '/setting/web/webSetting/setCopyright', params })
+}
+// 获取网站信息
+export function getWebsite() {
+ return request.get({ url: '/setting/web/webSetting/getWebsite' })
+}
+// 设置网站信息
+export function setWebsite(params: any) {
+ return request.post({ url: '/setting/web/webSetting/setWebsite', params })
+}
+
+// 获取政策协议
+export function getProtocol() {
+ return request.get({ url: '/setting/web/webSetting/getAgreement' })
+}
+// 设置政策协议
+export function setProtocol(params: any) {
+ return request.post({ url: '/setting/web/webSetting/setAgreement', params })
+}
diff --git a/src/api/tools/code.ts b/src/api/tools/code.ts
new file mode 100644
index 000000000..f9860ed8c
--- /dev/null
+++ b/src/api/tools/code.ts
@@ -0,0 +1,51 @@
+import request from '@/utils/request'
+
+// 代码生成已选数据表列表接口
+export function generateTable(params: any) {
+ return request.get({ url: '/tools/generator/generateTable', params })
+}
+
+// 数据表列表接口
+export function dataTable(params: any) {
+ return request.get({ url: '/tools/generator/dataTable', params })
+}
+
+//选择要生成代码的数据表
+export function selectTable(params: any) {
+ return request.post({ url: '/tools/generator/selectTable', params })
+}
+
+// 已选择的数据表详情
+export function tableDetail(params: any) {
+ return request.get({ url: '/tools/generator/detail', params })
+}
+
+//同步字段
+export function syncColumn(params: any) {
+ return request.post({ url: '/tools/generator/syncColumn', params })
+}
+
+//删除已选择的数据表
+export function generateDelete(params: any) {
+ return request.post({ url: '/tools/generator/delete', params })
+}
+
+//编辑已选表字段
+export function generateEdit(params: any) {
+ return request.post({ url: '/tools/generator/edit', params })
+}
+
+//预览代码
+export function generatePreview(params: any) {
+ return request.post({ url: '/tools/generator/preview', params })
+}
+
+//生成代码
+export function generateCode(params: any) {
+ return request.post({ url: '/tools/generator/generate', params })
+}
+
+//获取模型
+export function getModels() {
+ return request.get({ url: '/tools/generator/getModels' })
+}
diff --git a/src/api/user.ts b/src/api/user.ts
new file mode 100644
index 000000000..0b2226899
--- /dev/null
+++ b/src/api/user.ts
@@ -0,0 +1,22 @@
+import config from '@/config'
+import request from '@/utils/request'
+
+// 登录
+export function login(params: Record) {
+ return request.post({ url: '/login/account', params: { ...params, terminal: config.terminal } })
+}
+
+// 退出登录
+export function logout() {
+ return request.post({ url: '/login/logout' })
+}
+
+// 用户信息
+export function getUserInfo() {
+ return request.get({ url: '/auth/admin/mySelf' })
+}
+
+// 编辑管理员信息
+export function setUserInfo(params: any) {
+ return request.post({ url: '/auth/admin/editSelf', params })
+}
diff --git a/src/assets/icons/Androidfanhui.svg b/src/assets/icons/Androidfanhui.svg
new file mode 100644
index 000000000..e9ada24db
--- /dev/null
+++ b/src/assets/icons/Androidfanhui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/KMSguanli.svg b/src/assets/icons/KMSguanli.svg
new file mode 100644
index 000000000..7c6529849
--- /dev/null
+++ b/src/assets/icons/KMSguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/KTVyuding.svg b/src/assets/icons/KTVyuding.svg
new file mode 100644
index 000000000..8187b5fc5
--- /dev/null
+++ b/src/assets/icons/KTVyuding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/a-tixingdengpao.svg b/src/assets/icons/a-tixingdengpao.svg
new file mode 100644
index 000000000..7074ae7bd
--- /dev/null
+++ b/src/assets/icons/a-tixingdengpao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/anquan.svg b/src/assets/icons/anquan.svg
new file mode 100644
index 000000000..bf90259bf
--- /dev/null
+++ b/src/assets/icons/anquan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/anquan_mian.svg b/src/assets/icons/anquan_mian.svg
new file mode 100644
index 000000000..f3486b511
--- /dev/null
+++ b/src/assets/icons/anquan_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/anquan_mian1.svg b/src/assets/icons/anquan_mian1.svg
new file mode 100644
index 000000000..f3486b511
--- /dev/null
+++ b/src/assets/icons/anquan_mian1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/banxing_mian.svg b/src/assets/icons/banxing_mian.svg
new file mode 100644
index 000000000..3cb468f7e
--- /dev/null
+++ b/src/assets/icons/banxing_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/baoxian.svg b/src/assets/icons/baoxian.svg
new file mode 100644
index 000000000..9885e88bc
--- /dev/null
+++ b/src/assets/icons/baoxian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/bendishenghuodaxue.svg b/src/assets/icons/bendishenghuodaxue.svg
new file mode 100644
index 000000000..4754e1633
--- /dev/null
+++ b/src/assets/icons/bendishenghuodaxue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/bianji.svg b/src/assets/icons/bianji.svg
new file mode 100644
index 000000000..c8674e7b1
--- /dev/null
+++ b/src/assets/icons/bianji.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/biaoqing.svg b/src/assets/icons/biaoqing.svg
new file mode 100644
index 000000000..fcc84fbc2
--- /dev/null
+++ b/src/assets/icons/biaoqing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/bukejian.svg b/src/assets/icons/bukejian.svg
new file mode 100644
index 000000000..c79cd78cc
--- /dev/null
+++ b/src/assets/icons/bukejian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/caipinguanli.svg b/src/assets/icons/caipinguanli.svg
new file mode 100644
index 000000000..3b1fc283a
--- /dev/null
+++ b/src/assets/icons/caipinguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/caiwu.svg b/src/assets/icons/caiwu.svg
new file mode 100644
index 000000000..e3e92f4f3
--- /dev/null
+++ b/src/assets/icons/caiwu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/caiwu_jifen.svg b/src/assets/icons/caiwu_jifen.svg
new file mode 100644
index 000000000..07d01dfa6
--- /dev/null
+++ b/src/assets/icons/caiwu_jifen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/caiwu_tixian.svg b/src/assets/icons/caiwu_tixian.svg
new file mode 100644
index 000000000..982ac5835
--- /dev/null
+++ b/src/assets/icons/caiwu_tixian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/canyinfuwu.svg b/src/assets/icons/canyinfuwu.svg
new file mode 100644
index 000000000..5d873955f
--- /dev/null
+++ b/src/assets/icons/canyinfuwu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/carryout.svg b/src/assets/icons/carryout.svg
new file mode 100644
index 000000000..4a0664077
--- /dev/null
+++ b/src/assets/icons/carryout.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/chexiao.svg b/src/assets/icons/chexiao.svg
new file mode 100644
index 000000000..b9e6e5dd5
--- /dev/null
+++ b/src/assets/icons/chexiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/chihuohongbao.svg b/src/assets/icons/chihuohongbao.svg
new file mode 100644
index 000000000..bb1fb6635
--- /dev/null
+++ b/src/assets/icons/chihuohongbao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/chuangyiwuliao.svg b/src/assets/icons/chuangyiwuliao.svg
new file mode 100644
index 000000000..045057df6
--- /dev/null
+++ b/src/assets/icons/chuangyiwuliao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/close.svg b/src/assets/icons/close.svg
new file mode 100644
index 000000000..54f3e08ad
--- /dev/null
+++ b/src/assets/icons/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/daiyunying.svg b/src/assets/icons/daiyunying.svg
new file mode 100644
index 000000000..dc1c7c527
--- /dev/null
+++ b/src/assets/icons/daiyunying.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/danwei.svg b/src/assets/icons/danwei.svg
new file mode 100644
index 000000000..ba527e836
--- /dev/null
+++ b/src/assets/icons/danwei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/danxuankuang.svg b/src/assets/icons/danxuankuang.svg
new file mode 100644
index 000000000..2ef171c23
--- /dev/null
+++ b/src/assets/icons/danxuankuang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/danxuanxuanzhong.svg b/src/assets/icons/danxuanxuanzhong.svg
new file mode 100644
index 000000000..c7f230c58
--- /dev/null
+++ b/src/assets/icons/danxuanxuanzhong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dayin.svg b/src/assets/icons/dayin.svg
new file mode 100644
index 000000000..0d2291d9d
--- /dev/null
+++ b/src/assets/icons/dayin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dayin_mian.svg b/src/assets/icons/dayin_mian.svg
new file mode 100644
index 000000000..7989ff660
--- /dev/null
+++ b/src/assets/icons/dayin_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/del.svg b/src/assets/icons/del.svg
new file mode 100644
index 000000000..f93814012
--- /dev/null
+++ b/src/assets/icons/del.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/diancanshezhi.svg b/src/assets/icons/diancanshezhi.svg
new file mode 100644
index 000000000..8723cbf32
--- /dev/null
+++ b/src/assets/icons/diancanshezhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianhua.svg b/src/assets/icons/dianhua.svg
new file mode 100644
index 000000000..be006a9c5
--- /dev/null
+++ b/src/assets/icons/dianhua.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianhua_mian.svg b/src/assets/icons/dianhua_mian.svg
new file mode 100644
index 000000000..555407798
--- /dev/null
+++ b/src/assets/icons/dianhua_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianpu_fengge.svg b/src/assets/icons/dianpu_fengge.svg
new file mode 100644
index 000000000..a7dc3e1a0
--- /dev/null
+++ b/src/assets/icons/dianpu_fengge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianputuijian.svg b/src/assets/icons/dianputuijian.svg
new file mode 100644
index 000000000..0e8a4c8b8
--- /dev/null
+++ b/src/assets/icons/dianputuijian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianzifapiao.svg b/src/assets/icons/dianzifapiao.svg
new file mode 100644
index 000000000..b2db46378
--- /dev/null
+++ b/src/assets/icons/dianzifapiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingcan.svg b/src/assets/icons/dingcan.svg
new file mode 100644
index 000000000..46d4e956e
--- /dev/null
+++ b/src/assets/icons/dingcan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingdan.svg b/src/assets/icons/dingdan.svg
new file mode 100644
index 000000000..e5b35a989
--- /dev/null
+++ b/src/assets/icons/dingdan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingdan1.svg b/src/assets/icons/dingdan1.svg
new file mode 100644
index 000000000..5330a6a3a
--- /dev/null
+++ b/src/assets/icons/dingdan1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingdan_mian.svg b/src/assets/icons/dingdan_mian.svg
new file mode 100644
index 000000000..092927683
--- /dev/null
+++ b/src/assets/icons/dingdan_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingwei.svg b/src/assets/icons/dingwei.svg
new file mode 100644
index 000000000..ef573a793
--- /dev/null
+++ b/src/assets/icons/dingwei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingwei_mian.svg b/src/assets/icons/dingwei_mian.svg
new file mode 100644
index 000000000..8c866744c
--- /dev/null
+++ b/src/assets/icons/dingwei_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/ditu.svg b/src/assets/icons/ditu.svg
new file mode 100644
index 000000000..6b5e5f298
--- /dev/null
+++ b/src/assets/icons/ditu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/ditu_mian.svg b/src/assets/icons/ditu_mian.svg
new file mode 100644
index 000000000..bb542bf80
--- /dev/null
+++ b/src/assets/icons/ditu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/duizhang.svg b/src/assets/icons/duizhang.svg
new file mode 100644
index 000000000..f63d6df8f
--- /dev/null
+++ b/src/assets/icons/duizhang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/elemo.svg b/src/assets/icons/elemo.svg
new file mode 100644
index 000000000..c1d5388f5
--- /dev/null
+++ b/src/assets/icons/elemo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/ezhanggui.svg b/src/assets/icons/ezhanggui.svg
new file mode 100644
index 000000000..cd50b0bb9
--- /dev/null
+++ b/src/assets/icons/ezhanggui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/falvfuwubaoxiaohei.svg b/src/assets/icons/falvfuwubaoxiaohei.svg
new file mode 100644
index 000000000..27ea8569c
--- /dev/null
+++ b/src/assets/icons/falvfuwubaoxiaohei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fengniaopaotui.svg b/src/assets/icons/fengniaopaotui.svg
new file mode 100644
index 000000000..3f5f7b180
--- /dev/null
+++ b/src/assets/icons/fengniaopaotui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fenxiang.svg b/src/assets/icons/fenxiang.svg
new file mode 100644
index 000000000..e4eb7cc7b
--- /dev/null
+++ b/src/assets/icons/fenxiang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fukuan.svg b/src/assets/icons/fukuan.svg
new file mode 100644
index 000000000..939c7455a
--- /dev/null
+++ b/src/assets/icons/fukuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fukuan_mian.svg b/src/assets/icons/fukuan_mian.svg
new file mode 100644
index 000000000..ba094cc53
--- /dev/null
+++ b/src/assets/icons/fukuan_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fullscreen-exit.svg b/src/assets/icons/fullscreen-exit.svg
new file mode 100644
index 000000000..e845a798a
--- /dev/null
+++ b/src/assets/icons/fullscreen-exit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fullscreen.svg b/src/assets/icons/fullscreen.svg
new file mode 100644
index 000000000..516e8907a
--- /dev/null
+++ b/src/assets/icons/fullscreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fuwushichang.svg b/src/assets/icons/fuwushichang.svg
new file mode 100644
index 000000000..256437051
--- /dev/null
+++ b/src/assets/icons/fuwushichang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fuzhi.svg b/src/assets/icons/fuzhi.svg
new file mode 100644
index 000000000..659c6e068
--- /dev/null
+++ b/src/assets/icons/fuzhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gaode.svg b/src/assets/icons/gaode.svg
new file mode 100644
index 000000000..8d263434c
--- /dev/null
+++ b/src/assets/icons/gaode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gengduo.svg b/src/assets/icons/gengduo.svg
new file mode 100644
index 000000000..2956729a7
--- /dev/null
+++ b/src/assets/icons/gengduo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gengduoandroid.svg b/src/assets/icons/gengduoandroid.svg
new file mode 100644
index 000000000..ecde71b37
--- /dev/null
+++ b/src/assets/icons/gengduoandroid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gift.svg b/src/assets/icons/gift.svg
new file mode 100644
index 000000000..add9ce88f
--- /dev/null
+++ b/src/assets/icons/gift.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gongyingshang.svg b/src/assets/icons/gongyingshang.svg
new file mode 100644
index 000000000..94269955e
--- /dev/null
+++ b/src/assets/icons/gongyingshang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/goods.svg b/src/assets/icons/goods.svg
new file mode 100644
index 000000000..b80fbedec
--- /dev/null
+++ b/src/assets/icons/goods.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gou.svg b/src/assets/icons/gou.svg
new file mode 100644
index 000000000..635419758
--- /dev/null
+++ b/src/assets/icons/gou.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gouwuche.svg b/src/assets/icons/gouwuche.svg
new file mode 100644
index 000000000..6e76f7d1d
--- /dev/null
+++ b/src/assets/icons/gouwuche.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gouxuan.svg b/src/assets/icons/gouxuan.svg
new file mode 100644
index 000000000..8fe88a68d
--- /dev/null
+++ b/src/assets/icons/gouxuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gouxuan_mian.svg b/src/assets/icons/gouxuan_mian.svg
new file mode 100644
index 000000000..375972b4e
--- /dev/null
+++ b/src/assets/icons/gouxuan_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/guanbi.svg b/src/assets/icons/guanbi.svg
new file mode 100644
index 000000000..831bd0edc
--- /dev/null
+++ b/src/assets/icons/guanbi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/guanli.svg b/src/assets/icons/guanli.svg
new file mode 100644
index 000000000..4848092a7
--- /dev/null
+++ b/src/assets/icons/guanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/guanli_mian.svg b/src/assets/icons/guanli_mian.svg
new file mode 100644
index 000000000..db46ff1e3
--- /dev/null
+++ b/src/assets/icons/guanli_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gukefapiao.svg b/src/assets/icons/gukefapiao.svg
new file mode 100644
index 000000000..341b6860d
--- /dev/null
+++ b/src/assets/icons/gukefapiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/haibaosheji.svg b/src/assets/icons/haibaosheji.svg
new file mode 100644
index 000000000..f8751575b
--- /dev/null
+++ b/src/assets/icons/haibaosheji.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/heshoujilu.svg b/src/assets/icons/heshoujilu.svg
new file mode 100644
index 000000000..cd2527398
--- /dev/null
+++ b/src/assets/icons/heshoujilu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/heshoujilu1.svg b/src/assets/icons/heshoujilu1.svg
new file mode 100644
index 000000000..f8d1bd4b0
--- /dev/null
+++ b/src/assets/icons/heshoujilu1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/hexiao_order.svg b/src/assets/icons/hexiao_order.svg
new file mode 100644
index 000000000..f1c40340e
--- /dev/null
+++ b/src/assets/icons/hexiao_order.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/hide-2.svg b/src/assets/icons/hide-2.svg
new file mode 100644
index 000000000..8c74146f5
--- /dev/null
+++ b/src/assets/icons/hide-2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/hide.svg b/src/assets/icons/hide.svg
new file mode 100644
index 000000000..5cbbabdf5
--- /dev/null
+++ b/src/assets/icons/hide.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/hongbao.svg b/src/assets/icons/hongbao.svg
new file mode 100644
index 000000000..9d331b5bf
--- /dev/null
+++ b/src/assets/icons/hongbao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huiche.svg b/src/assets/icons/huiche.svg
new file mode 100644
index 000000000..502271899
--- /dev/null
+++ b/src/assets/icons/huiche.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huiyuanyingxiao.svg b/src/assets/icons/huiyuanyingxiao.svg
new file mode 100644
index 000000000..ae067690f
--- /dev/null
+++ b/src/assets/icons/huiyuanyingxiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huodongbaoming.svg b/src/assets/icons/huodongbaoming.svg
new file mode 100644
index 000000000..0c60672de
--- /dev/null
+++ b/src/assets/icons/huodongbaoming.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huodongguanli.svg b/src/assets/icons/huodongguanli.svg
new file mode 100644
index 000000000..def7109af
--- /dev/null
+++ b/src/assets/icons/huodongguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huodongzhongxin.svg b/src/assets/icons/huodongzhongxin.svg
new file mode 100644
index 000000000..f22bb264f
--- /dev/null
+++ b/src/assets/icons/huodongzhongxin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huojian.svg b/src/assets/icons/huojian.svg
new file mode 100644
index 000000000..f439dd84c
--- /dev/null
+++ b/src/assets/icons/huojian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huojian_mian.svg b/src/assets/icons/huojian_mian.svg
new file mode 100644
index 000000000..812d3be54
--- /dev/null
+++ b/src/assets/icons/huojian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huolala.svg b/src/assets/icons/huolala.svg
new file mode 100644
index 000000000..a42ade77c
--- /dev/null
+++ b/src/assets/icons/huolala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/iOSfanhui.svg b/src/assets/icons/iOSfanhui.svg
new file mode 100644
index 000000000..8aeefbb4d
--- /dev/null
+++ b/src/assets/icons/iOSfanhui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jia.svg b/src/assets/icons/jia.svg
new file mode 100644
index 000000000..18fbd4597
--- /dev/null
+++ b/src/assets/icons/jia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jia_mian.svg b/src/assets/icons/jia_mian.svg
new file mode 100644
index 000000000..5899c9169
--- /dev/null
+++ b/src/assets/icons/jia_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jian.svg b/src/assets/icons/jian.svg
new file mode 100644
index 000000000..295037f97
--- /dev/null
+++ b/src/assets/icons/jian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jian_mian.svg b/src/assets/icons/jian_mian.svg
new file mode 100644
index 000000000..e9dfa91ca
--- /dev/null
+++ b/src/assets/icons/jian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jianpan.svg b/src/assets/icons/jianpan.svg
new file mode 100644
index 000000000..5a7dcb973
--- /dev/null
+++ b/src/assets/icons/jianpan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jianpanshanchu.svg b/src/assets/icons/jianpanshanchu.svg
new file mode 100644
index 000000000..a5a5de14a
--- /dev/null
+++ b/src/assets/icons/jianpanshanchu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jianshao.svg b/src/assets/icons/jianshao.svg
new file mode 100644
index 000000000..0a4d91901
--- /dev/null
+++ b/src/assets/icons/jianshao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jiaopeiwangputong.svg b/src/assets/icons/jiaopeiwangputong.svg
new file mode 100644
index 000000000..ec73071c3
--- /dev/null
+++ b/src/assets/icons/jiaopeiwangputong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jiaoyi.svg b/src/assets/icons/jiaoyi.svg
new file mode 100644
index 000000000..1396bac46
--- /dev/null
+++ b/src/assets/icons/jiaoyi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jiedan.svg b/src/assets/icons/jiedan.svg
new file mode 100644
index 000000000..fcbe7a15e
--- /dev/null
+++ b/src/assets/icons/jiedan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jiekuan.svg b/src/assets/icons/jiekuan.svg
new file mode 100644
index 000000000..4b7377f7c
--- /dev/null
+++ b/src/assets/icons/jiekuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingshi.svg b/src/assets/icons/jingshi.svg
new file mode 100644
index 000000000..3cecfc7b6
--- /dev/null
+++ b/src/assets/icons/jingshi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingshi_mian.svg b/src/assets/icons/jingshi_mian.svg
new file mode 100644
index 000000000..fe636ee17
--- /dev/null
+++ b/src/assets/icons/jingshi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingshi_mian1.svg b/src/assets/icons/jingshi_mian1.svg
new file mode 100644
index 000000000..fe636ee17
--- /dev/null
+++ b/src/assets/icons/jingshi_mian1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingyin.svg b/src/assets/icons/jingyin.svg
new file mode 100644
index 000000000..753f25452
--- /dev/null
+++ b/src/assets/icons/jingyin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingyin_mian.svg b/src/assets/icons/jingyin_mian.svg
new file mode 100644
index 000000000..ce56e687a
--- /dev/null
+++ b/src/assets/icons/jingyin_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingying.svg b/src/assets/icons/jingying.svg
new file mode 100644
index 000000000..563081337
--- /dev/null
+++ b/src/assets/icons/jingying.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingying_mian.svg b/src/assets/icons/jingying_mian.svg
new file mode 100644
index 000000000..4e7ca350f
--- /dev/null
+++ b/src/assets/icons/jingying_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingyinggonglve.svg b/src/assets/icons/jingyinggonglve.svg
new file mode 100644
index 000000000..0cd3755c7
--- /dev/null
+++ b/src/assets/icons/jingyinggonglve.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingzhunyingxiao.svg b/src/assets/icons/jingzhunyingxiao.svg
new file mode 100644
index 000000000..781b0bb96
--- /dev/null
+++ b/src/assets/icons/jingzhunyingxiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jinhuo.svg b/src/assets/icons/jinhuo.svg
new file mode 100644
index 000000000..c5d921450
--- /dev/null
+++ b/src/assets/icons/jinhuo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kaitongwaimai.svg b/src/assets/icons/kaitongwaimai.svg
new file mode 100644
index 000000000..a6daad90f
--- /dev/null
+++ b/src/assets/icons/kaitongwaimai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kanjia.svg b/src/assets/icons/kanjia.svg
new file mode 100644
index 000000000..9f6840bb4
--- /dev/null
+++ b/src/assets/icons/kanjia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kefu.svg b/src/assets/icons/kefu.svg
new file mode 100644
index 000000000..f32cacd10
--- /dev/null
+++ b/src/assets/icons/kefu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kejian.svg b/src/assets/icons/kejian.svg
new file mode 100644
index 000000000..8b898744b
--- /dev/null
+++ b/src/assets/icons/kejian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kejian_mian.svg b/src/assets/icons/kejian_mian.svg
new file mode 100644
index 000000000..62223b42c
--- /dev/null
+++ b/src/assets/icons/kejian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/keziyuyue.svg b/src/assets/icons/keziyuyue.svg
new file mode 100644
index 000000000..0d2f1f98c
--- /dev/null
+++ b/src/assets/icons/keziyuyue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kezizhongxin.svg b/src/assets/icons/kezizhongxin.svg
new file mode 100644
index 000000000..7fbcc6cb9
--- /dev/null
+++ b/src/assets/icons/kezizhongxin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/koubei.svg b/src/assets/icons/koubei.svg
new file mode 100644
index 000000000..a74407756
--- /dev/null
+++ b/src/assets/icons/koubei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kuaijiehuifu.svg b/src/assets/icons/kuaijiehuifu.svg
new file mode 100644
index 000000000..72aa5c5c6
--- /dev/null
+++ b/src/assets/icons/kuaijiehuifu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/ladu_mian.svg b/src/assets/icons/ladu_mian.svg
new file mode 100644
index 000000000..a40816c67
--- /dev/null
+++ b/src/assets/icons/ladu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/lanyadingwei.svg b/src/assets/icons/lanyadingwei.svg
new file mode 100644
index 000000000..205653f6b
--- /dev/null
+++ b/src/assets/icons/lanyadingwei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/list-2.svg b/src/assets/icons/list-2.svg
new file mode 100644
index 000000000..1f471f3f6
--- /dev/null
+++ b/src/assets/icons/list-2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/mendiandongtai.svg b/src/assets/icons/mendiandongtai.svg
new file mode 100644
index 000000000..7a7b4151d
--- /dev/null
+++ b/src/assets/icons/mendiandongtai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/mishiyuding.svg b/src/assets/icons/mishiyuding.svg
new file mode 100644
index 000000000..b856afa90
--- /dev/null
+++ b/src/assets/icons/mishiyuding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/mishiyuding1.svg b/src/assets/icons/mishiyuding1.svg
new file mode 100644
index 000000000..7ac910170
--- /dev/null
+++ b/src/assets/icons/mishiyuding1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/notice_buyer.svg b/src/assets/icons/notice_buyer.svg
new file mode 100644
index 000000000..bab199757
--- /dev/null
+++ b/src/assets/icons/notice_buyer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/open.svg b/src/assets/icons/open.svg
new file mode 100644
index 000000000..3cbd08cec
--- /dev/null
+++ b/src/assets/icons/open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/paiduiquhao.svg b/src/assets/icons/paiduiquhao.svg
new file mode 100644
index 000000000..fb7abc9a4
--- /dev/null
+++ b/src/assets/icons/paiduiquhao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/paimai.svg b/src/assets/icons/paimai.svg
new file mode 100644
index 000000000..0139a69b7
--- /dev/null
+++ b/src/assets/icons/paimai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/pingjia.svg b/src/assets/icons/pingjia.svg
new file mode 100644
index 000000000..9b39672a0
--- /dev/null
+++ b/src/assets/icons/pingjia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/pingtaifapiao.svg b/src/assets/icons/pingtaifapiao.svg
new file mode 100644
index 000000000..b6b331507
--- /dev/null
+++ b/src/assets/icons/pingtaifapiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/pinpai.svg b/src/assets/icons/pinpai.svg
new file mode 100644
index 000000000..f4b129cf5
--- /dev/null
+++ b/src/assets/icons/pinpai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qianbao.svg b/src/assets/icons/qianbao.svg
new file mode 100644
index 000000000..f38425077
--- /dev/null
+++ b/src/assets/icons/qianbao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qianbao_mian.svg b/src/assets/icons/qianbao_mian.svg
new file mode 100644
index 000000000..897f02995
--- /dev/null
+++ b/src/assets/icons/qianbao_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qiehuan.svg b/src/assets/icons/qiehuan.svg
new file mode 100644
index 000000000..37e0a9422
--- /dev/null
+++ b/src/assets/icons/qiehuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qingchu.svg b/src/assets/icons/qingchu.svg
new file mode 100644
index 000000000..dc898ac39
--- /dev/null
+++ b/src/assets/icons/qingchu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qingchu_mian.svg b/src/assets/icons/qingchu_mian.svg
new file mode 100644
index 000000000..94ecaa2fc
--- /dev/null
+++ b/src/assets/icons/qingchu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qishoupeisong.svg b/src/assets/icons/qishoupeisong.svg
new file mode 100644
index 000000000..9adc068c3
--- /dev/null
+++ b/src/assets/icons/qishoupeisong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qiyedingcan.svg b/src/assets/icons/qiyedingcan.svg
new file mode 100644
index 000000000..147c9e2af
--- /dev/null
+++ b/src/assets/icons/qiyedingcan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qiyedingcan1.svg b/src/assets/icons/qiyedingcan1.svg
new file mode 100644
index 000000000..a3c3277f1
--- /dev/null
+++ b/src/assets/icons/qiyedingcan1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/quanbu.svg b/src/assets/icons/quanbu.svg
new file mode 100644
index 000000000..db088f515
--- /dev/null
+++ b/src/assets/icons/quanbu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/quanping.svg b/src/assets/icons/quanping.svg
new file mode 100644
index 000000000..0a5cfbe71
--- /dev/null
+++ b/src/assets/icons/quanping.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qudao.svg b/src/assets/icons/qudao.svg
new file mode 100644
index 000000000..e0fbf3994
--- /dev/null
+++ b/src/assets/icons/qudao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qudao_xiaochengxu.svg b/src/assets/icons/qudao_xiaochengxu.svg
new file mode 100644
index 000000000..54af40784
--- /dev/null
+++ b/src/assets/icons/qudao_xiaochengxu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/rencaizhaopin.svg b/src/assets/icons/rencaizhaopin.svg
new file mode 100644
index 000000000..6113e530c
--- /dev/null
+++ b/src/assets/icons/rencaizhaopin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/rili.svg b/src/assets/icons/rili.svg
new file mode 100644
index 000000000..5d751bf6a
--- /dev/null
+++ b/src/assets/icons/rili.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/rili2.svg b/src/assets/icons/rili2.svg
new file mode 100644
index 000000000..ba2d55d23
--- /dev/null
+++ b/src/assets/icons/rili2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/rizhi.svg b/src/assets/icons/rizhi.svg
new file mode 100644
index 000000000..bfdf2b091
--- /dev/null
+++ b/src/assets/icons/rizhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/saoma.svg b/src/assets/icons/saoma.svg
new file mode 100644
index 000000000..260981dea
--- /dev/null
+++ b/src/assets/icons/saoma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/set_pay.svg b/src/assets/icons/set_pay.svg
new file mode 100644
index 000000000..639bb8e87
--- /dev/null
+++ b/src/assets/icons/set_pay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/set_peisong.svg b/src/assets/icons/set_peisong.svg
new file mode 100644
index 000000000..a87ca69e4
--- /dev/null
+++ b/src/assets/icons/set_peisong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/set_user.svg b/src/assets/icons/set_user.svg
new file mode 100644
index 000000000..800baf52e
--- /dev/null
+++ b/src/assets/icons/set_user.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/set_weihu.svg b/src/assets/icons/set_weihu.svg
new file mode 100644
index 000000000..e6765f1e6
--- /dev/null
+++ b/src/assets/icons/set_weihu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shanchu.svg b/src/assets/icons/shanchu.svg
new file mode 100644
index 000000000..96551386b
--- /dev/null
+++ b/src/assets/icons/shanchu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shanchu_mian.svg b/src/assets/icons/shanchu_mian.svg
new file mode 100644
index 000000000..17ffa4e60
--- /dev/null
+++ b/src/assets/icons/shanchu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangchuan.svg b/src/assets/icons/shangchuan.svg
new file mode 100644
index 000000000..f2d1a0150
--- /dev/null
+++ b/src/assets/icons/shangchuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangchuanzhaopian.svg b/src/assets/icons/shangchuanzhaopian.svg
new file mode 100644
index 000000000..5e90e9199
--- /dev/null
+++ b/src/assets/icons/shangchuanzhaopian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangpinguanli.svg b/src/assets/icons/shangpinguanli.svg
new file mode 100644
index 000000000..c15f1a101
--- /dev/null
+++ b/src/assets/icons/shangpinguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangpinzhushou.svg b/src/assets/icons/shangpinzhushou.svg
new file mode 100644
index 000000000..997256125
--- /dev/null
+++ b/src/assets/icons/shangpinzhushou.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangpuyuding.svg b/src/assets/icons/shangpuyuding.svg
new file mode 100644
index 000000000..4250f00db
--- /dev/null
+++ b/src/assets/icons/shangpuyuding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shebeiguanli.svg b/src/assets/icons/shebeiguanli.svg
new file mode 100644
index 000000000..1ca4ef0cf
--- /dev/null
+++ b/src/assets/icons/shebeiguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shengfuwangputong.svg b/src/assets/icons/shengfuwangputong.svg
new file mode 100644
index 000000000..467b687ea
--- /dev/null
+++ b/src/assets/icons/shengfuwangputong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shengyin.svg b/src/assets/icons/shengyin.svg
new file mode 100644
index 000000000..9b1d63bae
--- /dev/null
+++ b/src/assets/icons/shengyin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shengyin_mian.svg b/src/assets/icons/shengyin_mian.svg
new file mode 100644
index 000000000..00c76a7b0
--- /dev/null
+++ b/src/assets/icons/shengyin_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shezhi.svg b/src/assets/icons/shezhi.svg
new file mode 100644
index 000000000..785b60fa6
--- /dev/null
+++ b/src/assets/icons/shezhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shezhi_mian.svg b/src/assets/icons/shezhi_mian.svg
new file mode 100644
index 000000000..0bdc1063e
--- /dev/null
+++ b/src/assets/icons/shezhi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shichang.svg b/src/assets/icons/shichang.svg
new file mode 100644
index 000000000..d5d5d88f1
--- /dev/null
+++ b/src/assets/icons/shichang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shichang_mian.svg b/src/assets/icons/shichang_mian.svg
new file mode 100644
index 000000000..083b30126
--- /dev/null
+++ b/src/assets/icons/shichang_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shijian.svg b/src/assets/icons/shijian.svg
new file mode 100644
index 000000000..9ad8b2ef9
--- /dev/null
+++ b/src/assets/icons/shijian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shijian_mian.svg b/src/assets/icons/shijian_mian.svg
new file mode 100644
index 000000000..6c00d4185
--- /dev/null
+++ b/src/assets/icons/shijian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shoudan.svg b/src/assets/icons/shoudan.svg
new file mode 100644
index 000000000..9967dd858
--- /dev/null
+++ b/src/assets/icons/shoudan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouqi.svg b/src/assets/icons/shouqi.svg
new file mode 100644
index 000000000..e8386f1e3
--- /dev/null
+++ b/src/assets/icons/shouqi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouqi_mian.svg b/src/assets/icons/shouqi_mian.svg
new file mode 100644
index 000000000..b022d4c5a
--- /dev/null
+++ b/src/assets/icons/shouqi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouye.svg b/src/assets/icons/shouye.svg
new file mode 100644
index 000000000..288b24ffc
--- /dev/null
+++ b/src/assets/icons/shouye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouye_mian.svg b/src/assets/icons/shouye_mian.svg
new file mode 100644
index 000000000..d180e9b95
--- /dev/null
+++ b/src/assets/icons/shouye_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouyiren.svg b/src/assets/icons/shouyiren.svg
new file mode 100644
index 000000000..3b409d2cc
--- /dev/null
+++ b/src/assets/icons/shouyiren.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/show.svg b/src/assets/icons/show.svg
new file mode 100644
index 000000000..2fdf9b91e
--- /dev/null
+++ b/src/assets/icons/show.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuangjiantouxiangyou.svg b/src/assets/icons/shuangjiantouxiangyou.svg
new file mode 100644
index 000000000..56c0e611a
--- /dev/null
+++ b/src/assets/icons/shuangjiantouxiangyou.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuangjiantouxiangzuo.svg b/src/assets/icons/shuangjiantouxiangzuo.svg
new file mode 100644
index 000000000..1a90a6964
--- /dev/null
+++ b/src/assets/icons/shuangjiantouxiangzuo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuaxin.svg b/src/assets/icons/shuaxin.svg
new file mode 100644
index 000000000..a4686b3da
--- /dev/null
+++ b/src/assets/icons/shuaxin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuju.svg b/src/assets/icons/shuju.svg
new file mode 100644
index 000000000..8418b767b
--- /dev/null
+++ b/src/assets/icons/shuju.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuju2.svg b/src/assets/icons/shuju2.svg
new file mode 100644
index 000000000..bea4c25b2
--- /dev/null
+++ b/src/assets/icons/shuju2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuju_liuliang.svg b/src/assets/icons/shuju_liuliang.svg
new file mode 100644
index 000000000..21b048bae
--- /dev/null
+++ b/src/assets/icons/shuju_liuliang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuju_mian.svg b/src/assets/icons/shuju_mian.svg
new file mode 100644
index 000000000..5da2d7840
--- /dev/null
+++ b/src/assets/icons/shuju_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sort.svg b/src/assets/icons/sort.svg
new file mode 100644
index 000000000..1e760a830
--- /dev/null
+++ b/src/assets/icons/sort.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sousuo.svg b/src/assets/icons/sousuo.svg
new file mode 100644
index 000000000..2387e0ad3
--- /dev/null
+++ b/src/assets/icons/sousuo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sucai.svg b/src/assets/icons/sucai.svg
new file mode 100644
index 000000000..23499f8de
--- /dev/null
+++ b/src/assets/icons/sucai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tianjia.svg b/src/assets/icons/tianjia.svg
new file mode 100644
index 000000000..b06fe1658
--- /dev/null
+++ b/src/assets/icons/tianjia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tishi.svg b/src/assets/icons/tishi.svg
new file mode 100644
index 000000000..e14e118a7
--- /dev/null
+++ b/src/assets/icons/tishi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tishi_mian.svg b/src/assets/icons/tishi_mian.svg
new file mode 100644
index 000000000..04334eaf5
--- /dev/null
+++ b/src/assets/icons/tishi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tongxunlu_mian.svg b/src/assets/icons/tongxunlu_mian.svg
new file mode 100644
index 000000000..b7c06ab07
--- /dev/null
+++ b/src/assets/icons/tongxunlu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tongzhi.svg b/src/assets/icons/tongzhi.svg
new file mode 100644
index 000000000..a227028ae
--- /dev/null
+++ b/src/assets/icons/tongzhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tongzhi_mian.svg b/src/assets/icons/tongzhi_mian.svg
new file mode 100644
index 000000000..876676f0c
--- /dev/null
+++ b/src/assets/icons/tongzhi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tuichuquanping.svg b/src/assets/icons/tuichuquanping.svg
new file mode 100644
index 000000000..3832030f6
--- /dev/null
+++ b/src/assets/icons/tuichuquanping.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tuiguang.svg b/src/assets/icons/tuiguang.svg
new file mode 100644
index 000000000..7d5bb2d0d
--- /dev/null
+++ b/src/assets/icons/tuiguang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tuiguang_mian.svg b/src/assets/icons/tuiguang_mian.svg
new file mode 100644
index 000000000..005323a3b
--- /dev/null
+++ b/src/assets/icons/tuiguang_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tupian.svg b/src/assets/icons/tupian.svg
new file mode 100644
index 000000000..64b511db7
--- /dev/null
+++ b/src/assets/icons/tupian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tupian_mian.svg b/src/assets/icons/tupian_mian.svg
new file mode 100644
index 000000000..0875efd33
--- /dev/null
+++ b/src/assets/icons/tupian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/user_biaoqian.svg b/src/assets/icons/user_biaoqian.svg
new file mode 100644
index 000000000..206fff691
--- /dev/null
+++ b/src/assets/icons/user_biaoqian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/user_gaikuang.svg b/src/assets/icons/user_gaikuang.svg
new file mode 100644
index 000000000..b4ae10e89
--- /dev/null
+++ b/src/assets/icons/user_gaikuang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/user_guanli.svg b/src/assets/icons/user_guanli.svg
new file mode 100644
index 000000000..e00fd792e
--- /dev/null
+++ b/src/assets/icons/user_guanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/wangpudiandan.svg b/src/assets/icons/wangpudiandan.svg
new file mode 100644
index 000000000..77cc413e4
--- /dev/null
+++ b/src/assets/icons/wangpudiandan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/weixin.svg b/src/assets/icons/weixin.svg
new file mode 100644
index 000000000..f043f122c
--- /dev/null
+++ b/src/assets/icons/weixin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/weixin_mian.svg b/src/assets/icons/weixin_mian.svg
new file mode 100644
index 000000000..5c4e92eaf
--- /dev/null
+++ b/src/assets/icons/weixin_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/wode.svg b/src/assets/icons/wode.svg
new file mode 100644
index 000000000..4cc5c1085
--- /dev/null
+++ b/src/assets/icons/wode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/wode_mian.svg b/src/assets/icons/wode_mian.svg
new file mode 100644
index 000000000..ea9ebfbe8
--- /dev/null
+++ b/src/assets/icons/wode_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/xiangji.svg b/src/assets/icons/xiangji.svg
new file mode 100644
index 000000000..a9f7b5f59
--- /dev/null
+++ b/src/assets/icons/xiangji.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/xiaoxi.svg b/src/assets/icons/xiaoxi.svg
new file mode 100644
index 000000000..cf220c8a6
--- /dev/null
+++ b/src/assets/icons/xiaoxi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/xiazai.svg b/src/assets/icons/xiazai.svg
new file mode 100644
index 000000000..c74157649
--- /dev/null
+++ b/src/assets/icons/xiazai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/xitongquanxian.svg b/src/assets/icons/xitongquanxian.svg
new file mode 100644
index 000000000..b34ac744c
--- /dev/null
+++ b/src/assets/icons/xitongquanxian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yingxiao_qipao.svg b/src/assets/icons/yingxiao_qipao.svg
new file mode 100644
index 000000000..238ddf26c
--- /dev/null
+++ b/src/assets/icons/yingxiao_qipao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yingyezizhi.svg b/src/assets/icons/yingyezizhi.svg
new file mode 100644
index 000000000..23ae5be2f
--- /dev/null
+++ b/src/assets/icons/yingyezizhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yinhangka.svg b/src/assets/icons/yinhangka.svg
new file mode 100644
index 000000000..20c1fdc94
--- /dev/null
+++ b/src/assets/icons/yinhangka.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yiwen.svg b/src/assets/icons/yiwen.svg
new file mode 100644
index 000000000..ef07f2e40
--- /dev/null
+++ b/src/assets/icons/yiwen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/youhui.svg b/src/assets/icons/youhui.svg
new file mode 100644
index 000000000..4358e1cd3
--- /dev/null
+++ b/src/assets/icons/youhui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/youjian.svg b/src/assets/icons/youjian.svg
new file mode 100644
index 000000000..1304c01e5
--- /dev/null
+++ b/src/assets/icons/youjian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/youjiantou.svg b/src/assets/icons/youjiantou.svg
new file mode 100644
index 000000000..5c599261b
--- /dev/null
+++ b/src/assets/icons/youjiantou.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yulibao.svg b/src/assets/icons/yulibao.svg
new file mode 100644
index 000000000..b785c04cb
--- /dev/null
+++ b/src/assets/icons/yulibao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yuyin.svg b/src/assets/icons/yuyin.svg
new file mode 100644
index 000000000..1ac06af12
--- /dev/null
+++ b/src/assets/icons/yuyin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yuyueguanli.svg b/src/assets/icons/yuyueguanli.svg
new file mode 100644
index 000000000..080255d75
--- /dev/null
+++ b/src/assets/icons/yuyueguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yuyueguanlishezhi.svg b/src/assets/icons/yuyueguanlishezhi.svg
new file mode 100644
index 000000000..eac7549bc
--- /dev/null
+++ b/src/assets/icons/yuyueguanlishezhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhankai.svg b/src/assets/icons/zhankai.svg
new file mode 100644
index 000000000..aef4e5332
--- /dev/null
+++ b/src/assets/icons/zhankai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhankai_mian.svg b/src/assets/icons/zhankai_mian.svg
new file mode 100644
index 000000000..187e3e99c
--- /dev/null
+++ b/src/assets/icons/zhankai_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhibo.svg b/src/assets/icons/zhibo.svg
new file mode 100644
index 000000000..d329b496a
--- /dev/null
+++ b/src/assets/icons/zhibo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhibo_mian.svg b/src/assets/icons/zhibo_mian.svg
new file mode 100644
index 000000000..443e2cb64
--- /dev/null
+++ b/src/assets/icons/zhibo_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhuangxiu.svg b/src/assets/icons/zhuangxiu.svg
new file mode 100644
index 000000000..c692c4585
--- /dev/null
+++ b/src/assets/icons/zhuangxiu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhuangxiu_mian.svg b/src/assets/icons/zhuangxiu_mian.svg
new file mode 100644
index 000000000..53e8debac
--- /dev/null
+++ b/src/assets/icons/zhuangxiu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhuoweiguanli.svg b/src/assets/icons/zhuoweiguanli.svg
new file mode 100644
index 000000000..ee9d0cca1
--- /dev/null
+++ b/src/assets/icons/zhuoweiguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zichanzhuanrang.svg b/src/assets/icons/zichanzhuanrang.svg
new file mode 100644
index 000000000..8a8d5462e
--- /dev/null
+++ b/src/assets/icons/zichanzhuanrang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zuliao.svg b/src/assets/icons/zuliao.svg
new file mode 100644
index 000000000..e210df3b6
--- /dev/null
+++ b/src/assets/icons/zuliao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zuliaoyuding.svg b/src/assets/icons/zuliaoyuding.svg
new file mode 100644
index 000000000..69a9d994d
--- /dev/null
+++ b/src/assets/icons/zuliaoyuding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_folder.png b/src/assets/images/icon_folder.png
new file mode 100644
index 0000000000000000000000000000000000000000..99b800ffbe4458257e6e73a655ca36b0009d9439
GIT binary patch
literal 605
zcmV-j0;2tiP)4f26ot=uyR+%+k~IiHE3ItAV(o0yRy3M)!NP4)#f&2(+jnbn^?cI9`wDlzP&)flSvh}KV42+)wI0C=}a2e_th(T?W{$AuO*Lmvo
z4{6>3HwJb_0i50V#u_#G;KJvAFfoDH_H#G-UQWAkD4w&>Q
zFn8Y6w&*dM5$x|}25Cnbjt?pm=j-qX1h>uP+)s?7P1a2$NRLY?B-OatU!mR)^^hlA
z)B>0)+Yg?#%O{8%fL2lcyh6^$rYO~1u!2dG2Zi;JL57DQEranKt8-1Nc_$AAQ>@Th
zY0E^m&pbGLId8yl{W>4u&!n$~tHTIrFWLFI6V`_nu(K1ym*EC9#+*NrJbLht8UW|hXnxUyc_^6AU;a>%-ue0;w)l1fV0C{42(7AQXj%hst`Aos
z^r>0$Q-|Xj)wnecmX-j-<`U#Gf@VS3ea&w}lb=fFSZyvmgws^l{xHZa{!AD~?`%`f
zCb|e-_c=a0(*?YH7|t&OINkMUQgdiOAoi+hJNW{xe1)U+O(ymN?X(zSE4~ErBB+x9
r4((Mb=lf=Tyan9~#<*-gjj{a#{ssW#^D}X600000NkvXXu0mjflw=TH
literal 0
HcmV?d00001
diff --git a/src/assets/images/no_perms.png b/src/assets/images/no_perms.png
new file mode 100644
index 0000000000000000000000000000000000000000..c37c89bb5c0a1cb31be3900b6de604a0a8cd9063
GIT binary patch
literal 14619
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
literal 0
HcmV?d00001
diff --git a/src/assets/images/theme_white.png b/src/assets/images/theme_white.png
new file mode 100644
index 0000000000000000000000000000000000000000..52714ba146ac6aa1510c5615f7c5dce913cab9cb
GIT binary patch
literal 2559
zcmeH}`8U)J7rOTM+_*
zC_6f!&PqH@qDk^{66>My$xPy8h<1)1@)C)Wzmg1rDAYKjY&{|`&J1C$`FLtX*Tnk>ej*Z
zf8|s+lTTvqZpYx%%rNFz?UCZSSptzb^8HDaxSh3W_lf(hme{#5{;i$VV+a5JOzLR)
zN$pp{rgv`fC-`y+pcjNrWL0~6U!eCex7~Ulai~jltJGuiwID3IE_npdoYb<>{QT6)
zgF8vV*}go3*e+w`4jK$T?SvkmzQtO!+FPM;RJ7>enR=hI9Jyq%5lx1pofK7WzLX-f
z$Ji^zUa#omokBXUYrJ{vV(X*f@W^N6;qzo)QfJJOFPc$4DT$mr!Nqvnh6phak>eD2
z)z6QQsv0nQRT%{UfH3{f0E_hC(cNtbw}ToXCPFM0ixiJEY<6@%N5i8cH3>G~GUL#V
zIGCwND_**y?>hI(_(F;I$?W_##GRscoGdDF@br$^d
z)(YgmaUYI8aM<9_!4`?EZLF`vPC!Ft!id2b0ly!eSuA7xJFVl8jTwBpCg
z%7fkXjfwe;W3-RMcE%%I;nJm#X(Xd8_{ThaZu+_?ge=Z}D#|C9a3hq3BB)<#9Wk
zi_#CZs0O74*0_z9c^U0UvIZ4vcy%OKm*O;i#RyjLNL}>G>gb20Sh?BuW$=X(a_5d6
z87Z+e<6&SfC2%`FxHVU|t>=|%(8|ovO1-mY%Y`Z`dwP0$Kr&w;mq{CF47?eAj1I>y
z%3)Z+&Y*u+gZrVJi|u#@{hhPscH&Bf|7@WdLC97g_;bAWdxCw}mmXVr*i3~~SI&7L{P_K@
zr++Yj{=ZUi6ZmjE-z7Yh(x62ET=zG~LS}!>mMKb8auJ*G2%u$nAKprVQ3~`=roVa_*|I4IKN3z}5FXh|5O%V+gu
zK{jSIIdH3l$u%*2D23<0Bz!cJlQ7Qt8jesT!QIM#m$ZcWf7}1*l1&KWWIY%U>mGfC
zm{&yG)HI@=xs)Xy$96{|&Qbe<6B82;Fg%LAs7p8~GH+&or!EH6k6%ag4Myx`e!O81
z4i2t$cXty7L$|rP!v!To>b8q&P-g@JQIwXJ7V|j}*~MUpP!S8>K0Yy_{{Dh{_pmzL
z%hVfs3*I{BIl3t)9=|7ac6Pd+c5&f}IA;ZD+1XVK;ftdDf&!Qg>F1A!pU!s-mL@v4
zPh$=n?!Xf#a_Ly}$miXw6>bMVJuu(g0zL}0<*Hq?EZE#*Md0fzg^-NSa8;U(;jeAp
z^s*wTL}w5NgN-OFE7uKFdp65&1x-`?0#r0z4LUQ@(@9gKxqF91gKBGqZ_9Np^F&El
z%9HFvIZkW;oVpyR7vHPi?j!`&Ne?sXt)K-qVUt}ffx?T73pR2d#0Y=z`X8o2VnI_=
z6AYcPXRQ(D$*gLUKNAnwW!@HP`-^<*!lwQ$G&eW@Syt{>zy_LdfEXV>Pd!&rf84@i
ziNx?BYg2zhBfN6NoNy!(8Ow~E7odYUPu9-C?0@-TU7ZqI)QGb+;o{|FouD7B58$z;
z$B)O9dK;bKQuNm)%X*LCQG|WMC7Zn5+OnyS@kd1Ok7f
zLw<#>LhlZ4hD=@V74Ce|z@tR3>-8K|Y+cHU(tLP9g9f{!Nu8?KM4*ZbXamxrpk8Bn
zgr7QnhFBFKq(dn=l^$8$tg_#zu3z5qmMjKN!x3cQT#ayDOC05|Z*EU9?uSeH9PVGa
z#X6sI(6?8_oOtce8T)wz)zxZELpbD@NLhl4<+m%2(Uhx3I$Ozhf59$?fi;Km333EA
zb%wl}9JVz?*i|1iSTl{90?Fn~_<{+@_^NMIJfSL#SxZT2-Oc?JRh;{h#OM(~=8N
zYh^=EIT>M=yE+4f0A*Fq&OwPl2#F2%(q5?_G3EXJ5bEoFcW$Gw970$T^=r@ntq6(u
cufQ*r+E9`TEXaOJ^3g#YPr0Dp+W95?2N6QvSpWb4
literal 0
HcmV?d00001
diff --git a/src/components/app-link/index.vue b/src/components/app-link/index.vue
new file mode 100644
index 000000000..e7fe926a4
--- /dev/null
+++ b/src/components/app-link/index.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
diff --git a/src/components/color-picker/index.vue b/src/components/color-picker/index.vue
new file mode 100644
index 000000000..ed0bc3e2e
--- /dev/null
+++ b/src/components/color-picker/index.vue
@@ -0,0 +1,33 @@
+
+
+
+
+ 重置
+
+
+
diff --git a/src/components/daterange-picker/index.vue b/src/components/daterange-picker/index.vue
new file mode 100644
index 000000000..5ad8f04a6
--- /dev/null
+++ b/src/components/daterange-picker/index.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
diff --git a/src/components/del-wrap/index.vue b/src/components/del-wrap/index.vue
new file mode 100644
index 000000000..787f3e26f
--- /dev/null
+++ b/src/components/del-wrap/index.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
diff --git a/src/components/dict-value/index.vue b/src/components/dict-value/index.vue
new file mode 100644
index 000000000..7d34aec29
--- /dev/null
+++ b/src/components/dict-value/index.vue
@@ -0,0 +1,35 @@
+
+
+
+ {{ index != 0 ? '、' : '' }}{{ item[config.label] }}
+
+
+
+
diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue
new file mode 100644
index 000000000..ae39eee68
--- /dev/null
+++ b/src/components/editor/index.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/export-data/index.vue b/src/components/export-data/index.vue
new file mode 100644
index 000000000..b687c9d97
--- /dev/null
+++ b/src/components/export-data/index.vue
@@ -0,0 +1,149 @@
+
+
+
+
+ 导出
+
+
+
+
+ 预计导出{{ exportData.count }}条数据, 共{{ exportData.sum_page }}页,每页{{
+ exportData.page_size
+ }}条数据
+
+
+ 每次导出最大允许{{ exportData.max_page }}页,共{{
+ exportData.all_max_size
+ }}条数据
+
+
+
+ 全部导出
+ 分页导出
+
+
+
+
+
+
+
+ 页,至
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/footer-btns/index.vue b/src/components/footer-btns/index.vue
new file mode 100644
index 000000000..eb5aea2c3
--- /dev/null
+++ b/src/components/footer-btns/index.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/src/components/icon/index.ts b/src/components/icon/index.ts
new file mode 100644
index 000000000..831fcadc9
--- /dev/null
+++ b/src/components/icon/index.ts
@@ -0,0 +1,19 @@
+import * as ElementPlusIcons from '@element-plus/icons-vue'
+//@ts-ignore
+import localIconsName from 'virtual:svg-icons-names'
+
+export const LOCAL_ICON_PREFIX = 'local-icon-'
+export const EL_ICON_PREFIX = 'el-icon-'
+
+const elIconsName: string[] = []
+
+for (const [, component] of Object.entries(ElementPlusIcons)) {
+ elIconsName.push(`${EL_ICON_PREFIX}${component.name}`)
+}
+
+export function getElementPlusIconNames() {
+ return elIconsName
+}
+export function getLocalIconNames() {
+ return localIconsName
+}
diff --git a/src/components/icon/index.vue b/src/components/icon/index.vue
new file mode 100644
index 000000000..98dff2a27
--- /dev/null
+++ b/src/components/icon/index.vue
@@ -0,0 +1,48 @@
+
diff --git a/src/components/icon/picker.vue b/src/components/icon/picker.vue
new file mode 100644
index 000000000..27fc8cde5
--- /dev/null
+++ b/src/components/icon/picker.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
请选择图标
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/icon/svg-icon.vue b/src/components/icon/svg-icon.vue
new file mode 100644
index 000000000..10c691989
--- /dev/null
+++ b/src/components/icon/svg-icon.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
diff --git a/src/components/image-contain/index.vue b/src/components/image-contain/index.vue
new file mode 100644
index 000000000..e0285b921
--- /dev/null
+++ b/src/components/image-contain/index.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/src/components/material/file.vue b/src/components/material/file.vue
new file mode 100644
index 000000000..a9f050033
--- /dev/null
+++ b/src/components/material/file.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/src/components/material/hook.ts b/src/components/material/hook.ts
new file mode 100644
index 000000000..611453bb7
--- /dev/null
+++ b/src/components/material/hook.ts
@@ -0,0 +1,209 @@
+import {
+ fileCateAdd,
+ fileCateDelete,
+ fileCateEdit,
+ fileCateLists,
+ fileDelete,
+ fileList,
+ fileMove,
+ fileRename
+} from '@/api/file'
+import { usePaging } from '@/hooks/usePaging'
+import feedback from '@/utils/feedback'
+import { ElMessage, ElTree, type CheckboxValueType } from 'element-plus'
+import { shallowRef, type Ref } from 'vue'
+
+// 左侧分组的钩子函数
+export function useCate(type: number) {
+ const treeRef = shallowRef>()
+ // 分组列表
+ const cateLists = ref([])
+
+ // 选中的分组id
+ const cateId = ref('')
+
+ // 获取分组列表
+ const getCateLists = async () => {
+ const data = await fileCateLists({
+ page_type: 0,
+ type
+ })
+ const item: any[] = [
+ {
+ name: '全部',
+ id: ''
+ },
+ {
+ name: '未分组',
+ id: 0
+ }
+ ]
+ cateLists.value = data.lists
+ cateLists.value.unshift(...item)
+ setTimeout(() => {
+ treeRef.value?.setCurrentKey(cateId.value)
+ }, 0)
+ }
+
+ // 添加分组
+ const handleAddCate = async (value: string) => {
+ await fileCateAdd({
+ type,
+ name: value,
+ pid: 0
+ })
+ getCateLists()
+ }
+
+ // 编辑分组
+ const handleEditCate = async (value: string, id: number) => {
+ await fileCateEdit({
+ id,
+ name: value
+ })
+ getCateLists()
+ }
+
+ // 删除分组
+ const handleDeleteCate = async (id: number) => {
+ await feedback.confirm('确定要删除?')
+ await fileCateDelete({ id })
+ cateId.value = ''
+ getCateLists()
+ }
+
+ //选中分类
+ const handleCatSelect = (item: any) => {
+ cateId.value = item.id
+ }
+
+ return {
+ treeRef,
+ cateId,
+ cateLists,
+ handleAddCate,
+ handleEditCate,
+ handleDeleteCate,
+ getCateLists,
+ handleCatSelect
+ }
+}
+
+// 处理文件的钩子函数
+export function useFile(
+ cateId: Ref,
+ type: Ref,
+ limit: Ref,
+ size: number
+) {
+ const tableRef = shallowRef()
+ const listShowType = ref('normal')
+ const moveId = ref(0)
+ const select = ref([])
+ const isCheckAll = ref(false)
+ const isIndeterminate = ref(false)
+ const fileParams = reactive({
+ name: '',
+ type: type,
+ cid: cateId
+ })
+ const { pager, getLists, resetPage } = usePaging({
+ fetchFun: fileList,
+ params: fileParams,
+ firstLoading: true,
+ size
+ })
+
+ const getFileList = () => {
+ getLists()
+ }
+ const refresh = () => {
+ resetPage()
+ }
+
+ const isSelect = (id: number) => {
+ return !!select.value.find((item: any) => item.id == id)
+ }
+
+ const batchFileDelete = async (id?: number[]) => {
+ await feedback.confirm(
+ '确认删除后,本地或云存储文件也将同步删除,如文件已被使用,请谨慎操作!'
+ )
+ const ids = id ? id : select.value.map((item: any) => item.id)
+ await fileDelete({ ids })
+ getFileList()
+ clearSelect()
+ }
+
+ const batchFileMove = async () => {
+ const ids = select.value.map((item: any) => item.id)
+ await fileMove({ ids, cid: moveId.value })
+ moveId.value = 0
+ getFileList()
+ clearSelect()
+ }
+
+ const selectFile = (item: any) => {
+ const index = select.value.findIndex((items: any) => items.id == item.id)
+ if (index != -1) {
+ select.value.splice(index, 1)
+ return
+ }
+ if (select.value.length == limit.value) {
+ if (limit.value == 1) {
+ select.value = []
+ select.value.push(item)
+ return
+ }
+ ElMessage.warning('已达到选择上限')
+ return
+ }
+ select.value.push(item)
+ }
+
+ const clearSelect = () => {
+ select.value = []
+ }
+
+ const cancelSelete = (id: number) => {
+ select.value = select.value.filter((item: any) => item.id != id)
+ }
+
+ const selectAll = (value: CheckboxValueType) => {
+ isIndeterminate.value = false
+ tableRef.value?.toggleAllSelection()
+ if (value) {
+ select.value = [...pager.lists]
+ return
+ }
+ clearSelect()
+ }
+
+ const handleFileRename = async (name: string, id: number) => {
+ await fileRename({
+ id,
+ name
+ })
+ getFileList()
+ }
+ return {
+ listShowType,
+ tableRef,
+ moveId,
+ pager,
+ fileParams,
+ select,
+ isCheckAll,
+ isIndeterminate,
+ getFileList,
+ refresh,
+ batchFileDelete,
+ batchFileMove,
+ selectFile,
+ isSelect,
+ clearSelect,
+ cancelSelete,
+ selectAll,
+ handleFileRename
+ }
+}
diff --git a/src/components/material/index.vue b/src/components/material/index.vue
new file mode 100644
index 000000000..72660bbdd
--- /dev/null
+++ b/src/components/material/index.vue
@@ -0,0 +1,566 @@
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ ···
+
+
+
+
+
+ 命名分组
+
+
+
+
+ 删除分组
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 本地上传
+
+
+ 本地上传
+
+
+ 删除
+
+
+
+
+ 移动
+
+
+
+ 移动文件至
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当页全选
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.name }}
+
+
+
+
+
+
+
+
+
+ 查看
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+ 暂无数据~
+
+
+
+
+
+
+
+ 已选择 {{ select.length }}
+ /{{ limit }}
+
+
清空
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/material/picker.vue b/src/components/material/picker.vue
new file mode 100644
index 000000000..d015b74be
--- /dev/null
+++ b/src/components/material/picker.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ |
+ 查看
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/material/preview.vue b/src/components/material/preview.vue
new file mode 100644
index 000000000..07d551f89
--- /dev/null
+++ b/src/components/material/preview.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
diff --git a/src/components/overflow-tooltip/index.vue b/src/components/overflow-tooltip/index.vue
new file mode 100644
index 000000000..57734dbf8
--- /dev/null
+++ b/src/components/overflow-tooltip/index.vue
@@ -0,0 +1,47 @@
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
+
diff --git a/src/components/pagination/index.vue b/src/components/pagination/index.vue
new file mode 100644
index 000000000..020d30400
--- /dev/null
+++ b/src/components/pagination/index.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/src/components/popover-input/index.vue b/src/components/popover-input/index.vue
new file mode 100644
index 000000000..88ba84a7c
--- /dev/null
+++ b/src/components/popover-input/index.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/popup/index.vue b/src/components/popup/index.vue
new file mode 100644
index 000000000..726f89f79
--- /dev/null
+++ b/src/components/popup/index.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+ {{ content }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/upload/index.vue b/src/components/upload/index.vue
new file mode 100644
index 000000000..6c09138df
--- /dev/null
+++ b/src/components/upload/index.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/vditor/index.vue b/src/components/vditor/index.vue
new file mode 100644
index 000000000..ec31ca918
--- /dev/null
+++ b/src/components/vditor/index.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/video-player/index.vue b/src/components/video-player/index.vue
new file mode 100644
index 000000000..8a49f3146
--- /dev/null
+++ b/src/components/video-player/index.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
diff --git a/src/config/index.ts b/src/config/index.ts
new file mode 100644
index 000000000..fe39e1171
--- /dev/null
+++ b/src/config/index.ts
@@ -0,0 +1,10 @@
+const config = {
+ terminal: 1, //终端
+ title: '后台管理系统', //网站默认标题
+ version: '1.5.0', //版本号
+ baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}/`, //请求接口域名
+ urlPrefix: 'admin', //请求默认前缀
+ timeout: 10 * 1000 //请求超时时长
+}
+
+export default config
diff --git a/src/config/setting.ts b/src/config/setting.ts
new file mode 100644
index 000000000..35d62e1ff
--- /dev/null
+++ b/src/config/setting.ts
@@ -0,0 +1,16 @@
+const defaultSetting = {
+ showCrumb: true, // 是否显示面包屑
+ showLogo: true, // 是否显示logo
+ isUniqueOpened: false, //只展开一个一级菜单
+ sideWidth: 200, //侧边栏宽度
+ sideTheme: 'light', //侧边栏主题
+ sideDarkColor: '#1d2124', //侧边栏深色主题颜色
+ openMultipleTabs: true, // 是否开启多标签tab栏
+ theme: '#4A5DFF', //主题色
+ successTheme: '#67c23a', //成功主题色
+ warningTheme: '#e6a23c', //警告主题色
+ dangerTheme: '#f56c6c', //危险主题色
+ errorTheme: '#f56c6c', //错误主题色
+ infoTheme: '#909399' //信息主题色
+}
+export default defaultSetting
diff --git a/src/enums/appEnums.ts b/src/enums/appEnums.ts
new file mode 100644
index 000000000..90ac14551
--- /dev/null
+++ b/src/enums/appEnums.ts
@@ -0,0 +1,40 @@
+//菜单主题类型
+export enum ThemeEnum {
+ LIGHT = 'light',
+ DARK = 'dark'
+}
+
+// 菜单类型
+export enum MenuEnum {
+ CATALOGUE = 'M',
+ MENU = 'C',
+ BUTTON = 'A'
+}
+
+// 屏幕
+export enum ScreenEnum {
+ SM = 640,
+ MD = 768,
+ LG = 1024,
+ XL = 1280,
+ '2XL' = 1536
+}
+
+// 客户端类型
+export enum ClientEnum {
+ MP_WEIXIN = 1, // 微信-小程序
+ OA_WEIXIN = 2, // 微信-公众号
+ H5 = 3, // H5
+ PC = 4, // PC
+ IOS = 5, //苹果
+ ANDROID = 6 //安卓
+}
+
+export const ClientMap = {
+ [ClientEnum.MP_WEIXIN]: '微信小程序',
+ [ClientEnum.OA_WEIXIN]: '微信公众号',
+ [ClientEnum.H5]: '手机H5',
+ [ClientEnum.PC]: '电脑PC',
+ [ClientEnum.IOS]: '苹果APP',
+ [ClientEnum.ANDROID]: '安卓APP'
+}
diff --git a/src/enums/cacheEnums.ts b/src/enums/cacheEnums.ts
new file mode 100644
index 000000000..45624e4de
--- /dev/null
+++ b/src/enums/cacheEnums.ts
@@ -0,0 +1,8 @@
+// 本地缓冲key
+
+//token
+export const TOKEN_KEY = 'token'
+//账号
+export const ACCOUNT_KEY = 'account'
+//设置
+export const SETTING_KEY = 'setting'
diff --git a/src/enums/pageEnum.ts b/src/enums/pageEnum.ts
new file mode 100644
index 000000000..1509ff58f
--- /dev/null
+++ b/src/enums/pageEnum.ts
@@ -0,0 +1,7 @@
+export enum PageEnum {
+ //登录页面
+ LOGIN = '/login',
+ //无权限页面
+ ERROR_403 = '/403',
+ INDEX = '/'
+}
diff --git a/src/enums/requestEnums.ts b/src/enums/requestEnums.ts
new file mode 100644
index 000000000..7ee210796
--- /dev/null
+++ b/src/enums/requestEnums.ts
@@ -0,0 +1,18 @@
+export enum ContentTypeEnum {
+ // json
+ JSON = 'application/json;charset=UTF-8',
+ // form-data 上传资源(图片,视频)
+ FORM_DATA = 'multipart/form-data;charset=UTF-8'
+}
+
+export enum RequestMethodsEnum {
+ GET = 'GET',
+ POST = 'POST'
+}
+
+export enum RequestCodeEnum {
+ SUCCESS = 1,
+ FAIL = 0,
+ LOGIN_FAILURE = -1,
+ OPEN_NEW_PAGE = 2
+}
diff --git a/src/hooks/useDictOptions.ts b/src/hooks/useDictOptions.ts
new file mode 100644
index 000000000..d79ec5a37
--- /dev/null
+++ b/src/hooks/useDictOptions.ts
@@ -0,0 +1,67 @@
+import { getDictData } from '@/api/app'
+import { reactive, toRaw } from 'vue'
+
+interface Options {
+ [propName: string]: {
+ api: PromiseFun
+ params?: Record
+ transformData?(data: any): any
+ }
+}
+
+// {
+// dict: {
+// api: dictData,
+// params: { name: 'user' },
+// transformData(data: any) {
+// return data.list
+// }
+// }
+// }
+
+export function useDictOptions(options: Options) {
+ const optionsData: any = reactive({})
+ const optionsKey = Object.keys(options)
+ const apiLists = optionsKey.map((key) => {
+ const value = options[key]
+ optionsData[key] = []
+ return () => value.api(toRaw(value.params) || {})
+ })
+
+ const refresh = async () => {
+ const res = await Promise.allSettled>(apiLists.map((api) => api()))
+ res.forEach((item, index) => {
+ const key = optionsKey[index]
+ if (item.status == 'fulfilled') {
+ const { transformData } = options[key]
+ const data = transformData ? transformData(item.value) : item.value
+ optionsData[key] = data
+ }
+ })
+ }
+ refresh()
+ return {
+ optionsData: optionsData as T,
+ refresh
+ }
+}
+
+// useDictData<{
+// dict: any[]
+// }>(['dict'])
+
+export function useDictData(dict: string) {
+ const dictData: any = reactive({})
+ const refresh = async () => {
+ const data = await getDictData({
+ type: dict
+ })
+ Object.assign(dictData, data)
+ }
+ refresh()
+
+ return {
+ dictData: dictData as T,
+ refresh
+ }
+}
diff --git a/src/hooks/useLockFn.ts b/src/hooks/useLockFn.ts
new file mode 100644
index 000000000..c4423d60f
--- /dev/null
+++ b/src/hooks/useLockFn.ts
@@ -0,0 +1,21 @@
+import { ref } from 'vue'
+
+export function useLockFn(fn: (...args: any[]) => Promise) {
+ const isLock = ref(false)
+ const lockFn = async (...args: any[]) => {
+ if (isLock.value) return
+ isLock.value = true
+ try {
+ const res = await fn(...args)
+ isLock.value = false
+ return res
+ } catch (e) {
+ isLock.value = false
+ throw e
+ }
+ }
+ return {
+ isLock,
+ lockFn
+ }
+}
diff --git a/src/hooks/useMultipleTabs.ts b/src/hooks/useMultipleTabs.ts
new file mode 100644
index 000000000..02e1e4355
--- /dev/null
+++ b/src/hooks/useMultipleTabs.ts
@@ -0,0 +1,47 @@
+import useTabsStore from '@/stores/modules/multipleTabs'
+import useSettingStore from '@/stores/modules/setting'
+
+export default function useMultipleTabs() {
+ const router = useRouter()
+ const route = useRoute()
+ const tabsStore = useTabsStore()
+ const settingStore = useSettingStore()
+
+ const tabsLists = computed(() => {
+ return tabsStore.getTabList
+ })
+
+ const currentTab = computed(() => {
+ return route.fullPath
+ })
+
+ const addTab = () => {
+ if (!settingStore.openMultipleTabs) return
+ tabsStore.addTab(router)
+ }
+
+ const removeTab = (fullPath?: any) => {
+ if (!settingStore.openMultipleTabs) return
+ fullPath = fullPath ?? route.fullPath
+ tabsStore.removeTab(fullPath, router)
+ }
+
+ const removeOtherTab = () => {
+ if (!settingStore.openMultipleTabs) return
+ tabsStore.removeOtherTab(route)
+ }
+
+ const removeAllTab = () => {
+ if (!settingStore.openMultipleTabs) return
+ tabsStore.removeAllTab(router)
+ }
+
+ return {
+ tabsLists,
+ currentTab,
+ addTab,
+ removeTab,
+ removeOtherTab,
+ removeAllTab
+ }
+}
diff --git a/src/hooks/usePaging.ts b/src/hooks/usePaging.ts
new file mode 100644
index 000000000..a5d53907a
--- /dev/null
+++ b/src/hooks/usePaging.ts
@@ -0,0 +1,62 @@
+import { reactive, toRaw } from 'vue'
+
+// 分页钩子函数
+interface Options {
+ page?: number
+ size?: number
+ fetchFun: (_arg: any) => Promise
+ params?: Record
+ firstLoading?: boolean
+}
+
+export function usePaging(options: Options) {
+ const { page = 1, size = 15, fetchFun, params = {}, firstLoading = false } = options
+ // 记录分页初始参数
+ const paramsInit: Record = Object.assign({}, toRaw(params))
+ // 分页数据
+ const pager = reactive({
+ page,
+ size,
+ loading: firstLoading,
+ count: 0,
+ lists: [] as any[]
+ })
+ // 请求分页接口
+ const getLists = () => {
+ pager.loading = true
+ return fetchFun({
+ page_no: pager.page,
+ page_size: pager.size,
+ ...params
+ })
+ .then((res: any) => {
+ pager.count = res?.count
+ pager.lists = res?.lists
+ return Promise.resolve(res)
+ })
+ .catch((err: any) => {
+ return Promise.reject(err)
+ })
+ .finally(() => {
+ pager.loading = false
+ })
+ }
+ // 重置为第一页
+ const resetPage = () => {
+ pager.page = 1
+ getLists()
+ }
+ // 重置参数
+ const resetParams = () => {
+ Object.keys(paramsInit).forEach((item) => {
+ params[item] = paramsInit[item]
+ })
+ getLists()
+ }
+ return {
+ pager,
+ getLists,
+ resetParams,
+ resetPage
+ }
+}
diff --git a/src/hooks/useWatchRoute.ts b/src/hooks/useWatchRoute.ts
new file mode 100644
index 000000000..381b2ec22
--- /dev/null
+++ b/src/hooks/useWatchRoute.ts
@@ -0,0 +1,17 @@
+import type { RouteLocationNormalizedLoaded } from 'vue-router'
+
+export function useWatchRoute(callback: (route: RouteLocationNormalizedLoaded) => void) {
+ const route = useRoute()
+ watch(
+ route,
+ () => {
+ callback(route)
+ },
+ {
+ immediate: true
+ }
+ )
+ return {
+ route
+ }
+}
diff --git a/src/install/directives/copy.ts b/src/install/directives/copy.ts
new file mode 100644
index 000000000..c0b1909cb
--- /dev/null
+++ b/src/install/directives/copy.ts
@@ -0,0 +1,28 @@
+/**
+ * perm 操作权限处理
+ * 指令用法:
+ * 编辑
+ */
+
+import feedback from '@/utils/feedback'
+import useClipboard from 'vue-clipboard3'
+const clipboard = 'data-clipboard-text'
+export default {
+ mounted: (el: HTMLElement, binding: any) => {
+ el.setAttribute(clipboard, binding.value)
+ const { toClipboard } = useClipboard()
+
+ el.onclick = () => {
+ toClipboard(el.getAttribute(clipboard)!)
+ .then(() => {
+ feedback.msgSuccess('复制成功')
+ })
+ .catch(() => {
+ feedback.msgError('复制失败')
+ })
+ }
+ },
+ updated: (el: HTMLElement, binding: any) => {
+ el.setAttribute(clipboard, binding.value)
+ }
+}
diff --git a/src/install/directives/perms.ts b/src/install/directives/perms.ts
new file mode 100644
index 000000000..507dbfe46
--- /dev/null
+++ b/src/install/directives/perms.ts
@@ -0,0 +1,29 @@
+/**
+ * perm 操作权限处理
+ * 指令用法:
+ * 编辑
+ */
+
+import useUserStore from '@/stores/modules/user'
+
+export default {
+ mounted: (el: HTMLElement, binding: any) => {
+ const { value } = binding
+ const userStore = useUserStore()
+ const permissions = userStore.perms
+ const all_permission = '*'
+ if (Array.isArray(value)) {
+ if (value.length > 0) {
+ const hasPermission = permissions.some((key: string) => {
+ return all_permission == key || value.includes(key)
+ })
+
+ if (!hasPermission) {
+ el.parentNode && el.parentNode.removeChild(el)
+ }
+ }
+ } else {
+ throw new Error('like v-perms="[\'auth.menu/edit\']"')
+ }
+ }
+}
diff --git a/src/install/index.ts b/src/install/index.ts
new file mode 100644
index 000000000..eab856346
--- /dev/null
+++ b/src/install/index.ts
@@ -0,0 +1,27 @@
+import type { App } from 'vue'
+const modules = import.meta.glob('./**/*', { eager: true })
+
+// 安装方法,执行某一类相同操作
+function install(app: App) {
+ Object.keys(modules).forEach((key) => {
+ const name = key.replace(/(.*\/)*([^.]+).*/gi, '$2')
+ const type = key.replace(/^\.\/([\w-]+).*/gi, '$1')
+ const module: any = modules[key]
+ if (module.default) {
+ switch (type) {
+ // 用于注册全局指令
+ case 'directives':
+ app.directive(name, module.default)
+ break
+ // 使用插件
+ case 'plugins':
+ typeof module.default === 'function' && module.default(app)
+ break
+ }
+ }
+ })
+}
+
+export default {
+ install
+}
diff --git a/src/install/plugins/echart.ts b/src/install/plugins/echart.ts
new file mode 100644
index 000000000..96edebbb0
--- /dev/null
+++ b/src/install/plugins/echart.ts
@@ -0,0 +1,63 @@
+//引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
+
+import * as echarts from 'echarts/core'
+//引入柱状图图表,图表后缀都为 Chart
+import {
+ BarChart,
+ LineChart,
+ PieChart,
+ MapChart,
+ PictorialBarChart,
+ RadarChart,
+ ScatterChart
+} from 'echarts/charts'
+// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
+import {
+ TitleComponent,
+ TooltipComponent,
+ GridComponent,
+ PolarComponent,
+ AriaComponent,
+ ParallelComponent,
+ LegendComponent,
+ RadarComponent,
+ ToolboxComponent,
+ DataZoomComponent,
+ VisualMapComponent,
+ TimelineComponent,
+ CalendarComponent,
+ GraphicComponent
+} from 'echarts/components'
+
+//引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
+import { CanvasRenderer } from 'echarts/renderers'
+//标签自动布局,全局过渡动画等特性
+import { LabelLayout, UniversalTransition } from 'echarts/features'
+
+// 注册必须的组件
+echarts.use([
+ LegendComponent,
+ TitleComponent,
+ TooltipComponent,
+ GridComponent,
+ PolarComponent,
+ AriaComponent,
+ ParallelComponent,
+ BarChart,
+ LineChart,
+ PieChart,
+ MapChart,
+ RadarChart,
+ PictorialBarChart,
+ RadarComponent,
+ ToolboxComponent,
+ DataZoomComponent,
+ VisualMapComponent,
+ TimelineComponent,
+ CalendarComponent,
+ GraphicComponent,
+ ScatterChart,
+ CanvasRenderer,
+ LabelLayout,
+ UniversalTransition
+])
diff --git a/src/install/plugins/element.ts b/src/install/plugins/element.ts
new file mode 100644
index 000000000..ac6ae238c
--- /dev/null
+++ b/src/install/plugins/element.ts
@@ -0,0 +1,11 @@
+import * as ElementPlusIcons from '@element-plus/icons-vue'
+import type { App } from 'vue'
+//https://github.com/element-plus/element-plus/issues/7293
+import 'element-plus/es/components/dialog/style/css'
+
+export default (app: App) => {
+ // 全局注册ElementPlus图标
+ for (const [key, component] of Object.entries(ElementPlusIcons)) {
+ app.component(key, component)
+ }
+}
diff --git a/src/install/plugins/hljs.ts b/src/install/plugins/hljs.ts
new file mode 100644
index 000000000..041ac77c6
--- /dev/null
+++ b/src/install/plugins/hljs.ts
@@ -0,0 +1,8 @@
+import type { App } from 'vue'
+import 'highlight.js/styles/github.css'
+import hljs from 'highlight.js/lib/common'
+import hljsVuePlugin from '@highlightjs/vue-plugin'
+console.log(hljs)
+export default (app: App) => {
+ app.use(hljsVuePlugin)
+}
diff --git a/src/install/plugins/pinia.ts b/src/install/plugins/pinia.ts
new file mode 100644
index 000000000..6e72e7572
--- /dev/null
+++ b/src/install/plugins/pinia.ts
@@ -0,0 +1,6 @@
+import store from '@/stores'
+import type { App } from 'vue'
+
+export default (app: App) => {
+ app.use(store)
+}
diff --git a/src/install/plugins/router.ts b/src/install/plugins/router.ts
new file mode 100644
index 000000000..4e3647dfe
--- /dev/null
+++ b/src/install/plugins/router.ts
@@ -0,0 +1,6 @@
+import router from '@/router'
+import type { App } from 'vue'
+
+export default (app: App) => {
+ app.use(router)
+}
diff --git a/src/layout/components/footer.vue b/src/layout/components/footer.vue
new file mode 100644
index 000000000..1a41561ad
--- /dev/null
+++ b/src/layout/components/footer.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/src/layout/default/components/header/breadcrumb.vue b/src/layout/default/components/header/breadcrumb.vue
new file mode 100644
index 000000000..58c8ef26b
--- /dev/null
+++ b/src/layout/default/components/header/breadcrumb.vue
@@ -0,0 +1,20 @@
+
+
+
+ {{ item.meta.title }}
+
+
+
+
diff --git a/src/layout/default/components/header/cache.vue b/src/layout/default/components/header/cache.vue
new file mode 100644
index 000000000..2d83f2b5c
--- /dev/null
+++ b/src/layout/default/components/header/cache.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/layout/default/components/header/fold.vue b/src/layout/default/components/header/fold.vue
new file mode 100644
index 000000000..7ce936057
--- /dev/null
+++ b/src/layout/default/components/header/fold.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/full-screen.vue b/src/layout/default/components/header/full-screen.vue
new file mode 100644
index 000000000..96cec1e41
--- /dev/null
+++ b/src/layout/default/components/header/full-screen.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/index.vue b/src/layout/default/components/header/index.vue
new file mode 100644
index 000000000..0b1a79042
--- /dev/null
+++ b/src/layout/default/components/header/index.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/multiple-tabs.vue b/src/layout/default/components/header/multiple-tabs.vue
new file mode 100644
index 000000000..16a5d48f7
--- /dev/null
+++ b/src/layout/default/components/header/multiple-tabs.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭当前
+ 关闭其他
+ 关闭全部
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/refresh.vue b/src/layout/default/components/header/refresh.vue
new file mode 100644
index 000000000..a55ccba8a
--- /dev/null
+++ b/src/layout/default/components/header/refresh.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/user-drop-down.vue b/src/layout/default/components/header/user-drop-down.vue
new file mode 100644
index 000000000..de115858b
--- /dev/null
+++ b/src/layout/default/components/header/user-drop-down.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
{{ userInfo.name }}
+
+
+
+
+
+
+ 个人设置
+
+ 退出登录
+
+
+
+
+
+
diff --git a/src/layout/default/components/main.vue b/src/layout/default/components/main.vue
new file mode 100644
index 000000000..b5386b3be
--- /dev/null
+++ b/src/layout/default/components/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/setting/drawer.vue b/src/layout/default/components/setting/drawer.vue
new file mode 100644
index 000000000..efd08fd2c
--- /dev/null
+++ b/src/layout/default/components/setting/drawer.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
风格设置
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置主题
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/setting/index.vue b/src/layout/default/components/setting/index.vue
new file mode 100644
index 000000000..d0f49579c
--- /dev/null
+++ b/src/layout/default/components/setting/index.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/index.vue b/src/layout/default/components/sidebar/index.vue
new file mode 100644
index 000000000..28413a000
--- /dev/null
+++ b/src/layout/default/components/sidebar/index.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/logo.vue b/src/layout/default/components/sidebar/logo.vue
new file mode 100644
index 000000000..f1e8cb9fc
--- /dev/null
+++ b/src/layout/default/components/sidebar/logo.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/menu-item.vue b/src/layout/default/components/sidebar/menu-item.vue
new file mode 100644
index 000000000..09b46aa6c
--- /dev/null
+++ b/src/layout/default/components/sidebar/menu-item.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+ {{ routeMeta?.title }}
+
+
+
+
+
+
+ {{ routeMeta?.title }}
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/menu.vue b/src/layout/default/components/sidebar/menu.vue
new file mode 100644
index 000000000..a56a1814c
--- /dev/null
+++ b/src/layout/default/components/sidebar/menu.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/side.vue b/src/layout/default/components/sidebar/side.vue
new file mode 100644
index 000000000..dc499e88f
--- /dev/null
+++ b/src/layout/default/components/sidebar/side.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/index.vue b/src/layout/default/index.vue
new file mode 100644
index 000000000..ba6eb3866
--- /dev/null
+++ b/src/layout/default/index.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 000000000..bc9aa29f3
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,10 @@
+import { createApp } from "vue";
+import App from "./App.vue";
+import install from "./install";
+import "./permission";
+import "./styles/index.scss";
+import "virtual:svg-icons-register";
+
+
+const app = createApp(App);
+app.use(install).mount("#app");
diff --git a/src/permission.ts b/src/permission.ts
new file mode 100644
index 000000000..decf89b36
--- /dev/null
+++ b/src/permission.ts
@@ -0,0 +1,83 @@
+/**
+ * 权限控制
+ */
+
+import NProgress from 'nprogress'
+import router, { findFirstValidRoute } from './router'
+import 'nprogress/nprogress.css'
+import { isExternal } from './utils/validate'
+import useUserStore from './stores/modules/user'
+import { INDEX_ROUTE, INDEX_ROUTE_NAME } from './router/routes'
+import { PageEnum } from './enums/pageEnum'
+import useTabsStore from './stores/modules/multipleTabs'
+import { clearAuthInfo } from './utils/auth'
+import config from './config'
+
+// NProgress配置
+NProgress.configure({ showSpinner: false })
+
+const loginPath = PageEnum.LOGIN
+const defaultPath = PageEnum.INDEX
+// 免登录白名单
+const whiteList: string[] = [PageEnum.LOGIN, PageEnum.ERROR_403]
+router.beforeEach(async (to, from, next) => {
+ // 开始 Progress Bar
+ NProgress.start()
+ document.title = to.meta.title ?? config.title
+ const userStore = useUserStore()
+ const tabsStore = useTabsStore()
+ if (whiteList.includes(to.path)) {
+ // 在免登录白名单,直接进入
+ next()
+ } else if (userStore.token) {
+ // 获取用户信息
+ const hasGetUserInfo = Object.keys(userStore.userInfo).length !== 0
+ if (hasGetUserInfo) {
+ if (to.path === loginPath) {
+ next({ path: defaultPath })
+ } else {
+ next()
+ }
+ } else {
+ try {
+ await userStore.getUserInfo()
+ const routes = userStore.routes
+ // 找到第一个有效路由
+ const routeName = findFirstValidRoute(routes)
+ // 没有有效路由跳转到403页面
+ if (!routeName) {
+ clearAuthInfo()
+ next(PageEnum.ERROR_403)
+ return
+ }
+ tabsStore.setRouteName(routeName!)
+ INDEX_ROUTE.redirect = { name: routeName }
+
+ // 动态添加index路由
+ router.addRoute(INDEX_ROUTE)
+ routes.forEach((route: any) => {
+ // https 则不插入
+ if (isExternal(route.path)) {
+ return
+ }
+ if (!route.children) {
+ router.addRoute(INDEX_ROUTE_NAME, route)
+ return
+ }
+ // 动态添加可访问路由表
+ router.addRoute(route)
+ })
+ next({ ...to, replace: true })
+ } catch (err) {
+ clearAuthInfo()
+ next({ path: loginPath, query: { redirect: to.fullPath } })
+ }
+ }
+ } else {
+ next({ path: loginPath, query: { redirect: to.fullPath } })
+ }
+})
+
+router.afterEach(() => {
+ NProgress.done()
+})
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 000000000..ba004d088
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,110 @@
+import { createRouter, createWebHistory, RouterView, type RouteRecordRaw } from 'vue-router'
+import { MenuEnum } from '@/enums/appEnums'
+import { isExternal } from '@/utils/validate'
+import { constantRoutes, INDEX_ROUTE_NAME, LAYOUT } from './routes'
+import useUserStore from '@/stores/modules/user'
+
+// 匹配views里面所有的.vue文件,动态引入
+const modules = import.meta.glob('/src/views/**/*.vue')
+
+//
+export function getModulesKey() {
+ return Object.keys(modules).map((item) => item.replace('/src/views/', '').replace('.vue', ''))
+}
+
+// 过滤路由所需要的数据
+export function filterAsyncRoutes(routes: any[], firstRoute = true) {
+ return routes.map((route) => {
+ const routeRecord = createRouteRecord(route, firstRoute)
+ if (route.children != null && route.children && route.children.length) {
+ routeRecord.children = filterAsyncRoutes(route.children, false)
+ }
+ return routeRecord
+ })
+}
+
+// 创建一条路由记录
+export function createRouteRecord(route: any, firstRoute: boolean): RouteRecordRaw {
+ //@ts-ignore
+ const routeRecord: RouteRecordRaw = {
+ path: isExternal(route.paths) ? route.paths : firstRoute ? `/${route.paths}` : route.paths,
+ name: Symbol(route.paths),
+ meta: {
+ hidden: !route.is_show,
+ keepAlive: !!route.is_cache,
+ title: route.name,
+ perms: route.perms,
+ query: route.params,
+ icon: route.icon,
+ type: route.type,
+ activeMenu: route.selected
+ }
+ }
+ switch (route.type) {
+ case MenuEnum.CATALOGUE:
+ routeRecord.component = firstRoute ? LAYOUT : RouterView
+ if (!route.children) {
+ routeRecord.component = RouterView
+ }
+ break
+ case MenuEnum.MENU:
+ routeRecord.component = loadRouteView(route.component)
+ break
+ }
+ return routeRecord
+}
+
+// 动态加载组件
+export function loadRouteView(component: string) {
+ try {
+ const key = Object.keys(modules).find((key) => {
+ return key.includes(`${component}.vue`)
+ })
+ if (key) {
+ return modules[key]
+ }
+ throw Error(`找不到组件${component},请确保组件路径正确`)
+ } catch (error) {
+ console.error(error)
+ return RouterView
+ }
+}
+
+// 找到第一个有效的路由
+export function findFirstValidRoute(routes: RouteRecordRaw[]): string | undefined {
+ for (const route of routes) {
+ if (route.meta?.type == MenuEnum.MENU && !route.meta?.hidden && !isExternal(route.path)) {
+ return route.name as string
+ }
+ if (route.children) {
+ const name = findFirstValidRoute(route.children)
+ if (name) {
+ return name
+ }
+ }
+ }
+}
+//通过权限字符查询路由路径
+export function getRoutePath(perms: string) {
+ const routerObj = useRouter() || router
+ return routerObj.getRoutes().find((item) => item.meta?.perms == perms)?.path || ''
+}
+
+// 重置路由
+export function resetRouter() {
+ router.removeRoute(INDEX_ROUTE_NAME)
+ const { routes } = useUserStore()
+ routes.forEach((route) => {
+ const name = route.name
+ if (name && router.hasRoute(name)) {
+ router.removeRoute(name)
+ }
+ })
+}
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes: constantRoutes
+})
+
+export default router
diff --git a/src/router/routes.ts b/src/router/routes.ts
new file mode 100644
index 000000000..a3603cb5a
--- /dev/null
+++ b/src/router/routes.ts
@@ -0,0 +1,85 @@
+/**
+ * Note: 路由配置项
+ *
+ * path: '/path' // 路由路径
+ * name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题
+ * meta : {
+ title: 'title' // 设置该路由在侧边栏的名字
+ icon: 'icon-name' // 设置该路由的图标
+ activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
+ query: '{"id": 1}' // 访问路由的默认传递参数
+ hidden: true // 当设置 true 的时候该路由不会在侧边栏出现
+ hideTab: true //当设置 true 的时候该路由不会在多标签tab栏出现
+ }
+ */
+
+import type { RouteRecordRaw } from 'vue-router'
+import { PageEnum } from '@/enums/pageEnum'
+import Layout from '@/layout/default/index.vue'
+
+export const LAYOUT = () => Promise.resolve(Layout)
+
+export const INDEX_ROUTE_NAME = Symbol()
+
+export const constantRoutes: Array = [
+ {
+ path: '/:pathMatch(.*)*',
+ component: () => import('@/views/error/404.vue')
+ },
+ {
+ path: PageEnum.ERROR_403,
+ component: () => import('@/views/error/403.vue')
+ },
+ {
+ path: PageEnum.LOGIN,
+ component: () => import('@/views/account/login.vue')
+ },
+ {
+ path: '/user',
+ component: LAYOUT,
+ children: [
+ {
+ path: 'setting',
+ component: () => import('@/views/user/setting.vue'),
+ name: Symbol(),
+ meta: {
+ title: '个人设置'
+ }
+ }
+ ]
+ }
+ // {
+ // path: '/dev_tools',
+ // component: LAYOUT,
+ // children: [
+ // {
+ // path: 'code/edit',
+ // component: () => import('@/views/dev_tools/code/edit.vue'),
+ // meta: {
+ // title: '编辑数据表',
+ // activeMenu: '/dev_tools/code'
+ // }
+ // }
+ // ]
+ // },
+ // {
+ // path: '/setting',
+ // component: LAYOUT,
+ // children: [
+ // {
+ // path: 'dict/data',
+ // component: () => import('@/views/setting/dict/data/index.vue'),
+ // meta: {
+ // title: '数据管理',
+ // activeMenu: '/setting/dict'
+ // }
+ // }
+ // ]
+ // }
+]
+
+export const INDEX_ROUTE: RouteRecordRaw = {
+ path: PageEnum.INDEX,
+ component: LAYOUT,
+ name: INDEX_ROUTE_NAME
+}
diff --git a/src/stores/index.ts b/src/stores/index.ts
new file mode 100644
index 000000000..7c7ea6963
--- /dev/null
+++ b/src/stores/index.ts
@@ -0,0 +1,3 @@
+import { createPinia } from 'pinia'
+const store = createPinia()
+export default store
diff --git a/src/stores/modules/app.ts b/src/stores/modules/app.ts
new file mode 100644
index 000000000..e642142d0
--- /dev/null
+++ b/src/stores/modules/app.ts
@@ -0,0 +1,51 @@
+import { getConfig } from '@/api/app'
+import { defineStore } from 'pinia'
+interface AppSate {
+ config: Record
+ isMobile: boolean
+ isCollapsed: boolean
+ isRouteShow: boolean
+}
+
+const useAppStore = defineStore({
+ id: 'app',
+ state: (): AppSate => {
+ return {
+ config: {},
+ isMobile: true,
+ isCollapsed: false,
+ isRouteShow: true
+ }
+ },
+ actions: {
+ getImageUrl(url: string) {
+ return url ? `${this.config.oss_domain}${url}` : ''
+ },
+ getConfig() {
+ return new Promise((resolve, reject) => {
+ getConfig()
+ .then((data) => {
+ this.config = data
+ resolve(data)
+ })
+ .catch((err) => {
+ reject(err)
+ })
+ })
+ },
+ setMobile(value: boolean) {
+ this.isMobile = value
+ },
+ toggleCollapsed(toggle?: boolean) {
+ this.isCollapsed = toggle ?? !this.isCollapsed
+ },
+ refreshView() {
+ this.isRouteShow = false
+ nextTick(() => {
+ this.isRouteShow = true
+ })
+ }
+ }
+})
+
+export default useAppStore
diff --git a/src/stores/modules/multipleTabs.ts b/src/stores/modules/multipleTabs.ts
new file mode 100644
index 000000000..5c60b034b
--- /dev/null
+++ b/src/stores/modules/multipleTabs.ts
@@ -0,0 +1,169 @@
+import { defineStore } from 'pinia'
+import { isExternal } from '@/utils/validate'
+import type {
+ LocationQuery,
+ RouteLocationNormalized,
+ RouteParamsRaw,
+ Router,
+ RouteRecordName
+} from 'vue-router'
+import { PageEnum } from '@/enums/pageEnum'
+
+interface TabItem {
+ name: RouteRecordName
+ fullPath: string
+ path: string
+ title?: string
+ query?: LocationQuery
+ params?: RouteParamsRaw
+}
+
+interface TabsSate {
+ cacheTabList: Set
+ tabList: TabItem[]
+ tasMap: Record
+ indexRouteName: RouteRecordName
+}
+
+const getHasTabIndex = (fullPath: string, tabList: TabItem[]) => {
+ return tabList.findIndex((item) => item.fullPath == fullPath)
+}
+
+const isCannotAddRoute = (route: RouteLocationNormalized, router: Router) => {
+ const { path, meta, name } = route
+ if (!path || isExternal(path)) return true
+ if (meta?.hideTab) return true
+ if (!router.hasRoute(name!)) return true
+ if (([PageEnum.LOGIN, PageEnum.ERROR_403] as string[]).includes(path)) {
+ return true
+ }
+ return false
+}
+
+const findTabsIndex = (fullPath: string, tabList: TabItem[]) => {
+ return tabList.findIndex((item) => item.fullPath === fullPath)
+}
+
+const getComponentName = (route: RouteLocationNormalized) => {
+ return route.matched.at(-1)?.components?.default?.name
+}
+
+export const getRouteParams = (tabItem: TabItem) => {
+ const { params, path, query } = tabItem
+ return {
+ params: params || {},
+ path,
+ query: query || {}
+ }
+}
+
+const useTabsStore = defineStore({
+ id: 'tabs',
+ state: (): TabsSate => ({
+ cacheTabList: new Set(),
+ tabList: [],
+ tasMap: {},
+ indexRouteName: ''
+ }),
+ getters: {
+ getTabList(): TabItem[] {
+ return this.tabList
+ },
+ getCacheTabList(): string[] {
+ return Array.from(this.cacheTabList)
+ }
+ },
+ actions: {
+ setRouteName(name: RouteRecordName) {
+ this.indexRouteName = name
+ },
+ addCache(componentName?: string) {
+ if (componentName) this.cacheTabList.add(componentName)
+ },
+ removeCache(componentName?: string) {
+ if (componentName && this.cacheTabList.has(componentName)) {
+ this.cacheTabList.delete(componentName)
+ }
+ },
+ clearCache() {
+ this.cacheTabList.clear()
+ },
+ resetState() {
+ this.cacheTabList = new Set()
+ this.tabList = []
+ this.tasMap = {}
+ this.indexRouteName = ''
+ },
+ addTab(router: Router) {
+ const route = unref(router.currentRoute)
+ const { name, query, meta, params, fullPath, path } = route
+ if (isCannotAddRoute(route, router)) return
+ const hasTabIndex = getHasTabIndex(fullPath!, this.tabList)
+ const componentName = getComponentName(route)
+ const tabItem = {
+ name: name!,
+ path,
+ fullPath,
+ title: meta?.title,
+ query,
+ params
+ }
+ this.tasMap[fullPath] = tabItem
+ if (meta?.keepAlive) {
+ console.log(componentName)
+ this.addCache(componentName)
+ }
+ if (hasTabIndex != -1) {
+ return
+ }
+
+ this.tabList.push(tabItem)
+ },
+ removeTab(fullPath: string, router: Router) {
+ const { currentRoute, push } = router
+ const index = findTabsIndex(fullPath, this.tabList)
+ // 移除tab
+ if (this.tabList.length > 1) {
+ index !== -1 && this.tabList.splice(index, 1)
+ }
+ const componentName = getComponentName(currentRoute.value)
+ this.removeCache(componentName)
+ if (fullPath !== currentRoute.value.fullPath) {
+ return
+ }
+ // 删除选中的tab
+ let toTab: TabItem | null = null
+
+ if (index === 0) {
+ toTab = this.tabList[index]
+ } else {
+ toTab = this.tabList[index - 1]
+ }
+
+ const toRoute = getRouteParams(toTab)
+ push(toRoute)
+ },
+ removeOtherTab(route: RouteLocationNormalized) {
+ this.tabList = this.tabList.filter((item) => item.fullPath == route.fullPath)
+ const componentName = getComponentName(route)
+ this.cacheTabList.forEach((name) => {
+ if (componentName !== name) {
+ this.removeCache(name)
+ }
+ })
+ },
+ removeAllTab(router: Router) {
+ const { push, currentRoute } = router
+ const { name } = unref(currentRoute)
+ if (name == this.indexRouteName) {
+ this.removeOtherTab(currentRoute.value)
+ return
+ }
+ this.tabList = []
+ this.clearCache()
+ push(PageEnum.INDEX)
+ }
+ }
+})
+
+export default useTabsStore
diff --git a/src/stores/modules/setting.ts b/src/stores/modules/setting.ts
new file mode 100644
index 000000000..219a58bd8
--- /dev/null
+++ b/src/stores/modules/setting.ts
@@ -0,0 +1,55 @@
+import { defineStore } from 'pinia'
+import defaultSetting from '@/config/setting'
+import cache from '@/utils/cache'
+import { isObject } from '@vue/shared'
+import { setTheme } from '@/utils/theme'
+import { SETTING_KEY } from '@/enums/cacheEnums'
+const storageSetting = cache.get(SETTING_KEY)
+
+export const useSettingStore = defineStore({
+ id: 'setting',
+ state: () => {
+ const state = {
+ showDrawer: false,
+ ...defaultSetting
+ }
+ isObject(storageSetting) && Object.assign(state, storageSetting)
+ return state
+ },
+ actions: {
+ // 设置布局设置
+ setSetting(data: Record) {
+ const { key, value } = data
+ if (this.hasOwnProperty(key)) {
+ //@ts-ignore
+ this[key] = value
+ }
+ const settings: any = Object.assign({}, this.$state)
+ delete settings.showDrawer
+ cache.set(SETTING_KEY, settings)
+ },
+ // 设置主题色
+ setTheme(isDark: boolean) {
+ setTheme(
+ {
+ primary: this.theme,
+ success: this.successTheme,
+ warning: this.warningTheme,
+ danger: this.dangerTheme,
+ error: this.errorTheme,
+ info: this.infoTheme
+ },
+ isDark
+ )
+ },
+ resetTheme() {
+ for (const key in defaultSetting) {
+ //@ts-ignore
+ this[key] = defaultSetting[key]
+ }
+ cache.remove(SETTING_KEY)
+ }
+ }
+})
+
+export default useSettingStore
diff --git a/src/stores/modules/user.ts b/src/stores/modules/user.ts
new file mode 100644
index 000000000..27b4ebcb5
--- /dev/null
+++ b/src/stores/modules/user.ts
@@ -0,0 +1,82 @@
+import { defineStore } from 'pinia'
+import cache from '@/utils/cache'
+import type { RouteRecordRaw } from 'vue-router'
+import { getUserInfo, login, logout } from '@/api/user'
+import router, { filterAsyncRoutes } from '@/router'
+import { TOKEN_KEY } from '@/enums/cacheEnums'
+import { PageEnum } from '@/enums/pageEnum'
+import { clearAuthInfo, getToken } from '@/utils/auth'
+export interface UserState {
+ token: string
+ userInfo: Record
+ routes: RouteRecordRaw[]
+ perms: string[]
+}
+
+const useUserStore = defineStore({
+ id: 'user',
+ state: (): UserState => ({
+ token: getToken() || '',
+ // 用户信息
+ userInfo: {},
+ // 路由
+ routes: [],
+ // 权限
+ perms: []
+ }),
+ getters: {},
+ actions: {
+ resetState() {
+ this.token = ''
+ this.userInfo = {}
+ this.perms = []
+ },
+ login(playload: any) {
+ const { account, password } = playload
+ return new Promise((resolve, reject) => {
+ login({
+ account: account.trim(),
+ password: password
+ })
+ .then((data) => {
+ this.token = data.token
+ cache.set(TOKEN_KEY, data.token)
+ resolve(data)
+ })
+ .catch((error) => {
+ reject(error)
+ })
+ })
+ },
+ logout() {
+ return new Promise((resolve, reject) => {
+ logout()
+ .then(async (data) => {
+ this.token = ''
+ await router.push(PageEnum.LOGIN)
+ clearAuthInfo()
+ resolve(data)
+ })
+ .catch((error) => {
+ reject(error)
+ })
+ })
+ },
+ getUserInfo() {
+ return new Promise((resolve, reject) => {
+ getUserInfo()
+ .then((data) => {
+ this.userInfo = data.user
+ this.perms = data.permissions
+ this.routes = filterAsyncRoutes(data.menu)
+ resolve(data)
+ })
+ .catch((error) => {
+ reject(error)
+ })
+ })
+ }
+ }
+})
+
+export default useUserStore
diff --git a/src/styles/dark.css b/src/styles/dark.css
new file mode 100644
index 000000000..ae969fdbe
--- /dev/null
+++ b/src/styles/dark.css
@@ -0,0 +1,49 @@
+:root.dark {
+ color-scheme: dark;
+ --table-header-bg-color: var(--el-bg-color);
+ --el-bg-color-page: #0a0a0a;
+ --el-bg-color: #1d2124;
+ --el-bg-color-overlay: #1d1e1f;
+ --el-text-color-primary: #e5eaf3;
+ --el-text-color-regular: #cfd3dc;
+ --el-text-color-secondary: #a3a6ad;
+ --el-text-color-placeholder: #8d9095;
+ --el-text-color-disabled: #6c6e72;
+ --el-border-color-darker: #636466;
+ --el-border-color-dark: #58585b;
+ --el-border-color: #4c4d4f;
+ --el-border-color-light: #414243;
+ --el-border-color-lighter: #363637;
+ --el-border-color-extra-light: #2b2b2c;
+ --el-fill-color-darker: #424243;
+ --el-fill-color-dark: #39393a;
+ --el-fill-color: #303030;
+ --el-fill-color-light: #262727;
+ --el-fill-color-lighter: #1d1d1d;
+ --el-fill-color-extra-light: #191919;
+ --el-fill-color-blank: var(--el-bg-color);
+ --el-mask-color: rgba(0, 0, 0, 0.8);
+ --el-mask-color-extra-light: rgba(0, 0, 0, 0.3);
+ --el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.36), 0px 8px 20px rgba(0, 0, 0, 0.72);
+ --el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.72);
+ --el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.72);
+ --el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.72), 0px 12px 32px #000000,
+ 0px 8px 16px -8px #000000 !important;
+ /* wangeditor主题 */
+ --w-e-textarea-bg-color: var(--el-bg-color);
+ --w-e-textarea-color: var(--el-text-color-primary);
+ --w-e-textarea-border-color: var(--el-border-color);
+ --w-e-textarea-slight-border-color: var(--el-border-color-light);
+ --w-e-textarea-slight-color: var(--el-border-color);
+ --w-e-textarea-slight-bg-color: var(--el-bg-color-page);
+ /* --w-e-textarea-selected-border-color: #b4d5ff;
+ --w-e-textarea-handler-bg-color: #4290f7; */
+ --w-e-toolbar-color: var(--el-text-color-primary);
+ --w-e-toolbar-bg-color: var(--el-bg-color);
+ --w-e-toolbar-active-color: var(--el-text-color-primary);
+ --w-e-toolbar-active-bg-color: var(--el-bg-color);
+ --w-e-toolbar-disabled-color: var(--el-text-color-disabled);
+ --w-e-toolbar-border-color: var(--el-border-color);
+ --w-e-modal-button-bg-color: var(--el-bg-color);
+ --w-e-modal-button-border-color: var(--el-border-color);
+}
diff --git a/src/styles/element.scss b/src/styles/element.scss
new file mode 100644
index 000000000..a493e35d9
--- /dev/null
+++ b/src/styles/element.scss
@@ -0,0 +1,151 @@
+:root {
+ // 弹窗居中
+ .el-overlay-dialog {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ min-height: 100%;
+ position: static;
+
+ .el-dialog {
+ --el-dialog-content-font-size: var(--el-font-size-base);
+ --el-dialog-margin-top: 50px;
+ max-width: calc(100vw - 30px);
+ flex: none;
+ display: flex;
+ flex-direction: column;
+ border-radius: 5px;
+
+ &.body-padding .el-dialog__body {
+ padding: 0;
+ }
+
+ .el-dialog__body {
+ flex: 1;
+ padding: 15px 20px;
+ }
+ .el-dialog__header {
+ font-size: var(--el-font-size-large);
+ }
+ }
+ }
+
+ .el-drawer {
+ --el-drawer-padding-primary: 16px;
+ &__header {
+ margin-bottom: 0;
+ padding: 13px 16px;
+ border-bottom: 1px solid var(--el-border-color-lighter);
+ }
+ &__title {
+ @apply text-tx-primary;
+ }
+ }
+
+ .el-table {
+ --el-table-header-text-color: var(--el-text-color-primary);
+ --el-table-header-bg-color: var(--table-header-bg-color);
+ font-size: var(--el-font-size-base);
+
+ thead {
+ th {
+ font-weight: 400;
+ }
+ }
+ }
+
+ .el-input-group__prepend {
+ background-color: var(--el-fill-color-blank);
+ }
+
+ .el-checkbox {
+ --el-checkbox-font-size: var(--el-font-size-base);
+ }
+
+ .el-menu--popup-container {
+ &.theme-light {
+ .el-menu {
+ .el-menu-item {
+ &.is-active {
+ @apply bg-primary-light-9 border-primary border-r-2;
+ }
+ }
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--el-color-primary);
+ }
+ }
+ }
+ &.theme-dark {
+ .el-menu {
+ .el-menu-item {
+ &.is-active {
+ @apply bg-primary;
+ }
+ }
+ }
+ }
+ }
+
+ .el-message-box {
+ --el-messagebox-width: 350px;
+ }
+ .el-date-editor {
+ --el-date-editor-datetimerange-width: 380px;
+ .el-range-input {
+ font-size: var(--el-font-size-small);
+ }
+ }
+
+ .el-button--primary {
+ --el-button-hover-link-text-color: var(--el-color-primary-light-3);
+ }
+ .el-button--success {
+ --el-button-hover-link-text-color: var(--el-color-success-light-3);
+ }
+ .el-button--info {
+ --el-button-hover-link-text-color: var(--el-color-info-light-3);
+ }
+ .el-button--warning {
+ --el-button-hover-link-text-color: var(--el-color-warning-light-3);
+ }
+ .el-button--danger {
+ --el-button-hover-link-text-color: var(--el-color-danger-light-3);
+ }
+ .el-image__error {
+ font-size: 12px;
+ }
+ .el-tabs__nav-wrap::after {
+ height: 1px;
+ }
+ .el-page-header {
+ &__breadcrumb {
+ margin-bottom: 0;
+ }
+ }
+}
+@media (max-width: 768px) {
+ .el-pagination > .el-pagination__jump {
+ display: none !important;
+ }
+ .el-pagination > .el-pagination__sizes {
+ display: none !important;
+ }
+}
+
+.el-button {
+ // 防止被tailwindcss默认样式覆盖
+ background-color: var(--el-button-bg-color, var(--el-color-white));
+
+ //覆盖el-button的点击样式
+ &:focus {
+ color: var(--el-button-text-color);
+ border-color: var(--el-button-border-color);
+ background-color: var(--el-button-bg-color);
+ }
+ &:hover {
+ color: var(--el-button-hover-text-color);
+ border-color: var(--el-button-hover-border-color);
+ background-color: var(--el-button-hover-bg-color);
+ }
+}
diff --git a/src/styles/index.scss b/src/styles/index.scss
new file mode 100644
index 000000000..7bd17260d
--- /dev/null
+++ b/src/styles/index.scss
@@ -0,0 +1,6 @@
+
+@import 'element.scss';
+@import 'dark.css';
+@import 'var.css';
+@import 'tailwind.css';
+@import 'public.scss';
diff --git a/src/styles/public.scss b/src/styles/public.scss
new file mode 100644
index 000000000..a11a8bd94
--- /dev/null
+++ b/src/styles/public.scss
@@ -0,0 +1,18 @@
+body {
+ @apply text-base text-tx-primary overflow-hidden min-w-[375px];
+}
+.form-tips {
+ @apply text-tx-secondary text-xs leading-6 mt-1;
+}
+
+.clearfix:after {
+ content: '';
+ display: block;
+ clear: both;
+ visibility: hidden;
+}
+
+/* NProgress */
+#nprogress .bar {
+ @apply bg-primary #{!important};
+}
diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css
new file mode 100644
index 000000000..bd6213e1d
--- /dev/null
+++ b/src/styles/tailwind.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
\ No newline at end of file
diff --git a/src/styles/var.css b/src/styles/var.css
new file mode 100644
index 000000000..a10631a3a
--- /dev/null
+++ b/src/styles/var.css
@@ -0,0 +1,48 @@
+:root {
+ --el-font-family: theme(fontFamily.sans);
+ --el-font-weight-primary: 400;
+ --el-menu-item-height: 46px;
+ --el-menu-sub-item-height: var(--el-menu-item-height);
+ --el-menu-icon-width: 18px;
+ --aside-width: 200px;
+ --navbar-height: 50px;
+ --color-white: #ffffff;
+ --table-header-bg-color: #f8f8f8;
+ --el-font-size-extra-large: 18px;
+ --el-menu-base-level-padding: 16px;
+ --el-menu-level-padding: 26px;
+ --el-font-size-large: 16px;
+ --el-font-size-medium: 15px;
+ --el-font-size-base: 14px;
+ --el-font-size-small: 13px;
+ --el-font-size-extra-small: 12px;
+
+ --el-bg-color: var(--color-white);
+ --el-bg-color-page: #f6f6f6;
+ --el-bg-color-overlay: #ffffff;
+ --el-text-color-primary: #333333;
+ --el-text-color-regular: #666666;
+ --el-text-color-secondary: #999999;
+ --el-text-color-placeholder: #a8abb2;
+ --el-text-color-disabled: #c0c4cc;
+ --el-border-color: #dcdfe6;
+ --el-border-color-light: #e4e7ed;
+ --el-border-color-lighter: #ebeef5;
+ --el-border-color-extra-light: #f2f2f2;
+ --el-border-color-dark: #d4d7de;
+ --el-border-color-darker: #cdd0d6;
+ --el-fill-color: #f0f2f5;
+ --el-fill-color-light: #f8f8f8;
+ --el-fill-color-lighter: #fafafa;
+ --el-fill-color-extra-light: #fafcff;
+ --el-fill-color-dark: #ebedf0;
+ --el-fill-color-darker: #e6e8eb;
+ --el-fill-color-blank: #ffffff;
+ --el-mask-color: rgba(255, 255, 255, 0.9);
+ --el-mask-color-extra-light: rgba(255, 255, 255, 0.3);
+ -el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.04), 0px 8px 20px rgba(0, 0, 0, 0.08);
+ --el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.12);
+ --el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.12);
+ --el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.08), 0px 12px 32px rgba(0, 0, 0, 0.12),
+ 0px 8px 16px -8px rgba(0, 0, 0, 0.16);
+}
diff --git a/src/utils/auth.ts b/src/utils/auth.ts
new file mode 100644
index 000000000..abc6f922d
--- /dev/null
+++ b/src/utils/auth.ts
@@ -0,0 +1,18 @@
+import { TOKEN_KEY } from '@/enums/cacheEnums'
+import { resetRouter } from '@/router'
+import useTabsStore from '@/stores/modules/multipleTabs'
+import useUserStore from '@/stores/modules/user'
+import cache from './cache'
+
+export function getToken() {
+ return cache.get(TOKEN_KEY)
+}
+
+export function clearAuthInfo() {
+ const userStore = useUserStore()
+ const tabsStore = useTabsStore()
+ userStore.resetState()
+ tabsStore.resetState()
+ cache.remove(TOKEN_KEY)
+ resetRouter()
+}
diff --git a/src/utils/cache.ts b/src/utils/cache.ts
new file mode 100644
index 000000000..e16973f4e
--- /dev/null
+++ b/src/utils/cache.ts
@@ -0,0 +1,53 @@
+const cache = {
+ key: 'like_admin_',
+ //设置缓存(expire为缓存时效)
+ set(key: string, value: any, expire?: string) {
+ key = this.getKey(key)
+ let data: any = {
+ expire: expire ? this.time() + expire : '',
+ value
+ }
+
+ if (typeof data === 'object') {
+ data = JSON.stringify(data)
+ }
+ try {
+ window.localStorage.setItem(key, data)
+ } catch (e) {
+ return null
+ }
+ },
+ get(key: string) {
+ key = this.getKey(key)
+ try {
+ const data = window.localStorage.getItem(key)
+ if (!data) {
+ return null
+ }
+ const { value, expire } = JSON.parse(data)
+ if (expire && expire < this.time()) {
+ window.localStorage.removeItem(key)
+ return null
+ }
+ return value
+ } catch (e) {
+ return null
+ }
+ },
+ //获取当前时间
+ time() {
+ return Math.round(new Date().getTime() / 1000)
+ },
+ remove(key: string) {
+ key = this.getKey(key)
+ window.localStorage.removeItem(key)
+ },
+ clear() {
+ window.localStorage.clear()
+ },
+ getKey(key: string) {
+ return this.key + key
+ }
+}
+
+export default cache
diff --git a/src/utils/env.ts b/src/utils/env.ts
new file mode 100644
index 000000000..d8951e930
--- /dev/null
+++ b/src/utils/env.ts
@@ -0,0 +1,13 @@
+/**
+ * @description: 开发模式
+ */
+export function isDevMode(): boolean {
+ return import.meta.env.DEV
+}
+
+/**
+ * @description: 生成模式
+ */
+export function isProdMode(): boolean {
+ return import.meta.env.PROD
+}
diff --git a/src/utils/feedback.ts b/src/utils/feedback.ts
new file mode 100644
index 000000000..91672abe0
--- /dev/null
+++ b/src/utils/feedback.ts
@@ -0,0 +1,95 @@
+import {
+ ElMessage,
+ ElMessageBox,
+ ElNotification,
+ ElLoading,
+ type ElMessageBoxOptions
+} from 'element-plus'
+import type { LoadingInstance } from 'element-plus/es/components/loading/src/loading'
+
+export class Feedback {
+ private loadingInstance: LoadingInstance | null = null
+ static instance: Feedback | null = null
+ static getInstance() {
+ return this.instance ?? (this.instance = new Feedback())
+ }
+ // 消息提示
+ msg(msg: string) {
+ ElMessage.info(msg)
+ }
+ // 错误消息
+ msgError(msg: string) {
+ ElMessage.error(msg)
+ }
+ // 成功消息
+ msgSuccess(msg: string) {
+ ElMessage.success(msg)
+ }
+ // 警告消息
+ msgWarning(msg: string) {
+ ElMessage.warning(msg)
+ }
+ // 弹出提示
+ alert(msg: string) {
+ ElMessageBox.alert(msg, '系统提示')
+ }
+ // 错误提示
+ alertError(msg: string) {
+ ElMessageBox.alert(msg, '系统提示', { type: 'error' })
+ }
+ // 成功提示
+ alertSuccess(msg: string) {
+ ElMessageBox.alert(msg, '系统提示', { type: 'success' })
+ }
+ // 警告提示
+ alertWarning(msg: string) {
+ ElMessageBox.alert(msg, '系统提示', { type: 'warning' })
+ }
+ // 通知提示
+ notify(msg: string) {
+ ElNotification.info(msg)
+ }
+ // 错误通知
+ notifyError(msg: string) {
+ ElNotification.error(msg)
+ }
+ // 成功通知
+ notifySuccess(msg: string) {
+ ElNotification.success(msg)
+ }
+ // 警告通知
+ notifyWarning(msg: string) {
+ ElNotification.warning(msg)
+ }
+ // 确认窗体
+ confirm(msg: string) {
+ return ElMessageBox.confirm(msg, '温馨提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ }
+ // 提交内容
+ prompt(content: string, title: string, options?: ElMessageBoxOptions) {
+ return ElMessageBox.prompt(content, title, {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ ...options
+ })
+ }
+ // 打开全局loading
+ loading(msg: string) {
+ this.loadingInstance = ElLoading.service({
+ lock: true,
+ text: msg
+ })
+ }
+ // 关闭全局loading
+ closeLoading() {
+ this.loadingInstance?.close()
+ }
+}
+
+const feedback = Feedback.getInstance()
+
+export default feedback
diff --git a/src/utils/request/axios.ts b/src/utils/request/axios.ts
new file mode 100644
index 000000000..65703e029
--- /dev/null
+++ b/src/utils/request/axios.ts
@@ -0,0 +1,165 @@
+import { RequestMethodsEnum } from '@/enums/requestEnums'
+import axios, {
+ AxiosError,
+ type AxiosInstance,
+ type AxiosRequestConfig,
+ type AxiosResponse
+} from 'axios'
+import { isFunction, merge, cloneDeep } from 'lodash'
+import axiosCancel from './cancel'
+import type { RequestData, RequestOptions } from './type'
+
+export class Axios {
+ private axiosInstance: AxiosInstance
+ private readonly config: AxiosRequestConfig
+ private readonly options: RequestOptions
+ constructor(config: AxiosRequestConfig) {
+ this.config = config
+ this.options = config.requestOptions
+ this.axiosInstance = axios.create(config)
+ this.setupInterceptors()
+ }
+
+ /**
+ * @description 获取axios实例
+ */
+ getAxiosInstance() {
+ return this.axiosInstance
+ }
+
+ /**
+ * @description 设置拦截器
+ */
+ setupInterceptors() {
+ if (!this.config.axiosHooks) {
+ return
+ }
+ const {
+ requestInterceptorsHook,
+ requestInterceptorsCatchHook,
+ responseInterceptorsHook,
+ responseInterceptorsCatchHook
+ } = this.config.axiosHooks
+ this.axiosInstance.interceptors.request.use(
+ (config) => {
+ this.addCancelToken(config)
+ if (isFunction(requestInterceptorsHook)) {
+ config = requestInterceptorsHook(config)
+ }
+ return config
+ },
+ (err: Error) => {
+ if (isFunction(requestInterceptorsCatchHook)) {
+ requestInterceptorsCatchHook(err)
+ }
+ return err
+ }
+ )
+ this.axiosInstance.interceptors.response.use(
+ (response: AxiosResponse) => {
+ this.removeCancelToken(response.config.url!)
+ if (isFunction(responseInterceptorsHook)) {
+ response = responseInterceptorsHook(response)
+ }
+ return response
+ },
+ (err: AxiosError) => {
+ if (isFunction(responseInterceptorsCatchHook)) {
+ responseInterceptorsCatchHook(err)
+ }
+ if (err.code != AxiosError.ERR_CANCELED) {
+ this.removeCancelToken(err.config?.url!)
+ }
+
+ if (err.code == AxiosError.ECONNABORTED || err.code == AxiosError.ERR_NETWORK) {
+ return new Promise((resolve) => setTimeout(resolve, 500)).then(() =>
+ this.retryRequest(err)
+ )
+ }
+ return Promise.reject(err)
+ }
+ )
+ }
+
+ /**
+ * @description 添加CancelToken
+ */
+ addCancelToken(config: AxiosRequestConfig) {
+ const { ignoreCancelToken } = config.requestOptions
+ !ignoreCancelToken && axiosCancel.add(config)
+ }
+
+ /**
+ * @description 移除CancelToken
+ */
+ removeCancelToken(url: string) {
+ axiosCancel.remove(url)
+ }
+
+ /**
+ * @description 重新请求
+ */
+ retryRequest(error: AxiosError) {
+ const config = error.config
+ const { retryCount, isOpenRetry } = config.requestOptions
+ if (!isOpenRetry || config.method?.toUpperCase() == RequestMethodsEnum.POST) {
+ return Promise.reject(error)
+ }
+ config.retryCount = config.retryCount ?? 0
+
+ if (config.retryCount >= retryCount) {
+ return Promise.reject(error)
+ }
+ config.retryCount++
+
+ return this.axiosInstance.request(config)
+ }
+ /**
+ * @description get请求
+ */
+ get(
+ config: Partial,
+ options?: Partial
+ ): Promise {
+ return this.request({ ...config, method: RequestMethodsEnum.GET }, options)
+ }
+
+ /**
+ * @description post请求
+ */
+ post(
+ config: Partial,
+ options?: Partial
+ ): Promise {
+ return this.request({ ...config, method: RequestMethodsEnum.POST }, options)
+ }
+
+ /**
+ * @description 请求函数
+ */
+ request(
+ config: Partial,
+ options?: Partial
+ ): Promise {
+ const opt: RequestOptions = merge({}, this.options, options)
+ const axioxConfig: AxiosRequestConfig = {
+ ...cloneDeep(config),
+ requestOptions: opt
+ }
+ const { urlPrefix } = opt
+ // 拼接请求前缀如api
+ if (urlPrefix) {
+ axioxConfig.url = `${urlPrefix}${config.url}`
+ }
+ return new Promise((resolve, reject) => {
+ this.axiosInstance
+ .request>>(axioxConfig)
+ .then((res) => {
+ resolve(res)
+ })
+ .catch((err) => {
+ reject(err)
+ })
+ })
+ }
+}
diff --git a/src/utils/request/cancel.ts b/src/utils/request/cancel.ts
new file mode 100644
index 000000000..b092e1d4d
--- /dev/null
+++ b/src/utils/request/cancel.ts
@@ -0,0 +1,31 @@
+import axios, { type AxiosRequestConfig, type Canceler } from 'axios'
+
+const cancelerMap = new Map()
+
+export class AxiosCancel {
+ private static instance?: AxiosCancel
+
+ static createInstance() {
+ return this.instance ?? (this.instance = new AxiosCancel())
+ }
+ add(config: AxiosRequestConfig) {
+ const url = config.url!
+ this.remove(url)
+ config.cancelToken = new axios.CancelToken((cancel) => {
+ if (!cancelerMap.has(url)) {
+ cancelerMap.set(url, cancel)
+ }
+ })
+ }
+ remove(url: string) {
+ if (cancelerMap.has(url)) {
+ const cancel = cancelerMap.get(url)
+ cancel && cancel(url)
+ cancelerMap.delete(url)
+ }
+ }
+}
+
+const axiosCancel = AxiosCancel.createInstance()
+
+export default axiosCancel
diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts
new file mode 100644
index 000000000..e66915d26
--- /dev/null
+++ b/src/utils/request/index.ts
@@ -0,0 +1,123 @@
+import { merge } from 'lodash'
+import configs from '@/config'
+import { Axios } from './axios'
+import { ContentTypeEnum, RequestCodeEnum, RequestMethodsEnum } from '@/enums/requestEnums'
+import type { AxiosHooks } from './type'
+import { clearAuthInfo, getToken } from '../auth'
+import feedback from '../feedback'
+import NProgress from 'nprogress'
+import { AxiosError, type AxiosRequestConfig } from 'axios'
+import router from '@/router'
+import { PageEnum } from '@/enums/pageEnum'
+
+// 处理axios的钩子函数
+const axiosHooks: AxiosHooks = {
+ requestInterceptorsHook(config) {
+ NProgress.start()
+ const { withToken, isParamsToData } = config.requestOptions
+ const params = config.params || {}
+ const headers = config.headers || {}
+
+ // 添加token
+ if (withToken) {
+ const token = getToken()
+ headers.token = token
+ }
+ // POST请求下如果无data,则将params视为data
+ if (
+ isParamsToData &&
+ !Reflect.has(config, 'data') &&
+ config.method?.toUpperCase() === RequestMethodsEnum.POST
+ ) {
+ config.data = params
+ config.params = {}
+ }
+ config.headers = headers
+ return config
+ },
+ requestInterceptorsCatchHook(err) {
+ NProgress.done()
+ return err
+ },
+ async responseInterceptorsHook(response) {
+ NProgress.done()
+ const { isTransformResponse, isReturnDefaultResponse } = response.config.requestOptions
+
+ //返回默认响应,当需要获取响应头及其他数据时可使用
+ if (isReturnDefaultResponse) {
+ return response
+ }
+ // 是否需要对数据进行处理
+ if (!isTransformResponse) {
+ return response.data
+ }
+ const { code, data, show, msg } = response.data
+ switch (code) {
+ case RequestCodeEnum.SUCCESS:
+ if (show) {
+ msg && feedback.msgSuccess(msg)
+ }
+ return data
+ case RequestCodeEnum.FAIL:
+ if (show) {
+ msg && feedback.msgError(msg)
+ }
+ return Promise.reject(data)
+ case RequestCodeEnum.LOGIN_FAILURE:
+ clearAuthInfo()
+ router.push(PageEnum.LOGIN)
+ return Promise.reject()
+ case RequestCodeEnum.OPEN_NEW_PAGE:
+ window.location.href = data.url
+ return data
+ default:
+ return data
+ }
+ },
+ responseInterceptorsCatchHook(error) {
+ NProgress.done()
+ if (error.code !== AxiosError.ERR_CANCELED) {
+ error.message && feedback.msgError(error.message)
+ }
+ return Promise.reject(error)
+ }
+}
+
+const defaultOptions: AxiosRequestConfig = {
+ //接口超时时间
+ timeout: configs.timeout,
+ // 基础接口地址
+ baseURL: configs.baseUrl,
+ //请求头
+ headers: { 'Content-Type': ContentTypeEnum.JSON, version: configs.version },
+ // 处理 axios的钩子函数
+ axiosHooks: axiosHooks,
+ // 每个接口可以单独配置
+ requestOptions: {
+ // 是否将params视为data参数,仅限post请求
+ isParamsToData: true,
+ //是否返回默认的响应
+ isReturnDefaultResponse: false,
+ // 需要对返回数据进行处理
+ isTransformResponse: true,
+ // 接口拼接地址
+ urlPrefix: configs.urlPrefix,
+ // 忽略重复请求
+ ignoreCancelToken: false,
+ // 是否携带token
+ withToken: true,
+ // 开启请求超时重新发起请求请求机制
+ isOpenRetry: true,
+ // 重新请求次数
+ retryCount: 2
+ }
+}
+
+function createAxios(opt?: Partial) {
+ return new Axios(
+ // 深度合并
+ merge(defaultOptions, opt || {})
+ )
+}
+const request = createAxios()
+export default request
diff --git a/src/utils/request/type.d.ts b/src/utils/request/type.d.ts
new file mode 100644
index 000000000..a7f364df2
--- /dev/null
+++ b/src/utils/request/type.d.ts
@@ -0,0 +1,38 @@
+import type { AxiosRequestConfig, AxiosResponse } from 'axios'
+
+import 'axios'
+declare module 'axios' {
+ // 扩展 RouteMeta
+ interface AxiosRequestConfig {
+ retryCount?: number
+ axiosHooks?: AxiosHooks
+ requestOptions: RequestOptions
+ }
+}
+
+export interface RequestOptions {
+ isParamsToData: boolean
+ isReturnDefaultResponse: boolean
+ isTransformResponse: boolean
+ urlPrefix: string
+ ignoreCancelToken: boolean
+ withToken: boolean
+ isOpenRetry: boolean
+ retryCount: number
+}
+
+export interface AxiosHooks {
+ requestInterceptorsHook?: (config: AxiosRequestConfig) => AxiosRequestConfig
+ requestInterceptorsCatchHook?: (error: Error) => void
+ responseInterceptorsHook?: (
+ response: AxiosResponse>
+ ) => AxiosResponse | RequestData | T
+ responseInterceptorsCatchHook?: (error: AxiosError) => void
+}
+
+export interface RequestData {
+ code: number
+ data: T
+ msg: string
+ show: boolean
+}
diff --git a/src/utils/theme.ts b/src/utils/theme.ts
new file mode 100644
index 000000000..d11fe1878
--- /dev/null
+++ b/src/utils/theme.ts
@@ -0,0 +1,74 @@
+import colors from 'css-color-function'
+const lightConfig = {
+ 'dark-2': 'shade(20%)',
+ 'light-3': 'tint(30%)',
+ 'light-5': 'tint(50%)',
+ 'light-7': 'tint(70%)',
+ 'light-8': 'tint(80%)',
+ 'light-9': 'tint(90%)'
+}
+
+const darkConfig = {
+ 'light-3': 'shade(20%)',
+ 'light-5': 'shade(30%)',
+ 'light-7': 'shade(50%)',
+ 'light-8': 'shade(60%)',
+ 'light-9': 'shade(70%)',
+ 'dark-2': 'tint(20%)'
+}
+
+const themeId = 'theme-vars'
+
+/**
+ * @author Jason
+ * @description 用于生成elementui主题的行为变量
+ * 可选值有primary、success、warning、danger、error、info
+ */
+
+export const generateVars = (color: string, type = 'primary', isDark = false) => {
+ const colos = {
+ [`--el-color-${type}`]: color
+ }
+ const config: Record = isDark ? darkConfig : lightConfig
+ for (const key in config) {
+ colos[`--el-color-${type}-${key}`] = `color(${color} ${config[key]})`
+ }
+ return colos
+}
+
+/**
+ * @author Jason
+ * @description 用于设置css变量
+ * @param key css变量key 如 --color-primary
+ * @param value css变量值 如 #f40
+ * @param dom dom元素
+ */
+export const setCssVar = (key: string, value: string, dom = document.documentElement) => {
+ dom.style.setProperty(key, value)
+}
+
+/**
+ * @author Jason
+ * @description 设置主题
+ */
+export const setTheme = (options: Record, isDark = false) => {
+ const varsMap: Record = Object.keys(options).reduce((prev, key) => {
+ return Object.assign(prev, generateVars(options[key], key, isDark))
+ }, {})
+
+ let theme = Object.keys(varsMap).reduce((prev, key) => {
+ const color = colors.convert(varsMap[key])
+ return `${prev}${key}:${color};`
+ }, '')
+ theme = `:root{${theme}}`
+ let style = document.getElementById(themeId)
+ if (style) {
+ style.innerHTML = theme
+ return
+ }
+ style = document.createElement('style')
+ style.setAttribute('type', 'text/css')
+ style.setAttribute('id', themeId)
+ style.innerHTML = theme
+ document.head.append(style)
+}
diff --git a/src/utils/util.ts b/src/utils/util.ts
new file mode 100644
index 000000000..57d9ab6e0
--- /dev/null
+++ b/src/utils/util.ts
@@ -0,0 +1,162 @@
+import { isObject } from '@vue/shared'
+import { cloneDeep } from 'lodash'
+
+/**
+ * @description 添加单位
+ * @param {String | Number} value 值 100
+ * @param {String} unit 单位 px em rem
+ */
+export const addUnit = (value: string | number, unit = 'px') => {
+ return !Object.is(Number(value), NaN) ? `${value}${unit}` : value
+}
+
+/**
+ * @description 添加单位
+ * @param {unknown} value
+ * @return {Boolean}
+ */
+export const isEmpty = (value: unknown) => {
+ return value == null && typeof value == 'undefined'
+}
+
+/**
+ * @description 树转数组,队列实现广度优先遍历
+ * @param {Array} data 数据
+ * @param {Object} props `{ children: 'children' }`
+ */
+
+export const treeToArray = (data: any[], props = { children: 'children' }) => {
+ data = cloneDeep(data)
+ const { children } = props
+ const newData = []
+ const queue: any[] = []
+ data.forEach((child: any) => queue.push(child))
+ while (queue.length) {
+ const item: any = queue.shift()
+ if (item[children]) {
+ item[children].forEach((child: any) => queue.push(child))
+ delete item[children]
+ }
+ newData.push(item)
+ }
+ return newData
+}
+
+/**
+ * @description 数组转
+ * @param {Array} data 数据
+ * @param {Object} props `{ parent: 'pid', children: 'children' }`
+ */
+
+export const arrayToTree = (
+ data: any[],
+ props = { id: 'id', parentId: 'pid', children: 'children' }
+) => {
+ data = cloneDeep(data)
+ const { id, parentId, children } = props
+ const result: any[] = []
+ const map = new Map()
+ data.forEach((item) => {
+ map.set(item[id], item)
+ const parent = map.get(item[parentId])
+ if (parent) {
+ parent[children] = parent[children] ?? []
+ parent[children].push(item)
+ } else {
+ result.push(item)
+ }
+ })
+ return result
+}
+
+/**
+ * @description 获取正确的路经
+ * @param {String} path 数据
+ */
+export function getNormalPath(path: string) {
+ if (path.length === 0 || !path || path == 'undefined') {
+ return path
+ }
+ const newPath = path.replace('//', '/')
+ const length = newPath.length
+ if (newPath[length - 1] === '/') {
+ return newPath.slice(0, length - 1)
+ }
+ return newPath
+}
+
+/**
+ * @description对象格式化为Query语法
+ * @param { Object } params
+ * @return {string} Query语法
+ */
+export function objectToQuery(params: Record): string {
+ let query = ''
+ for (const props of Object.keys(params)) {
+ const value = params[props]
+ const part = encodeURIComponent(props) + '='
+ if (!isEmpty(value)) {
+ if (isObject(value)) {
+ for (const key of Object.keys(value)) {
+ if (!isEmpty(value[key])) {
+ const params = props + '[' + key + ']'
+ const subPart = encodeURIComponent(params) + '='
+ query += subPart + encodeURIComponent(value[key]) + '&'
+ }
+ }
+ } else {
+ query += part + encodeURIComponent(value) + '&'
+ }
+ }
+ }
+ return query.slice(0, -1)
+}
+
+/**
+ * @description 时间格式化
+ * @param dateTime { number } 时间戳
+ * @param fmt { string } 时间格式
+ * @return { string }
+ */
+// yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合
+export const timeFormat = (dateTime: number, fmt = 'yyyy-mm-dd') => {
+ // 如果为null,则格式化当前时间
+ if (!dateTime) {
+ dateTime = Number(new Date())
+ }
+ // 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
+ if (dateTime.toString().length == 10) {
+ dateTime *= 1000
+ }
+ const date = new Date(dateTime)
+ let ret
+ const opt: any = {
+ 'y+': date.getFullYear().toString(), // 年
+ 'm+': (date.getMonth() + 1).toString(), // 月
+ 'd+': date.getDate().toString(), // 日
+ 'h+': date.getHours().toString(), // 时
+ 'M+': date.getMinutes().toString(), // 分
+ 's+': date.getSeconds().toString() // 秒
+ }
+ for (const k in opt) {
+ ret = new RegExp('(' + k + ')').exec(fmt)
+ if (ret) {
+ fmt = fmt.replace(
+ ret[1],
+ ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
+ )
+ }
+ }
+ return fmt
+}
+
+/**
+ * @description 获取不重复的id
+ * @param length { Number } id的长度
+ * @return { String } id
+ */
+export const getNonDuplicateID = (length = 8) => {
+ let idStr = Date.now().toString(36)
+ idStr += Math.random().toString(36).substring(3, length)
+ return idStr
+}
diff --git a/src/utils/validate.ts b/src/utils/validate.ts
new file mode 100644
index 000000000..0f8d8f12e
--- /dev/null
+++ b/src/utils/validate.ts
@@ -0,0 +1,7 @@
+/**
+ * @param {string} path
+ * @returns {Boolean}
+ */
+export function isExternal(path: string) {
+ return /^(https?:|mailto:|tel:)/.test(path)
+}
diff --git a/src/views/account/images/login_bg.png b/src/views/account/images/login_bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..787837a256587e81c2ffd3abcac0324acff7a718
GIT binary patch
literal 59273
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