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 00000000..a57c3857 --- /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 00000000..a57c3857 --- /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 00000000..1e1ea2b3 --- /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 00000000..44a42f0b --- /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 00000000..ca17936e --- /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 00000000..077a5686 --- /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 00000000..11f02fe2 --- /dev/null +++ b/global.d.ts @@ -0,0 +1 @@ +/// diff --git a/index.html b/index.html new file mode 100644 index 00000000..71d3dbbd --- /dev/null +++ b/index.html @@ -0,0 +1,66 @@ + + + + + + + 后台管理系统 + + + +
+
+ + + +
+
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..277d005c --- /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 00000000..052632ff --- /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 00000000..ff8ef3cf --- /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 00000000..84461b67 --- /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 00000000..09f98d14 --- /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 00000000..fec3423b --- /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 00000000..e243f2a9 --- /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 00000000..dba8c4d1 --- /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 00000000..81165793 --- /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 00000000..21810016 --- /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 00000000..6838a4b7 --- /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 00000000..bc51c21a --- /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 00000000..40aed092 --- /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 00000000..98ef2a6b --- /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 00000000..b3932a2b --- /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 00000000..390765e5 --- /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 00000000..66f65dae --- /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 00000000..f1f3f439 --- /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 00000000..6508a4da --- /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 00000000..4f4de990 --- /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 00000000..f9860ed8 --- /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 00000000..0b222689 --- /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 00000000..e9ada24d --- /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 00000000..7c652984 --- /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 00000000..8187b5fc --- /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 00000000..7074ae7b --- /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 00000000..bf90259b --- /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 00000000..f3486b51 --- /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 00000000..f3486b51 --- /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 00000000..3cb468f7 --- /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 00000000..9885e88b --- /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 00000000..4754e163 --- /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 00000000..c8674e7b --- /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 00000000..fcc84fbc --- /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 00000000..c79cd78c --- /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 00000000..3b1fc283 --- /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 00000000..e3e92f4f --- /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 00000000..07d01dfa --- /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 00000000..982ac583 --- /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 00000000..5d873955 --- /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 00000000..4a066407 --- /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 00000000..b9e6e5dd --- /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 00000000..bb1fb663 --- /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 00000000..045057df --- /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 00000000..54f3e08a --- /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 00000000..dc1c7c52 --- /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 00000000..ba527e83 --- /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 00000000..2ef171c2 --- /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 00000000..c7f230c5 --- /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 00000000..0d2291d9 --- /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 00000000..7989ff66 --- /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 00000000..f9381401 --- /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 00000000..8723cbf3 --- /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 00000000..be006a9c --- /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 00000000..55540779 --- /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 00000000..a7dc3e1a --- /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 00000000..0e8a4c8b --- /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 00000000..b2db4637 --- /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 00000000..46d4e956 --- /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 00000000..e5b35a98 --- /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 00000000..5330a6a3 --- /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 00000000..09292768 --- /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 00000000..ef573a79 --- /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 00000000..8c866744 --- /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 00000000..6b5e5f29 --- /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 00000000..bb542bf8 --- /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 00000000..f63d6df8 --- /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 00000000..c1d5388f --- /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 00000000..cd50b0bb --- /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 00000000..27ea8569 --- /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 00000000..3f5f7b18 --- /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 00000000..e4eb7cc7 --- /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 00000000..939c7455 --- /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 00000000..ba094cc5 --- /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 00000000..e845a798 --- /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 00000000..516e8907 --- /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 00000000..25643705 --- /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 00000000..659c6e06 --- /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 00000000..8d263434 --- /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 00000000..2956729a --- /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 00000000..ecde71b3 --- /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 00000000..add9ce88 --- /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 00000000..94269955 --- /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 00000000..b80fbede --- /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 00000000..63541975 --- /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 00000000..6e76f7d1 --- /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 00000000..8fe88a68 --- /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 00000000..375972b4 --- /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 00000000..831bd0ed --- /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 00000000..4848092a --- /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 00000000..db46ff1e --- /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 00000000..341b6860 --- /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 00000000..f8751575 --- /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 00000000..cd252739 --- /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 00000000..f8d1bd4b --- /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 00000000..f1c40340 --- /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 00000000..8c74146f --- /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 00000000..5cbbabdf --- /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 00000000..9d331b5b --- /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 00000000..50227189 --- /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 00000000..ae067690 --- /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 00000000..0c60672d --- /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 00000000..def7109a --- /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 00000000..f22bb264 --- /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 00000000..f439dd84 --- /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 00000000..812d3be5 --- /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 00000000..a42ade77 --- /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 00000000..8aeefbb4 --- /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 00000000..18fbd459 --- /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 00000000..5899c916 --- /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 00000000..295037f9 --- /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 00000000..e9dfa91c --- /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 00000000..5a7dcb97 --- /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 00000000..a5a5de14 --- /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 00000000..0a4d9190 --- /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 00000000..ec73071c --- /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 00000000..1396bac4 --- /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 00000000..fcbe7a15 --- /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 00000000..4b7377f7 --- /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 00000000..3cecfc7b --- /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 00000000..fe636ee1 --- /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 00000000..fe636ee1 --- /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 00000000..753f2545 --- /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 00000000..ce56e687 --- /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 00000000..56308133 --- /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 00000000..4e7ca350 --- /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 00000000..0cd3755c --- /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 00000000..781b0bb9 --- /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 00000000..c5d92145 --- /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 00000000..a6daad90 --- /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 00000000..9f6840bb --- /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 00000000..f32cacd1 --- /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 00000000..8b898744 --- /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 00000000..62223b42 --- /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 00000000..0d2f1f98 --- /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 00000000..7fbcc6cb --- /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 00000000..a7440775 --- /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 00000000..72aa5c5c --- /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 00000000..a40816c6 --- /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 00000000..205653f6 --- /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 00000000..1f471f3f --- /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 00000000..7a7b4151 --- /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 00000000..b856afa9 --- /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 00000000..7ac91017 --- /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 00000000..bab19975 --- /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 00000000..3cbd08ce --- /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 00000000..fb7abc9a --- /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 00000000..0139a69b --- /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 00000000..9b39672a --- /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 00000000..b6b33150 --- /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 00000000..f4b129cf --- /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 00000000..f3842507 --- /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 00000000..897f0299 --- /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 00000000..37e0a942 --- /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 00000000..dc898ac3 --- /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 00000000..94ecaa2f --- /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 00000000..9adc068c --- /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 00000000..147c9e2a --- /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 00000000..a3c3277f --- /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 00000000..db088f51 --- /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 00000000..0a5cfbe7 --- /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 00000000..e0fbf399 --- /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 00000000..54af4078 --- /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 00000000..6113e530 --- /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 00000000..5d751bf6 --- /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 00000000..ba2d55d2 --- /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 00000000..bfdf2b09 --- /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 00000000..260981de --- /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 00000000..639bb8e8 --- /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 00000000..a87ca69e --- /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 00000000..800baf52 --- /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 00000000..e6765f1e --- /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 00000000..96551386 --- /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 00000000..17ffa4e6 --- /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 00000000..f2d1a015 --- /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 00000000..5e90e919 --- /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 00000000..c15f1a10 --- /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 00000000..99725612 --- /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 00000000..4250f00d --- /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 00000000..1ca4ef0c --- /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 00000000..467b687e --- /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 00000000..9b1d63ba --- /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 00000000..00c76a7b --- /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 00000000..785b60fa --- /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 00000000..0bdc1063 --- /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 00000000..d5d5d88f --- /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 00000000..083b3012 --- /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 00000000..9ad8b2ef --- /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 00000000..6c00d418 --- /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 00000000..9967dd85 --- /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 00000000..e8386f1e --- /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 00000000..b022d4c5 --- /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 00000000..288b24ff --- /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 00000000..d180e9b9 --- /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 00000000..3b409d2c --- /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 00000000..2fdf9b91 --- /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 00000000..56c0e611 --- /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 00000000..1a90a696 --- /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 00000000..a4686b3d --- /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 00000000..8418b767 --- /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 00000000..bea4c25b --- /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 00000000..21b048ba --- /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 00000000..5da2d784 --- /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 00000000..1e760a83 --- /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 00000000..2387e0ad --- /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 00000000..23499f8d --- /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 00000000..b06fe165 --- /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 00000000..e14e118a --- /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 00000000..04334eaf --- /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 00000000..b7c06ab0 --- /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 00000000..a227028a --- /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 00000000..876676f0 --- /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 00000000..3832030f --- /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 00000000..7d5bb2d0 --- /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 00000000..005323a3 --- /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 00000000..64b511db --- /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 00000000..0875efd3 --- /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 00000000..206fff69 --- /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 00000000..b4ae10e8 --- /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 00000000..e00fd792 --- /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 00000000..77cc413e --- /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 00000000..f043f122 --- /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 00000000..5c4e92ea --- /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 00000000..4cc5c108 --- /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 00000000..ea9ebfbe --- /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 00000000..a9f7b5f5 --- /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 00000000..cf220c8a --- /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 00000000..c7415764 --- /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 00000000..b34ac744 --- /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 00000000..238ddf26 --- /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 00000000..23ae5be2 --- /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 00000000..20c1fdc9 --- /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 00000000..ef07f2e4 --- /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 00000000..4358e1cd --- /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 00000000..1304c01e --- /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 00000000..5c599261 --- /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 00000000..b785c04c --- /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 00000000..1ac06af1 --- /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 00000000..080255d7 --- /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 00000000..eac7549b --- /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 00000000..aef4e533 --- /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 00000000..187e3e99 --- /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 00000000..d329b496 --- /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 00000000..443e2cb6 --- /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 00000000..c692c458 --- /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 00000000..53e8deba --- /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 00000000..ee9d0cca --- /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 00000000..8a8d5462 --- /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 00000000..e210df3b --- /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 00000000..69a9d994 --- /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 00000000..e7fe926a --- /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 00000000..ed0bc3e2 --- /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 00000000..5ad8f04a --- /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 00000000..787f3e26 --- /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 00000000..7d34aec2 --- /dev/null +++ b/src/components/dict-value/index.vue @@ -0,0 +1,35 @@ + + diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue new file mode 100644 index 00000000..ae39eee6 --- /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 00000000..b687c9d9 --- /dev/null +++ b/src/components/export-data/index.vue @@ -0,0 +1,149 @@ + + diff --git a/src/components/footer-btns/index.vue b/src/components/footer-btns/index.vue new file mode 100644 index 00000000..eb5aea2c --- /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 00000000..831fcadc --- /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 00000000..98dff2a2 --- /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 00000000..27fc8cde --- /dev/null +++ b/src/components/icon/picker.vue @@ -0,0 +1,185 @@ + + + diff --git a/src/components/icon/svg-icon.vue b/src/components/icon/svg-icon.vue new file mode 100644 index 00000000..10c69198 --- /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 00000000..e0285b92 --- /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 00000000..a9f05003 --- /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 00000000..611453bb --- /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 00000000..72660bbd --- /dev/null +++ b/src/components/material/index.vue @@ -0,0 +1,566 @@ + + + + + diff --git a/src/components/material/picker.vue b/src/components/material/picker.vue new file mode 100644 index 00000000..d015b74b --- /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 00000000..07d551f8 --- /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 00000000..57734dbf --- /dev/null +++ b/src/components/overflow-tooltip/index.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/components/pagination/index.vue b/src/components/pagination/index.vue new file mode 100644 index 00000000..020d3040 --- /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 00000000..88ba84a7 --- /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 00000000..726f89f7 --- /dev/null +++ b/src/components/popup/index.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/components/upload/index.vue b/src/components/upload/index.vue new file mode 100644 index 00000000..6c09138d --- /dev/null +++ b/src/components/upload/index.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/components/vditor/index.vue b/src/components/vditor/index.vue new file mode 100644 index 00000000..ec31ca91 --- /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 00000000..8a49f314 --- /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 00000000..fe39e117 --- /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 00000000..35d62e1f --- /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 00000000..90ac1455 --- /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 00000000..45624e4d --- /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 00000000..1509ff58 --- /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 00000000..7ee21079 --- /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 00000000..d79ec5a3 --- /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 00000000..c4423d60 --- /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 00000000..02e1e435 --- /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 00000000..a5d53907 --- /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 00000000..381b2ec2 --- /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 00000000..c0b1909c --- /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 00000000..507dbfe4 --- /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 00000000..eab85634 --- /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 00000000..96edebbb --- /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 00000000..ac6ae238 --- /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 00000000..041ac77c --- /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 00000000..6e72e757 --- /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 00000000..4e3647df --- /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 00000000..1a41561a --- /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 00000000..58c8ef26 --- /dev/null +++ b/src/layout/default/components/header/breadcrumb.vue @@ -0,0 +1,20 @@ + + diff --git a/src/layout/default/components/header/cache.vue b/src/layout/default/components/header/cache.vue new file mode 100644 index 00000000..2d83f2b5 --- /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 00000000..7ce93605 --- /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 00000000..96cec1e4 --- /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 00000000..0b1a7904 --- /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 00000000..16a5d48f --- /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 00000000..a55ccba8 --- /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 00000000..de115858 --- /dev/null +++ b/src/layout/default/components/header/user-drop-down.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/layout/default/components/main.vue b/src/layout/default/components/main.vue new file mode 100644 index 00000000..b5386b3b --- /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 00000000..efd08fd2 --- /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 00000000..d0f49579 --- /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 00000000..28413a00 --- /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 00000000..f1e8cb9f --- /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 00000000..09b46aa6 --- /dev/null +++ b/src/layout/default/components/sidebar/menu-item.vue @@ -0,0 +1,87 @@ + + + + diff --git a/src/layout/default/components/sidebar/menu.vue b/src/layout/default/components/sidebar/menu.vue new file mode 100644 index 00000000..a56a1814 --- /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 00000000..dc499e88 --- /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 00000000..ba6eb386 --- /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 00000000..bc9aa29f --- /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 00000000..decf89b3 --- /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 00000000..ba004d08 --- /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 00000000..a3603cb5 --- /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 00000000..7c7ea696 --- /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 00000000..e642142d --- /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 00000000..5c60b034 --- /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 00000000..219a58bd --- /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 00000000..27b4ebcb --- /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 00000000..ae969fdb --- /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 00000000..a493e35d --- /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 00000000..7bd17260 --- /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 00000000..a11a8bd9 --- /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 00000000..bd6213e1 --- /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 00000000..a10631a3 --- /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 00000000..abc6f922 --- /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 00000000..e16973f4 --- /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 00000000..d8951e93 --- /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 00000000..91672abe --- /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 00000000..65703e02 --- /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 00000000..b092e1d4 --- /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 00000000..e66915d2 --- /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 00000000..a7f364df --- /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 00000000..d11fe187 --- /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 00000000..57d9ab6e --- /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 00000000..0f8d8f12 --- /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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 B-!K3G literal 0 HcmV?d00001 diff --git a/src/views/account/login.vue b/src/views/account/login.vue new file mode 100644 index 00000000..74b1aeb1 --- /dev/null +++ b/src/views/account/login.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/category/edit.vue b/src/views/category/edit.vue new file mode 100644 index 00000000..2fde0c6c --- /dev/null +++ b/src/views/category/edit.vue @@ -0,0 +1,157 @@ + + + diff --git a/src/views/category/index.vue b/src/views/category/index.vue new file mode 100644 index 00000000..332ff3f0 --- /dev/null +++ b/src/views/category/index.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/views/dev_tools/code/edit.vue b/src/views/dev_tools/code/edit.vue new file mode 100644 index 00000000..67640886 --- /dev/null +++ b/src/views/dev_tools/code/edit.vue @@ -0,0 +1,528 @@ + + + diff --git a/src/views/dev_tools/code/index.vue b/src/views/dev_tools/code/index.vue new file mode 100644 index 00000000..1e1fcec9 --- /dev/null +++ b/src/views/dev_tools/code/index.vue @@ -0,0 +1,232 @@ + + + diff --git a/src/views/dev_tools/components/code-preview.vue b/src/views/dev_tools/components/code-preview.vue new file mode 100644 index 00000000..0b6a75ac --- /dev/null +++ b/src/views/dev_tools/components/code-preview.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/views/dev_tools/components/data-table.vue b/src/views/dev_tools/components/data-table.vue new file mode 100644 index 00000000..0b418d0f --- /dev/null +++ b/src/views/dev_tools/components/data-table.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/views/dev_tools/components/relations-add.vue b/src/views/dev_tools/components/relations-add.vue new file mode 100644 index 00000000..4b466f0e --- /dev/null +++ b/src/views/dev_tools/components/relations-add.vue @@ -0,0 +1,160 @@ + + diff --git a/src/views/error/403.vue b/src/views/error/403.vue new file mode 100644 index 00000000..53905ece --- /dev/null +++ b/src/views/error/403.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/views/error/404.vue b/src/views/error/404.vue new file mode 100644 index 00000000..caa3d7f0 --- /dev/null +++ b/src/views/error/404.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/views/error/components/error.vue b/src/views/error/components/error.vue new file mode 100644 index 00000000..5f0b9590 --- /dev/null +++ b/src/views/error/components/error.vue @@ -0,0 +1,57 @@ + + + + diff --git a/src/views/label/edit.vue b/src/views/label/edit.vue new file mode 100644 index 00000000..b160e608 --- /dev/null +++ b/src/views/label/edit.vue @@ -0,0 +1,109 @@ + + + diff --git a/src/views/label/index.vue b/src/views/label/index.vue new file mode 100644 index 00000000..0863797e --- /dev/null +++ b/src/views/label/index.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/views/material/index.vue b/src/views/material/index.vue new file mode 100644 index 00000000..7fcfbd91 --- /dev/null +++ b/src/views/material/index.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/src/views/organization/department/edit.vue b/src/views/organization/department/edit.vue new file mode 100644 index 00000000..e33309fe --- /dev/null +++ b/src/views/organization/department/edit.vue @@ -0,0 +1,161 @@ + + diff --git a/src/views/organization/department/index.vue b/src/views/organization/department/index.vue new file mode 100644 index 00000000..beba6630 --- /dev/null +++ b/src/views/organization/department/index.vue @@ -0,0 +1,166 @@ + + diff --git a/src/views/organization/post/edit.vue b/src/views/organization/post/edit.vue new file mode 100644 index 00000000..f6b15742 --- /dev/null +++ b/src/views/organization/post/edit.vue @@ -0,0 +1,120 @@ + + diff --git a/src/views/organization/post/index.vue b/src/views/organization/post/index.vue new file mode 100644 index 00000000..9a6cc1d4 --- /dev/null +++ b/src/views/organization/post/index.vue @@ -0,0 +1,128 @@ + + diff --git a/src/views/permission/admin/edit.vue b/src/views/permission/admin/edit.vue new file mode 100644 index 00000000..decf6a56 --- /dev/null +++ b/src/views/permission/admin/edit.vue @@ -0,0 +1,274 @@ + + diff --git a/src/views/permission/admin/index.vue b/src/views/permission/admin/index.vue new file mode 100644 index 00000000..612c62ba --- /dev/null +++ b/src/views/permission/admin/index.vue @@ -0,0 +1,183 @@ + + + diff --git a/src/views/permission/menu/edit.vue b/src/views/permission/menu/edit.vue new file mode 100644 index 00000000..35a290b0 --- /dev/null +++ b/src/views/permission/menu/edit.vue @@ -0,0 +1,299 @@ + + diff --git a/src/views/permission/menu/index.vue b/src/views/permission/menu/index.vue new file mode 100644 index 00000000..3e6360f4 --- /dev/null +++ b/src/views/permission/menu/index.vue @@ -0,0 +1,151 @@ + + diff --git a/src/views/permission/role/auth.vue b/src/views/permission/role/auth.vue new file mode 100644 index 00000000..616edb7f --- /dev/null +++ b/src/views/permission/role/auth.vue @@ -0,0 +1,154 @@ + + diff --git a/src/views/permission/role/edit.vue b/src/views/permission/role/edit.vue new file mode 100644 index 00000000..f4ec48b1 --- /dev/null +++ b/src/views/permission/role/edit.vue @@ -0,0 +1,101 @@ + + diff --git a/src/views/permission/role/index.vue b/src/views/permission/role/index.vue new file mode 100644 index 00000000..bae80761 --- /dev/null +++ b/src/views/permission/role/index.vue @@ -0,0 +1,107 @@ + + + diff --git a/src/views/setting/dict/data/edit.vue b/src/views/setting/dict/data/edit.vue new file mode 100644 index 00000000..8ebd1427 --- /dev/null +++ b/src/views/setting/dict/data/edit.vue @@ -0,0 +1,126 @@ + + diff --git a/src/views/setting/dict/data/index.vue b/src/views/setting/dict/data/index.vue new file mode 100644 index 00000000..8d1fed0c --- /dev/null +++ b/src/views/setting/dict/data/index.vue @@ -0,0 +1,181 @@ + + + diff --git a/src/views/setting/dict/type/edit.vue b/src/views/setting/dict/type/edit.vue new file mode 100644 index 00000000..887e73ef --- /dev/null +++ b/src/views/setting/dict/type/edit.vue @@ -0,0 +1,109 @@ + + diff --git a/src/views/setting/dict/type/index.vue b/src/views/setting/dict/type/index.vue new file mode 100644 index 00000000..58860e17 --- /dev/null +++ b/src/views/setting/dict/type/index.vue @@ -0,0 +1,170 @@ + + + diff --git a/src/views/setting/storage/edit.vue b/src/views/setting/storage/edit.vue new file mode 100644 index 00000000..ed87fbbe --- /dev/null +++ b/src/views/setting/storage/edit.vue @@ -0,0 +1,194 @@ + + diff --git a/src/views/setting/storage/index.vue b/src/views/setting/storage/index.vue new file mode 100644 index 00000000..6f68e537 --- /dev/null +++ b/src/views/setting/storage/index.vue @@ -0,0 +1,65 @@ + + diff --git a/src/views/setting/system/cache.vue b/src/views/setting/system/cache.vue new file mode 100644 index 00000000..6fc2e2e9 --- /dev/null +++ b/src/views/setting/system/cache.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/setting/system/environment.vue b/src/views/setting/system/environment.vue new file mode 100644 index 00000000..0140a868 --- /dev/null +++ b/src/views/setting/system/environment.vue @@ -0,0 +1,79 @@ + + + + + + diff --git a/src/views/setting/system/journal.vue b/src/views/setting/system/journal.vue new file mode 100644 index 00000000..dfd7e9fe --- /dev/null +++ b/src/views/setting/system/journal.vue @@ -0,0 +1,149 @@ + + + + + + diff --git a/src/views/setting/website/filing.vue b/src/views/setting/website/filing.vue new file mode 100644 index 00000000..26c9f286 --- /dev/null +++ b/src/views/setting/website/filing.vue @@ -0,0 +1,89 @@ + + + + diff --git a/src/views/setting/website/information.vue b/src/views/setting/website/information.vue new file mode 100644 index 00000000..12e71456 --- /dev/null +++ b/src/views/setting/website/information.vue @@ -0,0 +1,219 @@ + + + + + + diff --git a/src/views/setting/website/protocol.vue b/src/views/setting/website/protocol.vue new file mode 100644 index 00000000..cf45972a --- /dev/null +++ b/src/views/setting/website/protocol.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/views/user/setting.vue b/src/views/user/setting.vue new file mode 100644 index 00000000..4341d9ab --- /dev/null +++ b/src/views/user/setting.vue @@ -0,0 +1,156 @@ + + + + + + diff --git a/src/views/workbench/index.vue b/src/views/workbench/index.vue new file mode 100644 index 00000000..290d2568 --- /dev/null +++ b/src/views/workbench/index.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000..1173ccac --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,119 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], + theme: { + colors: { + white: 'var(--color-white)', + primary: { + DEFAULT: 'var(--el-color-primary)', + 'light-3': 'var(--el-color-primary-light-3)', + 'light-5': 'var(--el-color-primary-light-5)', + 'light-7': 'var(--el-color-primary-light-7)', + 'light-8': 'var(--el-color-primary-light-8)', + 'light-9': 'var(--el-color-primary-light-9)', + 'dark-2': 'var(--el-color-primary-dark-2)' + }, + success: 'var(--el-color-success)', + warning: 'var(--el-color-warning)', + danger: 'var(--el-color-danger)', + error: 'var(--el-color-error)', + info: 'var(--el-color-info)', + body: 'var(--el-bg-color)', + page: 'var(--el-bg-color-page)', + 'tx-primary': 'var(--el-text-color-primary)', + 'tx-regular': 'var(--el-text-color-regular)', + 'tx-secondary': 'var(--el-text-color-secondary)', + 'tx-placeholder': 'var(--el-text-color-placeholder)', + 'tx-disabled': 'var(--el-text-color-disabled)', + br: 'var(--el-border-color)', + 'br-light': 'var(--el-border-color-light)', + 'br-extra-light': 'var(--el-border-color-extra-light)', + 'br-dark': 'var( --el-border-color-dark)', + fill: 'var(--el-fill-color)', + 'fill-light': 'var(--el-fill-color-light)', + 'fill-lighter': 'var(--el-fill-color-lighter)', + mask: 'var(--el-mask-color)' + }, + fontFamily: { + sans: ['PingFang SC', 'Arial', 'Hiragino Sans GB', 'Microsoft YaHei', 'sans-serif'] + }, + boxShadow: { + DEFAULT: 'var(--el-box-shadow)', + light: 'var(--el-box-shadow-light)', + lighter: 'var(--el-box-shadow-lighter)', + dark: 'var(--el-box-shadow-dark)' + }, + fontSize: { + xs: 'var(--el-font-size-extra-small)', + sm: 'var( --el-font-size-small)', + base: 'var( --el-font-size-base)', + lg: 'var( --el-font-size-medium)', + xl: 'var( --el-font-size-large)', + '2xl': 'var( --el-font-size-extra-large)', + '3xl': '20px', + '4xl': '24px', + '5xl': '28px', + '6xl': '30px', + '7xl': '36px', + '8xl': '48px', + '9xl': '60px' + }, + spacing: { + px: '1px', + 0: '0px', + 0.5: '2px', + 1: '4px', + 1.5: '6px', + 2: '8px', + 2.5: '10px', + 3: '12px', + 3.5: '14px', + 4: '16px', + 5: '20px', + 6: '24px', + 7: '28px', + 8: '32px', + 9: '36px', + 10: '40px', + 11: '44px', + 12: '48px', + 14: '56px', + 16: '64px', + 20: '80px', + 24: '96px', + 28: '112px', + 32: '128px', + 36: '144px', + 40: '160px', + 44: '176px', + 48: '192px', + 52: '208px', + 56: '224px', + 60: '240px', + 64: '256px', + 72: '288px', + 80: '320px', + 96: '384px' + }, + lineHeight: { + none: '1', + tight: '1.25', + snug: '1.375', + normal: '1.5', + relaxed: '1.625', + loose: '2', + 3: '12px', + 4: '16px', + 5: '20px', + 6: '24px', + 7: '28px', + 8: '32px', + 9: '36px', + 10: '40px' + } + }, + + plugins: [ + require('@tailwindcss/line-clamp') // 引入插件 + ] +} diff --git a/tsconfig.config.json b/tsconfig.config.json new file mode 100644 index 00000000..93fe5846 --- /dev/null +++ b/tsconfig.config.json @@ -0,0 +1,8 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["vite.config.*"], + "compilerOptions": { + "composite": true, + "types": ["node"] + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..53733dfb --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": [ + "global.d.ts", + "src/**/*", + "src/**/*.vue", + "components.d.ts", + "auto-imports.d.ts", + "typings/**/*.d.ts" + ], + "compilerOptions": { + "isolatedModules": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "references": [ + { + "path": "./tsconfig.config.json" + } + ] +} diff --git a/typings/index.d.ts b/typings/index.d.ts new file mode 100644 index 00000000..6c0aab2b --- /dev/null +++ b/typings/index.d.ts @@ -0,0 +1,5 @@ +declare module 'vue3-video-play' + +declare module 'css-color-function' + +type PromiseFun = (...arg: any[]) => Promise diff --git a/typings/router.d.ts b/typings/router.d.ts new file mode 100644 index 00000000..9fae641b --- /dev/null +++ b/typings/router.d.ts @@ -0,0 +1,14 @@ +import 'vue-router' +declare module 'vue-router' { + // 扩展 RouteMeta + interface RouteMeta { + type?: string + perms?: string + title?: string + icon?: string + hidden?: boolean + activeMenu?: string + hideTab?: boolean + keepAlive?: boolean + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 00000000..766ed39a --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,60 @@ +import { fileURLToPath, URL } from 'url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' +import { createStyleImportPlugin, ElementPlusResolve } from 'vite-plugin-style-import' +import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' +import vueSetupExtend from 'vite-plugin-vue-setup-extend' +// import legacyPlugin from '@vitejs/plugin-legacy' +// https://vitejs.dev/config/ +export default defineConfig({ + base: '/admin/', + server: { + host: '0.0.0.0' + }, + plugins: [ + vue(), + vueJsx(), + AutoImport({ + imports: ['vue', 'vue-router'], + resolvers: [ElementPlusResolver()], + eslintrc: { + enabled: true + } + }), + Components({ + directoryAsNamespace: true, + resolvers: [ElementPlusResolver()] + }), + createStyleImportPlugin({ + resolves: [ElementPlusResolve()] + }), + createSvgIconsPlugin({ + // 配置路劲在你的src里的svg存放文件 + iconDirs: [fileURLToPath(new URL('./src/assets/icons', import.meta.url))], + symbolId: 'local-icon-[dir]-[name]' + }), + vueSetupExtend() + // legacyPlugin({ + // targets: ['defaults', 'IE 11'] + // }) + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + build: { + rollupOptions: { + manualChunks(id) { + if (id.includes('node_modules')) { + return id.toString().split('node_modules/')[1].split('/')[0].toString() + } + } + } + } +})