From c08fec74c9c99dacbb04c67751d5a97351eabe9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Fri, 4 Oct 2024 21:48:38 +0800 Subject: [PATCH] 5.0 --- .../java/com/gitee/sop/doc/SidebarTest.java | 2 +- pom.xml | 2 +- sop-admin/pom.xml | 11 +- sop-admin/sop-admin-backend/.gitignore | 33 + sop-admin/sop-admin-backend/pom.xml | 294 + .../SopAdminBackendApplication.java | 15 + .../adminbackend/common/ConfigKeyEnum.java | 22 + .../sop/adminbackend/common/IConfig.java | 9 + .../gitee/sop/adminbackend/common/Result.java | 46 + .../adminbackend/common/SpringContext.java | 32 + .../gitee/sop/adminbackend/common/User.java | 24 + .../common/exception/BizException.java | 10 + .../common/exception/ErrorCode.java | 30 + .../common/exception/ErrorTokenException.java | 7 + .../common/exception/ExceptionCode.java | 8 + .../common/exception/JwtCreateException.java | 11 + .../common/exception/JwtErrorException.java | 12 + .../common/exception/JwtExpiredException.java | 11 + .../exception/LoginFailureException.java | 18 + .../exception/SetPasswordException.java | 11 + .../sop/adminbackend/config/AdminConfig.java | 17 + .../sop/adminbackend/config/Configs.java | 46 + .../config/SopAdminConfiguration.java | 18 + .../ExceptionHandlerController.java | 52 + .../controller/sys/LoginController.java | 47 + .../sys/SysAdminUserController.java | 76 + .../controller/sys/req/LoginParam.java | 14 + .../controller/sys/resp/LoginResultVO.java | 53 + .../sop/adminbackend/dao/entity/ApiInfo.java | 73 + .../sop/adminbackend/dao/entity/IsvInfo.java | 43 + .../sop/adminbackend/dao/entity/IsvKeys.java | 55 + .../adminbackend/dao/entity/SysAdminUser.java | 64 + .../adminbackend/dao/entity/SysConfig.java | 38 + .../dao/mapper/ApiInfoMapper.java | 19 + .../dao/mapper/IsvInfoMapper.java | 15 + .../dao/mapper/IsvKeysMapper.java | 15 + .../dao/mapper/SysAdminUserMapper.java | 11 + .../dao/mapper/SysConfigMapper.java | 11 + .../dao/mapper/UpgradeMapper.java | 27 + .../service/sys/SysAdminUserService.java | 40 + .../service/sys/SysConfigService.java | 102 + .../service/sys/UpgradeService.java | 67 + .../service/sys/dto/SystemConfigDTO.java | 18 + .../service/sys/login/LoginService.java | 153 + .../sys/login/NotNullStringBuilder.java | 40 + .../sys/login/ThirdPartyLoginManager.java | 17 + .../service/sys/login/UserCacheManager.java | 21 + .../service/sys/login/dto/LoginDTO.java | 11 + .../service/sys/login/dto/LoginForm.java | 12 + .../service/sys/login/dto/LoginResult.java | 20 + .../service/sys/login/dto/LoginUser.java | 83 + .../sys/login/enums/AdminUserStatusEnum.java | 34 + .../service/sys/login/enums/RegTypeEnum.java | 30 + .../login/impl/DefaultUserCacheManager.java | 90 + .../gitee/sop/adminbackend/util/CopyUtil.java | 344 + .../sop/adminbackend/util/GenerateUtil.java | 22 + .../gitee/sop/adminbackend/util/IdGen.java | 171 + .../gitee/sop/adminbackend/util/JwtUtil.java | 97 + .../sop/adminbackend/util/PasswordUtil.java | 64 + .../main/resources/application-dev.properties | 8 + .../resources/application-test.properties | 2 + .../src/main/resources/application.properties | 33 + .../mybatis/mapper/UpgradeMapper.xml | 22 + .../main/resources/mybatis/mybatisConfig.xml | 26 + .../com/gitee/sop/adminbackend/BaseTest.java | 13 + .../service/LoginServiceTest.java | 44 + .../adminbackend/service/PasswordTest.java | 37 + sop-admin/sop-admin-frontend/.browserslistrc | 4 + sop-admin/sop-admin-frontend/.dockerignore | 21 + sop-admin/sop-admin-frontend/.editorconfig | 14 + sop-admin/sop-admin-frontend/.env | 5 + sop-admin/sop-admin-frontend/.env.development | 9 +- sop-admin/sop-admin-frontend/.env.production | 13 + sop-admin/sop-admin-frontend/.env.staging | 16 + sop-admin/sop-admin-frontend/.eslintignore | 3 - sop-admin/sop-admin-frontend/.eslintrc.js | 70 - sop-admin/sop-admin-frontend/.gitignore | 22 +- .../sop-admin-frontend/.husky/commit-msg | 6 +- sop-admin/sop-admin-frontend/.husky/common.sh | 9 + .../sop-admin-frontend/.husky/pre-commit | 8 +- sop-admin/sop-admin-frontend/.lintstagedrc | 20 + .../sop-admin-frontend/.markdownlint.json | 11 + sop-admin/sop-admin-frontend/.npmrc | 4 + sop-admin/sop-admin-frontend/.nvmrc | 1 + sop-admin/sop-admin-frontend/.prettierignore | 7 - sop-admin/sop-admin-frontend/.prettierrc.js | 16 +- sop-admin/sop-admin-frontend/.stylelintignore | 4 + sop-admin/sop-admin-frontend/.stylelintrc.js | 30 - .../.vscode/extensions.json | 19 + .../sop-admin-frontend/.vscode/settings.json | 43 + .../.vscode/vue3.0.code-snippets | 22 + .../.vscode/vue3.2.code-snippets | 17 + .../.vscode/vue3.3.code-snippets | 20 + sop-admin/sop-admin-frontend/Dockerfile | 20 + sop-admin/sop-admin-frontend/LICENSE | 21 + sop-admin/sop-admin-frontend/README.md | 51 + sop-admin/sop-admin-frontend/babel.config.js | 3 - sop-admin/sop-admin-frontend/build/cdn.ts | 60 + .../sop-admin-frontend/build/compress.ts | 63 + sop-admin/sop-admin-frontend/build/info.ts | 57 + .../sop-admin-frontend/build/optimize.ts | 34 + sop-admin/sop-admin-frontend/build/plugins.ts | 76 + sop-admin/sop-admin-frontend/build/utils.ts | 110 + .../sop-admin-frontend/commitlint.config.js | 36 +- sop-admin/sop-admin-frontend/components.d.ts | 15 - .../config/plugin/arcoResolver.ts | 19 - .../config/plugin/arcoStyleImport.ts | 12 - .../config/plugin/compress.ts | 34 - .../config/plugin/imagemin.ts | 37 - .../config/plugin/visualizer.ts | 18 - .../sop-admin-frontend/config/utils/index.ts | 9 - .../config/vite.config.base.ts | 51 - .../config/vite.config.dev.ts | 23 - .../config/vite.config.prod.ts | 31 - sop-admin/sop-admin-frontend/eslint.config.js | 181 + sop-admin/sop-admin-frontend/index.html | 82 +- sop-admin/sop-admin-frontend/locales/en.yaml | 91 + .../sop-admin-frontend/locales/zh-CN.yaml | 91 + .../sop-admin-frontend/mock/asyncRoutes.ts | 37 + sop-admin/sop-admin-frontend/mock/login.ts | 42 + .../sop-admin-frontend/mock/refreshToken.ts | 27 + sop-admin/sop-admin-frontend/package.json | 239 +- sop-admin/sop-admin-frontend/pnpm-lock.yaml | 10897 ++++++---------- .../sop-admin-frontend/postcss.config.js | 12 + .../sop-admin-frontend/public/favicon.ico | Bin 0 -> 1270 bytes sop-admin/sop-admin-frontend/public/logo.svg | 1 + .../public/platform-config.json | 27 + sop-admin/sop-admin-frontend/src/App.vue | 50 +- .../sop-admin-frontend/src/api/apiTable.ts | 56 - .../sop-admin-frontend/src/api/dashboard.ts | 22 - .../sop-admin-frontend/src/api/interceptor.ts | 77 - .../sop-admin-frontend/src/api/message.ts | 38 - .../sop-admin-frontend/src/api/routes.ts | 10 + sop-admin/sop-admin-frontend/src/api/user.ts | 64 +- .../src/assets/iconfont/iconfont.css | 27 + .../src/assets/iconfont/iconfont.js | 69 + .../src/assets/iconfont/iconfont.json | 30 + .../src/assets/iconfont/iconfont.ttf | Bin 0 -> 3904 bytes .../src/assets/iconfont/iconfont.woff | Bin 0 -> 2484 bytes .../src/assets/iconfont/iconfont.woff2 | Bin 0 -> 2016 bytes .../src/assets/login/avatar.svg | 1 + .../src/assets/login/illustration.svg | 1 + .../sop-admin-frontend/src/assets/logo.svg | 12 - .../src/assets/status/403.svg | 1 + .../src/assets/status/404.svg | 1 + .../src/assets/status/500.svg | 1 + .../src/assets/style/breakpoint.less | 19 - .../src/assets/style/global.less | 94 - .../src/assets/svg/back_top.svg | 1 + .../src/assets/svg/dark.svg | 1 + .../sop-admin-frontend/src/assets/svg/day.svg | 1 + .../src/assets/svg/enter_outlined.svg | 1 + .../src/assets/svg/exit_screen.svg | 1 + .../src/assets/svg/full_screen.svg | 1 + .../src/assets/svg/globalization.svg | 1 + .../src/assets/svg/keyboard_esc.svg | 1 + .../src/assets/svg/system.svg | 1 + .../src/assets/table-bar/collapse.svg | 1 + .../src/assets/table-bar/drag.svg | 1 + .../src/assets/table-bar/expand.svg | 1 + .../src/assets/table-bar/refresh.svg | 1 + .../src/assets/table-bar/settings.svg | 1 + .../sop-admin-frontend/src/assets/user.jpg | Bin 0 -> 3694 bytes .../sop-admin-frontend/src/assets/world.json | 1 - .../src/components/ReAuth/index.ts | 5 + .../src/components/ReAuth/src/auth.tsx | 20 + .../src/components/ReCol/index.ts | 29 + .../src/components/ReDialog/index.ts | 69 + .../src/components/ReDialog/index.vue | 206 + .../src/components/ReDialog/type.ts | 275 + .../src/components/ReIcon/index.ts | 12 + .../src/components/ReIcon/src/hooks.ts | 61 + .../src/components/ReIcon/src/iconfont.ts | 48 + .../ReIcon/src/iconifyIconOffline.ts | 30 + .../ReIcon/src/iconifyIconOnline.ts | 30 + .../src/components/ReIcon/src/offlineIcon.ts | 14 + .../src/components/ReIcon/src/types.ts | 20 + .../src/components/RePerms/index.ts | 5 + .../src/components/RePerms/src/perms.tsx | 20 + .../src/components/RePureTableBar/index.ts | 5 + .../src/components/RePureTableBar/src/bar.tsx | 393 + .../src/components/ReSegmented/index.ts | 8 + .../src/components/ReSegmented/src/index.css | 157 + .../src/components/ReSegmented/src/index.tsx | 216 + .../src/components/ReSegmented/src/type.ts | 20 + .../src/components/ReText/index.ts | 7 + .../src/components/ReText/src/index.vue | 66 + .../src/components/breadcrumb/index.vue | 35 - .../src/components/chart/index.vue | 47 - .../src/components/footer/index.vue | 16 - .../src/components/global-setting/block.vue | 79 - .../global-setting/form-wrapper.vue | 39 - .../src/components/global-setting/index.vue | 98 - .../src/components/index.ts | 35 - .../src/components/menu/index.vue | 160 - .../src/components/menu/use-menu-tree.ts | 69 - .../src/components/message-box/index.vue | 129 - .../src/components/message-box/list.vue | 149 - .../components/message-box/locale/en-US.ts | 13 - .../components/message-box/locale/zh-CN.ts | 13 - .../src/components/navbar/index.vue | 323 - .../src/components/tab-bar/index.vue | 101 - .../src/components/tab-bar/readme.md | 12 - .../src/components/tab-bar/tab-item.vue | 200 - .../sop-admin-frontend/src/config/index.ts | 55 + .../src/config/settings.json | 17 - .../sop-admin-frontend/src/directive/index.ts | 8 - .../src/directive/permission/index.ts | 30 - .../src/directives/auth/index.ts | 15 + .../src/directives/copy/index.ts | 33 + .../src/directives/index.ts | 6 + .../src/directives/longpress/index.ts | 63 + .../src/directives/optimize/index.ts | 68 + .../src/directives/perms/index.ts | 15 + .../src/directives/ripple/index.scss | 48 + .../src/directives/ripple/index.ts | 229 + sop-admin/sop-admin-frontend/src/env.d.ts | 11 - .../src/hooks/chart-option.ts | 27 - .../sop-admin-frontend/src/hooks/loading.ts | 16 - .../sop-admin-frontend/src/hooks/locale.ts | 22 - .../src/hooks/permission.ts | 33 - .../sop-admin-frontend/src/hooks/request.ts | 26 - .../src/hooks/responsive.ts | 32 - .../sop-admin-frontend/src/hooks/themes.ts | 12 - .../sop-admin-frontend/src/hooks/user.ts | 24 - .../sop-admin-frontend/src/hooks/visible.ts | 16 - .../layout/components/lay-content/index.vue | 215 + .../layout/components/lay-footer/index.vue | 31 + .../src/layout/components/lay-frame/index.vue | 79 + .../layout/components/lay-navbar/index.vue | 191 + .../lay-notice/components/NoticeItem.vue | 177 + .../lay-notice/components/NoticeList.vue | 24 + .../src/layout/components/lay-notice/data.ts | 99 + .../layout/components/lay-notice/index.vue | 98 + .../src/layout/components/lay-panel/index.vue | 149 + .../lay-search/components/SearchFooter.vue | 63 + .../lay-search/components/SearchHistory.vue | 204 + .../components/SearchHistoryItem.vue | 53 + .../lay-search/components/SearchModal.vue | 338 + .../lay-search/components/SearchResult.vue | 114 + .../layout/components/lay-search/index.vue | 21 + .../src/layout/components/lay-search/types.ts | 20 + .../layout/components/lay-setting/index.vue | 642 + .../components/lay-sidebar/NavHorizontal.vue | 176 + .../layout/components/lay-sidebar/NavMix.vue | 197 + .../components/lay-sidebar/NavVertical.vue | 137 + .../components/SidebarBreadCrumb.vue | 121 + .../components/SidebarCenterCollapse.vue | 75 + .../components/SidebarExtraIcon.vue | 20 + .../components/SidebarFullScreen.vue | 30 + .../lay-sidebar/components/SidebarItem.vue | 223 + .../components/SidebarLeftCollapse.vue | 73 + .../components/SidebarLinkItem.vue | 32 + .../lay-sidebar/components/SidebarLogo.vue | 72 + .../components/SidebarTopCollapse.vue | 38 + .../lay-tag/components/TagChrome.vue | 33 + .../src/layout/components/lay-tag/index.scss | 371 + .../src/layout/components/lay-tag/index.vue | 685 + .../src/layout/default-layout.vue | 178 - .../sop-admin-frontend/src/layout/frame.vue | 97 + .../src/layout/hooks/useBoolean.ts | 26 + .../src/layout/hooks/useDataThemeChange.ts | 145 + .../src/layout/hooks/useLayout.ts | 64 + .../src/layout/hooks/useMultiFrame.ts | 25 + .../src/layout/hooks/useNav.ts | 175 + .../src/layout/hooks/useTag.ts | 248 + .../src/layout/hooks/useTranslationLang.ts | 41 + .../sop-admin-frontend/src/layout/index.vue | 237 + .../src/layout/page-layout.vue | 25 - .../src/layout/redirect.vue | 24 + .../src/layout/theme/index.ts | 129 + .../sop-admin-frontend/src/layout/types.ts | 92 + .../sop-admin-frontend/src/locale/en-US.ts | 28 - .../src/locale/en-US/settings.ts | 29 - .../sop-admin-frontend/src/locale/index.ts | 22 - .../sop-admin-frontend/src/locale/zh-CN.ts | 28 - .../src/locale/zh-CN/settings.ts | 29 - sop-admin/sop-admin-frontend/src/main.ts | 95 +- .../sop-admin-frontend/src/mock/index.ts | 10 - .../src/mock/message-box.ts | 85 - sop-admin/sop-admin-frontend/src/mock/user.ts | 105 - .../sop-admin-frontend/src/plugins/echarts.ts | 44 + .../src/plugins/elementPlus.ts | 248 + .../sop-admin-frontend/src/plugins/i18n.ts | 116 + .../src/router/app-menus/index.ts | 20 - .../src/router/constants.ts | 18 - .../src/router/guard/index.ts | 17 - .../src/router/guard/permission.ts | 55 - .../src/router/guard/userLoginInfo.ts | 43 - .../sop-admin-frontend/src/router/index.ts | 231 +- .../src/router/modules/error.ts | 38 + .../src/router/modules/home.ts | 26 + .../src/router/modules/remaining.ts | 31 + .../src/router/routes/base.ts | 31 - .../src/router/routes/externalModules/arco.ts | 10 - .../src/router/routes/externalModules/faq.ts | 10 - .../src/router/routes/index.ts | 25 - .../src/router/routes/modules/dashboard.ts | 28 - .../src/router/routes/types.ts | 20 - .../src/router/typings.d.ts | 16 - .../sop-admin-frontend/src/router/utils.ts | 408 + .../sop-admin-frontend/src/store/index.ts | 14 +- .../src/store/modules/app.ts | 89 + .../src/store/modules/app/index.ts | 77 - .../src/store/modules/app/types.ts | 20 - .../src/store/modules/epTheme.ts | 50 + .../src/store/modules/multiTags.ts | 146 + .../src/store/modules/permission.ts | 75 + .../src/store/modules/settings.ts | 36 + .../src/store/modules/tab-bar/index.ts | 74 - .../src/store/modules/tab-bar/types.ts | 12 - .../src/store/modules/user.ts | 110 + .../src/store/modules/user/index.ts | 91 - .../src/store/modules/user/types.ts | 19 - .../sop-admin-frontend/src/store/types.ts | 47 + .../sop-admin-frontend/src/store/utils.ts | 28 + .../sop-admin-frontend/src/style/dark.scss | 182 + .../src/style/element-plus.scss | 188 + .../sop-admin-frontend/src/style/index.scss | 26 + .../sop-admin-frontend/src/style/login.css | 96 + .../sop-admin-frontend/src/style/reset.scss | 257 + .../sop-admin-frontend/src/style/sidebar.scss | 729 ++ .../sop-admin-frontend/src/style/tailwind.css | 21 + .../src/style/transition.scss | 54 + .../sop-admin-frontend/src/types/echarts.ts | 10 - .../sop-admin-frontend/src/types/global.ts | 37 - .../sop-admin-frontend/src/types/mock.ts | 5 - .../sop-admin-frontend/src/utils/auth.ts | 152 +- sop-admin/sop-admin-frontend/src/utils/env.ts | 3 - .../sop-admin-frontend/src/utils/event.ts | 27 - .../src/utils/globalPolyfills.ts | 7 + .../src/utils/http/index.ts | 206 + .../src/utils/http/types.d.ts | 47 + .../sop-admin-frontend/src/utils/index.ts | 25 - sop-admin/sop-admin-frontend/src/utils/is.ts | 53 - .../src/utils/localforage/index.ts | 109 + .../src/utils/localforage/types.d.ts | 166 + .../sop-admin-frontend/src/utils/message.ts | 85 + .../sop-admin-frontend/src/utils/mitt.ts | 13 + .../sop-admin-frontend/src/utils/monitor.ts | 28 - .../src/utils/preventDefault.ts | 28 + .../sop-admin-frontend/src/utils/print.ts | 213 + .../src/utils/progress/index.ts | 17 + .../sop-admin-frontend/src/utils/propTypes.ts | 39 + .../src/utils/responsive.ts | 46 + .../src/utils/route-listener.ts | 31 - .../src/utils/setup-mock.ts | 23 - sop-admin/sop-admin-frontend/src/utils/sso.ts | 59 + .../sop-admin-frontend/src/utils/tree.ts | 188 + .../src/views/api/table/index.vue | 514 - .../src/views/api/table/locale/en-US.ts | 44 - .../src/views/api/table/locale/zh-CN.ts | 45 - .../workplace/components/announcement.vue | 71 - .../dashboard/workplace/components/banner.vue | 35 - .../workplace/components/carousel.vue | 24 - .../components/categories-percent.vue | 114 - .../workplace/components/content-chart.vue | 200 - .../workplace/components/data-panel.vue | 131 - .../dashboard/workplace/components/docs.vue | 42 - .../workplace/components/popular-content.vue | 118 - .../workplace/components/quick-operation.vue | 35 - .../workplace/components/recently-visited.vue | 44 - .../src/views/dashboard/workplace/index.vue | 148 - .../views/dashboard/workplace/locale/en-US.ts | 39 - .../views/dashboard/workplace/locale/zh-CN.ts | 38 - .../src/views/dashboard/workplace/mock.ts | 129 - .../src/views/error/403.vue | 70 + .../src/views/error/404.vue | 70 + .../src/views/error/500.vue | 70 + .../src/views/login/components/banner.vue | 84 - .../src/views/login/components/login-form.vue | 165 - .../src/views/login/index.vue | 278 +- .../src/views/login/locale/en-US.ts | 21 - .../src/views/login/locale/zh-CN.ts | 19 - .../src/views/login/utils/motion.ts | 40 + .../src/views/login/utils/rule.ts | 27 + .../src/views/login/utils/static.ts | 5 + .../src/views/not-found/index.vue | 30 - .../src/views/permission/button/index.vue | 99 + .../src/views/permission/button/perms.vue | 109 + .../src/views/permission/page/index.vue | 66 + .../src/views/redirect/index.vue | 16 - .../views/serviceManage/apiManage/index.vue | 151 + .../src/views/welcome/index.vue | 9 + .../sop-admin-frontend/stylelint.config.js | 87 + .../sop-admin-frontend/tailwind.config.ts | 19 + sop-admin/sop-admin-frontend/tsconfig.json | 57 +- .../sop-admin-frontend/types/directives.d.ts | 28 + .../types/global-components.d.ts | 134 + .../sop-admin-frontend/types/global.d.ts | 193 + sop-admin/sop-admin-frontend/types/index.d.ts | 82 + .../sop-admin-frontend/types/router.d.ts | 108 + .../sop-admin-frontend/types/shims-tsx.d.ts | 22 + .../sop-admin-frontend/types/shims-vue.d.ts | 10 + sop-admin/sop-admin-frontend/vite.config.ts | 62 + sop-admin/sop-admin-frontend/yarn.lock | 8429 ------------ .../gitee/sop/adminserver/api/IdParam.java | 2 +- .../sop/adminserver/api/demo/GoodsApi.java | 2 +- .../gitee/sop/adminserver/api/isv/IsvApi.java | 2 +- .../sop/adminserver/api/isv/RoleApi.java | 2 +- .../api/isv/param/IsvInfoForm.java | 2 +- .../api/isv/param/IsvInfoFormAdd.java | 2 +- .../api/isv/param/IsvInfoFormUpdate.java | 2 +- .../api/isv/param/IsvKeysFormUpdate.java | 2 +- .../adminserver/api/isv/param/IsvKeysGen.java | 2 +- .../api/isv/param/IsvPageParam.java | 2 +- .../adminserver/api/isv/param/RoleForm.java | 2 +- .../api/isv/param/RolePageParam.java | 2 +- .../api/isv/result/IsvAppKeyGenVO.java | 2 +- .../api/isv/result/IsvDetailDTO.java | 2 +- .../adminserver/api/isv/result/IsvInfoVO.java | 2 +- .../api/isv/result/IsvKeysGenVO.java | 2 +- .../adminserver/api/isv/result/IsvKeysVO.java | 2 +- .../adminserver/api/isv/result/RoleVO.java | 2 +- .../api/service/IPBlacklistApi.java | 2 +- .../adminserver/api/service/LimitNewApi.java | 2 +- .../sop/adminserver/api/service/LogApi.java | 2 +- .../adminserver/api/service/MonitorApi.java | 2 +- .../api/service/MonitorNewApi.java | 2 +- .../adminserver/api/service/ResourceApi.java | 2 +- .../sop/adminserver/api/service/RouteApi.java | 2 +- .../adminserver/api/service/ServiceApi.java | 2 +- .../api/service/param/ConfigIpBlackForm.java | 2 +- .../param/ConfigIpBlacklistPageParam.java | 2 +- .../param/InstanceMonitorSearchParam.java | 2 +- .../api/service/param/LimitNewAddParam.java | 2 +- .../api/service/param/LimitNewParam.java | 2 +- .../service/param/LimitNewUpdateParam.java | 2 +- .../api/service/param/LimitParam.java | 2 +- .../param/LogMonitorInstanceAddParam.java | 2 +- .../service/param/MonitorErrorMsgParam.java | 2 +- .../param/MonitorInfoErrorSolveParam.java | 2 +- .../api/service/param/MonitorSearchParam.java | 2 +- .../api/service/param/RouteAddParam.java | 2 +- .../api/service/param/RouteDeleteParam.java | 2 +- .../api/service/param/RouteParam.java | 2 +- .../service/param/RoutePermissionParam.java | 2 +- .../api/service/param/RouteSearchParam.java | 2 +- .../service/param/RouteStatusUpdateParam.java | 2 +- .../api/service/param/RouteUpdateParam.java | 2 +- .../api/service/param/ServiceAddParam.java | 2 +- .../service/param/ServiceGrayConfigParam.java | 2 +- .../api/service/param/ServiceIdParam.java | 2 +- .../param/ServiceInstanceGrayParam.java | 2 +- .../service/param/ServiceInstanceParam.java | 2 +- .../api/service/param/ServiceSearchParam.java | 2 +- .../service/result/ConfigIpBlacklistVO.java | 2 +- .../api/service/result/LimitNewVO.java | 2 +- .../api/service/result/LimitVO.java | 2 +- .../service/result/LogMonitorInstanceVO.java | 2 +- .../result/MonitorInfoErrorMsgResult.java | 2 +- .../api/service/result/MonitorInfoVO.java | 2 +- .../api/service/result/MonitorResult.java | 2 +- .../api/service/result/RouteServiceInfo.java | 2 +- .../api/service/result/RouteVO.java | 2 +- .../api/service/result/ServiceInfoVo.java | 2 +- .../api/service/result/ServiceInstanceVO.java | 2 +- .../sop/adminserver/api/system/SystemApi.java | 2 +- .../api/system/param/IspPageParam.java | 2 +- .../api/system/param/IspResourceParam.java | 2 +- .../api/system/result/AdminUserInfoVO.java | 4 +- .../api/system/result/IspResourceResult.java | 2 +- .../sop/adminserver/bean/ChannelMsg.java | 2 +- .../bean/GatewayFilterDefinition.java | 4 +- .../bean/GatewayPredicateDefinition.java | 4 +- .../sop/adminserver/bean/GatewayPushDTO.java | 2 +- .../gitee/sop/adminserver/bean/HttpTool.java | 4 +- .../adminserver/bean/IsvRoutePermission.java | 2 +- .../sop/adminserver/bean/MetadataEnum.java | 2 +- .../sop/adminserver/bean/NacosConfigs.java | 2 +- .../sop/adminserver/bean/RouteConfigDto.java | 2 +- .../sop/adminserver/bean/RouteErrorCount.java | 2 +- .../bean/ServiceGrayDefinition.java | 2 +- .../sop/adminserver/bean/ServiceInfo.java | 2 +- .../sop/adminserver/bean/ServiceInstance.java | 4 +- .../sop/adminserver/common/AdminErrors.java | 2 +- .../sop/adminserver/common/BizException.java | 2 +- .../adminserver/common/ChannelOperation.java | 2 +- .../sop/adminserver/common/CopyUtil.java | 2 +- .../sop/adminserver/common/LimitEnum.java | 2 +- .../sop/adminserver/common/QueryUtil.java | 2 +- .../gitee/sop/adminserver/common/RSATool.java | 4 +- .../sop/adminserver/common/StatusEnum.java | 2 +- .../sop/adminserver/config/WebConfig.java | 4 +- .../sop/adminserver/entity/AdminUserInfo.java | 2 +- .../sop/adminserver/entity/ConfigCommon.java | 2 +- .../sop/adminserver/entity/ConfigGray.java | 2 +- .../entity/ConfigGrayInstance.java | 2 +- .../adminserver/entity/ConfigIpBlacklist.java | 2 +- .../sop/adminserver/entity/ConfigLimit.java | 2 +- .../adminserver/entity/ConfigRouteBase.java | 2 +- .../entity/ConfigServiceRoute.java | 2 +- .../sop/adminserver/entity/IspResource.java | 2 +- .../gitee/sop/adminserver/entity/IsvInfo.java | 2 +- .../gitee/sop/adminserver/entity/IsvKeys.java | 2 +- .../sop/adminserver/entity/MonitorInfo.java | 2 +- .../adminserver/entity/MonitorInfoError.java | 2 +- .../adminserver/entity/MonitorSummary.java | 2 +- .../sop/adminserver/entity/PermIsvRole.java | 2 +- .../sop/adminserver/entity/PermRole.java | 2 +- .../entity/PermRolePermission.java | 2 +- .../sop/adminserver/entity/RouteRoleDTO.java | 2 +- .../interceptor/LoginInterceptor.java | 2 +- .../mapper/AdminUserInfoMapper.java | 2 +- .../mapper/ConfigCommonMapper.java | 2 +- .../mapper/ConfigGrayInstanceMapper.java | 2 +- .../adminserver/mapper/ConfigGrayMapper.java | 2 +- .../mapper/ConfigIpBlacklistMapper.java | 2 +- .../adminserver/mapper/ConfigLimitMapper.java | 2 +- .../mapper/ConfigRouteBaseMapper.java | 2 +- .../mapper/ConfigServiceRouteMapper.java | 2 +- .../adminserver/mapper/IspResourceMapper.java | 2 +- .../sop/adminserver/mapper/IsvInfoMapper.java | 2 +- .../sop/adminserver/mapper/IsvKeysMapper.java | 2 +- .../mapper/MonitorInfoErrorMapper.java | 2 +- .../adminserver/mapper/MonitorInfoMapper.java | 2 +- .../adminserver/mapper/PermIsvRoleMapper.java | 2 +- .../adminserver/mapper/PermRoleMapper.java | 2 +- .../mapper/PermRolePermissionMapper.java | 2 +- .../service/ConfigPushService.java | 2 +- .../service/ConfigRouteBaseService.java | 2 +- .../adminserver/service/RegistryService.java | 2 +- .../service/RouteConfigService.java | 2 +- .../service/RoutePermissionService.java | 2 +- .../adminserver/service/ServerService.java | 2 +- .../service/impl/EurekaApplication.java | 2 +- .../service/impl/EurekaApplications.java | 2 +- .../adminserver/service/impl/EurekaApps.java | 2 +- .../service/impl/EurekaInstance.java | 2 +- .../adminserver/service/impl/EurekaUri.java | 2 +- .../impl/RegistryServiceEurekaImpl.java | 2 +- .../impl/RegistryServiceNacosImpl.java | 2 +- .../gitee/sop/adminserver/AccountTest.java | 2 +- .../sop/adminserver/IsvInfoMapperTest.java | 2 +- .../gitee/sop/sopauth/auth/AccessToken.java | 2 +- .../gitee/sop/sopauth/auth/AppIdManager.java | 2 +- .../sop/sopauth/auth/FetchTokenParam.java | 2 +- .../sop/sopauth/auth/FetchTokenResult.java | 2 +- .../gitee/sop/sopauth/auth/OAuth2Config.java | 2 +- .../gitee/sop/sopauth/auth/OAuth2Manager.java | 22 +- .../gitee/sop/sopauth/auth/OAuth2Service.java | 6 +- .../com/gitee/sop/sopauth/auth/OpenUser.java | 2 +- .../gitee/sop/sopauth/auth/RefreshToken.java | 2 +- .../com/gitee/sop/sopauth/auth/TokenPair.java | 4 +- .../auth/exception/LoginErrorException.java | 4 +- .../sopauth/auth/impl/AppIdManagerImpl.java | 2 +- .../sopauth/auth/impl/OAuth2ManagerCache.java | 6 +- .../sopauth/auth/impl/OAuth2ManagerRedis.java | 22 +- .../sopauth/auth/impl/OAuth2ServiceImpl.java | 2 +- .../sop/sopauth/config/OpenServiceConfig.java | 2 +- .../controller/CallbackController.java | 2 +- .../sopauth/controller/OAuth2Controller.java | 2 +- .../com/gitee/sop/sopauth/entity/IsvInfo.java | 2 +- .../gitee/sop/sopauth/entity/UserInfo.java | 2 +- .../sop/sopauth/mapper/IsvInfoMapper.java | 2 +- .../sop/sopauth/mapper/UserInfoMapper.java | 2 +- .../gitee/sop/sopauth/RefreshTokenTest.java | 2 +- .../bridge/SopRegisterAutoConfiguration.java | 2 +- .../bridge/route/EurekaRegistryListener.java | 2 +- .../bridge/SopRegisterAutoConfiguration.java | 2 +- .../bridge/route/NacosRegistryListener.java | 2 +- .../sop/bridge/route/NacosServiceHolder.java | 2 +- .../sop/gatewaycommon/bean/ApiConfig.java | 2 +- .../sop/gatewaycommon/bean/ApiContext.java | 2 +- .../sop/gatewaycommon/bean/ApiParamAware.java | 2 +- .../bean/BaseErrorLogController.java | 2 +- .../gatewaycommon/bean/BeanInitializer.java | 2 +- .../sop/gatewaycommon/bean/ChannelMsg.java | 2 +- .../gatewaycommon/bean/ConfigLimitDto.java | 2 +- .../bean/DefaultRouteInterceptorContext.java | 2 +- .../gatewaycommon/bean/ErrorDefinition.java | 2 +- .../sop/gatewaycommon/bean/ErrorEntity.java | 4 +- .../bean/GatewayFilterDefinition.java | 4 +- .../bean/GatewayPredicateDefinition.java | 4 +- .../gatewaycommon/bean/GatewayPushDTO.java | 2 +- .../bean/InstanceDefinition.java | 2 +- .../com/gitee/sop/gatewaycommon/bean/Isv.java | 2 +- .../sop/gatewaycommon/bean/IsvDefinition.java | 2 +- .../bean/IsvRoutePermission.java | 2 +- .../sop/gatewaycommon/bean/NacosConfigs.java | 2 +- .../sop/gatewaycommon/bean/RouteConfig.java | 2 +- .../gatewaycommon/bean/RouteDefinition.java | 4 +- .../sop/gatewaycommon/bean/RouteStatus.java | 2 +- .../bean/ServiceBeanInitializer.java | 2 +- .../gatewaycommon/bean/ServiceDefinition.java | 4 +- .../bean/ServiceGrayDefinition.java | 2 +- .../gatewaycommon/bean/ServiceRouteInfo.java | 4 +- .../sop/gatewaycommon/bean/SopConstants.java | 2 +- .../sop/gatewaycommon/bean/SpringContext.java | 2 +- .../sop/gatewaycommon/bean/TargetRoute.java | 2 +- .../config/AbstractConfiguration.java | 2 +- .../config/ApiConfigProperties.java | 2 +- .../config/BaseGatewayAutoConfiguration.java | 2 +- .../config/SopGatewayAutoConfiguration.java | 2 +- .../gatewaycommon/exception/ApiException.java | 2 +- .../gateway/ServerWebExchangeUtil.java | 2 +- .../common/ByteArrayStreamWrapper.java | 4 +- .../common/FileUploadHttpServletRequest.java | 4 +- .../common/RequestContentDataExtractor.java | 2 +- .../common/SopServerHttpRequestDecorator.java | 2 +- .../AlipayGatewayConfiguration.java | 2 +- .../BaseGatewayConfiguration.java | 2 +- .../TaobaoGatewayConfiguration.java | 2 +- .../controller/ConfigChannelController.java | 2 +- .../gateway/controller/GatewayController.java | 2 +- .../gateway/controller/RestfulController.java | 2 +- .../gateway/filter/EnvGrayFilter.java | 2 +- .../GatewayModifyResponseGatewayFilter.java | 4 +- .../gateway/filter/IndexFilter.java | 4 +- .../gateway/filter/LimitFilter.java | 2 +- .../gatewaycommon/gateway/filter/Orders.java | 2 +- .../filter/ParameterFormatterFilter.java | 2 +- .../handler/GatewayExceptionHandler.java | 2 +- .../gateway/result/GatewayResult.java | 2 +- .../gateway/result/GatewayResultExecutor.java | 2 +- .../gateway/route/GatewayForwardChooser.java | 2 +- .../gateway/route/GatewayRouteCache.java | 2 +- .../gateway/route/GatewayRouteRepository.java | 4 +- .../gateway/route/GatewayTargetRoute.java | 2 +- .../interceptor/RouteInterceptor.java | 2 +- .../interceptor/RouteInterceptorContext.java | 2 +- .../limit/DefaultLimitManager.java | 2 +- .../sop/gatewaycommon/limit/LimitManager.java | 2 +- .../sop/gatewaycommon/limit/LimitType.java | 4 +- .../limit/RedisLimitManager.java | 2 +- .../loadbalancer/ServiceGrayConfig.java | 2 +- .../builder/AppIdGrayUserBuilder.java | 2 +- .../loadbalancer/builder/GrayUserBuilder.java | 2 +- .../builder/IpGrayUserBuilder.java | 4 +- .../manager/ChannelMsgProcessor.java | 2 +- .../manager/DefaultEnvGrayManager.java | 2 +- .../manager/DefaultIPBlacklistManager.java | 2 +- .../DefaultIsvRoutePermissionManager.java | 2 +- .../manager/DefaultLimitConfigManager.java | 2 +- .../manager/DefaultRouteConfigManager.java | 2 +- .../manager/DefaultServiceErrorManager.java | 2 +- .../gatewaycommon/manager/EnvGrayManager.java | 2 +- .../manager/EnvironmentContext.java | 2 +- .../sop/gatewaycommon/manager/Formatter.java | 2 +- .../manager/IPBlacklistManager.java | 2 +- .../manager/InstanceManager.java | 2 +- .../manager/IsvRoutePermissionManager.java | 2 +- .../manager/LimitConfigManager.java | 2 +- .../manager/RouteConfigManager.java | 2 +- .../gatewaycommon/manager/RouteLoader.java | 2 +- .../gatewaycommon/manager/RouteManager.java | 2 +- .../manager/RouteRepository.java | 2 +- .../manager/RouteRepositoryContext.java | 2 +- .../manager/ServiceErrorManager.java | 2 +- .../sop/gatewaycommon/message/Error.java | 2 +- .../sop/gatewaycommon/message/ErrorEnum.java | 2 +- .../gatewaycommon/message/ErrorFactory.java | 2 +- .../sop/gatewaycommon/message/ErrorImpl.java | 4 +- .../sop/gatewaycommon/message/ErrorMeta.java | 2 +- .../sop/gatewaycommon/monitor/MonitorDTO.java | 2 +- .../gatewaycommon/monitor/MonitorData.java | 2 +- .../gatewaycommon/monitor/MonitorManager.java | 2 +- .../monitor/RouteErrorCount.java | 2 +- .../sop/gatewaycommon/param/ApiParam.java | 2 +- .../gatewaycommon/param/ApiUploadContext.java | 4 +- .../param/FormHttpOutputMessage.java | 4 +- .../gitee/sop/gatewaycommon/param/Param.java | 4 +- .../sop/gatewaycommon/param/ParamNames.java | 2 +- .../param/ParameterFormatter.java | 2 +- .../gatewaycommon/param/UploadContext.java | 2 +- .../sop/gatewaycommon/result/ApiResult.java | 2 +- .../result/BaseExecutorAdapter.java | 2 +- .../result/CustomDataNameBuilder.java | 2 +- .../gatewaycommon/result/DataNameBuilder.java | 2 +- .../result/DefaultDataNameBuilder.java | 2 +- .../sop/gatewaycommon/result/JsonResult.java | 2 +- .../sop/gatewaycommon/result/Result.java | 2 +- .../gatewaycommon/result/ResultAppender.java | 2 +- .../gatewaycommon/result/ResultExecutor.java | 2 +- .../result/ResultExecutorForGateway.java | 2 +- .../route/BaseForwardChooser.java | 2 +- .../route/BaseRegistryListener.java | 2 +- .../route/BaseServiceListener.java | 2 +- .../gatewaycommon/route/ForwardChooser.java | 2 +- .../sop/gatewaycommon/route/ForwardInfo.java | 2 +- .../gatewaycommon/route/RegistryEvent.java | 2 +- .../gatewaycommon/route/RegistryListener.java | 2 +- .../gatewaycommon/route/RegistryMetadata.java | 2 +- .../gatewaycommon/route/RoutesProcessor.java | 2 +- .../gatewaycommon/route/ServiceListener.java | 2 +- .../route/ServiceRouteListener.java | 2 +- .../secret/AppSecretManager.java | 6 +- .../secret/CacheAppSecretManager.java | 2 +- .../gatewaycommon/secret/CacheIsvManager.java | 2 +- .../secret/FileAppSecretManager.java | 4 +- .../sop/gatewaycommon/secret/IsvManager.java | 2 +- .../support/BaseMonitorController.java | 2 +- .../support/SopBaseController.java | 2 +- .../sync/SopAsyncConfigurer.java | 2 +- .../gitee/sop/gatewaycommon/util/AESUtil.java | 2 +- .../sop/gatewaycommon/util/CopyUtil.java | 2 +- .../sop/gatewaycommon/util/KeyStore.java | 4 +- .../gatewaycommon/util/LoadBalanceUtil.java | 2 +- .../sop/gatewaycommon/util/MyBeanUtil.java | 4 +- .../sop/gatewaycommon/util/RSANewUtil.java | 16 +- .../gitee/sop/gatewaycommon/util/RSAUtil.java | 4 +- .../sop/gatewaycommon/util/RedisLockUtil.java | 24 +- .../sop/gatewaycommon/util/RequestUtil.java | 2 +- .../sop/gatewaycommon/util/ResponseUtil.java | 2 +- .../util/RouteInterceptorUtil.java | 2 +- .../sop/gatewaycommon/util/RouteUtil.java | 2 +- .../validate/AbstractSigner.java | 2 +- .../gatewaycommon/validate/ApiEncrypter.java | 2 +- .../sop/gatewaycommon/validate/ApiSigner.java | 2 +- .../gatewaycommon/validate/ApiValidator.java | 2 +- .../sop/gatewaycommon/validate/Encrypter.java | 2 +- .../gatewaycommon/validate/SignConfig.java | 2 +- .../gatewaycommon/validate/SignEncipher.java | 2 +- .../validate/SignEncipherHMAC_MD5.java | 2 +- .../validate/SignEncipherMD5.java | 2 +- .../sop/gatewaycommon/validate/Signer.java | 4 +- .../validate/TokenValidator.java | 2 +- .../sop/gatewaycommon/validate/Validator.java | 6 +- .../validate/alipay/AlipaySigner.java | 2 +- .../validate/taobao/TaobaoSigner.java | 2 +- .../sop/servercommon/annotation/BizCode.java | 2 +- .../sop/servercommon/annotation/Open.java | 2 +- .../sop/servercommon/bean/OpenContext.java | 2 +- .../servercommon/bean/OpenContextImpl.java | 2 +- .../sop/servercommon/bean/ParamNames.java | 2 +- .../sop/servercommon/bean/ServiceApiInfo.java | 2 +- .../sop/servercommon/bean/ServiceConfig.java | 2 +- .../sop/servercommon/bean/ServiceContext.java | 4 +- .../AlipayServiceConfiguration.java | 2 +- .../BaseServiceConfiguration.java | 2 +- .../configuration/GlobalExceptionHandler.java | 2 +- .../configuration/ServiceConfiguration.java | 2 +- .../configuration/SpringmvcConfiguration.java | 2 +- .../exception/ExceptionHolder.java | 2 +- .../exception/ServiceException.java | 2 +- .../ServiceContextInterceptor.java | 2 +- .../servercommon/message/ServiceError.java | 2 +- .../message/ServiceErrorEnum.java | 2 +- .../message/ServiceErrorFactory.java | 2 +- .../message/ServiceErrorImpl.java | 4 +- .../message/ServiceErrorMeta.java | 2 +- .../AbstractValidationAnnotationBuilder.java | 2 +- .../param/ApiArgumentResolver.java | 4 +- .../BaseValidationAnnotationBuilder.java | 4 +- .../param/ByteArrayStreamWrapper.java | 4 +- .../param/MyServletRequestWrapper.java | 4 +- .../servercommon/param/ParamValidator.java | 2 +- .../param/ServiceParamValidator.java | 2 +- .../SopHandlerMethodArgumentResolver.java | 2 +- .../param/ValidationAnnotationBuilder.java | 2 +- .../param/ValidationAnnotationDefinition.java | 2 +- ...ValidationAnnotationDefinitionFactory.java | 2 +- .../servercommon/param/validation/Group1.java | 2 +- .../servercommon/param/validation/Group2.java | 2 +- .../servercommon/param/validation/Group3.java | 2 +- .../servercommon/param/validation/Group4.java | 2 +- .../servercommon/param/validation/Group5.java | 2 +- .../validation/ValidationGroupSequence.java | 2 +- .../result/DefaultServiceResultBuilder.java | 2 +- .../result/ServiceResultBuilder.java | 2 +- .../servercommon/route/ApiMetaBuilder.java | 2 +- .../route/GatewayFilterDefinition.java | 4 +- .../route/GatewayPredicateDefinition.java | 4 +- .../servercommon/route/RouteDefinition.java | 4 +- .../route/ServiceRouteController.java | 2 +- .../servercommon/route/ServiceRouteInfo.java | 4 +- .../route/ServiceRouteInfoBuilder.java | 2 +- .../DocumentationPluginsManagerExt.java | 2 +- .../swagger/SwaggerSecurityFilter.java | 2 +- .../servercommon/swagger/SwaggerSupport.java | 4 +- .../swagger/SwaggerValidator.java | 2 +- .../gitee/sop/servercommon/util/OpenUtil.java | 2 +- .../sop/servercommon/util/ReflectionUtil.java | 12 +- .../sop/servercommon/util/UploadUtil.java | 2 +- .../gitee/sop/servercommon/ValidatorTest.java | 2 +- .../gitee/sop/storyweb/open/OpenStory.java | 2 +- .../sop/storyweb/open/impl/OpenStoryImpl.java | 12 +- .../src/main/resources/application.properties | 4 +- .../gitee/sop/gateway/entity/ConfigGray.java | 2 +- .../gateway/entity/ConfigGrayInstance.java | 2 +- .../gitee/sop/gateway/entity/ConfigLimit.java | 2 +- .../sop/gateway/entity/ConfigRouteBase.java | 2 +- .../gateway/entity/ConfigServiceRoute.java | 2 +- .../sop/gateway/entity/IsvDetailDTO.java | 2 +- .../com/gitee/sop/gateway/entity/IsvInfo.java | 2 +- .../gitee/sop/gateway/entity/MonitorInfo.java | 2 +- .../sop/gateway/entity/MonitorInfoError.java | 2 +- .../gitee/sop/gateway/entity/PermIsvRole.java | 2 +- .../gateway/entity/PermRolePermission.java | 2 +- .../interceptor/MonitorRouteInterceptor.java | 2 +- .../MonitorRouteInterceptorService.java | 2 +- .../interceptor/MyRouteInterceptor.java | 2 +- .../sop/gateway/manager/DbEnvGrayManager.java | 2 +- .../gateway/manager/DbIPBlacklistManager.java | 2 +- .../sop/gateway/manager/DbIsvManager.java | 2 +- .../manager/DbIsvRoutePermissionManager.java | 2 +- .../gateway/manager/DbLimitConfigManager.java | 2 +- .../gateway/manager/DbMonitorInfoManager.java | 2 +- .../gateway/manager/DbRouteConfigManager.java | 2 +- .../gateway/manager/DbRoutesProcessor.java | 2 +- .../mapper/ConfigGrayInstanceMapper.java | 2 +- .../sop/gateway/mapper/ConfigGrayMapper.java | 2 +- .../sop/gateway/mapper/ConfigLimitMapper.java | 2 +- .../gateway/mapper/ConfigRouteBaseMapper.java | 2 +- .../sop/gateway/mapper/ConfigRouteMapper.java | 2 +- .../mapper/ConfigServiceRouteMapper.java | 2 +- .../sop/gateway/mapper/IPBlacklistMapper.java | 2 +- .../sop/gateway/mapper/IsvInfoMapper.java | 2 +- .../mapper/MonitorInfoErrorMapper.java | 2 +- .../sop/gateway/mapper/MonitorInfoMapper.java | 2 +- .../sop/gateway/mapper/PermIsvRoleMapper.java | 2 +- .../mapper/PermRolePermissionMapper.java | 2 +- .../sop/gateway/mapper/SystemLockMapper.java | 2 +- .../com/gitee/sop/gateway/ExcludeTest.java | 2 +- .../com/gitee/sop/gateway/RoundRobinTest.java | 2 +- .../com/gitee/sop/gateway/UrlPatternTest.java | 2 +- sop-index/pom.xml | 7 - .../gitee/sop/index/common/ParamNames.java | 54 - .../gitee/sop/index/common/SopConstants.java | 2 +- .../com/gitee/sop/index/config/ApiConfig.java | 7 + .../gitee/sop/index/config/IndexConfig.java | 12 +- .../sop/index/config/RequestParamConfig.java | 38 + .../gitee/sop/index/dao/entity/ApiInfo.java | 2 +- .../gitee/sop/index/dao/entity/IsvInfo.java | 2 +- .../gitee/sop/index/dao/entity/IsvKeys.java | 2 +- .../sop/index/dao/mapper/ApiInfoMapper.java | 2 +- .../sop/index/dao/mapper/IsvInfoMapper.java | 2 +- .../sop/index/dao/mapper/IsvKeysMapper.java | 2 +- .../sop/index/exception/ApiException.java | 2 +- .../gitee/sop/index/message/ErrorEnum.java | 2 +- .../gitee/sop/index/message/ErrorFactory.java | 2 +- .../gitee/sop/index/message/ErrorImpl.java | 2 +- .../gitee/sop/index/message/ErrorMeta.java | 2 +- .../com/gitee/sop/index/message/IError.java | 2 +- .../gitee/sop/index/request/ApiRequest.java | 14 +- .../sop/index/request/ApiRequestContext.java | 2 - .../request/ApiRequestContextFactory.java | 5 +- .../sop/index/request/ApiUploadContext.java | 2 +- .../sop/index/request/UploadContext.java | 2 +- .../gitee/sop/index/response/ApiResponse.java | 2 +- .../sop/index/service/ParamExecutorImpl.java | 87 +- .../sop/index/service/RouteServiceImpl.java | 13 +- .../index/service/dubbo/IsvServiceImpl.java | 3 + .../service/interceptor/RouteInterceptor.java | 2 +- .../internal/ResultRouteInterceptor.java | 4 +- .../service/validate/AbstractSigner.java | 2 +- .../index/service/validate/ApiEncrypter.java | 2 +- .../index/service/validate/ApiValidator.java | 44 +- .../sop/index/service/validate/Encrypter.java | 2 +- .../index/service/validate/SignConfig.java | 2 +- .../index/service/validate/SignEncipher.java | 2 +- .../service/validate/SignEncipherMD5.java | 2 +- .../sop/index/service/validate/Signer.java | 2 +- .../sop/index/service/validate/Validator.java | 2 +- .../validate/alipay/AlipaySignature.java | 48 +- .../service/validate/alipay/AlipaySigner.java | 42 +- .../com/gitee/sop/index/util/AESUtil.java | 2 +- .../com/gitee/sop/index/util/DateUtil.java | 16 + .../com/gitee/sop/index/util/KeyStore.java | 2 +- .../com/gitee/sop/index/util/RSANewUtil.java | 2 +- .../com/gitee/sop/index/util/RSAUtil.java | 2 +- .../gitee/sop/index/util/ResponseUtil.java | 2 +- .../resources/application-test.properties | 6 +- .../src/main/resources/application.properties | 28 +- .../com/gitee/sop/sdk/client/OpenClient.java | 2 +- .../com/gitee/sop/sdk/client/OpenHttp.java | 2 +- .../com/gitee/sop/sdk/client/OpenRequest.java | 2 +- .../sop/sdk/common/CustomDataNameBuilder.java | 2 +- .../gitee/sop/sdk/common/DataNameBuilder.java | 2 +- .../sdk/common/DefaultDataNameBuilder.java | 2 +- .../com/gitee/sop/sdk/common/OpenConfig.java | 2 +- .../com/gitee/sop/sdk/common/RequestForm.java | 2 +- .../gitee/sop/sdk/common/RequestMethod.java | 4 +- .../gitee/sop/sdk/common/SopSdkConstants.java | 4 +- .../gitee/sop/sdk/common/SopSdkErrors.java | 2 +- .../com/gitee/sop/sdk/common/UploadFile.java | 2 +- .../gitee/sop/sdk/exception/SdkException.java | 2 +- .../sop/sdk/model/DemoFileUploadModel.java | 2 +- .../sop/sdk/model/OpenAuthTokenAppModel.java | 2 +- .../gitee/sop/sdk/request/BaseRequest.java | 2 +- .../gitee/sop/sdk/request/CommonRequest.java | 2 +- .../sdk/request/DemoFileUploadRequest.java | 2 +- .../sdk/request/OpenAuthTokenAppRequest.java | 2 +- .../gitee/sop/sdk/response/BaseResponse.java | 2 +- .../sop/sdk/response/CommonResponse.java | 2 +- .../sdk/response/DemoFileUploadResponse.java | 2 +- .../gitee/sop/sdk/response/ErrorResponse.java | 2 +- .../response/OpenAuthTokenAppResponse.java | 2 +- .../com/gitee/sop/sdk/util/ClassUtil.java | 2 +- .../java/com/gitee/sop/sdk/util/FileUtil.java | 2 +- .../java/com/gitee/sop/sdk/util/HexUtil.java | 2 +- .../java/com/gitee/sop/sdk/util/MD5Util.java | 14 +- sop-support/sop-service-support/pom.xml | 5 + .../gitee/sop/support/annotation/Open.java | 2 +- .../sop/support/context/OpenContext.java | 2 + .../{request => dto}/CommonFileData.java | 2 +- .../support/{request => dto}/FileData.java | 2 +- .../com/gitee/sop/support/dto/NotifyInfo.java | 42 + .../gitee/sop/support/service/IsvService.java | 5 + .../resources/security/serialize.allowlist | 2 +- .../sop/support/context/OpenContext.class | Bin 1394 -> 1394 bytes .../gitee/sop/support/request/FileData.class | Bin 577 -> 0 bytes .../main/java/com/gitee/sop/test/Client.java | 2 +- .../java/com/gitee/sop/test/HttpTool.java | 4 +- .../com/gitee/sop/test/taobao/Constants.java | 2 +- .../sop/test/taobao/TaobaoSignature.java | 2 +- .../java/com/gitee/sop/test/AllInOneTest.java | 2 +- .../java/com/gitee/sop/test/DownloadTest.java | 2 +- .../java/com/gitee/sop/test/TestBase.java | 2 +- .../sop/test/ThrowExceptionDemoTest.java | 2 +- .../gitee/sop/websiteserver/bean/BizCode.java | 2 +- .../sop/websiteserver/bean/ChannelMsg.java | 2 +- .../websiteserver/bean/ChannelOperation.java | 2 +- .../gitee/sop/websiteserver/bean/DocInfo.java | 2 +- .../gitee/sop/websiteserver/bean/DocItem.java | 2 +- .../sop/websiteserver/bean/DocModule.java | 2 +- .../sop/websiteserver/bean/DocParameter.java | 2 +- .../websiteserver/bean/DocParserContext.java | 2 +- .../websiteserver/bean/EurekaApplication.java | 2 +- .../bean/EurekaApplications.java | 2 +- .../sop/websiteserver/bean/EurekaApps.java | 2 +- .../websiteserver/bean/EurekaInstance.java | 2 +- .../sop/websiteserver/bean/EurekaUri.java | 2 +- .../websiteserver/bean/GatewayPushDTO.java | 2 +- .../sop/websiteserver/bean/HttpTool.java | 4 +- .../sop/websiteserver/bean/IsvDetailDTO.java | 2 +- .../sop/websiteserver/bean/IsvKeysGenVO.java | 2 +- .../sop/websiteserver/bean/LoginUser.java | 2 +- .../gitee/sop/websiteserver/bean/NoLogin.java | 2 +- .../gitee/sop/websiteserver/bean/RSATool.java | 4 +- .../sop/websiteserver/bean/UserContext.java | 2 +- .../sop/websiteserver/bean/Validates.java | 2 +- .../sop/websiteserver/config/CorsConfig.java | 2 +- .../config/LoginInterceptor.java | 2 +- .../websiteserver/config/WebsiteConfig.java | 2 +- .../controller/DocController.java | 2 +- .../controller/IndexController.java | 2 +- .../controller/IsvController.java | 2 +- .../controller/LoginController.java | 2 +- .../controller/RegController.java | 2 +- .../controller/SandboxController.java | 2 +- .../controller/SandboxV2Controller.java | 2 +- .../controller/param/FindPasswordParam.java | 2 +- .../param/IsvPublicKeyUploadParam.java | 2 +- .../controller/param/RegParam.java | 2 +- .../controller/param/RestPasswordParam.java | 2 +- .../controller/param/UpdatePasswordParam.java | 2 +- .../controller/result/DocVO.java | 2 +- .../controller/result/IsvInfoResult.java | 2 +- .../result/IsvPublicKeyUploadResult.java | 2 +- .../controller/result/IsvResourceResult.java | 2 +- .../controller/result/LoginResult.java | 2 +- .../controller/result/MenuDocItem.java | 2 +- .../controller/result/MenuModule.java | 2 +- .../controller/result/MenuProject.java | 2 +- .../controller/result/RegResult.java | 2 +- .../sop/websiteserver/entity/IspResource.java | 2 +- .../sop/websiteserver/entity/IsvInfo.java | 2 +- .../sop/websiteserver/entity/IsvKeys.java | 2 +- .../sop/websiteserver/entity/IsvPortal.java | 2 +- .../sop/websiteserver/entity/UserAccount.java | 2 +- .../websiteserver/exception/ErrorCode.java | 2 +- .../exception/ExceptionCode.java | 2 +- .../exception/ExceptionController.java | 2 +- .../exception/LoginFailureException.java | 2 +- .../listener/ServiceDocListener.java | 2 +- .../manager/DefaultTokenManager.java | 2 +- .../sop/websiteserver/manager/DocManager.java | 2 +- .../websiteserver/manager/DocManagerImpl.java | 2 +- .../sop/websiteserver/manager/DocParser.java | 2 +- .../manager/SwaggerDocParser.java | 2 +- .../websiteserver/manager/TokenManager.java | 2 +- .../mapper/IspResourceMapper.java | 2 +- .../websiteserver/mapper/IsvInfoMapper.java | 2 +- .../websiteserver/mapper/IsvKeysMapper.java | 2 +- .../mapper/UserAccountMapper.java | 2 +- .../service/ConfigPushService.java | 2 +- .../websiteserver/service/ServerService.java | 2 +- .../websiteserver/service/UserService.java | 2 +- .../service/impl/EurekaServerService.java | 2 +- .../service/impl/NacosServerService.java | 2 +- .../sop/websiteserver/util/GenerateUtil.java | 2 +- .../sop/websiteserver/util/RandomUtil.java | 2 +- .../sop/websiteserver/util/UploadUtil.java | 2 +- .../sop/websiteserver/vo/DocBaseInfoVO.java | 2 +- .../gitee/sop/websiteserver/vo/DocInfoVO.java | 2 +- .../sop/websiteserver/vo/ServiceInfoVO.java | 2 +- 987 files changed, 24735 insertions(+), 22137 deletions(-) create mode 100644 sop-admin/sop-admin-backend/.gitignore create mode 100644 sop-admin/sop-admin-backend/pom.xml create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/SopAdminBackendApplication.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/ConfigKeyEnum.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/IConfig.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/Result.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/SpringContext.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/User.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/BizException.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ErrorCode.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ErrorTokenException.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ExceptionCode.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtCreateException.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtErrorException.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtExpiredException.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/LoginFailureException.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/SetPasswordException.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/AdminConfig.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/Configs.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/SopAdminConfiguration.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/ExceptionHandlerController.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/LoginController.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/SysAdminUserController.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/req/LoginParam.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/resp/LoginResultVO.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/ApiInfo.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/IsvInfo.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/IsvKeys.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/SysAdminUser.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/SysConfig.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/ApiInfoMapper.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/IsvInfoMapper.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/IsvKeysMapper.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/SysAdminUserMapper.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/SysConfigMapper.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/UpgradeMapper.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysAdminUserService.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysConfigService.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/UpgradeService.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/dto/SystemConfigDTO.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/LoginService.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/NotNullStringBuilder.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/ThirdPartyLoginManager.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/UserCacheManager.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginDTO.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginForm.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginResult.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginUser.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/enums/AdminUserStatusEnum.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/enums/RegTypeEnum.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/impl/DefaultUserCacheManager.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/CopyUtil.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/GenerateUtil.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/IdGen.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/JwtUtil.java create mode 100644 sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/PasswordUtil.java create mode 100644 sop-admin/sop-admin-backend/src/main/resources/application-dev.properties create mode 100644 sop-admin/sop-admin-backend/src/main/resources/application-test.properties create mode 100644 sop-admin/sop-admin-backend/src/main/resources/application.properties create mode 100644 sop-admin/sop-admin-backend/src/main/resources/mybatis/mapper/UpgradeMapper.xml create mode 100644 sop-admin/sop-admin-backend/src/main/resources/mybatis/mybatisConfig.xml create mode 100644 sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/BaseTest.java create mode 100644 sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/service/LoginServiceTest.java create mode 100644 sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/service/PasswordTest.java create mode 100644 sop-admin/sop-admin-frontend/.browserslistrc create mode 100644 sop-admin/sop-admin-frontend/.dockerignore create mode 100644 sop-admin/sop-admin-frontend/.editorconfig create mode 100644 sop-admin/sop-admin-frontend/.env create mode 100644 sop-admin/sop-admin-frontend/.env.staging delete mode 100644 sop-admin/sop-admin-frontend/.eslintignore delete mode 100644 sop-admin/sop-admin-frontend/.eslintrc.js create mode 100644 sop-admin/sop-admin-frontend/.husky/common.sh create mode 100644 sop-admin/sop-admin-frontend/.lintstagedrc create mode 100644 sop-admin/sop-admin-frontend/.markdownlint.json create mode 100644 sop-admin/sop-admin-frontend/.npmrc create mode 100644 sop-admin/sop-admin-frontend/.nvmrc delete mode 100644 sop-admin/sop-admin-frontend/.prettierignore create mode 100644 sop-admin/sop-admin-frontend/.stylelintignore delete mode 100644 sop-admin/sop-admin-frontend/.stylelintrc.js create mode 100644 sop-admin/sop-admin-frontend/.vscode/extensions.json create mode 100644 sop-admin/sop-admin-frontend/.vscode/settings.json create mode 100644 sop-admin/sop-admin-frontend/.vscode/vue3.0.code-snippets create mode 100644 sop-admin/sop-admin-frontend/.vscode/vue3.2.code-snippets create mode 100644 sop-admin/sop-admin-frontend/.vscode/vue3.3.code-snippets create mode 100644 sop-admin/sop-admin-frontend/Dockerfile create mode 100644 sop-admin/sop-admin-frontend/LICENSE create mode 100644 sop-admin/sop-admin-frontend/README.md delete mode 100644 sop-admin/sop-admin-frontend/babel.config.js create mode 100644 sop-admin/sop-admin-frontend/build/cdn.ts create mode 100644 sop-admin/sop-admin-frontend/build/compress.ts create mode 100644 sop-admin/sop-admin-frontend/build/info.ts create mode 100644 sop-admin/sop-admin-frontend/build/optimize.ts create mode 100644 sop-admin/sop-admin-frontend/build/plugins.ts create mode 100644 sop-admin/sop-admin-frontend/build/utils.ts delete mode 100644 sop-admin/sop-admin-frontend/components.d.ts delete mode 100644 sop-admin/sop-admin-frontend/config/plugin/arcoResolver.ts delete mode 100644 sop-admin/sop-admin-frontend/config/plugin/arcoStyleImport.ts delete mode 100644 sop-admin/sop-admin-frontend/config/plugin/compress.ts delete mode 100644 sop-admin/sop-admin-frontend/config/plugin/imagemin.ts delete mode 100644 sop-admin/sop-admin-frontend/config/plugin/visualizer.ts delete mode 100644 sop-admin/sop-admin-frontend/config/utils/index.ts delete mode 100644 sop-admin/sop-admin-frontend/config/vite.config.base.ts delete mode 100644 sop-admin/sop-admin-frontend/config/vite.config.dev.ts delete mode 100644 sop-admin/sop-admin-frontend/config/vite.config.prod.ts create mode 100644 sop-admin/sop-admin-frontend/eslint.config.js create mode 100644 sop-admin/sop-admin-frontend/locales/en.yaml create mode 100644 sop-admin/sop-admin-frontend/locales/zh-CN.yaml create mode 100644 sop-admin/sop-admin-frontend/mock/asyncRoutes.ts create mode 100644 sop-admin/sop-admin-frontend/mock/login.ts create mode 100644 sop-admin/sop-admin-frontend/mock/refreshToken.ts create mode 100644 sop-admin/sop-admin-frontend/postcss.config.js create mode 100644 sop-admin/sop-admin-frontend/public/favicon.ico create mode 100644 sop-admin/sop-admin-frontend/public/logo.svg create mode 100644 sop-admin/sop-admin-frontend/public/platform-config.json delete mode 100644 sop-admin/sop-admin-frontend/src/api/apiTable.ts delete mode 100644 sop-admin/sop-admin-frontend/src/api/dashboard.ts delete mode 100644 sop-admin/sop-admin-frontend/src/api/interceptor.ts delete mode 100644 sop-admin/sop-admin-frontend/src/api/message.ts create mode 100644 sop-admin/sop-admin-frontend/src/api/routes.ts create mode 100644 sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.css create mode 100644 sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.js create mode 100644 sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.json create mode 100644 sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.ttf create mode 100644 sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.woff create mode 100644 sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.woff2 create mode 100644 sop-admin/sop-admin-frontend/src/assets/login/avatar.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/login/illustration.svg delete mode 100644 sop-admin/sop-admin-frontend/src/assets/logo.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/status/403.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/status/404.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/status/500.svg delete mode 100644 sop-admin/sop-admin-frontend/src/assets/style/breakpoint.less delete mode 100644 sop-admin/sop-admin-frontend/src/assets/style/global.less create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/back_top.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/dark.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/day.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/enter_outlined.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/exit_screen.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/full_screen.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/globalization.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/keyboard_esc.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/svg/system.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/table-bar/collapse.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/table-bar/drag.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/table-bar/expand.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/table-bar/refresh.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/table-bar/settings.svg create mode 100644 sop-admin/sop-admin-frontend/src/assets/user.jpg delete mode 100644 sop-admin/sop-admin-frontend/src/assets/world.json create mode 100644 sop-admin/sop-admin-frontend/src/components/ReAuth/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReAuth/src/auth.tsx create mode 100644 sop-admin/sop-admin-frontend/src/components/ReCol/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReDialog/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReDialog/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/components/ReDialog/type.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReIcon/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReIcon/src/hooks.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconfont.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconifyIconOffline.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconifyIconOnline.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReIcon/src/offlineIcon.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReIcon/src/types.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/RePerms/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/RePerms/src/perms.tsx create mode 100644 sop-admin/sop-admin-frontend/src/components/RePureTableBar/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/RePureTableBar/src/bar.tsx create mode 100644 sop-admin/sop-admin-frontend/src/components/ReSegmented/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReSegmented/src/index.css create mode 100644 sop-admin/sop-admin-frontend/src/components/ReSegmented/src/index.tsx create mode 100644 sop-admin/sop-admin-frontend/src/components/ReSegmented/src/type.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReText/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/components/ReText/src/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/breadcrumb/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/chart/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/footer/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/global-setting/block.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/global-setting/form-wrapper.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/global-setting/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/components/menu/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/menu/use-menu-tree.ts delete mode 100644 sop-admin/sop-admin-frontend/src/components/message-box/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/message-box/list.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/message-box/locale/en-US.ts delete mode 100644 sop-admin/sop-admin-frontend/src/components/message-box/locale/zh-CN.ts delete mode 100644 sop-admin/sop-admin-frontend/src/components/navbar/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/tab-bar/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/components/tab-bar/readme.md delete mode 100644 sop-admin/sop-admin-frontend/src/components/tab-bar/tab-item.vue create mode 100644 sop-admin/sop-admin-frontend/src/config/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/config/settings.json delete mode 100644 sop-admin/sop-admin-frontend/src/directive/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/directive/permission/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/directives/auth/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/directives/copy/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/directives/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/directives/longpress/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/directives/optimize/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/directives/perms/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/directives/ripple/index.scss create mode 100644 sop-admin/sop-admin-frontend/src/directives/ripple/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/env.d.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/chart-option.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/loading.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/locale.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/permission.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/request.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/responsive.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/themes.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/user.ts delete mode 100644 sop-admin/sop-admin-frontend/src/hooks/visible.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-content/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-footer/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-frame/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-navbar/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-notice/components/NoticeItem.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-notice/components/NoticeList.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-notice/data.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-notice/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-panel/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchFooter.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchHistory.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchHistoryItem.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchModal.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchResult.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-search/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-search/types.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-setting/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavHorizontal.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavMix.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavVertical.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarBreadCrumb.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarCenterCollapse.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarExtraIcon.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarFullScreen.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarItem.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLeftCollapse.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLinkItem.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLogo.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarTopCollapse.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-tag/components/TagChrome.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-tag/index.scss create mode 100644 sop-admin/sop-admin-frontend/src/layout/components/lay-tag/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/layout/default-layout.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/frame.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/hooks/useBoolean.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/hooks/useDataThemeChange.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/hooks/useLayout.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/hooks/useMultiFrame.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/hooks/useNav.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/hooks/useTag.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/hooks/useTranslationLang.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/layout/page-layout.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/redirect.vue create mode 100644 sop-admin/sop-admin-frontend/src/layout/theme/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/layout/types.ts delete mode 100644 sop-admin/sop-admin-frontend/src/locale/en-US.ts delete mode 100644 sop-admin/sop-admin-frontend/src/locale/en-US/settings.ts delete mode 100644 sop-admin/sop-admin-frontend/src/locale/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/locale/zh-CN.ts delete mode 100644 sop-admin/sop-admin-frontend/src/locale/zh-CN/settings.ts delete mode 100644 sop-admin/sop-admin-frontend/src/mock/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/mock/message-box.ts delete mode 100644 sop-admin/sop-admin-frontend/src/mock/user.ts create mode 100644 sop-admin/sop-admin-frontend/src/plugins/echarts.ts create mode 100644 sop-admin/sop-admin-frontend/src/plugins/elementPlus.ts create mode 100644 sop-admin/sop-admin-frontend/src/plugins/i18n.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/app-menus/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/constants.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/guard/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/guard/permission.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/guard/userLoginInfo.ts create mode 100644 sop-admin/sop-admin-frontend/src/router/modules/error.ts create mode 100644 sop-admin/sop-admin-frontend/src/router/modules/home.ts create mode 100644 sop-admin/sop-admin-frontend/src/router/modules/remaining.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/routes/base.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/routes/externalModules/arco.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/routes/externalModules/faq.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/routes/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/routes/modules/dashboard.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/routes/types.ts delete mode 100644 sop-admin/sop-admin-frontend/src/router/typings.d.ts create mode 100644 sop-admin/sop-admin-frontend/src/router/utils.ts create mode 100644 sop-admin/sop-admin-frontend/src/store/modules/app.ts delete mode 100644 sop-admin/sop-admin-frontend/src/store/modules/app/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/store/modules/app/types.ts create mode 100644 sop-admin/sop-admin-frontend/src/store/modules/epTheme.ts create mode 100644 sop-admin/sop-admin-frontend/src/store/modules/multiTags.ts create mode 100644 sop-admin/sop-admin-frontend/src/store/modules/permission.ts create mode 100644 sop-admin/sop-admin-frontend/src/store/modules/settings.ts delete mode 100644 sop-admin/sop-admin-frontend/src/store/modules/tab-bar/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/store/modules/tab-bar/types.ts create mode 100644 sop-admin/sop-admin-frontend/src/store/modules/user.ts delete mode 100644 sop-admin/sop-admin-frontend/src/store/modules/user/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/store/modules/user/types.ts create mode 100644 sop-admin/sop-admin-frontend/src/store/types.ts create mode 100644 sop-admin/sop-admin-frontend/src/store/utils.ts create mode 100644 sop-admin/sop-admin-frontend/src/style/dark.scss create mode 100644 sop-admin/sop-admin-frontend/src/style/element-plus.scss create mode 100644 sop-admin/sop-admin-frontend/src/style/index.scss create mode 100644 sop-admin/sop-admin-frontend/src/style/login.css create mode 100644 sop-admin/sop-admin-frontend/src/style/reset.scss create mode 100644 sop-admin/sop-admin-frontend/src/style/sidebar.scss create mode 100644 sop-admin/sop-admin-frontend/src/style/tailwind.css create mode 100644 sop-admin/sop-admin-frontend/src/style/transition.scss delete mode 100644 sop-admin/sop-admin-frontend/src/types/echarts.ts delete mode 100644 sop-admin/sop-admin-frontend/src/types/global.ts delete mode 100644 sop-admin/sop-admin-frontend/src/types/mock.ts delete mode 100644 sop-admin/sop-admin-frontend/src/utils/env.ts delete mode 100644 sop-admin/sop-admin-frontend/src/utils/event.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/globalPolyfills.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/http/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/http/types.d.ts delete mode 100644 sop-admin/sop-admin-frontend/src/utils/index.ts delete mode 100644 sop-admin/sop-admin-frontend/src/utils/is.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/localforage/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/localforage/types.d.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/message.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/mitt.ts delete mode 100644 sop-admin/sop-admin-frontend/src/utils/monitor.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/preventDefault.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/print.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/progress/index.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/propTypes.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/responsive.ts delete mode 100644 sop-admin/sop-admin-frontend/src/utils/route-listener.ts delete mode 100644 sop-admin/sop-admin-frontend/src/utils/setup-mock.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/sso.ts create mode 100644 sop-admin/sop-admin-frontend/src/utils/tree.ts delete mode 100644 sop-admin/sop-admin-frontend/src/views/api/table/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/api/table/locale/en-US.ts delete mode 100644 sop-admin/sop-admin-frontend/src/views/api/table/locale/zh-CN.ts delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/announcement.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/banner.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/carousel.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/categories-percent.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/content-chart.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/data-panel.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/docs.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/popular-content.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/quick-operation.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/components/recently-visited.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/locale/en-US.ts delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/locale/zh-CN.ts delete mode 100644 sop-admin/sop-admin-frontend/src/views/dashboard/workplace/mock.ts create mode 100644 sop-admin/sop-admin-frontend/src/views/error/403.vue create mode 100644 sop-admin/sop-admin-frontend/src/views/error/404.vue create mode 100644 sop-admin/sop-admin-frontend/src/views/error/500.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/login/components/banner.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/login/components/login-form.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/login/locale/en-US.ts delete mode 100644 sop-admin/sop-admin-frontend/src/views/login/locale/zh-CN.ts create mode 100644 sop-admin/sop-admin-frontend/src/views/login/utils/motion.ts create mode 100644 sop-admin/sop-admin-frontend/src/views/login/utils/rule.ts create mode 100644 sop-admin/sop-admin-frontend/src/views/login/utils/static.ts delete mode 100644 sop-admin/sop-admin-frontend/src/views/not-found/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/views/permission/button/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/views/permission/button/perms.vue create mode 100644 sop-admin/sop-admin-frontend/src/views/permission/page/index.vue delete mode 100644 sop-admin/sop-admin-frontend/src/views/redirect/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/views/serviceManage/apiManage/index.vue create mode 100644 sop-admin/sop-admin-frontend/src/views/welcome/index.vue create mode 100644 sop-admin/sop-admin-frontend/stylelint.config.js create mode 100644 sop-admin/sop-admin-frontend/tailwind.config.ts create mode 100644 sop-admin/sop-admin-frontend/types/directives.d.ts create mode 100644 sop-admin/sop-admin-frontend/types/global-components.d.ts create mode 100644 sop-admin/sop-admin-frontend/types/global.d.ts create mode 100644 sop-admin/sop-admin-frontend/types/index.d.ts create mode 100644 sop-admin/sop-admin-frontend/types/router.d.ts create mode 100644 sop-admin/sop-admin-frontend/types/shims-tsx.d.ts create mode 100644 sop-admin/sop-admin-frontend/types/shims-vue.d.ts create mode 100644 sop-admin/sop-admin-frontend/vite.config.ts delete mode 100644 sop-admin/sop-admin-frontend/yarn.lock delete mode 100644 sop-index/src/main/java/com/gitee/sop/index/common/ParamNames.java create mode 100644 sop-index/src/main/java/com/gitee/sop/index/config/RequestParamConfig.java create mode 100644 sop-index/src/main/java/com/gitee/sop/index/util/DateUtil.java rename sop-support/sop-service-support/src/main/java/com/gitee/sop/support/{request => dto}/CommonFileData.java (96%) rename sop-support/sop-service-support/src/main/java/com/gitee/sop/support/{request => dto}/FileData.java (95%) create mode 100644 sop-support/sop-service-support/src/main/java/com/gitee/sop/support/dto/NotifyInfo.java delete mode 100644 sop-support/sop-service-support/target/classes/com/gitee/sop/support/request/FileData.class diff --git a/doc/src/main/java/com/gitee/sop/doc/SidebarTest.java b/doc/src/main/java/com/gitee/sop/doc/SidebarTest.java index 4554af94..34614d58 100644 --- a/doc/src/main/java/com/gitee/sop/doc/SidebarTest.java +++ b/doc/src/main/java/com/gitee/sop/doc/SidebarTest.java @@ -14,7 +14,7 @@ import java.util.stream.Stream; /** * 生成_sidebar.md文件,直接运行即可 * - * @author tanghc + * @author 六如 */ public class SidebarTest { diff --git a/pom.xml b/pom.xml index e34f72ed..2053dabe 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ sop-example - + sop-admin sop-test sop-sdk diff --git a/sop-admin/pom.xml b/sop-admin/pom.xml index a2cb9082..933ef2d3 100644 --- a/sop-admin/pom.xml +++ b/sop-admin/pom.xml @@ -3,18 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - - com.gitee.sop - sop-parent - 5.0.0-SNAPSHOT - ../pom.xml - - 4.0.0 + com.gitee.sop sop-admin + 5.0.0-SNAPSHOT pom - sop-admin-server + sop-admin-backend diff --git a/sop-admin/sop-admin-backend/.gitignore b/sop-admin/sop-admin-backend/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/sop-admin/sop-admin-backend/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/sop-admin/sop-admin-backend/pom.xml b/sop-admin/sop-admin-backend/pom.xml new file mode 100644 index 00000000..f235b170 --- /dev/null +++ b/sop-admin/sop-admin-backend/pom.xml @@ -0,0 +1,294 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.6.15 + + + + com.gitee.sop + sop-admin-backend + 5.0.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + 2.6.15 + + 2021.0.5 + + + 2021.0.5.0 + + 3.2.10 + + 4.11 + 2.5 + 1.3.3 + 3.2.2 + 3.8.1 + 1.11 + 1.2 + 2.0.1.Final + 6.0.13.Final + 3.0.10 + + + + + com.gitee.sop + sop-service-support + 5.0.0-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-web + + + + org.apache.dubbo + dubbo-spring-boot-starter + + + + + org.apache.dubbo + dubbo-nacos-spring-boot-starter + + + + io.gitee.durcframework + fastmybatis-spring-boot-starter + + + + mysql + mysql-connector-java + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + commons-codec + commons-codec + + + org.apache.commons + commons-lang3 + + + commons-fileupload + commons-fileupload + + + + org.hibernate + hibernate-validator + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + com.auth0 + java-jwt + + + + org.springframework.security + spring-security-crypto + + + + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.apache.dubbo + dubbo-dependencies-zookeeper-curator5 + ${dubbo.version} + pom + provided + + + + org.projectlombok + lombok + true + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + org.apache.dubbo + dubbo-bom + ${dubbo.version} + pom + import + + + + io.gitee.durcframework + fastmybatis-spring-boot-starter + ${fastmybatis.version} + + + + com.squareup.okhttp3 + okhttp + 3.14.7 + + + + javax.validation + validation-api + ${validation-api.version} + + + org.hibernate + hibernate-validator + ${hibernate-validator.version} + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + commons-collections + commons-collections + ${commons-collection.version} + + + commons-io + commons-io + ${commons-io.version} + + + commons-codec + commons-codec + ${commons-codec.version} + + + commons-fileupload + commons-fileupload + ${commons-fileupload.version} + + + commons-logging + commons-logging + ${commons-logging.version} + + + com.auth0 + java-jwt + 3.2.0 + + + + org.projectlombok + lombok + 1.18.30 + + + javax.servlet + javax.servlet-api + 3.1.0 + + + + + + + aliyun + aliyun + https://maven.aliyun.com/repository/public + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12.4 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + ${java.version} + ${java.version} + UTF-8 + + + + + + diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/SopAdminBackendApplication.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/SopAdminBackendApplication.java new file mode 100644 index 00000000..3947e1be --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/SopAdminBackendApplication.java @@ -0,0 +1,15 @@ +package com.gitee.sop.adminbackend; + +import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +@EnableDubbo +public class SopAdminBackendApplication { + + public static void main(String[] args) { + SpringApplication.run(SopAdminBackendApplication.class, args); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/ConfigKeyEnum.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/ConfigKeyEnum.java new file mode 100644 index 00000000..482d0dcd --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/ConfigKeyEnum.java @@ -0,0 +1,22 @@ +package com.gitee.sop.adminbackend.common; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author 六如 + */ +@AllArgsConstructor +@Getter +public enum ConfigKeyEnum { + PASSWORD_SALT("admin.password-salt", ""), + JWT_TIMEOUT_DAYS("admin.jwt-timeout-days", "365"), + JWT_SECRET("admin.jwt.secret", ""), + ; + + private final String key; + + private final String defaultValue; + + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/IConfig.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/IConfig.java new file mode 100644 index 00000000..52ccf127 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/IConfig.java @@ -0,0 +1,9 @@ +package com.gitee.sop.adminbackend.common; + +public interface IConfig { + + String getConfig(String key); + + String getConfig(String key, String defaultValue); + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/Result.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/Result.java new file mode 100644 index 00000000..a5a5ea74 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/Result.java @@ -0,0 +1,46 @@ +package com.gitee.sop.adminbackend.common; + +import lombok.Data; + +import java.util.Objects; + +/** + * @author thc + */ +@Data +public class Result { + + private static final Result RESULT = new Result<>(); + + private String code = "0"; + private T data; + private String msg = "success"; + + public static Result ok() { + return RESULT; + } + + public static Result ok(E obj) { + Result result = new Result<>(); + result.setData(obj); + return result; + } + + public static Result err(String msg) { + Result result = new Result<>(); + result.setCode("1"); + result.setMsg(msg); + return result; + } + + public static Result err(String code, String msg) { + Result result = new Result<>(); + result.setCode(code); + result.setMsg(msg); + return result; + } + + public boolean getSuccess() { + return Objects.equals("0", code); + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/SpringContext.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/SpringContext.java new file mode 100644 index 00000000..5b02d621 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/SpringContext.java @@ -0,0 +1,32 @@ +package com.gitee.sop.adminbackend.common; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationEvent; + +/** + * @author 六如 + */ +public class SpringContext { + + private static ApplicationContext ctx; + + public static T getBean(Class clazz) { + return ctx.getBean(clazz); + } + + public static Object getBean(String beanName) { + return ctx.getBean(beanName); + } + + public static void setApplicationContext(ApplicationContext ctx) { + SpringContext.ctx = ctx; + } + + public static ApplicationContext getApplicationContext() { + return ctx; + } + + public static void publishEvent(ApplicationEvent event) { + ctx.publishEvent(event); + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/User.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/User.java new file mode 100644 index 00000000..d2d6711d --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/User.java @@ -0,0 +1,24 @@ +package com.gitee.sop.adminbackend.common; + +/** + * 登录用户信息 + * @author 六如 + */ +public interface User { + + /** + * 用户id + * @return + */ + Long getUserId(); + + /** + * 昵称 + * @return + */ + String getNickname(); + + Integer getStatus(); + + String getToken(); +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/BizException.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/BizException.java new file mode 100644 index 00000000..8fa63f6c --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/BizException.java @@ -0,0 +1,10 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public class BizException extends RuntimeException { + public BizException(String message) { + super(message); + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ErrorCode.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ErrorCode.java new file mode 100644 index 00000000..88759d64 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ErrorCode.java @@ -0,0 +1,30 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public enum ErrorCode { + // 1000: 登录失败 + LOGIN_FAIL("1000", "login error"), + JWT_CREATE("1000", "create token error"), + JWT_ERROR("1000", "invalid token"), + JWT_EXPIRED("1000", "token expired"), + SET_PASSWORD("2000", "set password"), + ; + + ErrorCode(String code, String msg) { + this.code = code; + this.msg = msg; + } + + private final String code; + private final String msg; + + public String getCode() { + return code; + } + + public String getMsg() { + return msg; + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ErrorTokenException.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ErrorTokenException.java new file mode 100644 index 00000000..2f4c6a32 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ErrorTokenException.java @@ -0,0 +1,7 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public class ErrorTokenException extends Exception { +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ExceptionCode.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ExceptionCode.java new file mode 100644 index 00000000..1c56bf15 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/ExceptionCode.java @@ -0,0 +1,8 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public interface ExceptionCode { + ErrorCode getCode(); +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtCreateException.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtCreateException.java new file mode 100644 index 00000000..3f9ea65e --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtCreateException.java @@ -0,0 +1,11 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public class JwtCreateException extends RuntimeException implements ExceptionCode { + @Override + public ErrorCode getCode() { + return ErrorCode.JWT_CREATE; + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtErrorException.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtErrorException.java new file mode 100644 index 00000000..81f76057 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtErrorException.java @@ -0,0 +1,12 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public class JwtErrorException extends Exception { + + @Override + public String getMessage() { + return "jwt verify error"; + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtExpiredException.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtExpiredException.java new file mode 100644 index 00000000..684f861c --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/JwtExpiredException.java @@ -0,0 +1,11 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public class JwtExpiredException extends Exception { + @Override + public String getMessage() { + return "jwt expired"; + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/LoginFailureException.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/LoginFailureException.java new file mode 100644 index 00000000..50cc75f8 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/LoginFailureException.java @@ -0,0 +1,18 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public class LoginFailureException extends RuntimeException implements ExceptionCode { + @Override + public ErrorCode getCode() { + return ErrorCode.LOGIN_FAIL; + } + + public LoginFailureException(String message) { + super(message); + } + + public LoginFailureException() { + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/SetPasswordException.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/SetPasswordException.java new file mode 100644 index 00000000..a2680cb1 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/exception/SetPasswordException.java @@ -0,0 +1,11 @@ +package com.gitee.sop.adminbackend.common.exception; + +/** + * @author tanghc + */ +public class SetPasswordException extends RuntimeException implements ExceptionCode { + @Override + public ErrorCode getCode() { + return ErrorCode.SET_PASSWORD; + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/AdminConfig.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/AdminConfig.java new file mode 100644 index 00000000..b009d4d1 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/AdminConfig.java @@ -0,0 +1,17 @@ +package com.gitee.sop.adminbackend.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @author 六如 + */ +@Configuration +@ConfigurationProperties(prefix = "admin") +@Data +public class AdminConfig { + + private int jwtTimeoutDays; + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/Configs.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/Configs.java new file mode 100644 index 00000000..6679aef1 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/Configs.java @@ -0,0 +1,46 @@ +package com.gitee.sop.adminbackend.config; + +import com.gitee.sop.adminbackend.common.ConfigKeyEnum; +import com.gitee.sop.adminbackend.common.IConfig; +import com.gitee.sop.adminbackend.common.SpringContext; + +import java.util.function.Supplier; + +/** + * @author 六如 + */ +public class Configs { + + /** + * 获取配置参数 + * + * @param keyGetter 配置key + * @return 返回配参数,没有则返回null + */ + public static String getValue(ConfigKeyEnum keyGetter) { + return getValue(keyGetter, keyGetter.getDefaultValue()); + } + + /** + * 获取配置参数 + * + * @param keyGetter 配置key + * @param defaultValue 默认值 + * @return 返回配参数,没有则返回默认值 + */ + public static String getValue(ConfigKeyEnum keyGetter, String defaultValue) { + return SpringContext.getBean(IConfig.class).getConfig(keyGetter.getKey(), defaultValue); + } + + /** + * 获取配置参数 + * + * @param keyGetter 配置key + * @param defaultValue 默认值 + * @return 返回配参数,没有则返回默认值 + */ + public static String getValue(ConfigKeyEnum keyGetter, Supplier defaultValue) { + return getValue(keyGetter, defaultValue.get()); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/SopAdminConfiguration.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/SopAdminConfiguration.java new file mode 100644 index 00000000..2da5e897 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/SopAdminConfiguration.java @@ -0,0 +1,18 @@ +package com.gitee.sop.adminbackend.config; + +import com.gitee.sop.adminbackend.common.SpringContext; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.Configuration; + +/** + * @author 六如 + */ +@Configuration +public class SopAdminConfiguration implements ApplicationContextAware { + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContext.setApplicationContext(applicationContext); + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/ExceptionHandlerController.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/ExceptionHandlerController.java new file mode 100644 index 00000000..06e3b0cd --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/ExceptionHandlerController.java @@ -0,0 +1,52 @@ +package com.gitee.sop.adminbackend.controller; + +import com.gitee.sop.adminbackend.common.Result; +import com.gitee.sop.adminbackend.common.exception.BizException; +import com.gitee.sop.adminbackend.common.exception.ErrorCode; +import com.gitee.sop.adminbackend.common.exception.ExceptionCode; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.support.DefaultMessageSourceResolvable; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 全局错误处理 + * + * @author tanghc + */ +@RestControllerAdvice +@Slf4j +public class ExceptionHandlerController { + + @ExceptionHandler(Exception.class) + public Object exceptionHandler(HttpServletRequest request, Exception e) { + if (e instanceof ExceptionCode) { + ExceptionCode exceptionCode = (ExceptionCode) e; + ErrorCode errorCode = exceptionCode.getCode(); + log.error("报错,code:{}, msg:{}", errorCode.getCode(), errorCode.getMsg(), e); + return Result.err(errorCode.getCode(), errorCode.getMsg()); + } + if (e instanceof BizException || e instanceof IllegalArgumentException) { + RuntimeException bizException = (RuntimeException) e; + return Result.err(bizException.getMessage()); + } + // 处理JSR-303错误 + if (e instanceof MethodArgumentNotValidException) { + MethodArgumentNotValidException exception = (MethodArgumentNotValidException) e; + List allErrors = exception.getBindingResult().getAllErrors(); + String msg = allErrors.stream() + .map(DefaultMessageSourceResolvable::getDefaultMessage) + .collect(Collectors.joining(", ")); + return Result.err(msg); + } + log.error("未知错误,URI:{},HttpMethod:{}", request.getRequestURI(), request.getMethod(), e); + return Result.err("系统错误,请查看日志"); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/LoginController.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/LoginController.java new file mode 100644 index 00000000..1212e29d --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/LoginController.java @@ -0,0 +1,47 @@ +package com.gitee.sop.adminbackend.controller.sys; + +import com.gitee.sop.adminbackend.common.Result; +import com.gitee.sop.adminbackend.controller.sys.req.LoginParam; +import com.gitee.sop.adminbackend.controller.sys.resp.LoginResultVO; +import com.gitee.sop.adminbackend.service.sys.login.LoginService; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginDTO; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser; +import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum; +import com.gitee.sop.adminbackend.util.CopyUtil; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 登录相关接口 + * + * @author 六如 + */ +@RestController +@RequestMapping("sys") +public class LoginController { + + @Resource + private LoginService loginService; + + /** + * 用户登录 + * + * @param param + * @return + */ + @PostMapping("login") + public Result login(@Validated @RequestBody LoginParam param) { + LoginDTO loginDTO = new LoginDTO(); + loginDTO.setUsername(param.getUsername()); + loginDTO.setPassword(param.getPassword()); + loginDTO.setRegType(RegTypeEnum.BACKEND); + LoginUser loginUser = loginService.login(loginDTO); + LoginResultVO loginResult = CopyUtil.copyBean(loginUser, LoginResultVO::new); + return Result.ok(loginResult); + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/SysAdminUserController.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/SysAdminUserController.java new file mode 100644 index 00000000..b0da1aeb --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/SysAdminUserController.java @@ -0,0 +1,76 @@ +package com.gitee.sop.adminbackend.controller.sys; + +import com.gitee.fastmybatis.core.PageInfo; +import com.gitee.fastmybatis.core.query.Query; +import com.gitee.fastmybatis.core.query.param.PageParam; +import com.gitee.sop.adminbackend.common.Result; +import com.gitee.sop.adminbackend.dao.entity.SysAdminUser; +import com.gitee.sop.adminbackend.service.sys.SysAdminUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * @author 六如 + */ +@RestController +@RequestMapping("sys/adminuser") +public class SysAdminUserController { + + @Autowired + private SysAdminUserService sysAdminUserService; + + /** + * 分页查询 + * + * @param param + * @return + */ + @GetMapping("/page") + public Result> page(PageParam param) { + Query query = param.toQuery(); + PageInfo pageInfo = sysAdminUserService.page(query); + return Result.ok(pageInfo); + } + + /** + * 新增记录 + * + * @param user + * @return + */ + @PostMapping("/save") + public Result save(SysAdminUser user) { + sysAdminUserService.save(user); + // 返回添加后的主键值 + return Result.ok(user.getId()); + } + + /** + * 修改记录 + * + * @param user 表单数据 + * @return + */ + @PutMapping("/update") + public Result update(SysAdminUser user) { + return Result.ok(sysAdminUserService.update(user)); + } + + /** + * 删除记录 + * + * @param id 主键id + * @return + */ + @DeleteMapping("/delete") + public Result delete(Long id) { + return Result.ok(sysAdminUserService.deleteById(id)); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/req/LoginParam.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/req/LoginParam.java new file mode 100644 index 00000000..cdfcd4d2 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/req/LoginParam.java @@ -0,0 +1,14 @@ +package com.gitee.sop.adminbackend.controller.sys.req; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class LoginParam { + @NotBlank(message = "用户名不能为空") + private String username; + + @NotBlank(message = "密码不能为空") + private String password; +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/resp/LoginResultVO.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/resp/LoginResultVO.java new file mode 100644 index 00000000..4d16c93d --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/resp/LoginResultVO.java @@ -0,0 +1,53 @@ +package com.gitee.sop.adminbackend.controller.sys.resp; + +import lombok.Data; + +import java.util.Set; + +/** + * @author 六如 + */ +@Data +public class LoginResultVO { + private Long id; + + /** + * 用户名 + */ + private String username; + + /** + * 用户名 + */ + private String nickname; + + /** + * 密码 + */ + private String password; + + /** + * 头像 + */ + private String avatar; + + /** + * 注册类型 + */ + private Integer regType; + + /** + * 状态,1:启用,0:禁用 + */ + private Integer status; + + private Set roles; + + private Set permissions; + + private String accessToken; + + private String refreshToken; + + private String expires; +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/ApiInfo.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/ApiInfo.java new file mode 100644 index 00000000..7df7f618 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/ApiInfo.java @@ -0,0 +1,73 @@ +package com.gitee.sop.adminbackend.dao.entity; + +import com.gitee.fastmybatis.annotation.Pk; +import com.gitee.fastmybatis.annotation.PkStrategy; +import com.gitee.fastmybatis.annotation.Table; +import lombok.Data; + +import java.time.LocalDateTime; + + +/** + * 表名:api_info + * 备注:接口信息表 + * + * @author 六如 + */ +@Table(name = "api_info", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT)) +@Data +public class ApiInfo { + + private Long id; + + /** + * 应用名称 + */ + private String application; + + /** + * 接口名称 + */ + private String apiName; + + /** + * 版本号 + */ + private String apiVersion; + + /** + * 接口class + */ + private String interfaceClassName; + + /** + * 方法名称 + */ + private String methodName; + + /** + * 参数信息 + */ + private String paramInfo; + + /** + * 接口是否需要授权访问 + */ + private Integer isPermission; + + /** + * 是否需要appAuthToken + */ + private Integer isNeedToken; + + /** + * 状态,1-启用,0-禁用 + */ + private Integer status; + + private LocalDateTime addTime; + + private LocalDateTime updateTime; + + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/IsvInfo.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/IsvInfo.java new file mode 100644 index 00000000..4a15ffb9 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/IsvInfo.java @@ -0,0 +1,43 @@ +package com.gitee.sop.adminbackend.dao.entity; + +import com.gitee.fastmybatis.annotation.Pk; +import com.gitee.fastmybatis.annotation.PkStrategy; +import com.gitee.fastmybatis.annotation.Table; +import lombok.Data; + +import java.time.LocalDateTime; + + +/** + * 表名:isv_info + * 备注:isv信息表 + * + * @author 六如 + */ +@Table(name = "isv_info", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT)) +@Data +public class IsvInfo { + + private Long id; + + /** + * appKey + */ + private String appId; + + /** + * 1启用,2禁用 + */ + private Integer status; + + /** + * 备注 + */ + private String remark; + + private LocalDateTime addTime; + + private LocalDateTime updateTime; + + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/IsvKeys.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/IsvKeys.java new file mode 100644 index 00000000..5ba26f77 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/IsvKeys.java @@ -0,0 +1,55 @@ +package com.gitee.sop.adminbackend.dao.entity; + +import com.gitee.fastmybatis.annotation.Pk; +import com.gitee.fastmybatis.annotation.PkStrategy; +import com.gitee.fastmybatis.annotation.Table; +import lombok.Data; + +import java.time.LocalDateTime; + + +/** + * 表名:isv_keys + * 备注:ISV秘钥管理 + * + * @author 六如 + */ +@Table(name = "isv_keys", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT)) +@Data +public class IsvKeys { + + private Long id; + + private String appId; + + /** + * 秘钥格式,1:PKCS8(JAVA适用),2:PKCS1(非JAVA适用) + */ + private Integer keyFormat; + + /** + * 开发者生成的公钥 + */ + private String publicKeyIsv; + + /** + * 开发者生成的私钥(交给开发者) + */ + private String privateKeyIsv; + + /** + * 平台生成的公钥(交给开发者) + */ + private String publicKeyPlatform; + + /** + * 平台生成的私钥 + */ + private String privateKeyPlatform; + + private LocalDateTime addTime; + + private LocalDateTime updateTime; + + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/SysAdminUser.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/SysAdminUser.java new file mode 100644 index 00000000..43dade7c --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/SysAdminUser.java @@ -0,0 +1,64 @@ +package com.gitee.sop.adminbackend.dao.entity; + +import java.time.LocalDateTime; + +import com.gitee.fastmybatis.annotation.Pk; +import com.gitee.fastmybatis.annotation.PkStrategy; +import com.gitee.fastmybatis.annotation.Table; + +import lombok.Data; + + +/** + * 表名:sys_admin_user + * 备注:系统用户表 + * + * @author 六如 + */ +@Table(name = "sys_admin_user", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT)) +@Data +public class SysAdminUser { + + private Long id; + + /** + * 用户名 + */ + private String username; + + /** + * 密码 + */ + private String password; + + /** + * 用户名 + */ + private String nickname; + + /** + * 邮箱 + */ + private String email; + + /** + * 头像 + */ + private String avatar; + + /** + * 状态,1:启用,0:禁用 + */ + private Integer status; + + /** + * 注册类型 + */ + private String regType; + + private LocalDateTime addTime; + + private LocalDateTime updateTime; + + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/SysConfig.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/SysConfig.java new file mode 100644 index 00000000..5d566881 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/SysConfig.java @@ -0,0 +1,38 @@ +package com.gitee.sop.adminbackend.dao.entity; + +import java.time.LocalDateTime; + +import com.gitee.fastmybatis.annotation.Pk; +import com.gitee.fastmybatis.annotation.PkStrategy; +import com.gitee.fastmybatis.annotation.Table; + +import lombok.Data; + + +/** + * 表名:sys_config + * 备注:系统配置表 + * + * @author 六如 + */ +@Table(name = "sys_config", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT)) +@Data +public class SysConfig { + + private Long id; + + private String configKey; + + private String configValue; + + private String remark; + + @com.gitee.fastmybatis.annotation.Column(logicDelete = true) + private Integer isDeleted; + + private LocalDateTime addTime; + + private LocalDateTime updateTime; + + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/ApiInfoMapper.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/ApiInfoMapper.java new file mode 100644 index 00000000..81852f29 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/ApiInfoMapper.java @@ -0,0 +1,19 @@ +package com.gitee.sop.adminbackend.dao.mapper; + + +import com.gitee.fastmybatis.core.mapper.BaseMapper; +import com.gitee.sop.adminbackend.dao.entity.ApiInfo; + +/** + * @author 六如 + */ +public interface ApiInfoMapper extends BaseMapper { + + default ApiInfo getByNameVersion(String apiName, String apiVersion) { + return this.query() + .eq(ApiInfo::getApiName, apiName) + .eq(ApiInfo::getApiVersion, apiVersion) + .get(); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/IsvInfoMapper.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/IsvInfoMapper.java new file mode 100644 index 00000000..d4159807 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/IsvInfoMapper.java @@ -0,0 +1,15 @@ +package com.gitee.sop.adminbackend.dao.mapper; + +import com.gitee.fastmybatis.core.mapper.BaseMapper; +import com.gitee.sop.adminbackend.dao.entity.IsvInfo; + +/** + * @author 六如 + */ +public interface IsvInfoMapper extends BaseMapper { + + default IsvInfo getByAppId(String appId) { + return this.get(IsvInfo::getAppId, appId); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/IsvKeysMapper.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/IsvKeysMapper.java new file mode 100644 index 00000000..006a5fe4 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/IsvKeysMapper.java @@ -0,0 +1,15 @@ +package com.gitee.sop.adminbackend.dao.mapper; + +import com.gitee.fastmybatis.core.mapper.BaseMapper; +import com.gitee.sop.adminbackend.dao.entity.IsvKeys; + +/** + * @author 六如 + */ +public interface IsvKeysMapper extends BaseMapper { + + default IsvKeys getByAppId(String appId) { + return this.get(IsvKeys::getAppId, appId); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/SysAdminUserMapper.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/SysAdminUserMapper.java new file mode 100644 index 00000000..888d9ba9 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/SysAdminUserMapper.java @@ -0,0 +1,11 @@ +package com.gitee.sop.adminbackend.dao.mapper; + +import com.gitee.fastmybatis.core.mapper.BaseMapper; +import com.gitee.sop.adminbackend.dao.entity.SysAdminUser; + +/** + * @author 六如 + */ +public interface SysAdminUserMapper extends BaseMapper { + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/SysConfigMapper.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/SysConfigMapper.java new file mode 100644 index 00000000..b83bf6dc --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/SysConfigMapper.java @@ -0,0 +1,11 @@ +package com.gitee.sop.adminbackend.dao.mapper; + +import com.gitee.fastmybatis.core.mapper.BaseMapper; +import com.gitee.sop.adminbackend.dao.entity.SysConfig; + +/** + * @author 六如 + */ +public interface SysConfigMapper extends BaseMapper { + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/UpgradeMapper.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/UpgradeMapper.java new file mode 100644 index 00000000..eff23463 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/mapper/UpgradeMapper.java @@ -0,0 +1,27 @@ +package com.gitee.sop.adminbackend.dao.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author tanghc + */ +@Mapper +public interface UpgradeMapper { + + void runSql(@Param("sql") String sql); + + /** + * 查看MYSQL表字段信息 + * @param tableName 表名 + * @return 返回字段信息 + */ + List> listColumnInfo(@Param("tableName") String tableName); + + List listTableName(); + + List> listTableIndex(@Param("tableName") String tableName); +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysAdminUserService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysAdminUserService.java new file mode 100644 index 00000000..03dfcc66 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysAdminUserService.java @@ -0,0 +1,40 @@ +package com.gitee.sop.adminbackend.service.sys; + +import com.gitee.fastmybatis.core.support.LambdaService; +import com.gitee.sop.adminbackend.common.ConfigKeyEnum; +import com.gitee.sop.adminbackend.config.AdminConfig; +import com.gitee.sop.adminbackend.config.Configs; +import com.gitee.sop.adminbackend.dao.entity.SysAdminUser; +import com.gitee.sop.adminbackend.dao.mapper.SysAdminUserMapper; +import com.gitee.sop.adminbackend.util.GenerateUtil; +import org.springframework.stereotype.Service; + + +/** + * @author 六如 + */ +@Service +public class SysAdminUserService implements LambdaService { + + + public SysAdminUser getByUsername(String username) { + return this.get(SysAdminUser::getUsername, username); + } + + public String getDbPassword(String username, String password) { + return getDbPassword(username, password, getPasswordSalt()); + } + + public String getDbPassword(String username) { + return this.query().eq(SysAdminUser::getUsername, username).getValue(SysAdminUser::getPassword); + } + + public String getDbPassword(String username, String password, String salt) { + return GenerateUtil.getUserPassword(username, password, salt); + } + + private String getPasswordSalt() { + return Configs.getValue(ConfigKeyEnum.PASSWORD_SALT); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysConfigService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysConfigService.java new file mode 100644 index 00000000..16cf0802 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysConfigService.java @@ -0,0 +1,102 @@ +package com.gitee.sop.adminbackend.service.sys; + +import com.gitee.fastmybatis.core.support.BaseLambdaService; +import com.gitee.sop.adminbackend.common.IConfig; +import com.gitee.sop.adminbackend.dao.entity.SysConfig; +import com.gitee.sop.adminbackend.dao.mapper.SysConfigMapper; +import com.gitee.sop.adminbackend.service.sys.dto.SystemConfigDTO; +import com.gitee.sop.adminbackend.util.CopyUtil; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; +import java.util.Optional; +import java.util.concurrent.TimeUnit; + +/** + * @author 六如 + */ +@Service +public class SysConfigService extends BaseLambdaService implements IConfig { + + @Resource + private Environment environment; + + // key: configKey, value: configValue + private final LoadingCache> configCache = CacheBuilder.newBuilder() + .expireAfterAccess(15, TimeUnit.MINUTES) + .build(new CacheLoader>() { + @Override + public Optional load(String key) throws Exception { + return Optional.ofNullable(getConfigValue(key, null)); + } + }); + + public String getRawValue(String key) { + return this.query() + .eq(SysConfig::getConfigKey, key) + .getValue(SysConfig::getConfigValue); + } + + public void setConfig(String key, String value) { + setConfig(key, value, ""); + } + + public void setConfig(String key, String value, String remark) { + SystemConfigDTO systemConfigDTO = new SystemConfigDTO(); + systemConfigDTO.setConfigKey(key); + systemConfigDTO.setConfigValue(value); + systemConfigDTO.setRemark(remark); + setConfig(systemConfigDTO); + } + + public void setConfig(SystemConfigDTO systemConfigDTO) { + Objects.requireNonNull(systemConfigDTO.getConfigKey(), "need key"); + Objects.requireNonNull(systemConfigDTO.getConfigValue(), "need value"); + SysConfig systemConfig = get(SysConfig::getConfigKey, systemConfigDTO.getConfigKey()); + if (systemConfig == null) { + systemConfig = CopyUtil.copyBean(systemConfigDTO, SysConfig::new); + this.save(systemConfig); + } else { + CopyUtil.copyPropertiesIgnoreNull(systemConfigDTO, systemConfig); + this.update(systemConfig); + } + configCache.invalidate(systemConfigDTO.getConfigKey()); + } + + /** + * 获取配置信息 + *
+     *  优先级:
+     *  数据库
+     *  Environment
+     *  默认配置
+     * 
+ * + * @param key 配置key + * @param defaultValue 没有获取到返回的默认值 + * @return 返回配置信息,如果没有获取到值,则返回默认值 + */ + public String getConfigValue(String key, String defaultValue) { + Objects.requireNonNull(key, "need key"); + SysConfig systemConfig = get(SysConfig::getConfigKey, key); + return Optional.ofNullable(systemConfig) + .map(SysConfig::getConfigValue) + .orElseGet(() -> environment.getProperty(key, defaultValue)); + } + + @Override + public String getConfig(String key) { + return configCache.getUnchecked(key).orElse(null); + } + + @Override + public String getConfig(String key, String defaultValue) { + return configCache.getUnchecked(key).orElse(defaultValue); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/UpgradeService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/UpgradeService.java new file mode 100644 index 00000000..28712b32 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/UpgradeService.java @@ -0,0 +1,67 @@ +package com.gitee.sop.adminbackend.service.sys; + +import com.gitee.sop.adminbackend.common.ConfigKeyEnum; +import com.gitee.sop.adminbackend.dao.entity.SysAdminUser; +import com.gitee.sop.adminbackend.dao.mapper.UpgradeMapper; +import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum; +import com.gitee.sop.adminbackend.util.PasswordUtil; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.security.crypto.bcrypt.BCrypt; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; + +/** + * @author 六如 + */ +@Service +public class UpgradeService { + + @Resource + private SysConfigService sysConfigService; + + @Resource + private SysAdminUserService sysAdminUserService; + + @Resource + private UpgradeMapper upgradeMapper; + + @PostConstruct + public void init() { + this.initJwtSecret(); + this.insertAdmin(); + } + + private void initJwtSecret() { + String configKey = ConfigKeyEnum.JWT_SECRET.getKey(); + String value = sysConfigService.getRawValue(configKey); + if (StringUtils.isBlank(value)) { + value = PasswordUtil.getRandomSimplePassword(30); + sysConfigService.setConfig(configKey, value); + } + } + + + public void insertAdmin() { + SysAdminUser userInfo = sysAdminUserService.getByUsername("admin"); + if (userInfo != null) { + return; + } + String username = "admin"; + String tpl = "INSERT INTO `sys_admin_user` ( `username`, `password`, `nickname`, `reg_type`) VALUES \n" + + "\t('%s','%s','%s','%s');"; + // 初始密码 + String defPassword = "123456"; + defPassword = DigestUtils.sha256Hex(defPassword); + String encodedPassword = BCrypt.hashpw(defPassword, BCrypt.gensalt()); + String sql = String.format(tpl, username, encodedPassword, username, RegTypeEnum.BACKEND.getValue()); + runSql(sql); + } + + protected void runSql(String sql) { + upgradeMapper.runSql(sql); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/dto/SystemConfigDTO.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/dto/SystemConfigDTO.java new file mode 100644 index 00000000..7bd4cfab --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/dto/SystemConfigDTO.java @@ -0,0 +1,18 @@ +package com.gitee.sop.adminbackend.service.sys.dto; + +import lombok.Data; + +/** + * @author tanghc + */ +@Data +public class SystemConfigDTO { + /** 数据库字段:config_key */ + private String configKey; + + /** 数据库字段:config_value */ + private String configValue; + + /** 数据库字段:remark */ + private String remark; +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/LoginService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/LoginService.java new file mode 100644 index 00000000..36333028 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/LoginService.java @@ -0,0 +1,153 @@ +package com.gitee.sop.adminbackend.service.sys.login; + +import com.alibaba.nacos.shaded.com.google.common.collect.Sets; +import com.gitee.fastmybatis.core.query.Query; +import com.gitee.sop.adminbackend.common.ConfigKeyEnum; +import com.gitee.sop.adminbackend.common.exception.BizException; +import com.gitee.sop.adminbackend.config.Configs; +import com.gitee.sop.adminbackend.dao.entity.SysAdminUser; +import com.gitee.sop.adminbackend.service.sys.SysAdminUserService; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginDTO; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginForm; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginResult; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser; +import com.gitee.sop.adminbackend.service.sys.login.enums.AdminUserStatusEnum; +import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum; +import com.gitee.sop.adminbackend.util.CopyUtil; +import com.gitee.sop.adminbackend.util.GenerateUtil; +import com.gitee.sop.adminbackend.util.JwtUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.math.NumberUtils; +import org.springframework.security.crypto.bcrypt.BCrypt; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * @author 六如 + */ +@Service +@Slf4j +public class LoginService { + + @Resource + private SysAdminUserService sysAdminUserService; + + @Resource + private UserCacheManager userCacheManager; + + + public LoginUser login(LoginDTO loginDTO) { + String username = loginDTO.getUsername(); + String password = loginDTO.getPassword(); + RegTypeEnum regType = loginDTO.getRegType(); + SysAdminUser userInfo; + switch (regType) { + case FORM: + throw new UnsupportedOperationException("第三方登录暂未支持"); + case LDAP: + // LDAP登录 + throw new UnsupportedOperationException("LDAP登录登录暂未支持"); + default: { + // 默认注册账号登录 + userInfo = this.doDatabaseLogin(username, password); + } + } + LoginUser loginUser = buildLoginUser(userInfo); + // 保存到缓存 + userCacheManager.saveUser(loginUser); + return loginUser; + } + + private LoginUser buildLoginUser(SysAdminUser userInfo) { + if (AdminUserStatusEnum.of(userInfo.getStatus()) == AdminUserStatusEnum.DISABLED) { + throw new BizException("账号已禁用,请联系管理员"); + } + // 登录成功 + LoginUser loginUser = CopyUtil.copyBean(userInfo, LoginUser::new); + // 创建token + String token = this.createToken(userInfo.getId()); + loginUser.setAccessToken(token); + if ("admin".equals(userInfo.getUsername())) { + // ROLE + loginUser.setRoles(Sets.newHashSet("admin")); + // *:*:* 表示所有权限 + loginUser.setPermissions(Sets.newHashSet("*:*:*")); + } else { + // TODO:其它角色权限 + loginUser.setRoles(Sets.newHashSet()); + loginUser.setPermissions(Sets.newHashSet()); + } + // 设置token过期时间 + String value = Configs.getValue(ConfigKeyEnum.JWT_TIMEOUT_DAYS); + LocalDateTime expireDate = LocalDateTime.now().plusDays(NumberUtils.toInt(value)); + loginUser.setExpires(expireDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))); + return loginUser; + } + + private String createToken(long userId) { + Map data = new HashMap<>(4); + data.put("id", String.valueOf(userId)); + String value = Configs.getValue(ConfigKeyEnum.JWT_TIMEOUT_DAYS); + return JwtUtil.createJwt(data, NumberUtils.toInt(value), getJwtSecret()); + } + + public static String getJwtSecret() { + return Configs.getValue(ConfigKeyEnum.JWT_SECRET); + } + + private SysAdminUser doThirdPartyLogin(ThirdPartyLoginManager thirdPartyLoginManager, String username, String password) { + LoginForm loginForm = new LoginForm(); + loginForm.setUsername(username); + loginForm.setPassword(password); + LoginResult loginResult; + try { + loginResult = thirdPartyLoginManager.login(loginForm); + } catch (Exception e) { + log.error("第三方登录失败", e); + throw new BizException(e.getMessage()); + } + + SysAdminUser userInfo = sysAdminUserService.getByUsername(username); + + // 用户第一次登录则插入到user_info表 + if (userInfo == null) { + userInfo = new SysAdminUser(); + userInfo.setUsername(username); + userInfo.setPassword(GenerateUtil.getUUID()); + userInfo.setNickname(loginResult.getNickname()); + userInfo.setAvatar(""); + userInfo.setStatus(AdminUserStatusEnum.ENABLE.getStatus()); + userInfo.setRegType(loginResult.getRegTypeEnum().getValue()); + userInfo.setEmail(loginResult.getEmail()); + sysAdminUserService.save(userInfo); + } else { + String email = loginResult.getEmail(); + // 如果更改了邮箱 + if (StringUtils.hasText(email) && !Objects.equals(email, userInfo.getEmail())) { + userInfo.setEmail(email); + sysAdminUserService.update(userInfo); + } + } + return userInfo; + } + + private SysAdminUser doDatabaseLogin(String username, String password) { + SysAdminUser sysAdminUser = sysAdminUserService.getByUsername(username); + Assert.notNull(sysAdminUser, () -> "用户名密码不正确"); + String encodedPasswordDb = sysAdminUser.getPassword(); + // 校验 + boolean flag = BCrypt.checkpw(password, encodedPasswordDb); + Assert.isTrue(flag, () -> "用户名密码不正确"); + return sysAdminUser; + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/NotNullStringBuilder.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/NotNullStringBuilder.java new file mode 100644 index 00000000..fa0dbee2 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/NotNullStringBuilder.java @@ -0,0 +1,40 @@ +package com.gitee.sop.adminbackend.service.sys.login; + +/** + * @author thc + */ +public class NotNullStringBuilder { + + private final StringBuilder stringBuilder = new StringBuilder(); + + public NotNullStringBuilder append(Number o) { + stringBuilder.append(formatValue(o)); + return this; + } + + public NotNullStringBuilder append(String o) { + stringBuilder.append(formatValue(o)); + return this; + } + + public NotNullStringBuilder append(String o, String defaultValue) { + if (o == null || o.length() == 0) { + o = defaultValue; + } + stringBuilder.append(formatValue(o)); + return this; + } + + private static String formatValue(Number o) { + return o == null ? "0" : String.valueOf(o); + } + + private static String formatValue(String o) { + return o == null ? "" : o; + } + + @Override + public String toString() { + return stringBuilder.toString(); + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/ThirdPartyLoginManager.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/ThirdPartyLoginManager.java new file mode 100644 index 00000000..47db668e --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/ThirdPartyLoginManager.java @@ -0,0 +1,17 @@ +package com.gitee.sop.adminbackend.service.sys.login; + +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginForm; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginResult; + +/** + * @author 六如 + */ +public interface ThirdPartyLoginManager { + + /** + * 第三方登录 + * @param loginForm 登录表单 + * @return 返回登录结果 + */ + LoginResult login(LoginForm loginForm) throws Exception; +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/UserCacheManager.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/UserCacheManager.java new file mode 100644 index 00000000..0befb3f1 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/UserCacheManager.java @@ -0,0 +1,21 @@ +package com.gitee.sop.adminbackend.service.sys.login; + +import com.gitee.sop.adminbackend.common.User; + +/** + * @author 六如 + */ +public interface UserCacheManager { + /** + * 返回用户信息 + * @param userId 用户id + * @return 查不到返回null + */ + User getUser(long userId); + + /** + * 保存用户 + * @param user 用户 + */ + void saveUser(User user); +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginDTO.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginDTO.java new file mode 100644 index 00000000..56e0613b --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginDTO.java @@ -0,0 +1,11 @@ +package com.gitee.sop.adminbackend.service.sys.login.dto; + +import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum; +import lombok.Data; + +@Data +public class LoginDTO { + private String username; + private String password; + private RegTypeEnum regType = RegTypeEnum.BACKEND; +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginForm.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginForm.java new file mode 100644 index 00000000..5c9766f3 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginForm.java @@ -0,0 +1,12 @@ +package com.gitee.sop.adminbackend.service.sys.login.dto; + +import lombok.Data; + +/** + * @author 六如 + */ +@Data +public class LoginForm { + private String username; + private String password; +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginResult.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginResult.java new file mode 100644 index 00000000..a5c487bb --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginResult.java @@ -0,0 +1,20 @@ +package com.gitee.sop.adminbackend.service.sys.login.dto; + +import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum; +import lombok.Data; + +/** + * @author 六如 + */ +@Data +public class LoginResult { + + private String username; + + private String nickname; + + private String email; + + private RegTypeEnum regTypeEnum = RegTypeEnum.FORM; + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginUser.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginUser.java new file mode 100644 index 00000000..50dfd25c --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/dto/LoginUser.java @@ -0,0 +1,83 @@ +package com.gitee.sop.adminbackend.service.sys.login.dto; + +import com.gitee.sop.adminbackend.common.User; +import lombok.Data; + +import java.util.Set; + +/** + * @author 六如 + */ +@Data +public class LoginUser implements User { + + /* + avatar: "https://avatars.githubusercontent.com/u/44761321", + username: "admin", + nickname: "小铭", + // 一个用户可能有多个角色 + roles: ["admin"], + // 按钮级别权限 + permissions: ["*:*:*"], + accessToken: "eyJhbGciOiJIUzUxMiJ9.admin", + refreshToken: "eyJhbGciOiJIUzUxMiJ9.adminRefresh", + expires: "2030/10/30 00:00:00" + */ + + private Long id; + + /** + * 用户名 + */ + private String username; + + /** + * 用户名 + */ + private String nickname; + + /** + * 密码 + */ + private String password; + + /** + * 头像 + */ + private String avatar; + + /** + * 注册类型 + */ + private Integer regType; + + /** + * 状态,1:启用,0:禁用 + */ + private Integer status; + + private Set roles; + + private Set permissions; + + private String accessToken; + + private String refreshToken; + + private String expires; + + @Override + public Long getUserId() { + return id; + } + + @Override + public Integer getStatus() { + return status; + } + + @Override + public String getToken() { + return accessToken; + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/enums/AdminUserStatusEnum.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/enums/AdminUserStatusEnum.java new file mode 100644 index 00000000..0ad1ede1 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/enums/AdminUserStatusEnum.java @@ -0,0 +1,34 @@ +package com.gitee.sop.adminbackend.service.sys.login.enums; + +import java.util.Objects; + +/** + * @author 六如 + */ +public enum AdminUserStatusEnum { + DISABLED((byte)0), + ENABLE((byte)1), + SET_PWD((byte)2), + ; + + private final int status; + + public static AdminUserStatusEnum of(Integer value) { + for (AdminUserStatusEnum adminUserStatusEnum : AdminUserStatusEnum.values()) { + if (Objects.equals(adminUserStatusEnum.status, value)) { + return adminUserStatusEnum; + } + } + return DISABLED; + } + + AdminUserStatusEnum(byte style) { + this.status = style; + } + + public int getStatus() { + return status; + } + + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/enums/RegTypeEnum.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/enums/RegTypeEnum.java new file mode 100644 index 00000000..d350d306 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/enums/RegTypeEnum.java @@ -0,0 +1,30 @@ +package com.gitee.sop.adminbackend.service.sys.login.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Objects; + +/** + * @author 六如 + */ +@AllArgsConstructor +@Getter +public enum RegTypeEnum { + BACKEND("backend"), + FORM("form"), + OAUTH("oauth"), + LDAP("ldap"), + ; + + public static RegTypeEnum of(String source) { + for (RegTypeEnum value : RegTypeEnum.values()) { + if (Objects.equals(source, value.value)) { + return value; + } + } + return RegTypeEnum.BACKEND; + } + + private final String value; +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/impl/DefaultUserCacheManager.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/impl/DefaultUserCacheManager.java new file mode 100644 index 00000000..615ada0f --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/impl/DefaultUserCacheManager.java @@ -0,0 +1,90 @@ +package com.gitee.sop.adminbackend.service.sys.login.impl; + +import com.gitee.sop.adminbackend.common.User; +import com.gitee.sop.adminbackend.dao.entity.SysAdminUser; +import com.gitee.sop.adminbackend.service.sys.SysAdminUserService; +import com.gitee.sop.adminbackend.service.sys.login.UserCacheManager; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser; +import com.gitee.sop.adminbackend.service.sys.login.enums.AdminUserStatusEnum; +import com.gitee.sop.adminbackend.util.CopyUtil; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.Optional; +import java.util.concurrent.TimeUnit; + +/** + * @author 六如 + */ +@Service +@Slf4j +public class DefaultUserCacheManager implements UserCacheManager, InitializingBean { + + @Autowired + private SysAdminUserService sysAdminUserService; + + @Value("${admin.user-cache-timeout-minutes:15}") + private int timeoutMinutes; + + // key: userId + private LoadingCache> userCache; + + @Override + public User getUser(long userId) { + return userCache.getUnchecked(userId).orElse(null); + } + + @Override + public void saveUser(User user) { + if (user == null) { + return; + } + userCache.put(user.getUserId(), Optional.of(user)); + } + + private LoadingCache> buildCache(int timeout) { + if (timeout <= 0) { + throw new IllegalArgumentException("timeout must be gt 0"); + } + CacheBuilder cacheBuilder = CacheBuilder.newBuilder(); + cacheBuilder.expireAfterAccess(timeout, TimeUnit.MINUTES); + return cacheBuilder + .build(new CacheLoader>() { + @Override + public Optional load(Long id) throws Exception { + User user = getLoginUser(id); + return Optional.ofNullable(user); + } + }); + } + + /** + * 获取登陆用户 + * @param id + * @return + */ + private User getLoginUser(long id) { + SysAdminUser userInfo = sysAdminUserService.getById(id); + if (userInfo == null) { + log.warn("登录用户不存在,userId:{}", id); + return null; + } + if (userInfo.getStatus() == AdminUserStatusEnum.DISABLED.getStatus()) { + log.warn("用户被禁用, userId:{}, username:{}, nickname:{}", userInfo.getId(), userInfo.getUsername(), userInfo.getNickname()); + return null; + } + return CopyUtil.copyBean(userInfo, LoginUser::new); + } + + @Override + public void afterPropertiesSet() throws Exception { + userCache = buildCache(timeoutMinutes); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/CopyUtil.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/CopyUtil.java new file mode 100644 index 00000000..21a8e570 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/CopyUtil.java @@ -0,0 +1,344 @@ +package com.gitee.sop.adminbackend.util; + +import com.alibaba.fastjson2.JSON; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +/** + * 属性拷贝工具类 + * + * @author 六如 + */ +public class CopyUtil extends BeanUtils { + + /** + * 属性拷贝,第一个参数中的属性值拷贝到第二个参数中
+ * 注意:当第一个参数中的属性有null值时,不会拷贝进去 + * + * @param from 源对象 + * @param to 目标对象 + * @param ignoreProperties 忽略的字段 + * @throws BeansException + */ + public static void copyPropertiesIgnoreNull(Object from, Object to, String... ignoreProperties) + throws BeansException { + Assert.notNull(from, "Source must not be null"); + Assert.notNull(to, "Target must not be null"); + + Class actualEditable = to.getClass(); + PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable); + List ignoreList = (ignoreProperties != null ? Arrays.asList(ignoreProperties) : Collections.emptyList()); + + for (PropertyDescriptor targetPd : targetPds) { + if (ignoreList.contains(targetPd.getName())) { + continue; + } + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null) { + PropertyDescriptor sourcePd = getPropertyDescriptor(from.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(from); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + // 这里判断value是否为空 当然这里也能进行一些特殊要求的处理 + // 例如绑定时格式转换等等 + if (value != null) { + writeMethod.invoke(to, value); + } + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } + + /** + * 拷贝指定的字段 + * + * @param from 源对象 + * @param to 目标对象 + * @param includeFields 指定字段 + */ + public static void copyPropertiesInclude(Object from, Object to, Set includeFields) { + Objects.requireNonNull(includeFields, "includeFields can not null"); + Assert.notNull(from, "Source must not be null"); + Assert.notNull(to, "Target must not be null"); + if (includeFields.isEmpty()) { + return; + } + Class actualEditable = to.getClass(); + PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable); + + for (PropertyDescriptor targetPd : targetPds) { + if (!includeFields.contains(targetPd.getName())) { + continue; + } + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null) { + PropertyDescriptor sourcePd = getPropertyDescriptor(from.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(from); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(to, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } + + /** + * 拷贝属性 + * + * @param from 被拷贝类 + * @param to 目标类 + */ + public static void copyProperties(Object from, Object to) { + BeanUtils.copyProperties(from, to); + } + + /** + * 拷贝bean成为一个新类 + * + * @param from 被拷贝类 + * @param supplier 新的类获取回调 + * @param 新的类 + * @return 返回新的类实例,from为null时,返回null + */ + public static T copyBean(Object from, Supplier supplier) { + if (from == null) { + return null; + } + T to = supplier.get(); + BeanUtils.copyProperties(from, to); + return to; + } + + /** + * 拷贝实例 + * + * @param from 被拷贝类 + * @param supplier 新的类获取回调 + * @param after 对新的类最后续处理回调 + * @param 新的类 + * @return 返回新的类 + */ + public static T copyBean(Object from, Supplier supplier, Consumer after) { + if (from == null) { + return null; + } + T to = supplier.get(); + BeanUtils.copyProperties(from, to); + after.accept(to); + return to; + } + + /** + * 拷贝List,将list中的类转换成新的对象 + * + * @param collection 被拷贝的集合 + * @param toElement List新元素 + * @param 新元素类型 + * @return 返回新的List + */ + public static List copyList(Collection collection, Supplier toElement) { + if (collection == null || collection.isEmpty()) { + return new ArrayList<>(); + } + return collection.stream() + .map(source -> { + T target = toElement.get(); + BeanUtils.copyProperties(source, target); + return target; + }) + .collect(Collectors.toList()); + } + + public static List copyList(Collection fromList, Function function) { + if (fromList == null) { + return new ArrayList<>(); + } + return fromList.stream() + .map(source -> { + R target = function.apply(source); + BeanUtils.copyProperties(source, target); + return target; + }) + .collect(Collectors.toList()); + } + + /** + * 拷贝List,并做后续处理 + * + * @param fromList 被拷贝的list + * @param toElement 新元素 + * @param after 对新元素做后续处理 + * @param 新类型 + * @return 返回新的List + */ + public static List copyList(Collection fromList, Supplier toElement, Consumer after) { + if (fromList == null) { + return new ArrayList<>(); + } + return fromList.stream() + .map(source -> { + T target = toElement.get(); + BeanUtils.copyProperties(source, target); + after.accept(target); + return target; + }) + .collect(Collectors.toList()); + } + + /** + * 拷贝List,并做后续处理 + * + * @param fromList 被拷贝的list + * @param toElement 新元素 + * @param after 对新元素做后续处理 + * @param 新类型 + * @return 返回新的List + */ + public static List copyList(Collection fromList, Supplier toElement, CopyConsumer after) { + if (fromList == null) { + return new ArrayList<>(); + } + return fromList.stream() + .map(source -> { + T target = toElement.get(); + BeanUtils.copyProperties(source, target); + after.apply(source, target); + return target; + }) + .collect(Collectors.toList()); + } + + /** + * 深层次拷贝,通过json转换的方式实现 + * + * @param from 待转换的类 + * @param toClass 目标类class + * @param 目标类 + * @return 返回目标类 + */ + public static T deepCopy(Object from, Class toClass) { + String json = JSON.toJSONString(from); + return JSON.parseObject(json, toClass); + } + + /** + * 深层次拷贝,通过json转换的方式实现 + * + * @param from 待转换的类 + * @param toClass 目标类class + * @param 目标类 + * @return 返回目标类 + */ + public static List deepCopyList(Object from, Class toClass) { + String json = JSON.toJSONString(from); + return JSON.parseArray(json, toClass); + } + + + /** + * 拷贝map + * + * @param srcMap 原map + * @param valueGetter 值转换 + * @param Key类型 + * @param Value类型 + * @return 返回新map + */ + public static Map copyMap(Map srcMap, Supplier valueGetter) { + Map ret = new LinkedHashMap<>(srcMap.size() * 2); + for (Map.Entry entry : srcMap.entrySet()) { + V value = copyBean(entry.getValue(), valueGetter); + ret.put(entry.getKey(), value); + } + return ret; + } + + /** + * 拷贝map + * + * @param srcMap 原map + * @param function 值转换 + * @param Key类型 + * @param Value类型 + * @return 返回新map + */ + public static Map copyMap(Map srcMap, Function function) { + Map ret = new LinkedHashMap<>(srcMap.size() * 2); + for (Map.Entry entry : srcMap.entrySet()) { + V value = function.apply(entry.getValue()); + ret.put(entry.getKey(), value); + } + return ret; + } + + /** + * 拷贝map,value是list + * + * @param srcMap 原map + * @param valueGetter 值转换 + * @param Key类型 + * @param Value类型 + * @return 返回新map + */ + public static Map> copyMapList(Map> srcMap, Function, List> valueGetter) { + Map> ret = new LinkedHashMap<>(srcMap.size() * 2); + for (Map.Entry> entry : srcMap.entrySet()) { + List value = valueGetter.apply(entry.getValue()); + ret.put(entry.getKey(), value); + } + return ret; + } + + public interface CopyConsumer { + void apply(F from, T to); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/GenerateUtil.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/GenerateUtil.java new file mode 100644 index 00000000..c94e31d7 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/GenerateUtil.java @@ -0,0 +1,22 @@ +package com.gitee.sop.adminbackend.util; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.DigestUtils; + +import java.nio.charset.StandardCharsets; + +/** + * @author 六如 + */ +@Slf4j +public class GenerateUtil { + + public static String getUserPassword(String username, String password, String salt) { + return DigestUtils.md5DigestAsHex((username + password + salt).getBytes(StandardCharsets.UTF_8)); + } + + public static String getUUID() { + return IdGen.uuid(); + } + +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/IdGen.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/IdGen.java new file mode 100644 index 00000000..c595505f --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/IdGen.java @@ -0,0 +1,171 @@ +package com.gitee.sop.adminbackend.util; + +import java.util.UUID; + +public class IdGen { + private static long workId = 0; + private static final SnowflakeIdWorker worker = new SnowflakeIdWorker(workId++, 0); + + public static long genId() { + return worker.nextId(); + } + + /** + * 生成唯一id + * @return + */ + public static String nextId() { + return String.valueOf(genId()); + } + + public static String uuid() { + return UUID.randomUUID().toString().replace("-", ""); + } + + /** + * Twitter_Snowflake
+ * SnowFlake的结构如下(每部分用-分开):
+ * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
+ * 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0
+ * 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截) + * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69
+ * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId
+ * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号
+ * 加起来刚好64位,为一个Long型。
+ * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。 + */ + public static class SnowflakeIdWorker { + + // ==============================Fields=========================================== + /** 开始时间截 (2015-01-01) */ + private final long twepoch = 1420041100000L; + + /** 机器id所占的位数 */ + private final long workerIdBits = 5L; + + /** 数据标识id所占的位数 */ + private final long datacenterIdBits = 5L; + + /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */ + private final long maxWorkerId = -1L ^ (-1L << workerIdBits); + + /** 支持的最大数据标识id,结果是31 */ + private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); + + /** 序列在id中占的位数 */ + private final long sequenceBits = 12L; + + /** 机器ID向左移12位 */ + private final long workerIdShift = sequenceBits; + + /** 数据标识id向左移17位(12+5) */ + private final long datacenterIdShift = sequenceBits + workerIdBits; + + /** 时间截向左移22位(5+5+12) */ + private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; + + /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */ + private final long sequenceMask = -1L ^ (-1L << sequenceBits); + + /** 工作机器ID(0~31) */ + private long workerId; + + /** 数据中心ID(0~31) */ + private long datacenterId; + + /** 毫秒内序列(0~4095) */ + private long sequence = 0L; + + /** 上次生成ID的时间截 */ + private long lastTimestamp = -1L; + + //==============================Constructors===================================== + /** + * 构造函数 + * @param workerId 工作ID (0~31) + * @param datacenterId 数据中心ID (0~31) + */ + public SnowflakeIdWorker(long workerId, long datacenterId) { + if (workerId > maxWorkerId || workerId < 0) { + throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId)); + } + if (datacenterId > maxDatacenterId || datacenterId < 0) { + throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId)); + } + this.workerId = workerId; + this.datacenterId = datacenterId; + } + + // ==============================Methods========================================== + /** + * 获得下一个ID (该方法是线程安全的) + * @return SnowflakeId + */ + public synchronized long nextId() { + long timestamp = timeGen(); + + //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常 + if (timestamp < lastTimestamp) { + throw new RuntimeException( + String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp)); + } + + //如果是同一时间生成的,则进行毫秒内序列 + if (lastTimestamp == timestamp) { + sequence = (sequence + 1) & sequenceMask; + //毫秒内序列溢出 + if (sequence == 0) { + //阻塞到下一个毫秒,获得新的时间戳 + timestamp = tilNextMillis(lastTimestamp); + } + } + //时间戳改变,毫秒内序列重置 + else { + sequence = 0L; + } + + //上次生成ID的时间截 + lastTimestamp = timestamp; + + //移位并通过或运算拼到一起组成64位的ID + return ((timestamp - twepoch) << timestampLeftShift) + | (datacenterId << datacenterIdShift) + | (workerId << workerIdShift) + | sequence; + } + + /** + * 阻塞到下一个毫秒,直到获得新的时间戳 + * @param lastTimestamp 上次生成ID的时间截 + * @return 当前时间戳 + */ + protected long tilNextMillis(long lastTimestamp) { + long timestamp = timeGen(); + while (timestamp <= lastTimestamp) { + timestamp = timeGen(); + } + return timestamp; + } + + /** + * 返回以毫秒为单位的当前时间 + * @return 当前时间(毫秒) + */ + protected long timeGen() { + return System.currentTimeMillis(); + } + + } + /*//==============================Test============================================= + */ + /** 测试 + public static void main(String[] args) { + SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); + for (int i = 0; i < 100; i++) { + long id = idWorker.nextId(); + System.out.println("id:" + id); + System.out.println("toBinaryString:" + Long.toBinaryString(id)); + } + } + */ +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/JwtUtil.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/JwtUtil.java new file mode 100644 index 00000000..4b7b53cb --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/JwtUtil.java @@ -0,0 +1,97 @@ +package com.gitee.sop.adminbackend.util; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTCreator; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.exceptions.TokenExpiredException; +import com.auth0.jwt.interfaces.Claim; +import com.auth0.jwt.interfaces.DecodedJWT; +import com.gitee.sop.adminbackend.common.exception.JwtCreateException; +import com.gitee.sop.adminbackend.common.exception.JwtErrorException; +import com.gitee.sop.adminbackend.common.exception.JwtExpiredException; +import lombok.extern.slf4j.Slf4j; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +/** + * @author tanghc + */ +@Slf4j +public class JwtUtil { + + private static final Map headerClaims = new HashMap<>(); + + /** + * 登录成功后跳转页面 + */ + private static final String SUCCESS_HTML = String.join("\n", Arrays.asList( + "" + )); + + static { + headerClaims.put("typ", "JWT"); + headerClaims.put("alg", "HS256"); + } + + public static String createJwt(Map data, int timeoutDays, String secret) { + JWTCreator.Builder builder = JWT.create().withHeader(headerClaims); + Set> entrySet = data.entrySet(); + for (Map.Entry entry : entrySet) { + builder.withClaim(entry.getKey(), entry.getValue()); + } + LocalDateTime expiredDay = LocalDateTime.now().plusDays(timeoutDays); + Date expiredDate = Date.from(expiredDay.atZone(ZoneId.systemDefault()).toInstant()); + try { + return builder + // 过期时间 + .withExpiresAt(expiredDate) + // 创建时间 + .withIssuedAt(new Date()) + // 签名 + .sign(Algorithm.HMAC256(secret)); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new JwtCreateException(); + } + } + + public static Map verifyJwt(String token, String secret) throws JwtExpiredException, JwtErrorException { + JWTVerifier verifier = null; + try { + verifier = JWT.require(Algorithm.HMAC256(secret)).build(); + } catch (Exception e) { + log.error("验证jwt失败", e); + throw new JwtErrorException(); + } + + DecodedJWT jwt; + try { + jwt = verifier.verify(token); + } catch (TokenExpiredException e) { + throw new JwtExpiredException(); + } catch (Exception e) { + log.error("验证jwt失败", e); + throw new JwtErrorException(); + } + + return jwt.getClaims(); + } + + public static String getJumpPageHtml(String token) { + return getJumpPageHtml(token, "/"); + } + + public static String getJumpPageHtml(String token, String redirectUrl) { + return String.format(SUCCESS_HTML, token, redirectUrl); + } +} diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/PasswordUtil.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/PasswordUtil.java new file mode 100644 index 00000000..5ebb47f8 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/util/PasswordUtil.java @@ -0,0 +1,64 @@ +package com.gitee.sop.adminbackend.util; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class PasswordUtil { + + private static final List CHARS; + private static final List SIMPLE_CHARS; + + static { + CHARS = getCharList("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^&*-=,.<>"); + SIMPLE_CHARS = getCharList("abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789"); + } + + private static List getCharList(String str) { + char[] chars = str.toCharArray(); + List list = new ArrayList<>(chars.length); + for (char c : chars) { + list.add(c); + } + Collections.shuffle(list); + return list; + } + + public static void main(String[] args) { + String password = getRandomPassword(32); + System.out.println(password); + } + + /** + * 随机密码生成,仅字母数字 + * @param len 密码长度,必须大于等于4 + */ + public static String getRandomSimplePassword(int len) { + if (len < 4) { + throw new IllegalArgumentException("'len' must >= 4"); + } + StringBuilder sb = new StringBuilder(); + Random r = new Random(); + for (int x = 0; x < len; ++x) { + sb.append(SIMPLE_CHARS.get(r.nextInt(SIMPLE_CHARS.size()))); + } + return sb.toString(); + } + + /** + * 随机密码生成 + * @param len 密码长度,必须大于等于6 + */ + public static String getRandomPassword(int len) { + if (len < 6) { + throw new IllegalArgumentException("'len' must >= 6"); + } + StringBuilder sb = new StringBuilder(); + Random r = new Random(); + for (int x = 0; x < len; ++x) { + sb.append(CHARS.get(r.nextInt(CHARS.size()))); + } + return sb.toString(); + } +} diff --git a/sop-admin/sop-admin-backend/src/main/resources/application-dev.properties b/sop-admin/sop-admin-backend/src/main/resources/application-dev.properties new file mode 100644 index 00000000..0b2b9000 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/resources/application-dev.properties @@ -0,0 +1,8 @@ +dubbo.registry.address=zookeeper://localhost:2181 + +mybatis.print-sql=true + +# mysql config +mysql.host=127.0.0.1:3306 +mysql.username=root +mysql.password=root diff --git a/sop-admin/sop-admin-backend/src/main/resources/application-test.properties b/sop-admin/sop-admin-backend/src/main/resources/application-test.properties new file mode 100644 index 00000000..53e5d0bc --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/resources/application-test.properties @@ -0,0 +1,2 @@ + +dubbo.registry.address=nacos://localhost:8848 diff --git a/sop-admin/sop-admin-backend/src/main/resources/application.properties b/sop-admin/sop-admin-backend/src/main/resources/application.properties new file mode 100644 index 00000000..a130076a --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/resources/application.properties @@ -0,0 +1,33 @@ +server.port=8082 +spring.profiles.active=dev + +spring.application.name=sop-admin-backend + +dubbo.protocol.name=dubbo +dubbo.protocol.port=-1 +dubbo.application.qos-enable=false +dubbo.registry.address=zookeeper://localhost:2181 + +####### mysql config ####### +mysql.host=127.0.0.1:3306 +mysql.username= +mysql.password= +mysql.db=sop + +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://${mysql.host}/${mysql.db}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai +spring.datasource.username=${mysql.username} +spring.datasource.password=${mysql.password} + +####### mybatis config ####### +mybatis.fill.com.gitee.fastmybatis.core.support.LocalDateTimeFillInsert=add_time +mybatis.fill.com.gitee.fastmybatis.core.support.LocalDateTimeFillUpdate=update_time +# mybatis config file +mybatis.config-location=classpath:mybatis/mybatisConfig.xml +mybatis.mapper-locations=classpath:mybatis/mapper/*.xml + + +# print SQL +logging.level.com.gitee.sop.adminbackend.dao=error +logging.level.com.gitee.fastmybatis=info +mybatis.print-sql=false diff --git a/sop-admin/sop-admin-backend/src/main/resources/mybatis/mapper/UpgradeMapper.xml b/sop-admin/sop-admin-backend/src/main/resources/mybatis/mapper/UpgradeMapper.xml new file mode 100644 index 00000000..9c0f5700 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/resources/mybatis/mapper/UpgradeMapper.xml @@ -0,0 +1,22 @@ + + + + + + ${sql} + + + + + + + + + + diff --git a/sop-admin/sop-admin-backend/src/main/resources/mybatis/mybatisConfig.xml b/sop-admin/sop-admin-backend/src/main/resources/mybatis/mybatisConfig.xml new file mode 100644 index 00000000..3c4b234f --- /dev/null +++ b/sop-admin/sop-admin-backend/src/main/resources/mybatis/mybatisConfig.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/BaseTest.java b/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/BaseTest.java new file mode 100644 index 00000000..dd8dfeea --- /dev/null +++ b/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/BaseTest.java @@ -0,0 +1,13 @@ +package com.gitee.sop.adminbackend; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class BaseTest { + + @Test + void contextLoads() { + } + +} diff --git a/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/service/LoginServiceTest.java b/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/service/LoginServiceTest.java new file mode 100644 index 00000000..a3d331e4 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/service/LoginServiceTest.java @@ -0,0 +1,44 @@ +package com.gitee.sop.adminbackend.service; + +import com.alibaba.fastjson2.JSON; +import com.gitee.sop.adminbackend.BaseTest; +import com.gitee.sop.adminbackend.service.sys.login.LoginService; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginDTO; +import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser; +import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum; +import javax.annotation.Resource; + +import org.apache.commons.codec.digest.DigestUtils; +import org.junit.jupiter.api.Test; +import org.springframework.security.crypto.bcrypt.BCrypt; +import org.springframework.util.Assert; + + +/** + * @author 六如 + */ +public class LoginServiceTest extends BaseTest { + + @Resource + LoginService loginService; + + @Test + public void login() { + LoginDTO loginDTO = new LoginDTO(); + loginDTO.setUsername("admin"); + loginDTO.setPassword("123456"); + loginDTO.setRegType(RegTypeEnum.BACKEND); + LoginUser loginUser = loginService.login(loginDTO); + Assert.notNull(loginUser, "not null"); + System.out.println(JSON.toJSONString(loginUser)); + } + + @Test + public void resetAdminPwd() { + // 初始密码 + String defPassword = "123456"; + defPassword = DigestUtils.sha256Hex(defPassword); + String encodedPassword = BCrypt.hashpw(defPassword, BCrypt.gensalt()); + } + +} diff --git a/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/service/PasswordTest.java b/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/service/PasswordTest.java new file mode 100644 index 00000000..e584b392 --- /dev/null +++ b/sop-admin/sop-admin-backend/src/test/java/com/gitee/sop/adminbackend/service/PasswordTest.java @@ -0,0 +1,37 @@ +package com.gitee.sop.adminbackend.service; + +import com.gitee.sop.adminbackend.BaseTest; +import com.gitee.sop.adminbackend.dao.entity.SysAdminUser; +import com.gitee.sop.adminbackend.service.sys.SysAdminUserService; +import org.apache.commons.codec.digest.DigestUtils; +import org.junit.jupiter.api.Test; +import org.springframework.security.crypto.bcrypt.BCrypt; + +import javax.annotation.Resource; + + +/** + * @author 六如 + */ +public class PasswordTest extends BaseTest { + + @Resource + SysAdminUserService sysAdminUserService; + + /** + * 重置admin密码 + */ + @Test + public void resetAdminPwd() { + String username = "admin"; + String defPassword = "123456"; + defPassword = DigestUtils.sha256Hex(defPassword); + String encodedPassword = BCrypt.hashpw(defPassword, BCrypt.gensalt()); + System.out.println("数据库保存:" + encodedPassword); + sysAdminUserService.query() + .eq(SysAdminUser::getUsername, username) + .set(SysAdminUser::getPassword, encodedPassword) + .update(); + } + +} diff --git a/sop-admin/sop-admin-frontend/.browserslistrc b/sop-admin/sop-admin-frontend/.browserslistrc new file mode 100644 index 00000000..40bd99ce --- /dev/null +++ b/sop-admin/sop-admin-frontend/.browserslistrc @@ -0,0 +1,4 @@ +> 1% +last 2 versions +not dead +not ie 11 \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/.dockerignore b/sop-admin/sop-admin-frontend/.dockerignore new file mode 100644 index 00000000..0376edde --- /dev/null +++ b/sop-admin/sop-admin-frontend/.dockerignore @@ -0,0 +1,21 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +.eslintcache +report.html + +yarn.lock +npm-debug.log* +.pnpm-error.log* +.pnpm-debug.log +tests/**/coverage/ + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +tsconfig.tsbuildinfo diff --git a/sop-admin/sop-admin-frontend/.editorconfig b/sop-admin/sop-admin-frontend/.editorconfig new file mode 100644 index 00000000..ea6e20f5 --- /dev/null +++ b/sop-admin/sop-admin-frontend/.editorconfig @@ -0,0 +1,14 @@ +# http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/sop-admin/sop-admin-frontend/.env b/sop-admin/sop-admin-frontend/.env new file mode 100644 index 00000000..d34647a5 --- /dev/null +++ b/sop-admin/sop-admin-frontend/.env @@ -0,0 +1,5 @@ +# 平台本地运行端口号 +VITE_PORT = 9123 + +# 是否隐藏首页 隐藏 true 不隐藏 false (勿删除,VITE_HIDE_HOME只需在.env文件配置) +VITE_HIDE_HOME = false diff --git a/sop-admin/sop-admin-frontend/.env.development b/sop-admin/sop-admin-frontend/.env.development index da49af73..1f52c45c 100644 --- a/sop-admin/sop-admin-frontend/.env.development +++ b/sop-admin/sop-admin-frontend/.env.development @@ -1 +1,8 @@ -VITE_API_BASE_URL= 'http://localhost:8080' \ No newline at end of file +# 平台本地运行端口号 +VITE_PORT = 9123 + +# 开发环境读取配置文件路径 +VITE_PUBLIC_PATH = / + +# 开发环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数") +VITE_ROUTER_HISTORY = "hash" diff --git a/sop-admin/sop-admin-frontend/.env.production b/sop-admin/sop-admin-frontend/.env.production index e69de29b..84e60861 100644 --- a/sop-admin/sop-admin-frontend/.env.production +++ b/sop-admin/sop-admin-frontend/.env.production @@ -0,0 +1,13 @@ +# 线上环境平台打包路径 +VITE_PUBLIC_PATH = / + +# 线上环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数") +VITE_ROUTER_HISTORY = "hash" + +# 是否在打包时使用cdn替换本地库 替换 true 不替换 false +VITE_CDN = false + +# 是否启用gzip压缩或brotli压缩(分两种情况,删除原始文件和不删除原始文件) +# 压缩时不删除原始文件的配置:gzip、brotli、both(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) +# 压缩时删除原始文件的配置:gzip-clear、brotli-clear、both-clear(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) +VITE_COMPRESSION = "none" \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/.env.staging b/sop-admin/sop-admin-frontend/.env.staging new file mode 100644 index 00000000..65b57e3c --- /dev/null +++ b/sop-admin/sop-admin-frontend/.env.staging @@ -0,0 +1,16 @@ +# 预发布也需要生产环境的行为 +# https://cn.vitejs.dev/guide/env-and-mode.html#modes +# NODE_ENV = development + +VITE_PUBLIC_PATH = / + +# 预发布环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数") +VITE_ROUTER_HISTORY = "hash" + +# 是否在打包时使用cdn替换本地库 替换 true 不替换 false +VITE_CDN = true + +# 是否启用gzip压缩或brotli压缩(分两种情况,删除原始文件和不删除原始文件) +# 压缩时不删除原始文件的配置:gzip、brotli、both(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) +# 压缩时删除原始文件的配置:gzip-clear、brotli-clear、both-clear(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) +VITE_COMPRESSION = "none" diff --git a/sop-admin/sop-admin-frontend/.eslintignore b/sop-admin/sop-admin-frontend/.eslintignore deleted file mode 100644 index fc04190a..00000000 --- a/sop-admin/sop-admin-frontend/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -/*.json -/*.js -dist \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/.eslintrc.js b/sop-admin/sop-admin-frontend/.eslintrc.js deleted file mode 100644 index ef2005e0..00000000 --- a/sop-admin/sop-admin-frontend/.eslintrc.js +++ /dev/null @@ -1,70 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const path = require('path'); - -module.exports = { - root: true, - parser: 'vue-eslint-parser', - parserOptions: { - // Parser that checks the content of the \n", + "", + "$2" + ], + "description": "Vue3.0" + } +} diff --git a/sop-admin/sop-admin-frontend/.vscode/vue3.2.code-snippets b/sop-admin/sop-admin-frontend/.vscode/vue3.2.code-snippets new file mode 100644 index 00000000..2cebb463 --- /dev/null +++ b/sop-admin/sop-admin-frontend/.vscode/vue3.2.code-snippets @@ -0,0 +1,17 @@ +{ + "Vue3.2+快速生成模板": { + "scope": "vue", + "prefix": "Vue3.2+", + "body": [ + "\n", + "\n", + "", + "$2" + ], + "description": "Vue3.2+" + } +} diff --git a/sop-admin/sop-admin-frontend/.vscode/vue3.3.code-snippets b/sop-admin/sop-admin-frontend/.vscode/vue3.3.code-snippets new file mode 100644 index 00000000..dc7a1062 --- /dev/null +++ b/sop-admin/sop-admin-frontend/.vscode/vue3.3.code-snippets @@ -0,0 +1,20 @@ +{ + "Vue3.3+defineOptions快速生成模板": { + "scope": "vue", + "prefix": "Vue3.3+", + "body": [ + "\n", + "\n", + "", + "$2" + ], + "description": "Vue3.3+defineOptions快速生成模板" + } +} diff --git a/sop-admin/sop-admin-frontend/Dockerfile b/sop-admin/sop-admin-frontend/Dockerfile new file mode 100644 index 00000000..cd6d51a9 --- /dev/null +++ b/sop-admin/sop-admin-frontend/Dockerfile @@ -0,0 +1,20 @@ +FROM node:20-alpine as build-stage + +WORKDIR /app +RUN corepack enable +RUN corepack prepare pnpm@latest --activate + +RUN npm config set registry https://registry.npmmirror.com + +COPY .npmrc package.json pnpm-lock.yaml ./ +RUN pnpm install --frozen-lockfile + +COPY . . +RUN pnpm build + +FROM nginx:stable-alpine as production-stage + +COPY --from=build-stage /app/dist /usr/share/nginx/html +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/LICENSE b/sop-admin/sop-admin-frontend/LICENSE new file mode 100644 index 00000000..6d4889d0 --- /dev/null +++ b/sop-admin/sop-admin-frontend/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-present, pure-admin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sop-admin/sop-admin-frontend/README.md b/sop-admin/sop-admin-frontend/README.md new file mode 100644 index 00000000..f19a805f --- /dev/null +++ b/sop-admin/sop-admin-frontend/README.md @@ -0,0 +1,51 @@ +

vue-pure-admin精简版(国际化版本)

+ +[![license](https://img.shields.io/github/license/pure-admin/vue-pure-admin.svg)](LICENSE) + +**中文** | [English](./README.en-US.md) + +## 介绍 + +精简版是基于 [vue-pure-admin](https://github.com/pure-admin/vue-pure-admin) 提炼出的架子,包含主体功能,更适合实际项目开发,打包后的大小在全局引入 [element-plus](https://element-plus.org) 的情况下仍然低于 `2.3MB`,并且会永久同步完整版的代码。开启 `brotli` 压缩和 `cdn` 替换本地库模式后,打包大小低于 `350kb` + +## 版本选择 + +当前是国际化版本,如果您需要非国际化版本 [请点击](https://github.com/pure-admin/pure-admin-thin) + +## `js` 版本 + +[点我查看 js 版本](https://pure-admin.github.io/pure-admin-doc/pages/js/) + +## `max` 版本 + +[点我查看 max 版本](https://github.com/pure-admin/vue-pure-admin-max) + +## 配套视频 + +[点我查看 UI 设计](https://www.bilibili.com/video/BV17g411T7rq) +[点我查看快速开发教程](https://www.bilibili.com/video/BV1kg411v7QT) + +## 配套保姆级文档 + +[点我查看 vue-pure-admin 文档](https://pure-admin.github.io/pure-admin-doc) +[点我查看 @pureadmin/utils 文档](https://pure-admin-utils.netlify.app) + +## 优质服务、软件外包、赞助支持 + +[点我查看详情](https://pure-admin.github.io/pure-admin-doc/pages/service/) + +## 预览 + +[查看预览](https://pure-admin-thin.netlify.app/#/login) + +## 维护者 + +[xiaoxian521](https://github.com/xiaoxian521) + +## ⚠️ 注意 + +精简版不接受任何 `issues` 和 `pr`,如果有问题请到完整版 [issues](https://github.com/pure-admin/vue-pure-admin/issues/new/choose) 去提,谢谢! + +## 许可证 + +[MIT © 2020-present, pure-admin](./LICENSE) diff --git a/sop-admin/sop-admin-frontend/babel.config.js b/sop-admin/sop-admin-frontend/babel.config.js deleted file mode 100644 index dd6f53ce..00000000 --- a/sop-admin/sop-admin-frontend/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - plugins: ['@vue/babel-plugin-jsx'], -}; diff --git a/sop-admin/sop-admin-frontend/build/cdn.ts b/sop-admin/sop-admin-frontend/build/cdn.ts new file mode 100644 index 00000000..9e4bfe04 --- /dev/null +++ b/sop-admin/sop-admin-frontend/build/cdn.ts @@ -0,0 +1,60 @@ +import { Plugin as importToCDN } from "vite-plugin-cdn-import"; + +/** + * @description 打包时采用`cdn`模式,仅限外网使用(默认不采用,如果需要采用cdn模式,请在 .env.production 文件,将 VITE_CDN 设置成true) + * 平台采用国内cdn:https://www.bootcdn.cn,当然你也可以选择 https://unpkg.com 或者 https://www.jsdelivr.com + * 注意:上面提到的仅限外网使用也不是完全肯定的,如果你们公司内网部署的有相关js、css文件,也可以将下面配置对应改一下,整一套内网版cdn + */ +export const cdn = importToCDN({ + //(prodUrl解释: name: 对应下面modules的name,version: 自动读取本地package.json中dependencies依赖中对应包的版本号,path: 对应下面modules的path,当然也可写完整路径,会替换prodUrl) + prodUrl: "https://cdn.bootcdn.net/ajax/libs/{name}/{version}/{path}", + modules: [ + { + name: "vue", + var: "Vue", + path: "vue.global.prod.min.js" + }, + { + name: "vue-router", + var: "VueRouter", + path: "vue-router.global.min.js" + }, + { + name: "vue-i18n", + var: "VueI18n", + path: "vue-i18n.runtime.global.prod.min.js" + }, + // 项目中没有直接安装vue-demi,但是pinia用到了,所以需要在引入pinia前引入vue-demi(https://github.com/vuejs/pinia/blob/v2/packages/pinia/package.json#L77) + { + name: "vue-demi", + var: "VueDemi", + path: "index.iife.min.js" + }, + { + name: "pinia", + var: "Pinia", + path: "pinia.iife.min.js" + }, + { + name: "element-plus", + var: "ElementPlus", + path: "index.full.min.js", + css: "index.min.css" + }, + { + name: "axios", + var: "axios", + path: "axios.min.js" + }, + { + name: "dayjs", + var: "dayjs", + path: "dayjs.min.js" + }, + { + name: "echarts", + var: "echarts", + path: "echarts.min.js" + } + ] +}); diff --git a/sop-admin/sop-admin-frontend/build/compress.ts b/sop-admin/sop-admin-frontend/build/compress.ts new file mode 100644 index 00000000..6178986b --- /dev/null +++ b/sop-admin/sop-admin-frontend/build/compress.ts @@ -0,0 +1,63 @@ +import type { Plugin } from "vite"; +import { isArray } from "@pureadmin/utils"; +import compressPlugin from "vite-plugin-compression"; + +export const configCompressPlugin = ( + compress: ViteCompression +): Plugin | Plugin[] => { + if (compress === "none") return null; + + const gz = { + // 生成的压缩包后缀 + ext: ".gz", + // 体积大于threshold才会被压缩 + threshold: 0, + // 默认压缩.js|mjs|json|css|html后缀文件,设置成true,压缩全部文件 + filter: () => true, + // 压缩后是否删除原始文件 + deleteOriginFile: false + }; + const br = { + ext: ".br", + algorithm: "brotliCompress", + threshold: 0, + filter: () => true, + deleteOriginFile: false + }; + + const codeList = [ + { k: "gzip", v: gz }, + { k: "brotli", v: br }, + { k: "both", v: [gz, br] } + ]; + + const plugins: Plugin[] = []; + + codeList.forEach(item => { + if (compress.includes(item.k)) { + if (compress.includes("clear")) { + if (isArray(item.v)) { + item.v.forEach(vItem => { + plugins.push( + compressPlugin(Object.assign(vItem, { deleteOriginFile: true })) + ); + }); + } else { + plugins.push( + compressPlugin(Object.assign(item.v, { deleteOriginFile: true })) + ); + } + } else { + if (isArray(item.v)) { + item.v.forEach(vItem => { + plugins.push(compressPlugin(vItem)); + }); + } else { + plugins.push(compressPlugin(item.v)); + } + } + } + }); + + return plugins; +}; diff --git a/sop-admin/sop-admin-frontend/build/info.ts b/sop-admin/sop-admin-frontend/build/info.ts new file mode 100644 index 00000000..6d7c8be2 --- /dev/null +++ b/sop-admin/sop-admin-frontend/build/info.ts @@ -0,0 +1,57 @@ +import type { Plugin } from "vite"; +import { getPackageSize } from "./utils"; +import dayjs, { type Dayjs } from "dayjs"; +import duration from "dayjs/plugin/duration"; +import gradientString from "gradient-string"; +import boxen, { type Options as BoxenOptions } from "boxen"; +dayjs.extend(duration); + +const welcomeMessage = gradientString("cyan", "magenta").multiline( + `您好! 欢迎使用 pure-admin 开源项目\n我们为您精心准备了下面两个贴心的保姆级文档\nhttps://pure-admin.github.io/pure-admin-doc\nhttps://pure-admin-utils.netlify.app` +); + +const boxenOptions: BoxenOptions = { + padding: 0.5, + borderColor: "cyan", + borderStyle: "round" +}; + +export function viteBuildInfo(): Plugin { + let config: { command: string }; + let startTime: Dayjs; + let endTime: Dayjs; + let outDir: string; + return { + name: "vite:buildInfo", + configResolved(resolvedConfig) { + config = resolvedConfig; + outDir = resolvedConfig.build?.outDir ?? "dist"; + }, + buildStart() { + console.log(boxen(welcomeMessage, boxenOptions)); + if (config.command === "build") { + startTime = dayjs(new Date()); + } + }, + closeBundle() { + if (config.command === "build") { + endTime = dayjs(new Date()); + getPackageSize({ + folder: outDir, + callback: (size: string) => { + console.log( + boxen( + gradientString("cyan", "magenta").multiline( + `🎉 恭喜打包完成(总用时${dayjs + .duration(endTime.diff(startTime)) + .format("mm分ss秒")},打包后的大小为${size})` + ), + boxenOptions + ) + ); + } + }); + } + } + }; +} diff --git a/sop-admin/sop-admin-frontend/build/optimize.ts b/sop-admin/sop-admin-frontend/build/optimize.ts new file mode 100644 index 00000000..5f594911 --- /dev/null +++ b/sop-admin/sop-admin-frontend/build/optimize.ts @@ -0,0 +1,34 @@ +/** + * 此文件作用于 `vite.config.ts` 的 `optimizeDeps.include` 依赖预构建配置项 + * 依赖预构建,`vite` 启动时会将下面 include 里的模块,编译成 esm 格式并缓存到 node_modules/.vite 文件夹,页面加载到对应模块时如果浏览器有缓存就读取浏览器缓存,如果没有会读取本地缓存并按需加载 + * 尤其当您禁用浏览器缓存时(这种情况只应该发生在调试阶段)必须将对应模块加入到 include里,否则会遇到开发环境切换页面卡顿的问题(vite 会认为它是一个新的依赖包会重新加载并强制刷新页面),因为它既无法使用浏览器缓存,又没有在本地 node_modules/.vite 里缓存 + * 温馨提示:如果您使用的第三方库是全局引入,也就是引入到 src/main.ts 文件里,就不需要再添加到 include 里了,因为 vite 会自动将它们缓存到 node_modules/.vite + */ +const include = [ + "qs", + "mitt", + "dayjs", + "axios", + "pinia", + "vue-i18n", + "vue-types", + "js-cookie", + "vue-tippy", + "pinyin-pro", + "sortablejs", + "@vueuse/core", + "@pureadmin/utils", + "responsive-storage" +]; + +/** + * 在预构建中强制排除的依赖项 + * 温馨提示:所有以 `@iconify-icons/` 开头引入的的本地图标模块,都应该加入到下面的 `exclude` 里,因为平台推荐的使用方式是哪里需要哪里引入而且都是单个的引入,不需要预构建,直接让浏览器加载就好 + */ +const exclude = [ + "@iconify-icons/ep", + "@iconify-icons/ri", + "@pureadmin/theme/dist/browser-utils" +]; + +export { include, exclude }; diff --git a/sop-admin/sop-admin-frontend/build/plugins.ts b/sop-admin/sop-admin-frontend/build/plugins.ts new file mode 100644 index 00000000..37c8278a --- /dev/null +++ b/sop-admin/sop-admin-frontend/build/plugins.ts @@ -0,0 +1,76 @@ +import { cdn } from "./cdn"; +import vue from "@vitejs/plugin-vue"; +import { pathResolve } from "./utils"; +import { viteBuildInfo } from "./info"; +import svgLoader from "vite-svg-loader"; +import type { PluginOption } from "vite"; +import checker from "vite-plugin-checker"; +import vueJsx from "@vitejs/plugin-vue-jsx"; +import Inspector from "vite-plugin-vue-inspector"; +import { configCompressPlugin } from "./compress"; +import removeNoMatch from "vite-plugin-router-warn"; +import { visualizer } from "rollup-plugin-visualizer"; +import removeConsole from "vite-plugin-remove-console"; +import { themePreprocessorPlugin } from "@pureadmin/theme"; +import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite"; +import { genScssMultipleScopeVars } from "../src/layout/theme"; +import { vitePluginFakeServer } from "vite-plugin-fake-server"; + +export function getPluginsList( + VITE_CDN: boolean, + VITE_COMPRESSION: ViteCompression +): PluginOption[] { + const lifecycle = process.env.npm_lifecycle_event; + return [ + vue(), + // jsx、tsx语法支持 + vueJsx(), + VueI18nPlugin({ + jitCompilation: false, + include: [pathResolve("../locales/**")] + }), + checker({ + typescript: true, + vueTsc: true, + eslint: { + lintCommand: `eslint ${pathResolve("../{src,mock,build}/**/*.{vue,js,ts,tsx}")}`, + useFlatConfig: true + }, + terminal: false, + enableBuild: false + }), + // 按下Command(⌘)+Shift(⇧),然后点击页面元素会自动打开本地IDE并跳转到对应的代码位置 + Inspector(), + viteBuildInfo(), + /** + * 开发环境下移除非必要的vue-router动态路由警告No match found for location with path + * 非必要具体看 https://github.com/vuejs/router/issues/521 和 https://github.com/vuejs/router/issues/359 + * vite-plugin-router-warn只在开发环境下启用,只处理vue-router文件并且只在服务启动或重启时运行一次,性能消耗可忽略不计 + */ + removeNoMatch(), + // mock支持 + vitePluginFakeServer({ + logger: false, + include: "mock", + infixName: false, + enableProd: true + }), + // 自定义主题 + themePreprocessorPlugin({ + scss: { + multipleScopeVars: genScssMultipleScopeVars(), + extract: true + } + }), + // svg组件化支持 + svgLoader(), + VITE_CDN ? cdn : null, + configCompressPlugin(VITE_COMPRESSION), + // 线上环境删除console + removeConsole({ external: ["src/assets/iconfont/iconfont.js"] }), + // 打包分析 + lifecycle === "report" + ? visualizer({ open: true, brotliSize: true, filename: "report.html" }) + : (null as any) + ]; +} diff --git a/sop-admin/sop-admin-frontend/build/utils.ts b/sop-admin/sop-admin-frontend/build/utils.ts new file mode 100644 index 00000000..3d778fe6 --- /dev/null +++ b/sop-admin/sop-admin-frontend/build/utils.ts @@ -0,0 +1,110 @@ +import dayjs from "dayjs"; +import { readdir, stat } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { dirname, resolve } from "node:path"; +import { sum, formatBytes } from "@pureadmin/utils"; +import { + name, + version, + engines, + dependencies, + devDependencies +} from "../package.json"; + +/** 启动`node`进程时所在工作目录的绝对路径 */ +const root: string = process.cwd(); + +/** + * @description 根据可选的路径片段生成一个新的绝对路径 + * @param dir 路径片段,默认`build` + * @param metaUrl 模块的完整`url`,如果在`build`目录外调用必传`import.meta.url` + */ +const pathResolve = (dir = ".", metaUrl = import.meta.url) => { + // 当前文件目录的绝对路径 + const currentFileDir = dirname(fileURLToPath(metaUrl)); + // build 目录的绝对路径 + const buildDir = resolve(currentFileDir, "build"); + // 解析的绝对路径 + const resolvedPath = resolve(currentFileDir, dir); + // 检查解析的绝对路径是否在 build 目录内 + if (resolvedPath.startsWith(buildDir)) { + // 在 build 目录内,返回当前文件路径 + return fileURLToPath(metaUrl); + } + // 不在 build 目录内,返回解析后的绝对路径 + return resolvedPath; +}; + +/** 设置别名 */ +const alias: Record = { + "@": pathResolve("../src"), + "@build": pathResolve() +}; + +/** 平台的名称、版本、运行所需的`node`和`pnpm`版本、依赖、最后构建时间的类型提示 */ +const __APP_INFO__ = { + pkg: { name, version, engines, dependencies, devDependencies }, + lastBuildTime: dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss") +}; + +/** 处理环境变量 */ +const wrapperEnv = (envConf: Recordable): ViteEnv => { + // 默认值 + const ret: ViteEnv = { + VITE_PORT: 8848, + VITE_PUBLIC_PATH: "", + VITE_ROUTER_HISTORY: "", + VITE_CDN: false, + VITE_HIDE_HOME: "false", + VITE_COMPRESSION: "none" + }; + + for (const envName of Object.keys(envConf)) { + let realName = envConf[envName].replace(/\\n/g, "\n"); + realName = + realName === "true" ? true : realName === "false" ? false : realName; + + if (envName === "VITE_PORT") { + realName = Number(realName); + } + ret[envName] = realName; + if (typeof realName === "string") { + process.env[envName] = realName; + } else if (typeof realName === "object") { + process.env[envName] = JSON.stringify(realName); + } + } + return ret; +}; + +const fileListTotal: number[] = []; + +/** 获取指定文件夹中所有文件的总大小 */ +const getPackageSize = options => { + const { folder = "dist", callback, format = true } = options; + readdir(folder, (err, files: string[]) => { + if (err) throw err; + let count = 0; + const checkEnd = () => { + ++count == files.length && + callback(format ? formatBytes(sum(fileListTotal)) : sum(fileListTotal)); + }; + files.forEach((item: string) => { + stat(`${folder}/${item}`, async (err, stats) => { + if (err) throw err; + if (stats.isFile()) { + fileListTotal.push(stats.size); + checkEnd(); + } else if (stats.isDirectory()) { + getPackageSize({ + folder: `${folder}/${item}/`, + callback: checkEnd + }); + } + }); + }); + files.length === 0 && callback(0); + }); +}; + +export { root, pathResolve, alias, __APP_INFO__, wrapperEnv, getPackageSize }; diff --git a/sop-admin/sop-admin-frontend/commitlint.config.js b/sop-admin/sop-admin-frontend/commitlint.config.js index 84dcb122..eea755d0 100644 --- a/sop-admin/sop-admin-frontend/commitlint.config.js +++ b/sop-admin/sop-admin-frontend/commitlint.config.js @@ -1,3 +1,35 @@ -module.exports = { - extends: ['@commitlint/config-conventional'], +// @ts-check + +/** @type {import("@commitlint/types").UserConfig} */ +export default { + ignores: [commit => commit.includes("init")], + extends: ["@commitlint/config-conventional"], + rules: { + "body-leading-blank": [2, "always"], + "footer-leading-blank": [1, "always"], + "header-max-length": [2, "always", 108], + "subject-empty": [2, "never"], + "type-empty": [2, "never"], + "type-enum": [ + 2, + "always", + [ + "feat", + "fix", + "perf", + "style", + "docs", + "test", + "refactor", + "build", + "ci", + "chore", + "revert", + "wip", + "workflow", + "types", + "release" + ] + ] + } }; diff --git a/sop-admin/sop-admin-frontend/components.d.ts b/sop-admin/sop-admin-frontend/components.d.ts deleted file mode 100644 index 524ea406..00000000 --- a/sop-admin/sop-admin-frontend/components.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// Generated by unplugin-vue-components -// Read more: https://github.com/vuejs/core/pull/3399 -import '@vue/runtime-core' - -export {} - -declare module '@vue/runtime-core' { - export interface GlobalComponents { - RouterLink: typeof import('vue-router')['RouterLink'] - RouterView: typeof import('vue-router')['RouterView'] - } -} diff --git a/sop-admin/sop-admin-frontend/config/plugin/arcoResolver.ts b/sop-admin/sop-admin-frontend/config/plugin/arcoResolver.ts deleted file mode 100644 index 93de66a8..00000000 --- a/sop-admin/sop-admin-frontend/config/plugin/arcoResolver.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * If you use the template method for development, you can use the unplugin-vue-components plugin to enable on-demand loading support. - * 按需引入 - * https://github.com/antfu/unplugin-vue-components - * https://arco.design/vue/docs/start - * Although the Pro project is full of imported components, this plugin will be used by default. - * 虽然Pro项目中是全量引入组件,但此插件会默认使用。 - */ -import Components from 'unplugin-vue-components/vite'; -import { ArcoResolver } from 'unplugin-vue-components/resolvers'; - -export default function configArcoResolverPlugin() { - const arcoResolverPlugin = Components({ - dirs: [], // Avoid parsing src/components. 避免解析到src/components - deep: false, - resolvers: [ArcoResolver()], - }); - return arcoResolverPlugin; -} diff --git a/sop-admin/sop-admin-frontend/config/plugin/arcoStyleImport.ts b/sop-admin/sop-admin-frontend/config/plugin/arcoStyleImport.ts deleted file mode 100644 index 7ece00e3..00000000 --- a/sop-admin/sop-admin-frontend/config/plugin/arcoStyleImport.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Theme import - * 样式按需引入 - * https://github.com/arco-design/arco-plugins/blob/main/packages/plugin-vite-vue/README.md - * https://arco.design/vue/docs/start - */ -import { vitePluginForArco } from '@arco-plugins/vite-vue'; - -export default function configArcoStyleImportPlugin() { - const arcoResolverPlugin = vitePluginForArco({}); - return arcoResolverPlugin; -} diff --git a/sop-admin/sop-admin-frontend/config/plugin/compress.ts b/sop-admin/sop-admin-frontend/config/plugin/compress.ts deleted file mode 100644 index 1d678d83..00000000 --- a/sop-admin/sop-admin-frontend/config/plugin/compress.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated - * gzip压缩 - * https://github.com/anncwb/vite-plugin-compression - */ -import type { Plugin } from 'vite'; -import compressPlugin from 'vite-plugin-compression'; - -export default function configCompressPlugin( - compress: 'gzip' | 'brotli', - deleteOriginFile = false -): Plugin | Plugin[] { - const plugins: Plugin[] = []; - - if (compress === 'gzip') { - plugins.push( - compressPlugin({ - ext: '.gz', - deleteOriginFile, - }) - ); - } - - if (compress === 'brotli') { - plugins.push( - compressPlugin({ - ext: '.br', - algorithm: 'brotliCompress', - deleteOriginFile, - }) - ); - } - return plugins; -} diff --git a/sop-admin/sop-admin-frontend/config/plugin/imagemin.ts b/sop-admin/sop-admin-frontend/config/plugin/imagemin.ts deleted file mode 100644 index 6a457899..00000000 --- a/sop-admin/sop-admin-frontend/config/plugin/imagemin.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Image resource files used to compress the output of the production environment - * 图片压缩 - * https://github.com/anncwb/vite-plugin-imagemin - */ -import viteImagemin from 'vite-plugin-imagemin'; - -export default function configImageminPlugin() { - const imageminPlugin = viteImagemin({ - gifsicle: { - optimizationLevel: 7, - interlaced: false, - }, - optipng: { - optimizationLevel: 7, - }, - mozjpeg: { - quality: 20, - }, - pngquant: { - quality: [0.8, 0.9], - speed: 4, - }, - svgo: { - plugins: [ - { - name: 'removeViewBox', - }, - { - name: 'removeEmptyAttrs', - active: false, - }, - ], - }, - }); - return imageminPlugin; -} diff --git a/sop-admin/sop-admin-frontend/config/plugin/visualizer.ts b/sop-admin/sop-admin-frontend/config/plugin/visualizer.ts deleted file mode 100644 index 017c81f9..00000000 --- a/sop-admin/sop-admin-frontend/config/plugin/visualizer.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Generation packaging analysis - * 生成打包分析 - */ -import visualizer from 'rollup-plugin-visualizer'; -import { isReportMode } from '../utils'; - -export default function configVisualizerPlugin() { - if (isReportMode()) { - return visualizer({ - filename: './node_modules/.cache/visualizer/stats.html', - open: true, - gzipSize: true, - brotliSize: true, - }); - } - return []; -} diff --git a/sop-admin/sop-admin-frontend/config/utils/index.ts b/sop-admin/sop-admin-frontend/config/utils/index.ts deleted file mode 100644 index a1e5d121..00000000 --- a/sop-admin/sop-admin-frontend/config/utils/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Whether to generate package preview - * 是否生成打包报告 - */ -export default {}; - -export function isReportMode(): boolean { - return process.env.REPORT === 'true'; -} diff --git a/sop-admin/sop-admin-frontend/config/vite.config.base.ts b/sop-admin/sop-admin-frontend/config/vite.config.base.ts deleted file mode 100644 index 6af7baf7..00000000 --- a/sop-admin/sop-admin-frontend/config/vite.config.base.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { resolve } from 'path'; -import { defineConfig } from 'vite'; -import vue from '@vitejs/plugin-vue'; -import vueJsx from '@vitejs/plugin-vue-jsx'; -import svgLoader from 'vite-svg-loader'; -import configArcoStyleImportPlugin from './plugin/arcoStyleImport'; - -export default defineConfig({ - plugins: [ - vue(), - vueJsx(), - svgLoader({ svgoConfig: {} }), - configArcoStyleImportPlugin(), - ], - resolve: { - alias: [ - { - find: '@', - replacement: resolve(__dirname, '../src'), - }, - { - find: 'assets', - replacement: resolve(__dirname, '../src/assets'), - }, - { - find: 'vue-i18n', - replacement: 'vue-i18n/dist/vue-i18n.cjs.js', // Resolve the i18n warning issue - }, - { - find: 'vue', - replacement: 'vue/dist/vue.esm-bundler.js', // compile template - }, - ], - extensions: ['.ts', '.js'], - }, - define: { - 'process.env': {}, - }, - css: { - preprocessorOptions: { - less: { - modifyVars: { - hack: `true; @import (reference) "${resolve( - 'src/assets/style/breakpoint.less' - )}";`, - }, - javascriptEnabled: true, - }, - }, - }, -}); diff --git a/sop-admin/sop-admin-frontend/config/vite.config.dev.ts b/sop-admin/sop-admin-frontend/config/vite.config.dev.ts deleted file mode 100644 index 3a3d1bf0..00000000 --- a/sop-admin/sop-admin-frontend/config/vite.config.dev.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { mergeConfig } from 'vite'; -import eslint from 'vite-plugin-eslint'; -import baseConfig from './vite.config.base'; - -export default mergeConfig( - { - mode: 'development', - server: { - open: true, - fs: { - strict: true, - }, - }, - plugins: [ - eslint({ - cache: false, - include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'], - exclude: ['node_modules'], - }), - ], - }, - baseConfig -); diff --git a/sop-admin/sop-admin-frontend/config/vite.config.prod.ts b/sop-admin/sop-admin-frontend/config/vite.config.prod.ts deleted file mode 100644 index 79a88647..00000000 --- a/sop-admin/sop-admin-frontend/config/vite.config.prod.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { mergeConfig } from 'vite'; -import baseConfig from './vite.config.base'; -import configCompressPlugin from './plugin/compress'; -import configVisualizerPlugin from './plugin/visualizer'; -import configArcoResolverPlugin from './plugin/arcoResolver'; -import configImageminPlugin from './plugin/imagemin'; - -export default mergeConfig( - { - mode: 'production', - plugins: [ - configCompressPlugin('gzip'), - configVisualizerPlugin(), - configArcoResolverPlugin(), - configImageminPlugin(), - ], - build: { - rollupOptions: { - output: { - manualChunks: { - arco: ['@arco-design/web-vue'], - chart: ['echarts', 'vue-echarts'], - vue: ['vue', 'vue-router', 'pinia', '@vueuse/core', 'vue-i18n'], - }, - }, - }, - chunkSizeWarningLimit: 2000, - }, - }, - baseConfig -); diff --git a/sop-admin/sop-admin-frontend/eslint.config.js b/sop-admin/sop-admin-frontend/eslint.config.js new file mode 100644 index 00000000..b4d48fbc --- /dev/null +++ b/sop-admin/sop-admin-frontend/eslint.config.js @@ -0,0 +1,181 @@ +import js from "@eslint/js"; +import pluginVue from "eslint-plugin-vue"; +import * as parserVue from "vue-eslint-parser"; +import configPrettier from "eslint-config-prettier"; +import pluginPrettier from "eslint-plugin-prettier"; +import { defineFlatConfig } from "eslint-define-config"; +import * as parserTypeScript from "@typescript-eslint/parser"; +import pluginTypeScript from "@typescript-eslint/eslint-plugin"; + +export default defineFlatConfig([ + { + ...js.configs.recommended, + ignores: [ + "**/.*", + "dist/*", + "*.d.ts", + "public/*", + "src/assets/**", + "src/**/iconfont/**" + ], + languageOptions: { + globals: { + // index.d.ts + RefType: "readonly", + EmitType: "readonly", + TargetContext: "readonly", + ComponentRef: "readonly", + ElRef: "readonly", + ForDataType: "readonly", + AnyFunction: "readonly", + PropType: "readonly", + Writable: "readonly", + Nullable: "readonly", + NonNullable: "readonly", + Recordable: "readonly", + ReadonlyRecordable: "readonly", + Indexable: "readonly", + DeepPartial: "readonly", + Without: "readonly", + Exclusive: "readonly", + TimeoutHandle: "readonly", + IntervalHandle: "readonly", + Effect: "readonly", + ChangeEvent: "readonly", + WheelEvent: "readonly", + ImportMetaEnv: "readonly", + Fn: "readonly", + PromiseFn: "readonly", + ComponentElRef: "readonly", + parseInt: "readonly", + parseFloat: "readonly" + } + }, + plugins: { + prettier: pluginPrettier + }, + rules: { + ...configPrettier.rules, + ...pluginPrettier.configs.recommended.rules, + "no-debugger": "off", + "no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_" + } + ], + "prettier/prettier": [ + "error", + { + endOfLine: "auto" + } + ] + } + }, + { + files: ["**/*.?([cm])ts", "**/*.?([cm])tsx"], + languageOptions: { + parser: parserTypeScript, + parserOptions: { + sourceType: "module" + } + }, + plugins: { + "@typescript-eslint": pluginTypeScript + }, + rules: { + ...pluginTypeScript.configs.strict.rules, + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/no-redeclare": "error", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/prefer-as-const": "warn", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-import-type-side-effects": "error", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/consistent-type-imports": [ + "error", + { disallowTypeAnnotations: false, fixStyle: "inline-type-imports" } + ], + "@typescript-eslint/prefer-literal-enum-member": [ + "error", + { allowBitwiseExpressions: true } + ], + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_" + } + ] + } + }, + { + files: ["**/*.d.ts"], + rules: { + "eslint-comments/no-unlimited-disable": "off", + "import/no-duplicates": "off", + "unused-imports/no-unused-vars": "off" + } + }, + { + files: ["**/*.?([cm])js"], + rules: { + "@typescript-eslint/no-require-imports": "off", + "@typescript-eslint/no-var-requires": "off" + } + }, + { + files: ["**/*.vue"], + languageOptions: { + globals: { + $: "readonly", + $$: "readonly", + $computed: "readonly", + $customRef: "readonly", + $ref: "readonly", + $shallowRef: "readonly", + $toRef: "readonly" + }, + parser: parserVue, + parserOptions: { + ecmaFeatures: { + jsx: true + }, + extraFileExtensions: [".vue"], + parser: "@typescript-eslint/parser", + sourceType: "module" + } + }, + plugins: { + vue: pluginVue + }, + processor: pluginVue.processors[".vue"], + rules: { + ...pluginVue.configs.base.rules, + ...pluginVue.configs["vue3-essential"].rules, + ...pluginVue.configs["vue3-recommended"].rules, + "no-undef": "off", + "no-unused-vars": "off", + "vue/no-v-html": "off", + "vue/require-default-prop": "off", + "vue/require-explicit-emits": "off", + "vue/multi-word-component-names": "off", + "vue/no-setup-props-reactivity-loss": "off", + "vue/html-self-closing": [ + "error", + { + html: { + void: "always", + normal: "always", + component: "always" + }, + svg: "always", + math: "always" + } + ] + } + } +]); diff --git a/sop-admin/sop-admin-frontend/index.html b/sop-admin/sop-admin-frontend/index.html index 46cac70a..f7f61354 100644 --- a/sop-admin/sop-admin-frontend/index.html +++ b/sop-admin/sop-admin-frontend/index.html @@ -2,12 +2,86 @@ - - - Arco Design Pro - 开箱即用的中台前端/设计解决方案 + + + + pure-admin-thin + + + -
+
+ +
+
diff --git a/sop-admin/sop-admin-frontend/locales/en.yaml b/sop-admin/sop-admin-frontend/locales/en.yaml new file mode 100644 index 00000000..9d23b5fc --- /dev/null +++ b/sop-admin/sop-admin-frontend/locales/en.yaml @@ -0,0 +1,91 @@ +buttons: + pureLoginOut: LoginOut + pureLogin: Login + pureOpenSystemSet: Open System Configs + pureReload: Reload + pureCloseCurrentTab: Close CurrentTab + pureCloseLeftTabs: Close LeftTabs + pureCloseRightTabs: Close RightTabs + pureCloseOtherTabs: Close OtherTabs + pureCloseAllTabs: Close AllTabs + pureContentFullScreen: Content FullScreen + pureContentExitFullScreen: Content ExitFullScreen + pureClickCollapse: Collapse + pureClickExpand: Expand + pureConfirm: Confirm + pureSwitch: Switch + pureClose: Close + pureBackTop: BackTop + pureOpenText: Open + pureCloseText: Close +search: + pureTotal: Total + pureHistory: History + pureCollect: Collect + pureDragSort: (Drag Sort) + pureEmpty: Empty + purePlaceholder: Search Menu +panel: + pureSystemSet: System Configs + pureCloseSystemSet: Close System Configs + pureClearCacheAndToLogin: Clear cache and return to login page + pureClearCache: Clear Cache + pureOverallStyle: Overall Style + pureOverallStyleLight: Light + pureOverallStyleLightTip: Set sail freshly and light up the comfortable work interface + pureOverallStyleDark: Dark + pureOverallStyleDarkTip: Moonlight Overture, indulge in the tranquility and elegance of the night + pureOverallStyleSystem: Auto + pureOverallStyleSystemTip: Synchronize time, the interface naturally responds to morning and dusk + pureThemeColor: Theme Color + pureLayoutModel: Layout Model + pureVerticalTip: The menu on the left is familiar and friendly + pureHorizontalTip: Top menu, concise overview + pureMixTip: Mixed menu, flexible + pureStretch: Stretch Page + pureStretchFixed: Fixed + pureStretchFixedTip: Compact pages make it easy to find the information you need + pureStretchCustom: Custom + pureStretchCustomTip: Minimum 1280, maximum 1600 + pureTagsStyle: Tags Style + pureTagsStyleSmart: Smart + pureTagsStyleSmartTip: Smart tags add fun and brilliance + pureTagsStyleCard: Card + pureTagsStyleCardTip: Card tags for efficient browsing + pureTagsStyleChrome: Chrome + pureTagsStyleChromeTip: Chrome style is classic and elegant + pureInterfaceDisplay: Interface Display + pureGreyModel: Grey Model + pureWeakModel: Weak Model + pureHiddenTags: Hidden Tags + pureHiddenFooter: Hidden Footer + pureMultiTagsCache: MultiTags Cache +menus: + pureHome: Home + pureLogin: Login + pureAbnormal: Abnormal Page + pureFourZeroFour: "404" + pureFourZeroOne: "403" + pureFive: "500" + purePermission: Permission Manage + purePermissionPage: Page Permission + purePermissionButton: Button Permission + purePermissionButtonRouter: Route return button permission + purePermissionButtonLogin: Login interface return button permission +status: + pureLoad: Loading... + pureMessage: Message + pureNotify: Notify + pureTodo: Todo + pureNoMessage: No Message + pureNoNotify: No Notify + pureNoTodo: No Todo +login: + pureUsername: Username + purePassword: Password + pureLogin: Login + pureLoginSuccess: Login Success + pureLoginFail: Login Fail + pureUsernameReg: Please enter username + purePassWordReg: Please enter password + purePassWordRuleReg: The password format should be any combination of 8-18 digits \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/locales/zh-CN.yaml b/sop-admin/sop-admin-frontend/locales/zh-CN.yaml new file mode 100644 index 00000000..16d9ec6f --- /dev/null +++ b/sop-admin/sop-admin-frontend/locales/zh-CN.yaml @@ -0,0 +1,91 @@ +buttons: + pureLoginOut: 退出系统 + pureLogin: 登录 + pureOpenSystemSet: 打开系统配置 + pureReload: 重新加载 + pureCloseCurrentTab: 关闭当前标签页 + pureCloseLeftTabs: 关闭左侧标签页 + pureCloseRightTabs: 关闭右侧标签页 + pureCloseOtherTabs: 关闭其他标签页 + pureCloseAllTabs: 关闭全部标签页 + pureContentFullScreen: 内容区全屏 + pureContentExitFullScreen: 内容区退出全屏 + pureClickCollapse: 点击折叠 + pureClickExpand: 点击展开 + pureConfirm: 确认 + pureSwitch: 切换 + pureClose: 关闭 + pureBackTop: 回到顶部 + pureOpenText: 开 + pureCloseText: 关 +search: + pureTotal: 共 + pureHistory: 搜索历史 + pureCollect: 收藏 + pureDragSort: (可拖拽排序) + pureEmpty: 暂无搜索结果 + purePlaceholder: 搜索菜单(支持拼音搜索) +panel: + pureSystemSet: 系统配置 + pureCloseSystemSet: 关闭配置 + pureClearCacheAndToLogin: 清空缓存并返回登录页 + pureClearCache: 清空缓存 + pureOverallStyle: 整体风格 + pureOverallStyleLight: 浅色 + pureOverallStyleLightTip: 清新启航,点亮舒适的工作界面 + pureOverallStyleDark: 深色 + pureOverallStyleDarkTip: 月光序曲,沉醉于夜的静谧雅致 + pureOverallStyleSystem: 自动 + pureOverallStyleSystemTip: 同步时光,界面随晨昏自然呼应 + pureThemeColor: 主题色 + pureLayoutModel: 导航模式 + pureVerticalTip: 左侧菜单,亲切熟悉 + pureHorizontalTip: 顶部菜单,简洁概览 + pureMixTip: 混合菜单,灵活多变 + pureStretch: 页宽 + pureStretchFixed: 固定 + pureStretchFixedTip: 紧凑页面,轻松找到所需信息 + pureStretchCustom: 自定义 + pureStretchCustomTip: 最小1280、最大1600 + pureTagsStyle: 页签风格 + pureTagsStyleSmart: 灵动 + pureTagsStyleSmartTip: 灵动标签,添趣生辉 + pureTagsStyleCard: 卡片 + pureTagsStyleCardTip: 卡片标签,高效浏览 + pureTagsStyleChrome: 谷歌 + pureTagsStyleChromeTip: 谷歌风格,经典美观 + pureInterfaceDisplay: 界面显示 + pureGreyModel: 灰色模式 + pureWeakModel: 色弱模式 + pureHiddenTags: 隐藏标签页 + pureHiddenFooter: 隐藏页脚 + pureMultiTagsCache: 页签持久化 +menus: + pureHome: 首页 + pureLogin: 登录 + pureAbnormal: 异常页面 + pureFourZeroFour: "404" + pureFourZeroOne: "403" + pureFive: "500" + purePermission: 权限管理 + purePermissionPage: 页面权限 + purePermissionButton: 按钮权限 + purePermissionButtonRouter: 路由返回按钮权限 + purePermissionButtonLogin: 登录接口返回按钮权限 +status: + pureLoad: 加载中... + pureMessage: 消息 + pureNotify: 通知 + pureTodo: 待办 + pureNoMessage: 暂无消息 + pureNoNotify: 暂无通知 + pureNoTodo: 暂无待办 +login: + pureUsername: 账号 + purePassword: 密码 + pureLogin: 登录 + pureLoginSuccess: 登录成功 + pureLoginFail: 登录失败 + pureUsernameReg: 请输入账号 + purePassWordReg: 请输入密码 + purePassWordRuleReg: 密码格式应为8-18位数字、字母、符号的任意两种组合 \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/mock/asyncRoutes.ts b/sop-admin/sop-admin-frontend/mock/asyncRoutes.ts new file mode 100644 index 00000000..95750a6f --- /dev/null +++ b/sop-admin/sop-admin-frontend/mock/asyncRoutes.ts @@ -0,0 +1,37 @@ +// 模拟后端动态生成路由 +import { defineFakeRoute } from "vite-plugin-fake-server/client"; + +/** + * 服务管理 + */ +const apiRouter = { + path: "/serviceManage", + meta: { + title: "服务管理", + icon: "ri:server-line", + rank: 10 + }, + children: [ + { + path: "/serviceManage/apiManage/index", + name: "ApiManage", + meta: { + title: "接口管理", + roles: ["admin"] + } + } + ] +}; + +export default defineFakeRoute([ + { + url: "/get-async-routes", + method: "get", + response: () => { + return { + success: true, + data: [apiRouter] + }; + } + } +]); diff --git a/sop-admin/sop-admin-frontend/mock/login.ts b/sop-admin/sop-admin-frontend/mock/login.ts new file mode 100644 index 00000000..55897d8f --- /dev/null +++ b/sop-admin/sop-admin-frontend/mock/login.ts @@ -0,0 +1,42 @@ +// 根据角色动态生成路由 +import { defineFakeRoute } from "vite-plugin-fake-server/client"; + +export default defineFakeRoute([ + { + url: "/login", + method: "post", + response: ({ body }) => { + if (body.username === "admin") { + return { + success: true, + data: { + avatar: "https://avatars.githubusercontent.com/u/44761321", + username: "admin", + nickname: "小铭", + // 一个用户可能有多个角色 + roles: ["admin"], + // 按钮级别权限 + permissions: ["*:*:*"], + accessToken: "eyJhbGciOiJIUzUxMiJ9.admin", + refreshToken: "eyJhbGciOiJIUzUxMiJ9.adminRefresh", + expires: "2030/10/30 00:00:00" + } + }; + } else { + return { + success: true, + data: { + avatar: "https://avatars.githubusercontent.com/u/52823142", + username: "common", + nickname: "小林", + roles: ["common"], + permissions: ["permission:btn:add", "permission:btn:edit"], + accessToken: "eyJhbGciOiJIUzUxMiJ9.common", + refreshToken: "eyJhbGciOiJIUzUxMiJ9.commonRefresh", + expires: "2030/10/30 00:00:00" + } + }; + } + } + } +]); diff --git a/sop-admin/sop-admin-frontend/mock/refreshToken.ts b/sop-admin/sop-admin-frontend/mock/refreshToken.ts new file mode 100644 index 00000000..34d0e876 --- /dev/null +++ b/sop-admin/sop-admin-frontend/mock/refreshToken.ts @@ -0,0 +1,27 @@ +import { defineFakeRoute } from "vite-plugin-fake-server/client"; + +// 模拟刷新token接口 +export default defineFakeRoute([ + { + url: "/refresh-token", + method: "post", + response: ({ body }) => { + if (body.refreshToken) { + return { + success: true, + data: { + accessToken: "eyJhbGciOiJIUzUxMiJ9.newAdmin", + refreshToken: "eyJhbGciOiJIUzUxMiJ9.newAdminRefresh", + // `expires`选择这种日期格式是为了方便调试,后端直接设置时间戳或许更方便(每次都应该递增)。如果后端返回的是时间戳格式,前端开发请来到这个目录`src/utils/auth.ts`,把第`38`行的代码换成expires = data.expires即可。 + expires: "2030/10/30 23:59:59" + } + }; + } else { + return { + success: false, + data: {} + }; + } + } + } +]); diff --git a/sop-admin/sop-admin-frontend/package.json b/sop-admin/sop-admin-frontend/package.json index 6c231e5e..6be724f8 100644 --- a/sop-admin/sop-admin-frontend/package.json +++ b/sop-admin/sop-admin-frontend/package.json @@ -1,103 +1,162 @@ { - "name": "arco-design-pro-vue", - "description": "Arco Design Pro for Vue", - "version": "1.0.0", + "name": "pure-admin-thin", + "version": "5.8.0", "private": true, - "author": "ArcoDesign Team", - "license": "MIT", + "type": "module", "scripts": { - "dev": "vite --config ./config/vite.config.dev.ts", - "build": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts", - "report": "cross-env REPORT=true npm run build", - "preview": "npm run build && vite preview --host", - "type:check": "vue-tsc --noEmit --skipLibCheck", - "lint-staged": "npx lint-staged", - "prepare": "husky install" + "dev": "NODE_OPTIONS=--max-old-space-size=4096 vite", + "serve": "pnpm dev", + "build": "rimraf dist && NODE_OPTIONS=--max-old-space-size=8192 vite build", + "build:staging": "rimraf dist && vite build --mode staging", + "report": "rimraf dist && vite build", + "preview": "vite preview", + "preview:build": "pnpm build && vite preview", + "typecheck": "tsc --noEmit && vue-tsc --noEmit --skipLibCheck", + "svgo": "svgo -f . -r", + "clean:cache": "rimraf .eslintcache && rimraf pnpm-lock.yaml && rimraf node_modules && pnpm store prune && pnpm install", + "lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock,build}/**/*.{vue,js,ts,tsx}\" --fix", + "lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,scss,vue,html,md}\"", + "lint:stylelint": "stylelint --cache --fix \"**/*.{html,vue,css,scss}\" --cache-location node_modules/.cache/stylelint/", + "lint": "pnpm lint:eslint && pnpm lint:prettier && pnpm lint:stylelint", + "prepare": "husky", + "preinstall": "npx only-allow pnpm" }, - "lint-staged": { - "*.{js,ts,jsx,tsx}": [ - "prettier --write", - "eslint --fix" - ], - "*.vue": [ - "stylelint --fix", - "prettier --write", - "eslint --fix" - ], - "*.{less,css}": [ - "stylelint --fix", - "prettier --write" - ] + "keywords": [ + "pure-admin-thin", + "vue-pure-admin", + "element-plus", + "tailwindcss", + "pure-admin", + "typescript", + "pinia", + "vue3", + "vite", + "esm" + ], + "homepage": "https://github.com/pure-admin/pure-admin-thin/tree/i18n", + "repository": { + "type": "git", + "url": "git+https://github.com/pure-admin/pure-admin-thin.git" + }, + "bugs": { + "url": "https://github.com/pure-admin/vue-pure-admin/issues" + }, + "license": "MIT", + "author": { + "name": "xiaoxian521", + "email": "pureadmin@163.com", + "url": "https://github.com/xiaoxian521" }, "dependencies": { - "@arco-design/web-vue": "^2.44.7", - "@vueuse/core": "^9.3.0", - "arco-design-pro-vue": "^2.7.3", - "axios": "^0.24.0", - "dayjs": "^1.11.5", - "echarts": "^5.4.0", - "lodash": "^4.17.21", - "mitt": "^3.0.0", - "nprogress": "^0.2.0", - "pinia": "^2.0.23", - "query-string": "^8.0.3", - "sortablejs": "^1.15.0", - "vue": "^3.2.40", - "vue-echarts": "^6.2.3", - "vue-i18n": "^9.2.2", - "vue-router": "^4.0.14" + "@pureadmin/descriptions": "1.2.1", + "@pureadmin/table": "3.2.0", + "@pureadmin/utils": "2.4.8", + "@vueuse/core": "10.11.1", + "@vueuse/motion": "2.2.3", + "animate.css": "4.1.1", + "axios": "1.7.4", + "dayjs": "1.11.12", + "echarts": "5.5.1", + "element-plus": "2.8.0", + "js-cookie": "3.0.5", + "localforage": "1.10.0", + "mitt": "3.0.1", + "nprogress": "0.2.0", + "path": "0.12.7", + "pinia": "2.2.2", + "pinyin-pro": "3.24.2", + "plus-pro-components": "0.1.16", + "qs": "6.13.0", + "responsive-storage": "2.2.0", + "sortablejs": "1.15.2", + "vue": "3.4.38", + "vue-i18n": "9.14.0", + "vue-router": "4.4.3", + "vue-tippy": "6.4.4", + "vue-types": "5.1.3" }, "devDependencies": { - "@arco-plugins/vite-vue": "^1.4.5", - "@commitlint/cli": "^17.1.2", - "@commitlint/config-conventional": "^17.1.0", - "@types/lodash": "^4.14.186", - "@types/mockjs": "^1.0.7", - "@types/nprogress": "^0.2.0", - "@types/sortablejs": "^1.15.0", - "@typescript-eslint/eslint-plugin": "^5.40.0", - "@typescript-eslint/parser": "^5.40.0", - "@vitejs/plugin-vue": "^3.1.2", - "@vitejs/plugin-vue-jsx": "^2.0.1", - "@vue/babel-plugin-jsx": "^1.1.1", - "consola": "^2.15.3", - "cross-env": "^7.0.3", - "eslint": "^8.25.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-prettier": "^8.5.0", - "eslint-import-resolver-typescript": "^3.5.1", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-vue": "^9.6.0", - "husky": "^8.0.1", - "less": "^4.1.3", - "lint-staged": "^13.0.3", - "mockjs": "^1.1.0", - "postcss-html": "^1.5.0", - "prettier": "^2.7.1", - "rollup": "^3.9.1", - "rollup-plugin-visualizer": "^5.8.2", - "stylelint": "^14.13.0", - "stylelint-config-prettier": "^9.0.3", - "stylelint-config-rational-order": "^0.1.2", - "stylelint-config-recommended-vue": "^1.4.0", - "stylelint-config-standard": "^29.0.0", - "stylelint-order": "^5.0.0", - "typescript": "^4.8.4", - "unplugin-vue-components": "^0.24.1", - "vite": "^3.2.5", - "vite-plugin-compression": "^0.5.1", - "vite-plugin-eslint": "^1.8.1", - "vite-plugin-imagemin": "^0.6.1", - "vite-svg-loader": "^3.6.0", - "vue-tsc": "^1.0.14" + "@commitlint/cli": "19.4.0", + "@commitlint/config-conventional": "19.2.2", + "@commitlint/types": "19.0.3", + "@eslint/js": "9.9.0", + "@faker-js/faker": "8.4.1", + "@iconify-icons/ep": "1.2.12", + "@iconify-icons/ri": "1.2.10", + "@iconify/vue": "4.1.2", + "@intlify/unplugin-vue-i18n": "4.0.0", + "@pureadmin/theme": "3.2.0", + "@types/gradient-string": "1.1.6", + "@types/js-cookie": "3.0.6", + "@types/node": "20.16.1", + "@types/nprogress": "0.2.3", + "@types/qs": "6.9.15", + "@types/sortablejs": "1.15.8", + "@typescript-eslint/eslint-plugin": "7.18.0", + "@typescript-eslint/parser": "7.18.0", + "@vitejs/plugin-vue": "5.1.2", + "@vitejs/plugin-vue-jsx": "4.0.1", + "autoprefixer": "10.4.20", + "boxen": "7.1.1", + "cssnano": "7.0.5", + "eslint": "9.9.0", + "eslint-config-prettier": "9.1.0", + "eslint-define-config": "2.1.0", + "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-vue": "9.27.0", + "gradient-string": "2.0.2", + "husky": "9.1.4", + "lint-staged": "15.2.9", + "postcss": "8.4.41", + "postcss-html": "1.7.0", + "postcss-import": "16.1.0", + "postcss-scss": "4.0.9", + "prettier": "3.3.3", + "rimraf": "5.0.10", + "rollup-plugin-visualizer": "5.12.0", + "sass": "1.77.8", + "stylelint": "16.8.2", + "stylelint-config-recess-order": "5.0.1", + "stylelint-config-recommended-vue": "1.5.0", + "stylelint-config-standard-scss": "13.1.0", + "stylelint-prettier": "5.0.2", + "svgo": "3.3.2", + "tailwindcss": "3.4.10", + "typescript": "5.5.4", + "vite": "5.4.1", + "vite-plugin-cdn-import": "1.0.1", + "vite-plugin-checker": "0.7.2", + "vite-plugin-compression": "0.5.1", + "vite-plugin-fake-server": "2.1.1", + "vite-plugin-remove-console": "2.2.0", + "vite-plugin-router-warn": "1.0.0", + "vite-plugin-vue-inspector": "5.1.3", + "vite-svg-loader": "5.1.0", + "vue-eslint-parser": "9.4.3", + "vue-tsc": "2.0.29" }, "engines": { - "node": ">=14.0.0" + "node": "18.18.0 || ^20.9.0 || >=21.1.0", + "pnpm": ">=9" }, - "resolutions": { - "bin-wrapper": "npm:bin-wrapper-china", - "rollup": "^2.56.3", - "gifsicle": "5.2.0" + "pnpm": { + "allowedDeprecatedVersions": { + "are-we-there-yet": "*", + "sourcemap-codec": "*", + "domexception": "*", + "w3c-hr-time": "*", + "inflight": "*", + "npmlog": "*", + "rimraf": "*", + "stable": "*", + "gauge": "*", + "abab": "*", + "glob": "*" + }, + "peerDependencyRules": { + "allowedVersions": { + "eslint": "9" + } + } } } diff --git a/sop-admin/sop-admin-frontend/pnpm-lock.yaml b/sop-admin/sop-admin-frontend/pnpm-lock.yaml index 34986331..2e7c7316 100644 --- a/sop-admin/sop-admin-frontend/pnpm-lock.yaml +++ b/sop-admin/sop-admin-frontend/pnpm-lock.yaml @@ -4,228 +4,288 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - bin-wrapper: npm:bin-wrapper-china - rollup: ^2.56.3 - gifsicle: 5.2.0 - importers: .: dependencies: - '@arco-design/web-vue': - specifier: ^2.44.7 - version: 2.56.2(vue@3.5.5(typescript@4.9.5)) + '@pureadmin/descriptions': + specifier: 1.2.1 + version: 1.2.1(echarts@5.5.1)(element-plus@2.8.0(vue@3.4.38(typescript@5.5.4)))(typescript@5.5.4) + '@pureadmin/table': + specifier: 3.2.0 + version: 3.2.0(element-plus@2.8.0(vue@3.4.38(typescript@5.5.4)))(typescript@5.5.4) + '@pureadmin/utils': + specifier: 2.4.8 + version: 2.4.8(echarts@5.5.1)(vue@3.4.38(typescript@5.5.4)) '@vueuse/core': - specifier: ^9.3.0 - version: 9.13.0(vue@3.5.5(typescript@4.9.5)) - arco-design-pro-vue: - specifier: ^2.7.3 - version: 2.7.3 + specifier: 10.11.1 + version: 10.11.1(vue@3.4.38(typescript@5.5.4)) + '@vueuse/motion': + specifier: 2.2.3 + version: 2.2.3(rollup@4.21.0)(vue@3.4.38(typescript@5.5.4)) + animate.css: + specifier: 4.1.1 + version: 4.1.1 axios: - specifier: ^0.24.0 - version: 0.24.0 + specifier: 1.7.4 + version: 1.7.4 dayjs: - specifier: ^1.11.5 - version: 1.11.13 + specifier: 1.11.12 + version: 1.11.12 echarts: - specifier: ^5.4.0 + specifier: 5.5.1 version: 5.5.1 - lodash: - specifier: ^4.17.21 - version: 4.17.21 + element-plus: + specifier: 2.8.0 + version: 2.8.0(vue@3.4.38(typescript@5.5.4)) + js-cookie: + specifier: 3.0.5 + version: 3.0.5 + localforage: + specifier: 1.10.0 + version: 1.10.0 mitt: - specifier: ^3.0.0 + specifier: 3.0.1 version: 3.0.1 nprogress: - specifier: ^0.2.0 + specifier: 0.2.0 version: 0.2.0 + path: + specifier: 0.12.7 + version: 0.12.7 pinia: - specifier: ^2.0.23 - version: 2.2.2(typescript@4.9.5)(vue@3.5.5(typescript@4.9.5)) - query-string: - specifier: ^8.0.3 - version: 8.2.0 + specifier: 2.2.2 + version: 2.2.2(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)) + pinyin-pro: + specifier: 3.24.2 + version: 3.24.2 + plus-pro-components: + specifier: 0.1.16 + version: 0.1.16(element-plus@2.8.0(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + qs: + specifier: 6.13.0 + version: 6.13.0 + responsive-storage: + specifier: 2.2.0 + version: 2.2.0 sortablejs: - specifier: ^1.15.0 - version: 1.15.3 + specifier: 1.15.2 + version: 1.15.2 vue: - specifier: ^3.2.40 - version: 3.5.5(typescript@4.9.5) - vue-echarts: - specifier: ^6.2.3 - version: 6.7.3(@vue/runtime-core@3.5.5)(echarts@5.5.1)(vue@3.5.5(typescript@4.9.5)) + specifier: 3.4.38 + version: 3.4.38(typescript@5.5.4) vue-i18n: - specifier: ^9.2.2 - version: 9.14.0(vue@3.5.5(typescript@4.9.5)) + specifier: 9.14.0 + version: 9.14.0(vue@3.4.38(typescript@5.5.4)) vue-router: - specifier: ^4.0.14 - version: 4.4.5(vue@3.5.5(typescript@4.9.5)) + specifier: 4.4.3 + version: 4.4.3(vue@3.4.38(typescript@5.5.4)) + vue-tippy: + specifier: 6.4.4 + version: 6.4.4(vue@3.4.38(typescript@5.5.4)) + vue-types: + specifier: 5.1.3 + version: 5.1.3(vue@3.4.38(typescript@5.5.4)) devDependencies: - '@arco-plugins/vite-vue': - specifier: ^1.4.5 - version: 1.4.5 '@commitlint/cli': - specifier: ^17.1.2 - version: 17.8.1 + specifier: 19.4.0 + version: 19.4.0(@types/node@20.16.1)(typescript@5.5.4) '@commitlint/config-conventional': - specifier: ^17.1.0 - version: 17.8.1 - '@types/lodash': - specifier: ^4.14.186 - version: 4.17.7 - '@types/mockjs': - specifier: ^1.0.7 - version: 1.0.10 + specifier: 19.2.2 + version: 19.2.2 + '@commitlint/types': + specifier: 19.0.3 + version: 19.0.3 + '@eslint/js': + specifier: 9.9.0 + version: 9.9.0 + '@faker-js/faker': + specifier: 8.4.1 + version: 8.4.1 + '@iconify-icons/ep': + specifier: 1.2.12 + version: 1.2.12 + '@iconify-icons/ri': + specifier: 1.2.10 + version: 1.2.10 + '@iconify/vue': + specifier: 4.1.2 + version: 4.1.2(vue@3.4.38(typescript@5.5.4)) + '@intlify/unplugin-vue-i18n': + specifier: 4.0.0 + version: 4.0.0(rollup@4.21.0)(vue-i18n@9.14.0(vue@3.4.38(typescript@5.5.4))) + '@pureadmin/theme': + specifier: 3.2.0 + version: 3.2.0 + '@types/gradient-string': + specifier: 1.1.6 + version: 1.1.6 + '@types/js-cookie': + specifier: 3.0.6 + version: 3.0.6 + '@types/node': + specifier: 20.16.1 + version: 20.16.1 '@types/nprogress': - specifier: ^0.2.0 + specifier: 0.2.3 version: 0.2.3 + '@types/qs': + specifier: 6.9.15 + version: 6.9.15 '@types/sortablejs': - specifier: ^1.15.0 + specifier: 1.15.8 version: 1.15.8 '@typescript-eslint/eslint-plugin': - specifier: ^5.40.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5) + specifier: 7.18.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) '@typescript-eslint/parser': - specifier: ^5.40.0 - version: 5.62.0(eslint@8.57.0)(typescript@4.9.5) + specifier: 7.18.0 + version: 7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) '@vitejs/plugin-vue': - specifier: ^3.1.2 - version: 3.2.0(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0))(vue@3.5.5(typescript@4.9.5)) + specifier: 5.1.2 + version: 5.1.2(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4)) '@vitejs/plugin-vue-jsx': - specifier: ^2.0.1 - version: 2.1.1(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0))(vue@3.5.5(typescript@4.9.5)) - '@vue/babel-plugin-jsx': - specifier: ^1.1.1 - version: 1.2.5(@babel/core@7.25.2) - consola: - specifier: ^2.15.3 - version: 2.15.3 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 + specifier: 4.0.1 + version: 4.0.1(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4)) + autoprefixer: + specifier: 10.4.20 + version: 10.4.20(postcss@8.4.41) + boxen: + specifier: 7.1.1 + version: 7.1.1 + cssnano: + specifier: 7.0.5 + version: 7.0.5(postcss@8.4.41) eslint: - specifier: ^8.25.0 - version: 8.57.0 - eslint-config-airbnb-base: - specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0))(eslint@8.57.0) + specifier: 9.9.0 + version: 9.9.0(jiti@1.21.6) eslint-config-prettier: - specifier: ^8.5.0 - version: 8.10.0(eslint@8.57.0) - eslint-import-resolver-typescript: - specifier: ^3.5.1 - version: 3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.26.0 - version: 2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) + specifier: 9.1.0 + version: 9.1.0(eslint@9.9.0(jiti@1.21.6)) + eslint-define-config: + specifier: 2.1.0 + version: 2.1.0 eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) + specifier: 5.2.1 + version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.9.0(jiti@1.21.6)))(eslint@9.9.0(jiti@1.21.6))(prettier@3.3.3) eslint-plugin-vue: - specifier: ^9.6.0 - version: 9.28.0(eslint@8.57.0) + specifier: 9.27.0 + version: 9.27.0(eslint@9.9.0(jiti@1.21.6)) + gradient-string: + specifier: 2.0.2 + version: 2.0.2 husky: - specifier: ^8.0.1 - version: 8.0.3 - less: - specifier: ^4.1.3 - version: 4.2.0 + specifier: 9.1.4 + version: 9.1.4 lint-staged: - specifier: ^13.0.3 - version: 13.3.0 - mockjs: - specifier: ^1.1.0 - version: 1.1.0 + specifier: 15.2.9 + version: 15.2.9 + postcss: + specifier: 8.4.41 + version: 8.4.41 postcss-html: - specifier: ^1.5.0 + specifier: 1.7.0 version: 1.7.0 + postcss-import: + specifier: 16.1.0 + version: 16.1.0(postcss@8.4.41) + postcss-scss: + specifier: 4.0.9 + version: 4.0.9(postcss@8.4.41) prettier: - specifier: ^2.7.1 - version: 2.8.8 - rollup: - specifier: ^2.56.3 - version: 2.79.1 + specifier: 3.3.3 + version: 3.3.3 + rimraf: + specifier: 5.0.10 + version: 5.0.10 rollup-plugin-visualizer: - specifier: ^5.8.2 - version: 5.12.0(rollup@2.79.1) + specifier: 5.12.0 + version: 5.12.0(rollup@4.21.0) + sass: + specifier: 1.77.8 + version: 1.77.8 stylelint: - specifier: ^14.13.0 - version: 14.16.1 - stylelint-config-prettier: - specifier: ^9.0.3 - version: 9.0.5(stylelint@14.16.1) - stylelint-config-rational-order: - specifier: ^0.1.2 - version: 0.1.2 + specifier: 16.8.2 + version: 16.8.2(typescript@5.5.4) + stylelint-config-recess-order: + specifier: 5.0.1 + version: 5.0.1(stylelint@16.8.2(typescript@5.5.4)) stylelint-config-recommended-vue: - specifier: ^1.4.0 - version: 1.5.0(postcss-html@1.7.0)(stylelint@14.16.1) - stylelint-config-standard: - specifier: ^29.0.0 - version: 29.0.0(stylelint@14.16.1) - stylelint-order: - specifier: ^5.0.0 - version: 5.0.0(stylelint@14.16.1) + specifier: 1.5.0 + version: 1.5.0(postcss-html@1.7.0)(stylelint@16.8.2(typescript@5.5.4)) + stylelint-config-standard-scss: + specifier: 13.1.0 + version: 13.1.0(postcss@8.4.41)(stylelint@16.8.2(typescript@5.5.4)) + stylelint-prettier: + specifier: 5.0.2 + version: 5.0.2(prettier@3.3.3)(stylelint@16.8.2(typescript@5.5.4)) + svgo: + specifier: 3.3.2 + version: 3.3.2 + tailwindcss: + specifier: 3.4.10 + version: 3.4.10 typescript: - specifier: ^4.8.4 - version: 4.9.5 - unplugin-vue-components: - specifier: ^0.24.1 - version: 0.24.1(@babel/parser@7.25.6)(rollup@2.79.1)(vue@3.5.5(typescript@4.9.5)) + specifier: 5.5.4 + version: 5.5.4 vite: - specifier: ^3.2.5 - version: 3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0) + specifier: 5.4.1 + version: 5.4.1(@types/node@20.16.1)(sass@1.77.8) + vite-plugin-cdn-import: + specifier: 1.0.1 + version: 1.0.1(rollup@4.21.0)(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8)) + vite-plugin-checker: + specifier: 0.7.2 + version: 0.7.2(eslint@9.9.0(jiti@1.21.6))(optionator@0.9.4)(stylelint@16.8.2(typescript@5.5.4))(typescript@5.5.4)(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8))(vue-tsc@2.0.29(typescript@5.5.4)) vite-plugin-compression: - specifier: ^0.5.1 - version: 0.5.1(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0)) - vite-plugin-eslint: - specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.0)(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0)) - vite-plugin-imagemin: - specifier: ^0.6.1 - version: 0.6.1(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0)) + specifier: 0.5.1 + version: 0.5.1(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8)) + vite-plugin-fake-server: + specifier: 2.1.1 + version: 2.1.1 + vite-plugin-remove-console: + specifier: 2.2.0 + version: 2.2.0 + vite-plugin-router-warn: + specifier: 1.0.0 + version: 1.0.0 + vite-plugin-vue-inspector: + specifier: 5.1.3 + version: 5.1.3(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8)) vite-svg-loader: - specifier: ^3.6.0 - version: 3.6.0 + specifier: 5.1.0 + version: 5.1.0(vue@3.4.38(typescript@5.5.4)) + vue-eslint-parser: + specifier: 9.4.3 + version: 9.4.3(eslint@9.9.0(jiti@1.21.6)) vue-tsc: - specifier: ^1.0.14 - version: 1.8.27(typescript@4.9.5) + specifier: 2.0.29 + version: 2.0.29(typescript@5.5.4) packages: + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/utils@0.7.10': - resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - - '@arco-design/color@0.4.0': - resolution: {integrity: sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==} - - '@arco-design/web-vue@2.56.2': - resolution: {integrity: sha512-tKSED9mGWaaJ1QUHhJtk0o/N9LHMiShVJwZRUynk2UxEnwMpQ81rI5LRDE0DbJl9GEIRMEiXVP3scp7g3Oe8yA==} - peerDependencies: - vue: ^3.1.0 - - '@arco-plugins/vite-vue@1.4.5': - resolution: {integrity: sha512-2pJ9mpZP9mRD7NGZwRsZTS9C/US5ilEBBUqxN5Qgnd3Td50u9apJVKAABCZjG2K2eHiyZg7Fd9XhgHJXVJJmsw==} - '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.4': - resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + '@babel/compat-data@7.25.2': + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.6': - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + '@babel/generator@7.25.0': + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': @@ -236,8 +296,8 @@ packages: resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.4': - resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} + '@babel/helper-create-class-features-plugin@7.25.0': + resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -246,6 +306,10 @@ packages: resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.22.15': + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} @@ -290,27 +354,50 @@ packages: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.6': - resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + '@babel/helpers@7.25.0': + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.6': - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + '@babel/parser@7.25.3': + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-proposal-decorators@7.24.7': + resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.24.7': + resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.7': + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.7': resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.25.4': - resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -321,145 +408,474 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/standalone@7.25.3': + resolution: {integrity: sha512-uR+EoBqIIIvKGCG7fOj7HKupu3zVObiMfdEwoPZfVCPpcWJaZ1PkshaP5/6cl6BKAm1Zcv25O1rf+uoQ7V8nqA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.6': - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + '@babel/traverse@7.25.3': + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.6': - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} - '@commitlint/cli@17.8.1': - resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==} - engines: {node: '>=v14'} + '@commitlint/cli@19.4.0': + resolution: {integrity: sha512-sJX4J9UioVwZHq7JWM9tjT5bgWYaIN3rC4FP7YwfEwBYiIO+wMyRttRvQLNkow0vCdM0D67r9NEWU0Ui03I4Eg==} + engines: {node: '>=v18'} hasBin: true - '@commitlint/config-conventional@17.8.1': - resolution: {integrity: sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==} - engines: {node: '>=v14'} + '@commitlint/config-conventional@19.2.2': + resolution: {integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==} + engines: {node: '>=v18'} - '@commitlint/config-validator@17.8.1': - resolution: {integrity: sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==} - engines: {node: '>=v14'} + '@commitlint/config-validator@19.0.3': + resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} + engines: {node: '>=v18'} - '@commitlint/ensure@17.8.1': - resolution: {integrity: sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==} - engines: {node: '>=v14'} + '@commitlint/ensure@19.0.3': + resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} + engines: {node: '>=v18'} - '@commitlint/execute-rule@17.8.1': - resolution: {integrity: sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==} - engines: {node: '>=v14'} + '@commitlint/execute-rule@19.0.0': + resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} + engines: {node: '>=v18'} - '@commitlint/format@17.8.1': - resolution: {integrity: sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==} - engines: {node: '>=v14'} + '@commitlint/format@19.3.0': + resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==} + engines: {node: '>=v18'} - '@commitlint/is-ignored@17.8.1': - resolution: {integrity: sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==} - engines: {node: '>=v14'} + '@commitlint/is-ignored@19.2.2': + resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} + engines: {node: '>=v18'} - '@commitlint/lint@17.8.1': - resolution: {integrity: sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==} - engines: {node: '>=v14'} + '@commitlint/lint@19.2.2': + resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==} + engines: {node: '>=v18'} - '@commitlint/load@17.8.1': - resolution: {integrity: sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==} - engines: {node: '>=v14'} + '@commitlint/load@19.4.0': + resolution: {integrity: sha512-I4lCWaEZYQJ1y+Y+gdvbGAx9pYPavqZAZ3/7/8BpWh+QjscAn8AjsUpLV2PycBsEx7gupq5gM4BViV9xwTIJuw==} + engines: {node: '>=v18'} - '@commitlint/message@17.8.1': - resolution: {integrity: sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==} - engines: {node: '>=v14'} + '@commitlint/message@19.0.0': + resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} + engines: {node: '>=v18'} - '@commitlint/parse@17.8.1': - resolution: {integrity: sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==} - engines: {node: '>=v14'} + '@commitlint/parse@19.0.3': + resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + engines: {node: '>=v18'} - '@commitlint/read@17.8.1': - resolution: {integrity: sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==} - engines: {node: '>=v14'} + '@commitlint/read@19.4.0': + resolution: {integrity: sha512-r95jLOEZzKDakXtnQub+zR3xjdnrl2XzerPwm7ch1/cc5JGq04tyaNpa6ty0CRCWdVrk4CZHhqHozb8yZwy2+g==} + engines: {node: '>=v18'} - '@commitlint/resolve-extends@17.8.1': - resolution: {integrity: sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==} - engines: {node: '>=v14'} + '@commitlint/resolve-extends@19.1.0': + resolution: {integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==} + engines: {node: '>=v18'} - '@commitlint/rules@17.8.1': - resolution: {integrity: sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==} - engines: {node: '>=v14'} + '@commitlint/rules@19.0.3': + resolution: {integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==} + engines: {node: '>=v18'} - '@commitlint/to-lines@17.8.1': - resolution: {integrity: sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==} - engines: {node: '>=v14'} + '@commitlint/to-lines@19.0.0': + resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} + engines: {node: '>=v18'} - '@commitlint/top-level@17.8.1': - resolution: {integrity: sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==} - engines: {node: '>=v14'} + '@commitlint/top-level@19.0.0': + resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} + engines: {node: '>=v18'} - '@commitlint/types@17.8.1': - resolution: {integrity: sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==} - engines: {node: '>=v14'} + '@commitlint/types@19.0.3': + resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + engines: {node: '>=v18'} - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@csstools/selector-specificity@2.2.0': - resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/css-parser-algorithms@3.0.1': + resolution: {integrity: sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==} + engines: {node: '>=18'} peerDependencies: - postcss-selector-parser: ^6.0.10 + '@csstools/css-tokenizer': ^3.0.1 - '@esbuild/android-arm@0.15.18': - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + '@csstools/css-tokenizer@3.0.1': + resolution: {integrity: sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@3.0.1': + resolution: {integrity: sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.1 + '@csstools/css-tokenizer': ^3.0.1 + + '@csstools/selector-specificity@4.0.0': + resolution: {integrity: sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^6.1.0 + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + + '@element-plus/icons-vue@2.3.1': + resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} + peerDependencies: + vue: ^3.2.0 + + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.19.12': + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.19.12': + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/linux-loong64@0.14.54': - resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.12': + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.19.12': + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.19.12': + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.15.18': - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.19.12': + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.19.12': + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.19.12': + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.19.12': + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.19.12': + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-array@0.17.1': + resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@eslint/js@9.9.0': + resolution: {integrity: sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@faker-js/faker@8.4.1': + resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + + '@floating-ui/core@1.6.7': + resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==} + + '@floating-ui/dom@1.6.10': + resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==} + + '@floating-ui/utils@0.2.7': + resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + + '@iconify-icons/ep@1.2.12': + resolution: {integrity: sha512-8EJULn048sQq3fvytpQ5j40omnVOdBKpo+sXdYM35NRrqCe1BihxBesMcCOLWaocqkWia6uTQ3cnRHff4ZA11w==} + + '@iconify-icons/ri@1.2.10': + resolution: {integrity: sha512-wNaXsQYK55WDUWCbcjvnwnODV4Jtsp+VC0duPanibEVu876TUYf6kdgTGtH7/GErBCNdJuJJbncG7vbOaeQi7w==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/vue@4.1.2': + resolution: {integrity: sha512-CQnYqLiQD5LOAaXhBrmj1mdL2/NCJvwcC4jtW2Z8ukhThiFkLDkutarTOV2trfc9EXqUqRs0KqXOL9pZ/IyysA==} + peerDependencies: + vue: '>=3' + + '@intlify/bundle-utils@8.0.0': + resolution: {integrity: sha512-1B++zykRnMwQ+20SpsZI1JCnV/YJt9Oq7AGlEurzkWJOFtFAVqaGc/oV36PBRYeiKnTbY9VYfjBimr2Vt42wLQ==} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true '@intlify/core-base@9.14.0': resolution: {integrity: sha512-zJn0imh9HIsZZUtt9v8T16PeVstPv6bP2YzlrYJwoF8F30gs4brZBwW2KK6EI5WYKFi3NeqX6+UU4gniz5TkGg==} @@ -473,6 +889,25 @@ packages: resolution: {integrity: sha512-r+N8KRQL7LgN1TMTs1A2svfuAU0J94Wu9wWdJVJqYsoMMLIeJxrPjazihfHpmJqfgZq0ah3Y9Q4pgWV2O90Fyg==} engines: {node: '>= 16'} + '@intlify/unplugin-vue-i18n@4.0.0': + resolution: {integrity: sha512-q2Mhqa/mLi0tulfLFO4fMXXvEbkSZpI5yGhNNsLTNJJ41icEGUuyDe+j5zRZIKSkOJRgX6YbCyibTDJdRsukmw==} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + vue-i18n-bridge: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + vue-i18n-bridge: + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -491,21 +926,10 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@mrmlnc/readdir-enhanced@2.2.1': - resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} - engines: {node: '>=4'} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - '@nodelib/fs.stat@1.1.3': - resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} - engines: {node: '>= 6'} - '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} @@ -514,292 +938,365 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nolyfill/is-core-module@1.0.39': - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} + '@nuxt/kit@3.12.4': + resolution: {integrity: sha512-aNRD1ylzijY0oYolldNcZJXVyxdGzNTl+Xd0UYyFQCu9f4wqUZqQ9l+b7arCEzchr96pMK0xdpvLcS3xo1wDcw==} + engines: {node: ^14.18.0 || >=16.10.0} - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} + '@nuxt/schema@3.12.4': + resolution: {integrity: sha512-H7FwBV4ChssMaeiLyPdVLOLUa0326ebp3pNbJfGgFt7rSoKh1MmgjorecA8JMxOQZziy3w6EELf4+5cgLh/F1w==} + engines: {node: ^14.18.0 || >=16.10.0} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@pureadmin/descriptions@1.2.1': + resolution: {integrity: sha512-7jDJuqz8xnhcmwXdWQnBzOYeX2WK27TRFaVgs9AdiRr+DnKb9W+krHByJwQtxo5lg4qyRh4/IWQGEMfhC2ljeQ==} + peerDependencies: + element-plus: ^2.0.0 + + '@pureadmin/table@3.2.0': + resolution: {integrity: sha512-5H09KrQDeGpxVxOKCISi65WcT7mSuyhGTHiDcHUcaZFXMkB874ZikDBuNFMUp4ccqyztoD6AAo9Tk/cqCMhbuQ==} + peerDependencies: + element-plus: ^2.0.0 + + '@pureadmin/theme@3.2.0': + resolution: {integrity: sha512-SBlTvEl0rmfqTW/mOJUPftvZe4yF+38CJdlBOvVITpehzCytqlG5i8XKpcs8aAR9SVfhcrLVS5Q6xh7xDVQcJQ==} + + '@pureadmin/utils@2.4.8': + resolution: {integrity: sha512-7baOiunmno3mlvk7oKIrEvIEVAbJgIrvvMw9EJMOvTmebfn31F5ps9JyIeDzsnVRABZLSEg0iIVVfYe+DGAeqg==} + peerDependencies: + echarts: '*' + vue: '*' + peerDependenciesMeta: + echarts: + optional: true + vue: + optional: true '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.56.3 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@rollup/rollup-android-arm-eabi@4.21.0': + resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} + cpu: [arm] + os: [android] - '@sindresorhus/is@0.7.0': - resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} - engines: {node: '>=4'} + '@rollup/rollup-android-arm64@4.21.0': + resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.21.0': + resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.21.0': + resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.21.0': + resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.21.0': + resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.21.0': + resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.21.0': + resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-s390x-gnu@4.21.0': + resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.21.0': + resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.21.0': + resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.21.0': + resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.21.0': + resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.21.0': + resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==} + cpu: [x64] + os: [win32] + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sxzz/popperjs-es@2.11.7': + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/eslint@8.56.12': - resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} + '@types/conventional-commits-parser@5.0.0': + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/gradient-string@1.1.6': + resolution: {integrity: sha512-LkaYxluY4G5wR1M4AKQUal2q61Di1yVVCw42ImFTuaIoQVgmV0WP1xUaLB8zwb47mp82vWTpePI9JmrjEnJ7nQ==} - '@types/imagemin-gifsicle@7.0.4': - resolution: {integrity: sha512-ZghMBd/Jgqg5utTJNPmvf6DkuHzMhscJ8vgf/7MUGCpO+G+cLrhYltL+5d+h3A1B4W73S2SrmJZ1jS5LACpX+A==} + '@types/js-cookie@3.0.6': + resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} - '@types/imagemin-jpegtran@5.0.4': - resolution: {integrity: sha512-PSMxOeJa8q94Y+qx8Yriw+qj1+vH5xWpvar63o6SGO0Xi5RlKuwHHfJmN2GRUngPrlhe394jOUmpVq8jQlVmFA==} - - '@types/imagemin-mozjpeg@8.0.4': - resolution: {integrity: sha512-ZCAxV8SYJB8ehwHpnbRpHjg5Wc4HcyuAMiDhXbkgC7gujDoOTyHO3dhDkUtZ1oK1DLBRZapqG9etdLVhUml7yQ==} - - '@types/imagemin-optipng@5.2.4': - resolution: {integrity: sha512-mvKnDMC8eCYZetAQudjs1DbgpR84WhsTx1wgvdiXnpuUEti3oJ+MaMYBRWPY0JlQ4+y4TXKOfa7+LOuT8daegQ==} - - '@types/imagemin-svgo@10.0.5': - resolution: {integrity: sha512-9U2Rf7vWBHeqJvzmWNP3vYAKqR0208QqQ9Mkrq9OLIL5AeoF/dRVRou6iUYCufBSim57BpBpCJhZLrTgfS3k1g==} - - '@types/imagemin-webp@7.0.3': - resolution: {integrity: sha512-C2/EMohS4bzsvY5VJvdzHFdcfmnZoui54DmM/9bFtK57/CgGmKkc+p6n49euPGmMFDDvwm4yVl60nwxcZOmH5A==} - - '@types/imagemin@7.0.1': - resolution: {integrity: sha512-xEn5+M3lDBtI3JxLy6eU3ksoVurygnlG7OYhTqJfGGP4PcvYnfn+IABCmMve7ziM/SneHDm5xgJFKC8hCYPicw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/keyv@3.1.4': - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} '@types/lodash@4.17.7': resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - - '@types/mockjs@1.0.10': - resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==} - - '@types/node@16.18.108': - resolution: {integrity: sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==} - - '@types/node@20.5.1': - resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} - - '@types/node@22.5.5': - resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} - - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/node@20.16.1': + resolution: {integrity: sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==} '@types/nprogress@0.2.3': resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/responselike@1.0.3': - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} '@types/sortablejs@1.15.8': resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} - '@types/svgo@2.6.4': - resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@types/vfile-message@2.0.0': - resolution: {integrity: sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==} - deprecated: This is a stub types definition. vfile-message provides its own type definitions, so you do not need this installed. - - '@types/vfile@3.0.2': - resolution: {integrity: sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==} + '@types/tinycolor2@1.4.6': + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} '@types/web-bluetooth@0.0.16': resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - '@typescript-eslint/eslint-plugin@5.62.0': - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@5.62.0': - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@5.62.0': - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@5.62.0': - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: '*' + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@5.62.0': - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@5.62.0': - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@5.62.0': - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@5.62.0': - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@vitejs/plugin-vue-jsx@2.1.1': - resolution: {integrity: sha512-JgDhxstQlwnHBvZ1BSnU5mbmyQ14/t5JhREc6YH5kWyu2QdAAOsLF6xgHoIWarj8tddaiwFrNzLbWJPudpXKYA==} - engines: {node: ^14.18.0 || >=16.0.0} + '@vitejs/plugin-vue-jsx@4.0.1': + resolution: {integrity: sha512-7mg9HFGnFHMEwCdB6AY83cVK4A6sCqnrjFYF4WIlebYAQVVJ/sC/CiTruVdrRlhrFoeZ8rlMxY9wYpPTIRhhAg==} + engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^3.0.0 + vite: ^5.0.0 vue: ^3.0.0 - '@vitejs/plugin-vue@3.2.0': - resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==} - engines: {node: ^14.18.0 || >=16.0.0} + '@vitejs/plugin-vue@5.1.2': + resolution: {integrity: sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==} + engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^3.0.0 + vite: ^5.0.0 vue: ^3.2.25 - '@volar/language-core@1.11.1': - resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + '@volar/language-core@2.4.0': + resolution: {integrity: sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==} - '@volar/source-map@1.11.1': - resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + '@volar/source-map@2.4.0': + resolution: {integrity: sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==} - '@volar/typescript@1.11.1': - resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + '@volar/typescript@2.4.0': + resolution: {integrity: sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==} - '@vue/babel-helper-vue-transform-on@1.2.5': - resolution: {integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==} + '@vue/babel-helper-vue-transform-on@1.2.2': + resolution: {integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==} - '@vue/babel-plugin-jsx@1.2.5': - resolution: {integrity: sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==} + '@vue/babel-plugin-jsx@1.2.2': + resolution: {integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==} peerDependencies: '@babel/core': ^7.0.0-0 peerDependenciesMeta: '@babel/core': optional: true - '@vue/babel-plugin-resolve-type@1.2.5': - resolution: {integrity: sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==} + '@vue/babel-plugin-resolve-type@1.2.2': + resolution: {integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==} peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.5.5': - resolution: {integrity: sha512-ZrxcY8JMoV+kgDrmRwlDufz0SjDZ7jfoNZiIBluAACMBmgr55o/jTbxnyrccH6VSJXnFaDI4Ik1UFCiq9r8i7w==} + '@vue/compiler-core@3.4.38': + resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==} - '@vue/compiler-dom@3.5.5': - resolution: {integrity: sha512-HSvK5q1gmBbxRse3S0Wt34RcKuOyjDJKDDMuF3i7NC+QkDFrbAqw8NnrEm/z7zFDxWZa4/5eUwsBOMQzm1RHBA==} + '@vue/compiler-dom@3.4.38': + resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==} - '@vue/compiler-sfc@3.5.5': - resolution: {integrity: sha512-MzBHDxwZhgQPHrwJ5tj92gdTYRCuPDSZr8PY3+JFv8cv2UD5/WayH5yo0kKCkKfrtJhc39jNSMityHrkMSbfnA==} + '@vue/compiler-sfc@3.4.38': + resolution: {integrity: sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==} - '@vue/compiler-ssr@3.5.5': - resolution: {integrity: sha512-oFasHnpv/upubjJEmqiTKQYb4qS3ziJddf4UVWuFw6ebk/QTrTUc+AUoTJdo39x9g+AOQBzhOU0ICCRuUjvkmw==} + '@vue/compiler-ssr@3.4.38': + resolution: {integrity: sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==} - '@vue/devtools-api@6.6.4': - resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - '@vue/language-core@1.8.27': - resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + '@vue/devtools-api@6.6.3': + resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} + + '@vue/language-core@2.0.29': + resolution: {integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@vue/reactivity@3.5.5': - resolution: {integrity: sha512-V4tTWElZQhT73PSK3Wnax9R9m4qvMX+LeKHnfylZc6SLh4Jc5/BPakp6e3zEhKWi5AN8TDzRkGnLkp8OqycYng==} + '@vue/reactivity@3.4.38': + resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==} - '@vue/runtime-core@3.5.5': - resolution: {integrity: sha512-2/CFaRN17jgsXy4MpigWFBCAMmLkXPb4CjaHrndglwYSra7ajvkH2cat21dscuXaH91G8fXAeg5gCyxWJ+wCRA==} + '@vue/runtime-core@3.4.38': + resolution: {integrity: sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==} - '@vue/runtime-dom@3.5.5': - resolution: {integrity: sha512-0bQGgCuL+4Muz5PsCLgF4Ata9BTdhHi5VjsxtTDyI0Wy4MgoSvBGaA6bDc7W7CGgZOyirf9LNeetMYHQ05pgpw==} + '@vue/runtime-dom@3.4.38': + resolution: {integrity: sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==} - '@vue/server-renderer@3.5.5': - resolution: {integrity: sha512-XjRamLIq5f47cxgy+hiX7zUIY+4RHdPDVrPvvMDAUTdW5RJWX/S0ji/rCbm3LWTT/9Co9bvQME8ZI15ahL4/Qw==} + '@vue/server-renderer@3.4.38': + resolution: {integrity: sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==} peerDependencies: - vue: 3.5.5 + vue: 3.4.38 - '@vue/shared@3.5.5': - resolution: {integrity: sha512-0KyMXyEgnmFAs6rNUL+6eUHtUCqCaNrVd+AW3MX3LyA0Yry5SA0Km03CDKiOua1x1WWnIr+W9+S0GMFoSDWERQ==} + '@vue/shared@3.4.38': + resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==} + + '@vueuse/core@10.11.1': + resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} '@vueuse/core@9.13.0': resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + '@vueuse/metadata@10.11.1': + resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} + '@vueuse/metadata@9.13.0': resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + '@vueuse/motion@2.2.3': + resolution: {integrity: sha512-QsS9P7MDKFF2j4eDPuo6lezUDPE7MQp4+unBeR2Ym8RkhtMEw/oVbnHPHL986rsmnnlUZkHVSv5kKoHJzjbtmQ==} + peerDependencies: + vue: '>=3.0.0' + + '@vueuse/shared@10.11.1': + resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} + '@vueuse/shared@9.13.0': resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + '@zougt/some-loader-utils@1.4.3': + resolution: {integrity: sha512-0FsoqSTQ+qOyp6x5Q6LZQ7xVwquEgLYiIStG3L8p0Q2GsGGYKDkOZ0mIpMt67aNdr8XLsbxXjzTl/iHtTz5zcA==} + engines: {node: '>= 10.13.0'} + hasBin: true + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -809,10 +1306,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} @@ -824,30 +1317,28 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} + animate.css@4.1.1: + resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==} - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -860,128 +1351,45 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - arch@2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - - archive-type@4.0.0: - resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} - engines: {node: '>=4'} - - arco-design-pro-vue@2.7.3: - resolution: {integrity: sha512-cz9mwM9VAicxPSit96RDFjNZRbCOPDCLx+vDj4GOFrderBhG+VWGphpEM0RD6wd89slqenqtkAxhJrURRLbLNA==} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - - arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - - arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} - array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-union@1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} - array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} - - array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} hasBin: true + peerDependencies: + postcss: ^8.1.0 - autoprefixer@9.8.8: - resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} - hasBin: true - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axios@0.24.0: - resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} - - b-tween@0.3.3: - resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==} - - b-validate@1.5.3: - resolution: {integrity: sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==} - - bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + axios@1.7.4: + resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -989,57 +1397,23 @@ packages: balanced-match@2.0.0: resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - - bin-build@3.0.0: - resolution: {integrity: sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==} - engines: {node: '>=4'} - - bin-check@4.1.0: - resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==} - engines: {node: '>=4'} - - bin-version-check@4.0.0: - resolution: {integrity: sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==} - engines: {node: '>=6'} - - bin-version@3.1.0: - resolution: {integrity: sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==} - engines: {node: '>=6'} - - bin-wrapper-china@0.1.0: - resolution: {integrity: sha512-1UCm17WYEbgry50tup+AQN+JGVEVzoW4f8HMl899k1lvuFxWKGZXl/G2fgxQxAckRjnloO3ijLVVEsv8zescUg==} - engines: {node: '>=8.3'} - hasBin: true - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - binary-mirror-config@1.41.0: - resolution: {integrity: sha512-ZiIhR1s6Sv1Fv6qCQqfPjx0Cj86BgFlhqNxZgHkQOWcxJcMbO3mj1iqsuVjowYqJqeZL8e52+IEv7IRnSX6T6w==} - - bl@1.2.3: - resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} - boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1049,88 +1423,46 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + bundle-import@0.0.1: + resolution: {integrity: sha512-L0z0iPX7t7ff5eZsK7oMEH+Ly2lzJczFKPHwrta6X8SF64a20R3wOrAOYK1MzHZVaWWugg9qlSTVfVwqvQJ2dw==} - buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + c12@1.11.1: + resolution: {integrity: sha512-KDU0TvSvVdaYcQKQ6iPHATGz/7p/KiVjPg4vQrB6Jg/wX9R0yl5RZxWm9IoZqaIHD2+6PZd81+KMGwRr/lRIUg==} + peerDependencies: + magicast: ^0.3.4 + peerDependenciesMeta: + magicast: + optional: true - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - - cacheable-request@2.1.4: - resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - - caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - - caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - - callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase-keys@2.1.0: - resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} - engines: {node: '>=0.10.0'} + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} - camelcase-keys@4.2.0: - resolution: {integrity: sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==} - engines: {node: '>=4'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} - camelcase@2.1.1: - resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} - engines: {node: '>=0.10.0'} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - camelcase@4.1.0: - resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} - engines: {node: '>=4'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - caniuse-lite@1.0.30001660: - resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} - - caw@2.0.1: - resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} - engines: {node: '>=4'} - - ccount@1.1.0: - resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} - - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} + caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1144,52 +1476,33 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities-html4@1.1.4: - resolution: {integrity: sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==} - - character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - - character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - - character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone-regexp@1.0.1: - resolution: {integrity: sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==} - engines: {node: '>=0.10.0'} - - clone-response@1.0.2: - resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} - - collapse-white-space@1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - - collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1206,8 +1519,9 @@ packages: color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -1215,29 +1529,31 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} - engines: {node: '>=16'} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - - compute-scroll-into-view@1.0.20: - resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + compatx@0.1.8: + resolution: {integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==} computeds@0.0.1: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} @@ -1245,67 +1561,39 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} - consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} - console-stream@0.1.1: - resolution: {integrity: sha512-QC/8l9e6ofi6nqZ5PawlDgzmMw3OxIXtvolBzap/F4UDBJlDaZRSNbL/lb41C29FcbSJncBFlJFj2WJoNyZRfQ==} + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - conventional-changelog-angular@6.0.0: - resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} - engines: {node: '>=14'} - - conventional-changelog-conventionalcommits@6.1.0: - resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} - engines: {node: '>=14'} - - conventional-commits-parser@4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} hasBin: true convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - copy-anything@2.0.6: - resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - - copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig-typescript-loader@4.4.0: - resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} - engines: {node: '>=v14.21.3'} + cosmiconfig-typescript-loader@5.0.0: + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} peerDependencies: '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' + cosmiconfig: '>=8.2' typescript: '>=4' - cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -1313,25 +1601,22 @@ packages: typescript: optional: true - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + css-declaration-sorter@6.4.1: + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + + css-declaration-sorter@7.2.0: + resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + css-functions-list@3.2.2: resolution: {integrity: sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==} engines: {node: '>=12 || >=16'} @@ -1339,10 +1624,21 @@ packages: css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -1352,62 +1648,71 @@ packages: engines: {node: '>=4'} hasBin: true + cssnano-preset-default@5.2.14: + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-preset-default@7.0.5: + resolution: {integrity: sha512-Jbzja0xaKwc5JzxPQoc+fotKpYtWEu4wQLMQe29CM0FjjdRjA4omvbGHl2DTGgARKxSTpPssBsok+ixv8uTBqw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-preset-lite@2.1.3: + resolution: {integrity: sha512-samvnCll/DUVZu0Qc+JH36nt7dlaOT7WjOgg8SbLJ78sp51JZ12s2hyerxrarjPBG4O53rErUtOY2IYLYgBGEQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-utils@3.1.0: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-utils@5.0.0: + resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano@5.1.15: + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano@7.0.5: + resolution: {integrity: sha512-Aq0vqBLtpTT5Yxj+hLlLfNPFuRQCDIjx5JQAhhaedQKLNDvDGeVziF24PS+S1f0Z5KCxWvw0QVI3VNHNBITxVQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + csso@4.2.0: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - currently-unhandled@0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} - cwebp-bin@6.1.2: - resolution: {integrity: sha512-NLEZ/BVAl9g426hwUX/qrQ7b/EfQH7BS1tr+CzPo2EgDQbcdzmUVE+fIfsi64lsL638lWgzTEViMAL4pxV1GOg==} - engines: {node: '>=10'} - hasBin: true - - dargs@7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} - - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.12: + resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1415,55 +1720,6 @@ packages: supports-color: optional: true - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - - decode-uri-component@0.4.1: - resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} - engines: {node: '>=14.16'} - - decompress-response@3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - - decompress-tar@4.1.1: - resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} - engines: {node: '>=4'} - - decompress-tarbz2@4.1.1: - resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} - engines: {node: '>=4'} - - decompress-targz@4.1.1: - resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} - engines: {node: '>=4'} - - decompress-unzip@4.0.1: - resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} - engines: {node: '>=4'} - - decompress@4.2.1: - resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} - engines: {node: '>=4'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1475,44 +1731,25 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} - define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - dir-glob@2.2.2: - resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} - engines: {node: '>=4'} + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-serializer@0.2.2: - resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -1520,15 +1757,9 @@ packages: dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - domhandler@2.4.2: - resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} - domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} @@ -1537,9 +1768,6 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -1550,16 +1778,9 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - download@6.2.5: - resolution: {integrity: sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==} - engines: {node: '>=4'} - - download@7.1.0: - resolution: {integrity: sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==} - engines: {node: '>=6'} - - duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -1567,11 +1788,16 @@ packages: echarts@5.5.1: resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==} - electron-to-chromium@1.5.23: - resolution: {integrity: sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==} + electron-to-chromium@1.5.11: + resolution: {integrity: sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==} - emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + element-plus@2.8.0: + resolution: {integrity: sha512-7ngapVlVlQAjocVqD4MUKvKXlBneT9DSDk2mmBOSLRFWNm/HLDT15ozmsvUBfy18sajnyUeSIHTtINE8gfrGMg==} + peerDependencies: + vue: ^3.2.0 + + emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1579,16 +1805,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} - - entities@1.1.2: - resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} - entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -1596,17 +1812,17 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -1615,275 +1831,26 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-module-lexer@0.4.1: + resolution: {integrity: sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==} - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - esbuild-android-64@0.14.54: - resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - esbuild-android-64@0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - esbuild-android-arm64@0.14.54: - resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - esbuild-android-arm64@0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - esbuild-darwin-64@0.14.54: - resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - esbuild-darwin-64@0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - esbuild-darwin-arm64@0.14.54: - resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - esbuild-darwin-arm64@0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - esbuild-freebsd-64@0.14.54: - resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - esbuild-freebsd-64@0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - esbuild-freebsd-arm64@0.14.54: - resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - esbuild-freebsd-arm64@0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - esbuild-linux-32@0.14.54: - resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - esbuild-linux-32@0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - esbuild-linux-64@0.14.54: - resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - esbuild-linux-64@0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - esbuild-linux-arm64@0.14.54: - resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - esbuild-linux-arm64@0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - esbuild-linux-arm@0.14.54: - resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - esbuild-linux-arm@0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - esbuild-linux-mips64le@0.14.54: - resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - esbuild-linux-mips64le@0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - esbuild-linux-ppc64le@0.14.54: - resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - esbuild-linux-ppc64le@0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - esbuild-linux-riscv64@0.14.54: - resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - esbuild-linux-riscv64@0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - esbuild-linux-s390x@0.14.54: - resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - esbuild-linux-s390x@0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - esbuild-netbsd-64@0.14.54: - resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - esbuild-netbsd-64@0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - esbuild-openbsd-64@0.14.54: - resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - esbuild-openbsd-64@0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - esbuild-sunos-64@0.14.54: - resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - esbuild-sunos-64@0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - esbuild-windows-32@0.14.54: - resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - esbuild-windows-32@0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - esbuild-windows-64@0.14.54: - resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - esbuild-windows-64@0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - esbuild-windows-arm64@0.14.54: - resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - esbuild-windows-arm64@0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - esbuild@0.14.54: - resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} hasBin: true - esbuild@0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -1892,99 +1859,74 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-airbnb-base@15.0.0: - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} - eslint-config-prettier@8.10.0: - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-define-config@2.1.0: + resolution: {integrity: sha512-QUp6pM9pjKEVannNAbSJNeRuYwW3LshejfyBBpjeMGaJjaDUpVps4C6KVR8R7dWZnD3i0synmrE36znjTkJvdQ==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} - eslint-import-resolver-typescript@3.6.3: - resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-module-utils@2.11.0: - resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-import@2.30.0: - resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-prettier@4.2.1: - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' eslint-config-prettier: '*' - prettier: '>=2.0.0' + prettier: '>=3.0.0' peerDependenciesMeta: + '@types/eslint': + optional: true eslint-config-prettier: optional: true - eslint-plugin-vue@9.28.0: - resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==} + eslint-plugin-vue@9.27.0: + resolution: {integrity: sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.9.0: + resolution: {integrity: sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} @@ -2003,10 +1945,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -2014,6 +1952,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2021,64 +1962,9 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - exec-buffer@3.2.0: - resolution: {integrity: sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==} - engines: {node: '>=4'} - - execa@0.7.0: - resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} - engines: {node: '>=4'} - - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - - execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - - execall@1.0.0: - resolution: {integrity: sha512-/J0Q8CvOvlAdpvhfkD/WnTQ4H1eU0exze2nFGPj/RSC7jpQ0NkKe2r28T5eMkhEEs+fzepMZNy1kVRKNlC04nQ==} - engines: {node: '>=0.10.0'} - - executable@4.1.1: - resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} - engines: {node: '>=4'} - - expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - - ext-list@2.2.2: - resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} - engines: {node: '>=0.10.0'} - - ext-name@5.0.0: - resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} - engines: {node: '>=4'} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2086,10 +1972,6 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@2.2.7: - resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} - engines: {node: '>=4.0.0'} - fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -2103,10 +1985,6 @@ packages: fast-uri@3.0.1: resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - fast-xml-parser@4.5.0: - resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} - hasBin: true - fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -2114,105 +1992,39 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} - figures@1.7.0: - resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} - engines: {node: '>=0.10.0'} - - file-entry-cache@4.0.0: - resolution: {integrity: sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA==} - engines: {node: '>=4'} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - file-type@10.11.0: - resolution: {integrity: sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==} - engines: {node: '>=6'} - - file-type@12.4.2: - resolution: {integrity: sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==} - engines: {node: '>=8'} - - file-type@3.9.0: - resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} - engines: {node: '>=0.10.0'} - - file-type@4.4.0: - resolution: {integrity: sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==} - engines: {node: '>=4'} - - file-type@5.2.0: - resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} - engines: {node: '>=4'} - - file-type@6.2.0: - resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} - engines: {node: '>=4'} - - file-type@8.1.0: - resolution: {integrity: sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==} - engines: {node: '>=6'} - - filename-reserved-regex@2.0.0: - resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} - engines: {node: '>=4'} - - filenamify@2.1.0: - resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==} - engines: {node: '>=4'} - - fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} + file-entry-cache@9.0.0: + resolution: {integrity: sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==} + engines: {node: '>=18'} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - filter-obj@5.1.0: - resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} - engines: {node: '>=14.16'} - - find-up@1.1.2: - resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} - engines: {node: '>=0.10.0'} - - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-versions@3.2.0: - resolution: {integrity: sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==} - engines: {node: '>=6'} + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} - flat-cache@2.0.1: - resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} - engines: {node: '>=4'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatted@2.0.2: - resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} + flat-cache@5.0.0: + resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==} + engines: {node: '>=18'} flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -2220,22 +2032,19 @@ packages: debug: optional: true - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} - fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + framesync@6.1.2: + resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==} fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} @@ -2245,8 +2054,9 @@ packages: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -2256,13 +2066,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2271,66 +2074,30 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} - get-proxy@2.1.0: - resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==} - engines: {node: '>=4'} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} - get-stdin@4.0.1: - resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} - engines: {node: '>=0.10.0'} + get-tsconfig@4.7.6: + resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} - get-stdin@6.0.0: - resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} - engines: {node: '>=4'} - - get-stream@2.3.1: - resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} - engines: {node: '>=0.10.0'} - - get-stream@3.0.0: - resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} - engines: {node: '>=4'} - - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - - get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - - gifsicle@5.2.0: - resolution: {integrity: sha512-vOIS3j0XoTCxq9pkGj43gEix82RkI5FveNgaFZutjbaui/HH+4fR8Y56dwXDuxYo8hR4xOo6/j2h1WHoQW6XLw==} - engines: {node: '>=10'} + giget@1.2.3: + resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true - git-raw-commits@2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} hasBin: true - glob-parent@3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2339,16 +2106,13 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.3.0: - resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} global-modules@2.0.0: resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} @@ -2366,58 +2130,34 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globby@10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@9.2.0: - resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} - engines: {node: '>=6'} + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} globjoin@0.1.4: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} - gonzales-pe@4.3.0: - resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} - engines: {node: '>=0.6.0'} - hasBin: true - gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - got@7.1.0: - resolution: {integrity: sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==} - engines: {node: '>=4'} - - got@8.3.2: - resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==} - engines: {node: '>=4'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + gradient-string@2.0.2: + resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} + engines: {node: '>=10'} + graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -2433,35 +2173,12 @@ packages: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} - has-symbol-support-x@1.4.2: - resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} - has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has-to-string-tag-x@1.4.1: - resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - - has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - - has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - - has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} + hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} @@ -2471,169 +2188,64 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - - html-tags@2.0.0: - resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} - engines: {node: '>=4'} + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} - htmlparser2@3.10.1: - resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} - htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - http-cache-semantics@3.8.1: - resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} - human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - - husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} + husky@9.1.4: + resolution: {integrity: sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==} + engines: {node: '>=18'} hasBin: true - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} - hasBin: true + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - imagemin-gifsicle@7.0.0: - resolution: {integrity: sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==} - engines: {node: '>=10'} - - imagemin-jpegtran@7.0.0: - resolution: {integrity: sha512-MJoyTCW8YjMJf56NorFE41SR/WkaGA3IYk4JgvMlRwguJEEd3PnP9UxA8Y2UWjquz8d+On3Ds/03ZfiiLS8xTQ==} - engines: {node: '>=10'} - - imagemin-mozjpeg@9.0.0: - resolution: {integrity: sha512-TwOjTzYqCFRgROTWpVSt5UTT0JeCuzF1jswPLKALDd89+PmrJ2PdMMYeDLYZ1fs9cTovI9GJd68mRSnuVt691w==} - engines: {node: '>=10'} - - imagemin-optipng@8.0.0: - resolution: {integrity: sha512-CUGfhfwqlPjAC0rm8Fy+R2DJDBGjzy2SkfyT09L8rasnF9jSoHFqJ1xxSZWK6HVPZBMhGPMxCTL70OgTHlLF5A==} - engines: {node: '>=10'} - - imagemin-pngquant@9.0.2: - resolution: {integrity: sha512-cj//bKo8+Frd/DM8l6Pg9pws1pnDUjgb7ae++sUX1kUVdv2nrngPykhiUOgFeE0LGY/LmUbCf4egCHC4YUcZSg==} - engines: {node: '>=10'} - - imagemin-svgo@9.0.0: - resolution: {integrity: sha512-uNgXpKHd99C0WODkrJ8OO/3zW3qjgS4pW7hcuII0RcHN3tnKxDjJWcitdVC/TZyfIqSricU8WfrHn26bdSW62g==} - engines: {node: '>=10'} - - imagemin-webp@6.1.0: - resolution: {integrity: sha512-i8ZluZV1pfQX9aVzmZ/VZh9KBSdPwUlp5VruAa9c30GZnX/nMl5n7h+oUMnI7Mg7+SUpu9mYBsw2nsYGUEllWQ==} - engines: {node: '>=10'} - - imagemin@7.0.1: - resolution: {integrity: sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==} - engines: {node: '>=8'} - - import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-lazy@3.1.0: - resolution: {integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==} - engines: {node: '>=6'} + import-from-string@0.0.4: + resolution: {integrity: sha512-ZmtWHOGv55OEFb3HxfQH4L4vAR7g3HUm82N5LmvXugiXlaZ1j/epItoUDjQ+gJ+MjNl+apczmCnqGFq8q2CM6w==} - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} + import-meta-resolve@3.1.1: + resolution: {integrity: sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw==} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indent-string@2.1.0: - resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} - engines: {node: '>=0.10.0'} - - indent-string@3.2.0: - resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} - engines: {node: '>=4'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - indexes-of@1.0.1: - resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - - into-stream@3.1.0: - resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} - engines: {node: '>=4'} - - is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} - - is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - - is-alphanumeric@1.0.0: - resolution: {integrity: sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==} - engines: {node: '>=0.10.0'} - - is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -2641,90 +2253,23 @@ packages: is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} engines: {node: '>= 0.4'} - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-bun-module@1.2.1: - resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - - is-cwebp-readable@3.0.0: - resolution: {integrity: sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==} - - is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - - is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} - - is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} - - is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finite@1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -2733,40 +2278,14 @@ packages: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - is-gif@3.0.0: - resolution: {integrity: sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==} - engines: {node: '>=6'} - - is-glob@3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - - is-jpg@2.0.0: - resolution: {integrity: sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==} - engines: {node: '>=6'} - - is-natural-number@4.0.1: - resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2775,134 +2294,42 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - is-object@1.0.2: - resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} - is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - is-png@2.0.0: - resolution: {integrity: sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==} - engines: {node: '>=8'} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - - is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} - engines: {node: '>=0.10.0'} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-supported-regexp-flag@1.0.1: - resolution: {integrity: sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==} - engines: {node: '>=0.10.0'} - - is-svg@4.4.0: - resolution: {integrity: sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==} - engines: {node: '>=6'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-what@3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - - is-whitespace-character@1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - is-word-character@1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - isurl@1.0.0: - resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} - engines: {node: '>= 4'} - - jpegtran-bin@5.0.2: - resolution: {integrity: sha512-4FSmgIcr8d5+V6T1+dHbPZjaFH0ogVyP4UVsE+zri7S9YLO4qAT2our4IN3sW3STVgNTbqPermdIgt2XuAJ4EA==} - engines: {node: '>=10'} + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true - jpegtran-bin@6.0.1: - resolution: {integrity: sha512-WohhhHhqe22de7PU8hXs6Sr5d4BAvkrfA93NR5tGlHyPnFLgvEW/bH+q7fv65JgoiQDsd7SBwwQ/OGRBivU3Mw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2910,10 +2337,6 @@ packages: js-tokens@9.0.0: resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2923,15 +2346,9 @@ packages: engines: {node: '>=4'} hasBin: true - json-buffer@3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -2944,15 +2361,15 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -2960,104 +2377,90 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - junk@3.1.0: - resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} - engines: {node: '>=8'} - - keyv@3.0.0: - resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - - kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - known-css-properties@0.11.0: - resolution: {integrity: sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w==} + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} - known-css-properties@0.26.0: - resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==} + knitwork@1.1.0: + resolution: {integrity: sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw==} - less@4.2.0: - resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} - engines: {node: '>=6'} - hasBin: true + known-css-properties@0.34.0: + resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} - leven@2.1.0: - resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} - engines: {node: '>=0.10.0'} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@13.3.0: - resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} - engines: {node: ^16.14.0 || >=18.0.0} + lint-staged@15.2.9: + resolution: {integrity: sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ==} + engines: {node: '>=18.12.0'} hasBin: true - listr2@6.6.1: - resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} - engines: {node: '>=16.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + listr2@8.2.4: + resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} + engines: {node: '>=18.0.0'} - load-json-file@1.1.0: - resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} - engines: {node: '>=0.10.0'} - - load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - - local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash-unified@1.0.3: + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -3082,120 +2485,44 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} - log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - logalot@2.1.0: - resolution: {integrity: sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw==} - engines: {node: '>=0.10.0'} - - longest-streak@2.0.4: - resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} - - longest@1.0.1: - resolution: {integrity: sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==} - engines: {node: '>=0.10.0'} - - loud-rejection@1.6.0: - resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} - engines: {node: '>=0.10.0'} - - lowercase-keys@1.0.0: - resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} - engines: {node: '>=0.10.0'} - - lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - - lpad-align@1.1.2: - resolution: {integrity: sha512-MMIcFmmR9zlGZtBcFOows6c2COMekHCIFJz3ew/rRpKZ1wR4mXDPzvcVqLarux8M33X4TPSq2Jdw8WJj0q0KbQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - make-dir@1.3.0: - resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} - engines: {node: '>=4'} - - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@2.0.0: - resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} - engines: {node: '>=4'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - - markdown-escapes@1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} - - markdown-table@1.1.3: - resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} - mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} - mdast-util-compact@1.0.4: - resolution: {integrity: sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==} - mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - meow@3.7.0: - resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==} - engines: {node: '>=0.10.0'} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - meow@5.0.0: - resolution: {integrity: sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==} - engines: {node: '>=6'} + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - meow@9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3204,130 +2531,90 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@3.0.2: - resolution: {integrity: sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==} - engines: {node: '>= 4'} - - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mockjs@1.1.0: - resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} - hasBin: true - - mozjpeg@7.1.1: - resolution: {integrity: sha512-iIDxWvzhWvLC9mcRJ1uSkiKaj4drF58oCqK2bITm5c2Jt6cJ8qQjSSru2PCaysG+hLIinryj8mgz5ZJzOYTv1A==} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - muggle-string@0.3.1: - resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} - engines: {node: '>= 4.4.x'} - hasBin: true - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3336,20 +2623,12 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - normalize-selector@0.2.0: - resolution: {integrity: sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==} + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} - normalize-url@2.0.1: - resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} - engines: {node: '>=4'} - - npm-conf@1.1.3: - resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} - engines: {node: '>=4'} - - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} + normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -3365,67 +2644,34 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - num2fraction@1.2.2: - resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} - - number-precision@1.6.0: - resolution: {integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==} + nypm@0.3.9: + resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -3434,147 +2680,43 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - optipng-bin@7.0.1: - resolution: {integrity: sha512-W99mpdW7Nt2PpFiaO+74pkht7KEqkXkeRomdWXfEz3SALZ6hns81y/pm1dsGZ6ItUIfchiNIP6ORDr1zETU1jA==} - engines: {node: '>=10'} - hasBin: true - - os-filter-obj@2.0.0: - resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==} - engines: {node: '>=4'} - - ow@0.17.0: - resolution: {integrity: sha512-i3keDzDQP5lWIe4oODyDFey1qVrq2hXKTuTH2VpqwpYtzPiKZt2ziRI4NBQmgW40AnV5Euz17OyWweCb+bNEQA==} - engines: {node: '>=10'} - - p-cancelable@0.3.0: - resolution: {integrity: sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==} - engines: {node: '>=4'} - - p-cancelable@0.4.1: - resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} - engines: {node: '>=4'} - - p-event@1.3.0: - resolution: {integrity: sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==} - engines: {node: '>=4'} - - p-event@2.3.1: - resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} - engines: {node: '>=6'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-is-promise@1.1.0: - resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} - engines: {node: '>=4'} - - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map-series@1.0.0: - resolution: {integrity: sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==} - engines: {node: '>=4'} + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-pipe@3.1.0: - resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==} - engines: {node: '>=8'} - - p-reduce@1.0.0: - resolution: {integrity: sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==} - engines: {node: '>=4'} - - p-timeout@1.2.1: - resolution: {integrity: sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==} - engines: {node: '>=4'} - - p-timeout@2.0.1: - resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} - engines: {node: '>=4'} - - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-entities@1.2.2: - resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} - - parse-json@2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} - - pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - - path-exists@2.1.0: - resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} - engines: {node: '>=0.10.0'} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -3587,29 +2729,32 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-type@1.1.0: - resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} - engines: {node: '>=0.10.0'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} - path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@0.2.0: - resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} - picocolors@0.2.1: - resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -3624,14 +2769,6 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - pinia@2.2.2: resolution: {integrity: sha512-ja2XqFWZC36mupU4z1ZzxeTApV7DOw44cV4dhQ9sGwun+N89v/XP7+j7q6TanS1u1tdbK4r+1BUx7heMaIdagA==} peerDependencies: @@ -3644,144 +2781,432 @@ packages: typescript: optional: true - pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} + pinyin-pro@3.24.2: + resolution: {integrity: sha512-5tPyLhxT4CZ9dWqQRqm3X5ADdS18Sb2w0ranNBgr6jCrqO4O8gtfuyqG7Y6+1Mre+0n2VlhKDz+3P5oqSLrkOw==} - pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} - pngquant-bin@6.0.1: - resolution: {integrity: sha512-Q3PUyolfktf+hYio6wsg3SanQzEU/v8aICg/WpzxXcuCMRb7H2Q81okfpcEztbMvw25ILjd3a87doj2N9kvbpQ==} - engines: {node: '>=10'} - hasBin: true + pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} - posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-html@0.36.0: - resolution: {integrity: sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==} + plus-pro-components@0.1.16: + resolution: {integrity: sha512-SVjqsnuBjn8wMQihA3ltoKUXx7iX4DtF0KHMYpJLgTNUZDfOzSvQb1vKnubSrFfUpaGFa3c6LSfFpFhzvVfT9Q==} peerDependencies: - postcss: '>=5.0.0' - postcss-syntax: '>=0.36.0' + element-plus: ^2.3.4 + vue: ^3.2.0 + + popmotion@11.0.5: + resolution: {integrity: sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==} + + postcss-calc@10.0.2: + resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-calc@8.2.4: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + + postcss-colormin@5.3.1: + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-colormin@7.0.2: + resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-convert-values@5.1.3: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-convert-values@7.0.3: + resolution: {integrity: sha512-yJhocjCs2SQer0uZ9lXTMOwDowbxvhwFVrZeS6NPEij/XXthl73ggUmfwVvJM+Vaj5gtCKJV1jiUu4IhAUkX/Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-comments@5.1.2: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-comments@7.0.2: + resolution: {integrity: sha512-/Hje9Ls1IYcB9duELO/AyDUJI6aQVY3h5Rj1ziXgaLYCTi1iVBLnjg/TS0D6NszR/kDG6I86OwLmAYe+bvJjiQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-duplicates@5.1.0: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-duplicates@7.0.1: + resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-empty@5.1.1: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-empty@7.0.0: + resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-overridden@5.1.0: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-overridden@7.0.0: + resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 postcss-html@1.7.0: resolution: {integrity: sha512-MfcMpSUIaR/nNgeVS8AyvyDugXlADjN9AcV7e5rDfrF1wduIAGSkL4q2+wgrZgA3sHVAHLDO9FuauHhZYW2nBw==} engines: {node: ^12 || >=14} - postcss-jsx@0.36.4: - resolution: {integrity: sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==} + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} peerDependencies: - postcss: '>=5.0.0' - postcss-syntax: '>=0.36.0' + postcss: ^8.0.0 - postcss-less@3.1.4: - resolution: {integrity: sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==} - engines: {node: '>=6.14.4'} - - postcss-markdown@0.36.0: - resolution: {integrity: sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==} + postcss-import@16.1.0: + resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==} + engines: {node: '>=18.0.0'} peerDependencies: - postcss: '>=5.0.0' - postcss-syntax: '>=0.36.0' + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true postcss-media-query-parser@0.2.3: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} - postcss-reporter@6.0.1: - resolution: {integrity: sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==} - engines: {node: '>=6'} + postcss-merge-longhand@5.1.7: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-longhand@7.0.3: + resolution: {integrity: sha512-8waYomFxshdv6M9Em3QRM9MettRLDRcH2JQi2l0Z1KlYD/vhal3gbkeSES0NuACXOlZBB0V/B0AseHZaklzWOA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-rules@5.1.4: + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-rules@7.0.3: + resolution: {integrity: sha512-2eSas2p3voPxNfdI5sQrvIkMaeUHpVc3EezgVs18hz/wRTQAC9U99tp9j3W5Jx9/L3qHkEDvizEx/LdnmumIvQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-font-values@5.1.0: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-font-values@7.0.0: + resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-gradients@5.1.1: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-gradients@7.0.0: + resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-params@5.1.4: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-params@7.0.2: + resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-selectors@5.2.1: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-selectors@7.0.3: + resolution: {integrity: sha512-SxTgUQSgBk6wEqzQZKEv1xQYIp9UBju6no9q+npohzSdhuSICQdkqmD1UMKkZWItS3olJSJMDDEY9WOJ5oGJew==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-normalize-charset@5.1.0: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-charset@7.0.0: + resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-display-values@5.1.0: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-display-values@7.0.0: + resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-positions@5.1.1: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-positions@7.0.0: + resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-repeat-style@5.1.1: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-repeat-style@7.0.0: + resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-string@5.1.0: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-string@7.0.0: + resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-timing-functions@5.1.0: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-timing-functions@7.0.0: + resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-unicode@5.1.1: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-unicode@7.0.2: + resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-url@5.1.0: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-url@7.0.0: + resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-whitespace@5.1.1: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-whitespace@7.0.0: + resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-ordered-values@5.1.3: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-ordered-values@7.0.1: + resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-initial@5.1.2: + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-initial@7.0.2: + resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-transforms@5.1.0: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-transforms@7.0.0: + resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 postcss-resolve-nested-selector@0.1.6: resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} - postcss-safe-parser@4.0.2: - resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} - engines: {node: '>=6.0.0'} - postcss-safe-parser@6.0.0: resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 - postcss-sass@0.3.5: - resolution: {integrity: sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==} + postcss-safe-parser@7.0.0: + resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 - postcss-scss@2.1.1: - resolution: {integrity: sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==} - engines: {node: '>=6.0.0'} - - postcss-selector-parser@3.1.2: - resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} - engines: {node: '>=8'} + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-sorting@4.1.0: - resolution: {integrity: sha512-r4T2oQd1giURJdHQ/RMb72dKZCuLOdWx2B/XhXN1Y1ZdnwXsKH896Qz6vD4tFy9xSjpKNYhlZoJmWyhH/7JUQw==} - engines: {node: '>=6.14.3'} - - postcss-sorting@7.0.1: - resolution: {integrity: sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==} + postcss-sorting@8.0.2: + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} peerDependencies: - postcss: ^8.3.9 + postcss: ^8.4.20 - postcss-syntax@0.36.2: - resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + postcss-svgo@5.1.0: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} peerDependencies: - postcss: '>=5.0.0' - postcss-html: '*' - postcss-jsx: '*' - postcss-less: '*' - postcss-markdown: '*' - postcss-scss: '*' - peerDependenciesMeta: - postcss-html: - optional: true - postcss-jsx: - optional: true - postcss-less: - optional: true - postcss-markdown: - optional: true - postcss-scss: - optional: true + postcss: ^8.2.15 - postcss-value-parser@3.3.1: - resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + postcss-svgo@7.0.1: + resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.31 + + postcss-unique-selectors@5.1.1: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-unique-selectors@7.0.2: + resolution: {integrity: sha512-CjSam+7Vf8cflJQsHrMS0P2hmy9u0+n/P001kb5eAszLmhjMqrt/i5AqQuNFihhViwDvEAezqTmXqaYXL2ugMw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@7.0.39: - resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} - engines: {node: '>=6.0.0'} - - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prepend-http@1.0.4: - resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} - engines: {node: '>=0.10.0'} - - prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} @@ -3791,128 +3216,39 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} - prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - query-string@5.1.1: - resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} - engines: {node: '>=0.10.0'} - - query-string@8.2.0: - resolution: {integrity: sha512-tUZIw8J0CawM5wyGBiDOAp7ObdRQh4uBor/fUR9ZjmbZVvw95OD9If4w3MQxr99rg0DJZ/9CIORcpEqU5hQG7g==} - engines: {node: '>=14.16'} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@1.1.0: - resolution: {integrity: sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==} - engines: {node: '>=4'} + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - read-pkg-up@1.0.1: - resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} - engines: {node: '>=0.10.0'} - - read-pkg-up@3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} - engines: {node: '>=4'} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@1.1.0: - resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} - engines: {node: '>=0.10.0'} - - read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - redent@1.0.0: - resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==} - engines: {node: '>=0.10.0'} - - redent@2.0.0: - resolution: {integrity: sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==} - engines: {node: '>=4'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - - remark-parse@6.0.3: - resolution: {integrity: sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==} - - remark-stringify@6.0.4: - resolution: {integrity: sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==} - - remark@10.0.1: - resolution: {integrity: sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==} - - repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - - repeating@2.0.1: - resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} - engines: {node: '>=0.10.0'} - - replace-ext@1.0.0: - resolution: {integrity: sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==} - engines: {node: '>= 0.10'} - - replace-ext@1.0.1: - resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} - engines: {node: '>= 0.10'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -3921,16 +3257,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - resize-detector@0.3.0: - resolution: {integrity: sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==} - - resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - - resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3939,31 +3265,19 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - responselike@1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} + responsive-storage@2.2.0: + resolution: {integrity: sha512-94W5Chr2F5kDBT6J+OCOeJguEkSTDc3jPOUQXYmzNG64DCNl5p7hoBDF7bx7u6EXAEcpUKF64OZR4b7Nn8h/Gg==} - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -3972,90 +3286,45 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + rollup-plugin-external-globals@0.10.0: + resolution: {integrity: sha512-RXlupZrmn97AaaS5dWnktkjM+Iy+od0E+8L0mUkMIs3iuoUXNJebueQocQKV7Ircd54fSGGmkBaXwNzY05J1yQ==} + peerDependencies: + rollup: ^2.25.0 || ^3.3.0 || ^4.1.4 rollup-plugin-visualizer@5.12.0: resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} engines: {node: '>=14'} hasBin: true peerDependencies: - rollup: ^2.56.3 + rollup: 2.x || 3.x || 4.x peerDependenciesMeta: rollup: optional: true - rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} + rollup@4.21.0: + resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - - safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - - scroll-into-view-if-needed@2.2.31: - resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} - - seek-bzip@1.0.6: - resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} + sass@1.77.8: + resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} + engines: {node: '>=14.0.0'} hasBin: true - semver-regex@2.0.0: - resolution: {integrity: sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==} - engines: {node: '>=6'} - - semver-truncate@1.1.2: - resolution: {integrity: sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==} - engines: {node: '>=0.10.0'} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -4065,26 +3334,10 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -4093,23 +3346,20 @@ packages: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} @@ -4119,47 +3369,15 @@ packages: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} - snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} - snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} + sortablejs@1.15.2: + resolution: {integrity: sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==} - snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - - sort-keys-length@1.0.1: - resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} - engines: {node: '>=0.10.0'} - - sort-keys@1.1.2: - resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} - engines: {node: '>=0.10.0'} - - sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} - - sortablejs@1.15.3: - resolution: {integrity: sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - - source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} source-map@0.6.1: @@ -4170,62 +3388,27 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} - - specificity@0.4.1: - resolution: {integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==} - hasBin: true - - split-on-first@3.0.0: - resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} - engines: {node: '>=12'} - - split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - - split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - squeak@1.3.0: - resolution: {integrity: sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A==} - engines: {node: '>=0.10.0'} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - state-toggle@1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - - static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - - strict-uri-encode@1.1.0: - resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} - engines: {node: '>=0.10.0'} + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -4235,33 +3418,9 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@1.3.2: - resolution: {integrity: sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==} - - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -4271,55 +3430,31 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-bom@2.0.0: - resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} - engines: {node: '>=0.10.0'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-dirs@2.1.0: - resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} - - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - strip-indent@1.0.1: - resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} - engines: {node: '>=0.10.0'} - hasBin: true - - strip-indent@2.0.0: - resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} - engines: {node: '>=4'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-outer@1.0.1: - resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} - engines: {node: '>=0.10.0'} + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + style-value-types@5.1.2: + resolution: {integrity: sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==} - style-search@0.1.0: - resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + stylehacks@5.1.1: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + stylehacks@7.0.3: + resolution: {integrity: sha512-4DqtecvI/Nd+2BCvW9YEF6lhBN5UM50IJ1R3rnEAhBwbCKf4VehRf+uqvnVArnBayjYD/WtT3g0G/HSRxWfTRg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 stylelint-config-html@1.1.0: resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} @@ -4328,15 +3463,20 @@ packages: postcss-html: ^1.0.0 stylelint: '>=14.0.0' - stylelint-config-prettier@9.0.5: - resolution: {integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==} - engines: {node: '>= 12'} - hasBin: true + stylelint-config-recess-order@5.0.1: + resolution: {integrity: sha512-rKbGkoa3h0rINrGln9TFVowvSCLgPJC5O0EuPiqlqWcJMb1lImEtXktcjFCVz+hwtSUiHD3ijJc3vP9muFOgJg==} peerDependencies: - stylelint: '>= 11.x < 15' + stylelint: '>=16' - stylelint-config-rational-order@0.1.2: - resolution: {integrity: sha512-Qo7ZQaihCwTqijfZg4sbdQQHtugOX/B1/fYh018EiDZHW+lkqH9uHOnsDwDPGZrYJuB6CoyI7MZh2ecw2dOkew==} + stylelint-config-recommended-scss@14.1.0: + resolution: {integrity: sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==} + engines: {node: '>=18.12.0'} + peerDependencies: + postcss: ^8.3.3 + stylelint: ^16.6.1 + peerDependenciesMeta: + postcss: + optional: true stylelint-config-recommended-vue@1.5.0: resolution: {integrity: sha512-65TAK/clUqkNtkZLcuytoxU0URQYlml+30Nhop7sRkCZ/mtWdXt7T+spPSB3KMKlb+82aEVJ4OrcstyDBdbosg==} @@ -4351,44 +3491,50 @@ packages: peerDependencies: stylelint: ^16.1.0 - stylelint-config-recommended@9.0.0: - resolution: {integrity: sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ==} + stylelint-config-standard-scss@13.1.0: + resolution: {integrity: sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==} + engines: {node: '>=18.12.0'} peerDependencies: - stylelint: ^14.10.0 + postcss: ^8.3.3 + stylelint: ^16.3.1 + peerDependenciesMeta: + postcss: + optional: true - stylelint-config-standard@29.0.0: - resolution: {integrity: sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg==} + stylelint-config-standard@36.0.1: + resolution: {integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==} + engines: {node: '>=18.12.0'} peerDependencies: - stylelint: ^14.14.0 + stylelint: ^16.1.0 - stylelint-order@2.2.1: - resolution: {integrity: sha512-019KBV9j8qp1MfBjJuotse6MgaZqGVtXMc91GU9MsS9Feb+jYUvUU3Z8XiClqPdqJZQ0ryXQJGg3U3PcEjXwfg==} - engines: {node: '>=6'} + stylelint-order@6.0.4: + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} peerDependencies: - stylelint: ^9.10.1 || ^10.0.0 + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 - stylelint-order@5.0.0: - resolution: {integrity: sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==} + stylelint-prettier@5.0.2: + resolution: {integrity: sha512-qJ+BN+1T2ZcKz9WIrv0x+eFGHzSUnXfXd5gL///T6XoJvr3D8/ztzz2fhtmXef7Vb8P33zBXmLTTveByr0nwBw==} + engines: {node: '>=18.12.0'} peerDependencies: - stylelint: ^14.0.0 + prettier: '>=3.0.0' + stylelint: '>=16.0.0' - stylelint@14.16.1: - resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + stylelint-scss@6.5.0: + resolution: {integrity: sha512-yOnYlr71wrTPT3rYyUurgTj6Rw7JUtzsZQsiPEjvs+k/yqoYHdweqpw6XN/ARpxjAuvJpddoMUvV8aAIpvUwTg==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.2 + + stylelint@16.8.2: + resolution: {integrity: sha512-fInKATippQhcSm7AB+T32GpI+626yohrg33GkFT/5jzliUw5qhlwZq2UQQwgl3HsHrf09oeARi0ZwgY/UWEv9A==} + engines: {node: '>=18.12.0'} hasBin: true - stylelint@9.10.1: - resolution: {integrity: sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ==} - engines: {node: '>=6'} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true - sugarss@2.0.0: - resolution: {integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==} - - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4397,9 +3543,9 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} + supports-hyperlinks@3.0.0: + resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} + engines: {node: '>=14.18'} supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -4413,252 +3559,134 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - table@5.4.6: - resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} - engines: {node: '>=6.0.0'} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} table@6.8.2: resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} engines: {node: '>=10.0.0'} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} + tailwindcss@3.4.10: + resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==} + engines: {node: '>=14.0.0'} + hasBin: true - tar-stream@1.6.2: - resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} - engines: {node: '>= 0.8.0'} + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} - temp-dir@1.0.0: - resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} - engines: {node: '>=4'} - - tempfile@2.0.0: - resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==} - engines: {node: '>=4'} - - text-extensions@1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - timed-out@4.0.1: - resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} - engines: {node: '>=0.10.0'} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - to-buffer@1.1.1: - resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tinygradient@1.1.5: + resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} + + tippy.js@6.3.7: + resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - - to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - - trim-newlines@1.0.0: - resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==} - engines: {node: '>=0.10.0'} - - trim-newlines@2.0.0: - resolution: {integrity: sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==} - engines: {node: '>=4'} - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - trim-repeated@1.0.0: - resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} - engines: {node: '>=0.10.0'} - - trim-trailing-lines@1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - - trim@0.0.1: - resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} - deprecated: Use String.prototype.trim() instead - - trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + typescript: '>=4.2.0' - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} tslib@2.3.0: resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - 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' - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.11.0: - resolution: {integrity: sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==} - engines: {node: '>=8'} - - type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} hasBin: true - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + unctx@2.3.1: + resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - unherit@1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} - unified@7.1.0: - resolution: {integrity: sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==} - - union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - - uniq@1.0.1: - resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} - - unist-util-find-all-after@1.0.5: - resolution: {integrity: sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==} - - unist-util-is@3.0.0: - resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} - - unist-util-remove-position@1.1.4: - resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==} - - unist-util-stringify-position@1.1.2: - resolution: {integrity: sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@2.1.2: - resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} - - unist-util-visit@1.4.1: - resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} + unimport@3.10.0: + resolution: {integrity: sha512-/UvKRfWx3mNDWwWQhR62HsoM3wxHwYdTq8ellZzMOHnnw4Dp8tovgthyW7DjTrbjDL+i4idOp06voz2VKlvrLw==} universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unplugin-vue-components@0.24.1: - resolution: {integrity: sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/parser': ^7.15.8 - '@nuxt/kit': ^3.2.2 - vue: 2 || 3 - peerDependenciesMeta: - '@babel/parser': - optional: true - '@nuxt/kit': - optional: true - - unplugin@1.14.1: - resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + unplugin@1.12.2: + resolution: {integrity: sha512-bEqQxeC7rxtxPZ3M5V4Djcc4lQqKPgGe3mAWZvxcSmX5jhGxll19NliaRzQSQPrk4xJZSGniK3puLWpRuZN7VQ==} engines: {node: '>=14.0.0'} - peerDependencies: - webpack-sources: ^3 - peerDependenciesMeta: - webpack-sources: - optional: true - unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} + untyped@1.4.2: + resolution: {integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==} + hasBin: true update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} @@ -4669,82 +3697,93 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - - url-parse-lax@1.0.0: - resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==} - engines: {node: '>=0.10.0'} - - url-parse-lax@3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - - url-to-options@1.0.1: - resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==} - engines: {node: '>= 4'} - - use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + vite-plugin-cdn-import@1.0.1: + resolution: {integrity: sha512-lgjLxgwFSKvJLbqjVBirUZ0rQo00GpUGJzRpgQu8RyBw9LA7jaqG6fUMQzBC9qWmTGabPC3iOzwCcoi7PseRAQ==} - v8-compile-cache@2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - vfile-location@2.0.6: - resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==} - - vfile-message@1.1.1: - resolution: {integrity: sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@3.0.1: - resolution: {integrity: sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==} + vite-plugin-checker@0.7.2: + resolution: {integrity: sha512-xeYeJbG0gaCaT0QcUC4B2Zo4y5NR8ZhYenc5gPbttrZvraRFwkEADCYwq+BfEHl9zYz7yf85TxsiGoYwyyIjhw==} + engines: {node: '>=14.16'} + peerDependencies: + '@biomejs/biome': '>=1.7' + eslint: '>=7' + meow: ^9.0.0 + optionator: ^0.9.1 + stylelint: '>=13' + typescript: '*' + vite: '>=2.0.0' + vls: '*' + vti: '*' + vue-tsc: '>=2.0.0' + peerDependenciesMeta: + '@biomejs/biome': + optional: true + eslint: + optional: true + meow: + optional: true + optionator: + optional: true + stylelint: + optional: true + typescript: + optional: true + vls: + optional: true + vti: + optional: true + vue-tsc: + optional: true vite-plugin-compression@0.5.1: resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} peerDependencies: vite: '>=2.0.0' - vite-plugin-eslint@1.8.1: - resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} - peerDependencies: - eslint: '>=7' - vite: '>=2' - - vite-plugin-imagemin@0.6.1: - resolution: {integrity: sha512-cP7LDn8euPrji7WYtDoNQpJEB9nkMxJHm/A+QZnvMrrCSuyo/clpMy/T1v7suDXPBavsDiDdFdVQB5p7VGD2cg==} + vite-plugin-externals@0.6.2: + resolution: {integrity: sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: '>=2.0.0' - vite-svg-loader@3.6.0: - resolution: {integrity: sha512-bZJffcgCREW57kNkgMhuNqeDznWXyQwJ3wKrRhHLMMzwDnP5jr3vXW3cqsmquRR7VTP5mLdKj1/zzPPooGUuPw==} + vite-plugin-fake-server@2.1.1: + resolution: {integrity: sha512-QUgssvE7jI9XU1WuDZ3gkzzi9GzVeapELIlFNMvmE2swDKL7O2y2nV0kRZ9VYOsD+hV312uSJyzHBJvcmBw7UQ==} - vite@3.2.10: - resolution: {integrity: sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==} - engines: {node: ^14.18.0 || >=16.0.0} + vite-plugin-remove-console@2.2.0: + resolution: {integrity: sha512-qgjh5pz75MdE9Kzs8J0kBwaCfifHV0ezRbB9rpGsIOxam+ilcGV7WOk91vFJXquzRmiKrFh3Hxlh0JJWAmXTbQ==} + + vite-plugin-router-warn@1.0.0: + resolution: {integrity: sha512-jnr7faHJPkKxukBXVpg7Ui1UDqhmxD7xU6JGidq8ivSHTsNAPqzSpPpwW8O1PBP/0+Owq4bLfNNk11drOkz4xA==} + + vite-plugin-vue-inspector@5.1.3: + resolution: {integrity: sha512-pMrseXIDP1Gb38mOevY+BvtNGNqiqmqa2pKB99lnLsADQww9w9xMbAfT4GB6RUoaOkSPrtlXqpq2Fq+Dj2AgFg==} + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 + + vite-svg-loader@5.1.0: + resolution: {integrity: sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==} + peerDependencies: + vue: '>=3.2.13' + + vite@5.4.1: + resolution: {integrity: sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': '>= 14' + '@types/node': ^18.0.0 || >=20.0.0 less: '*' + lightningcss: ^1.21.0 sass: '*' + sass-embedded: '*' stylus: '*' sugarss: '*' terser: ^5.4.0 @@ -4753,8 +3792,12 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: @@ -4762,16 +3805,29 @@ packages: terser: optional: true - vue-demi@0.13.11: - resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} - engines: {node: '>=12'} + vscode-jsonrpc@6.0.0: + resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} + engines: {node: '>=8.0.0 || >=10.0.0'} + + vscode-languageclient@7.0.0: + resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==} + engines: {vscode: ^1.52.0} + + vscode-languageserver-protocol@3.16.0: + resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.16.0: + resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} + + vscode-languageserver@7.0.0: + resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} @@ -4784,19 +3840,6 @@ packages: '@vue/composition-api': optional: true - vue-echarts@6.7.3: - resolution: {integrity: sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==} - 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 - vue-eslint-parser@9.4.3: resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} engines: {node: ^14.17.0 || >=16.0.0} @@ -4809,38 +3852,46 @@ packages: peerDependencies: vue: ^3.0.0 - vue-router@4.4.5: - resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} + vue-router@4.4.3: + resolution: {integrity: sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A==} peerDependencies: vue: ^3.2.0 - vue-template-compiler@2.7.16: - resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + vue-tippy@6.4.4: + resolution: {integrity: sha512-0C5TSU482FvjhEeKrPkz08tzyC/KJC0CiEbm3yW9oS+n3fa03ajEzU2QcxI9oR6Hwlg8NOP0U6T4EsGuccq6YQ==} + peerDependencies: + vue: ^3.2.0 - vue-tsc@1.8.27: - resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + vue-tsc@2.0.29: + resolution: {integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==} hasBin: true peerDependencies: - typescript: '*' + typescript: '>=5.0.0' - vue@3.5.5: - resolution: {integrity: sha512-ybC+xn67K4+df1yVeov4UjBGyVcXM0a1g7JVZr+pWVUX3xF6ntXU0wIjkTkduZBUIpxTlsftJSxz2kwhsT7dgA==} + vue-types@5.1.3: + resolution: {integrity: sha512-3Wy6QcZl0VusCCHX3vYrWSILFlrOB2EQDoySnuYmASM5cUp1FivJGfkS5lp1CutDgyRb41g32r/1QCmiBj5i1Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + vue: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + vue: + optional: true + + vue@3.4.38: + resolution: {integrity: sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -4850,6 +3901,10 @@ packages: engines: {node: '>= 8'} hasBin: true + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -4862,55 +3917,40 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - write@1.0.3: - resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} - engines: {node: '>=4'} - - x-is-string@0.1.0: - resolution: {integrity: sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w==} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml-eslint-parser@1.2.3: + resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} + engines: {node: ^14.17.0 || >=16.0.0} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} engines: {node: '>= 14'} - - yargs-parser@10.1.0: - resolution: {integrity: sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} + hasBin: true yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -4920,103 +3960,73 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + zrender@5.6.0: resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==} snapshots: + '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/utils@0.7.10': {} - - '@arco-design/color@0.4.0': - dependencies: - color: 3.2.1 - - '@arco-design/web-vue@2.56.2(vue@3.5.5(typescript@4.9.5))': - dependencies: - '@arco-design/color': 0.4.0 - b-tween: 0.3.3 - b-validate: 1.5.3 - compute-scroll-into-view: 1.0.20 - dayjs: 1.11.13 - number-precision: 1.6.0 - resize-observer-polyfill: 1.5.1 - scroll-into-view-if-needed: 2.2.31 - vue: 3.5.5(typescript@4.9.5) - - '@arco-plugins/vite-vue@1.4.5': - dependencies: - '@babel/generator': 7.25.6 - '@babel/helper-module-imports': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - '@types/node': 16.18.108 - transitivePeerDependencies: - - supports-color - '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.1.0 + picocolors: 1.0.1 - '@babel/compat-data@7.25.4': {} + '@babel/compat-data@7.25.2': {} '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 + '@babel/generator': 7.25.0 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.3.6 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.25.6': + '@babel/generator@7.25.0': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.2 '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/compat-data': 7.25.4 + '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -5024,22 +4034,26 @@ snapshots: '@babel/helper-optimise-call-expression': 7.24.7 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/traverse': 7.25.3 semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.25.2 + '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color @@ -5049,13 +4063,13 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.2 '@babel/helper-plugin-utils@7.24.8': {} @@ -5064,21 +4078,21 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color @@ -5088,28 +4102,52 @@ snapshots: '@babel/helper-validator-option@7.24.8': {} - '@babel/helpers@7.25.6': + '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.6 + '@babel/types': 7.25.2 '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.0.1 - '@babel/parser@7.25.6': + '@babel/parser@7.25.3': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.2 + + '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 @@ -5118,183 +4156,333 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color + '@babel/standalone@7.25.3': + optional: true + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 - '@babel/traverse@7.25.6': + '@babel/traverse@7.25.3': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - debug: 4.3.7 + '@babel/types': 7.25.2 + debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.25.6': + '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@commitlint/cli@17.8.1': + '@commitlint/cli@19.4.0(@types/node@20.16.1)(typescript@5.5.4)': dependencies: - '@commitlint/format': 17.8.1 - '@commitlint/lint': 17.8.1 - '@commitlint/load': 17.8.1 - '@commitlint/read': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 - lodash.isfunction: 3.0.9 - resolve-from: 5.0.0 - resolve-global: 1.0.0 + '@commitlint/format': 19.3.0 + '@commitlint/lint': 19.2.2 + '@commitlint/load': 19.4.0(@types/node@20.16.1)(typescript@5.5.4) + '@commitlint/read': 19.4.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 yargs: 17.7.2 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + - '@types/node' + - typescript - '@commitlint/config-conventional@17.8.1': + '@commitlint/config-conventional@19.2.2': dependencies: - conventional-changelog-conventionalcommits: 6.1.0 + '@commitlint/types': 19.0.3 + conventional-changelog-conventionalcommits: 7.0.2 - '@commitlint/config-validator@17.8.1': + '@commitlint/config-validator@19.0.3': dependencies: - '@commitlint/types': 17.8.1 + '@commitlint/types': 19.0.3 ajv: 8.17.1 - '@commitlint/ensure@17.8.1': + '@commitlint/ensure@19.0.3': dependencies: - '@commitlint/types': 17.8.1 + '@commitlint/types': 19.0.3 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.startcase: 4.4.0 lodash.upperfirst: 4.3.1 - '@commitlint/execute-rule@17.8.1': {} + '@commitlint/execute-rule@19.0.0': {} - '@commitlint/format@17.8.1': + '@commitlint/format@19.3.0': dependencies: - '@commitlint/types': 17.8.1 - chalk: 4.1.2 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 - '@commitlint/is-ignored@17.8.1': + '@commitlint/is-ignored@19.2.2': dependencies: - '@commitlint/types': 17.8.1 - semver: 7.5.4 + '@commitlint/types': 19.0.3 + semver: 7.6.3 - '@commitlint/lint@17.8.1': + '@commitlint/lint@19.2.2': dependencies: - '@commitlint/is-ignored': 17.8.1 - '@commitlint/parse': 17.8.1 - '@commitlint/rules': 17.8.1 - '@commitlint/types': 17.8.1 + '@commitlint/is-ignored': 19.2.2 + '@commitlint/parse': 19.0.3 + '@commitlint/rules': 19.0.3 + '@commitlint/types': 19.0.3 - '@commitlint/load@17.8.1': + '@commitlint/load@19.4.0(@types/node@20.16.1)(typescript@5.5.4)': dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/execute-rule': 17.8.1 - '@commitlint/resolve-extends': 17.8.1 - '@commitlint/types': 17.8.1 - '@types/node': 20.5.1 - chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@4.9.5) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@4.9.5))(ts-node@10.9.2(@types/node@20.5.1)(typescript@4.9.5))(typescript@4.9.5) + '@commitlint/config-validator': 19.0.3 + '@commitlint/execute-rule': 19.0.0 + '@commitlint/resolve-extends': 19.1.0 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.16.1)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - ts-node: 10.9.2(@types/node@20.5.1)(typescript@4.9.5) - typescript: 4.9.5 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + - '@types/node' + - typescript - '@commitlint/message@17.8.1': {} + '@commitlint/message@19.0.0': {} - '@commitlint/parse@17.8.1': + '@commitlint/parse@19.0.3': dependencies: - '@commitlint/types': 17.8.1 - conventional-changelog-angular: 6.0.0 - conventional-commits-parser: 4.0.0 + '@commitlint/types': 19.0.3 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 - '@commitlint/read@17.8.1': + '@commitlint/read@19.4.0': dependencies: - '@commitlint/top-level': 17.8.1 - '@commitlint/types': 17.8.1 - fs-extra: 11.2.0 - git-raw-commits: 2.0.11 + '@commitlint/top-level': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + git-raw-commits: 4.0.0 minimist: 1.2.8 - '@commitlint/resolve-extends@17.8.1': + '@commitlint/resolve-extends@19.1.0': dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/types': 17.8.1 - import-fresh: 3.3.0 + '@commitlint/config-validator': 19.0.3 + '@commitlint/types': 19.0.3 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - resolve-global: 1.0.0 - '@commitlint/rules@17.8.1': + '@commitlint/rules@19.0.3': dependencies: - '@commitlint/ensure': 17.8.1 - '@commitlint/message': 17.8.1 - '@commitlint/to-lines': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 + '@commitlint/ensure': 19.0.3 + '@commitlint/message': 19.0.0 + '@commitlint/to-lines': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 - '@commitlint/to-lines@17.8.1': {} + '@commitlint/to-lines@19.0.0': {} - '@commitlint/top-level@17.8.1': + '@commitlint/top-level@19.0.0': dependencies: - find-up: 5.0.0 + find-up: 7.0.0 - '@commitlint/types@17.8.1': + '@commitlint/types@19.0.3': dependencies: - chalk: 4.1.2 + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 - '@cspotcode/source-map-support@0.8.1': + '@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1)': dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@csstools/css-tokenizer': 3.0.1 - '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.1.2)': + '@csstools/css-tokenizer@3.0.1': {} + + '@csstools/media-query-list-parser@3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) + '@csstools/css-tokenizer': 3.0.1 + + '@csstools/selector-specificity@4.0.0(postcss-selector-parser@6.1.2)': dependencies: postcss-selector-parser: 6.1.2 - '@esbuild/android-arm@0.15.18': - optional: true + '@ctrl/tinycolor@3.6.1': {} - '@esbuild/linux-loong64@0.14.54': - optional: true + '@dual-bundle/import-meta-resolve@4.1.0': {} - '@esbuild/linux-loong64@0.15.18': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@element-plus/icons-vue@2.3.1(vue@3.4.38(typescript@5.5.4))': dependencies: - eslint: 8.57.0 + vue: 3.4.38(typescript@5.5.4) + + '@esbuild/aix-ppc64@0.19.12': + optional: true + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.19.12': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.19.12': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.19.12': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.19.12': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.19.12': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.19.12': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.19.12': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.19.12': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.19.12': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.19.12': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.19.12': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.19.12': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.19.12': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.19.12': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.19.12': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.19.12': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.19.12': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.19.12': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.19.12': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.19.12': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.19.12': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.19.12': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0(jiti@1.21.6))': + dependencies: + eslint: 9.9.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.1': {} + '@eslint-community/regexpp@4.11.0': {} - '@eslint/eslintrc@2.1.4': + '@eslint/config-array@0.17.1': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.7 - espree: 9.6.1 - globals: 13.24.0 + debug: 4.3.6 + espree: 10.1.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -5303,19 +4491,55 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.0': {} + '@eslint/js@9.9.0': {} - '@humanwhocodes/config-array@0.11.14': + '@eslint/object-schema@2.1.4': {} + + '@faker-js/faker@8.4.1': {} + + '@floating-ui/core@1.6.7': dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@floating-ui/utils': 0.2.7 + + '@floating-ui/dom@1.6.10': + dependencies: + '@floating-ui/core': 1.6.7 + '@floating-ui/utils': 0.2.7 + + '@floating-ui/utils@0.2.7': {} '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.0': {} + + '@iconify-icons/ep@1.2.12': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-icons/ri@1.2.10': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/vue@4.1.2(vue@3.4.38(typescript@5.5.4))': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.4.38(typescript@5.5.4) + + '@intlify/bundle-utils@8.0.0(vue-i18n@9.14.0(vue@3.4.38(typescript@5.5.4)))': + dependencies: + '@intlify/message-compiler': 9.14.0 + '@intlify/shared': 9.14.0 + acorn: 8.12.1 + escodegen: 2.1.0 + estree-walker: 2.0.2 + jsonc-eslint-parser: 2.4.0 + mlly: 1.7.1 + source-map-js: 1.2.0 + yaml-eslint-parser: 1.2.3 + optionalDependencies: + vue-i18n: 9.14.0(vue@3.4.38(typescript@5.5.4)) '@intlify/core-base@9.14.0': dependencies: @@ -5325,10 +4549,39 @@ snapshots: '@intlify/message-compiler@9.14.0': dependencies: '@intlify/shared': 9.14.0 - source-map-js: 1.2.1 + source-map-js: 1.2.0 '@intlify/shared@9.14.0': {} + '@intlify/unplugin-vue-i18n@4.0.0(rollup@4.21.0)(vue-i18n@9.14.0(vue@3.4.38(typescript@5.5.4)))': + dependencies: + '@intlify/bundle-utils': 8.0.0(vue-i18n@9.14.0(vue@3.4.38(typescript@5.5.4))) + '@intlify/shared': 9.14.0 + '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@vue/compiler-sfc': 3.4.38 + debug: 4.3.6 + fast-glob: 3.3.2 + js-yaml: 4.1.0 + json5: 2.2.3 + pathe: 1.1.2 + picocolors: 1.0.1 + source-map-js: 1.2.0 + unplugin: 1.12.2 + optionalDependencies: + vue-i18n: 9.14.0(vue@3.4.38(typescript@5.5.4)) + transitivePeerDependencies: + - rollup + - supports-color + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -5346,23 +4599,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@mrmlnc/readdir-enhanced@2.2.1': - dependencies: - call-me-maybe: 1.0.2 - glob-to-regexp: 0.3.0 - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - '@nodelib/fs.stat@1.1.3': {} - '@nodelib/fs.stat@2.0.5': {} '@nodelib/fs.walk@1.2.8': @@ -5370,260 +4611,306 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nolyfill/is-core-module@1.0.39': {} - - '@rollup/pluginutils@4.2.1': + '@nuxt/kit@3.12.4(rollup@4.21.0)': dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 + '@nuxt/schema': 3.12.4(rollup@4.21.0) + c12: 1.11.1 + consola: 3.2.3 + defu: 6.1.4 + destr: 2.0.3 + globby: 14.0.2 + hash-sum: 2.0.0 + ignore: 5.3.2 + jiti: 1.21.6 + klona: 2.0.6 + knitwork: 1.1.0 + mlly: 1.7.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + scule: 1.3.0 + semver: 7.6.3 + ufo: 1.5.4 + unctx: 2.3.1 + unimport: 3.10.0(rollup@4.21.0) + untyped: 1.4.2 + transitivePeerDependencies: + - magicast + - rollup + - supports-color + optional: true - '@rollup/pluginutils@5.1.0(rollup@2.79.1)': + '@nuxt/schema@3.12.4(rollup@4.21.0)': + dependencies: + compatx: 0.1.8 + consola: 3.2.3 + defu: 6.1.4 + hookable: 5.5.3 + pathe: 1.1.2 + pkg-types: 1.1.3 + scule: 1.3.0 + std-env: 3.7.0 + ufo: 1.5.4 + uncrypto: 0.1.3 + unimport: 3.10.0(rollup@4.21.0) + untyped: 1.4.2 + transitivePeerDependencies: + - rollup + - supports-color + optional: true + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@popperjs/core@2.11.8': {} + + '@pureadmin/descriptions@1.2.1(echarts@5.5.1)(element-plus@2.8.0(vue@3.4.38(typescript@5.5.4)))(typescript@5.5.4)': + dependencies: + '@element-plus/icons-vue': 2.3.1(vue@3.4.38(typescript@5.5.4)) + '@pureadmin/utils': 2.4.8(echarts@5.5.1)(vue@3.4.38(typescript@5.5.4)) + element-plus: 2.8.0(vue@3.4.38(typescript@5.5.4)) + vue: 3.4.38(typescript@5.5.4) + transitivePeerDependencies: + - echarts + - typescript + + '@pureadmin/table@3.2.0(element-plus@2.8.0(vue@3.4.38(typescript@5.5.4)))(typescript@5.5.4)': + dependencies: + element-plus: 2.8.0(vue@3.4.38(typescript@5.5.4)) + vue: 3.4.38(typescript@5.5.4) + transitivePeerDependencies: + - typescript + + '@pureadmin/theme@3.2.0': + dependencies: + '@zougt/some-loader-utils': 1.4.3 + fs-extra: 11.2.0 + string-hash: 1.1.3 + + '@pureadmin/utils@2.4.8(echarts@5.5.1)(vue@3.4.38(typescript@5.5.4))': + optionalDependencies: + echarts: 5.5.1 + vue: 3.4.38(typescript@5.5.4) + + '@rollup/pluginutils@5.1.0(rollup@4.21.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 2.79.1 + rollup: 4.21.0 - '@rtsao/scc@1.1.0': {} + '@rollup/rollup-android-arm-eabi@4.21.0': + optional: true - '@sindresorhus/is@0.7.0': {} + '@rollup/rollup-android-arm64@4.21.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.21.0': + optional: true + + '@rollup/rollup-darwin-x64@4.21.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.21.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.21.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.21.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.21.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.21.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.21.0': + optional: true + + '@sindresorhus/merge-streams@2.3.0': + optional: true + + '@sxzz/popperjs-es@2.11.7': {} '@trysound/sax@0.2.0': {} - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@types/eslint@8.56.12': + '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 + '@types/node': 20.16.1 '@types/estree@1.0.5': {} - '@types/glob@7.2.0': + '@types/gradient-string@1.1.6': dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 22.5.5 + '@types/tinycolor2': 1.4.6 - '@types/imagemin-gifsicle@7.0.4': + '@types/js-cookie@3.0.6': {} + + '@types/lodash-es@4.17.12': dependencies: - '@types/imagemin': 7.0.1 - - '@types/imagemin-jpegtran@5.0.4': - dependencies: - '@types/imagemin': 7.0.1 - - '@types/imagemin-mozjpeg@8.0.4': - dependencies: - '@types/imagemin': 7.0.1 - - '@types/imagemin-optipng@5.2.4': - dependencies: - '@types/imagemin': 7.0.1 - - '@types/imagemin-svgo@10.0.5': - dependencies: - '@types/imagemin': 7.0.1 - '@types/svgo': 2.6.4 - - '@types/imagemin-webp@7.0.3': - dependencies: - '@types/imagemin': 7.0.1 - - '@types/imagemin@7.0.1': - dependencies: - '@types/node': 22.5.5 - - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - - '@types/keyv@3.1.4': - dependencies: - '@types/node': 22.5.5 + '@types/lodash': 4.17.7 '@types/lodash@4.17.7': {} - '@types/minimatch@5.1.2': {} - - '@types/minimist@1.2.5': {} - - '@types/mockjs@1.0.10': {} - - '@types/node@16.18.108': {} - - '@types/node@20.5.1': {} - - '@types/node@22.5.5': + '@types/node@20.16.1': dependencies: undici-types: 6.19.8 - '@types/normalize-package-data@2.4.4': {} - '@types/nprogress@0.2.3': {} - '@types/parse-json@4.0.2': {} - - '@types/responselike@1.0.3': - dependencies: - '@types/node': 22.5.5 - - '@types/semver@7.5.8': {} + '@types/qs@6.9.15': {} '@types/sortablejs@1.15.8': {} - '@types/svgo@2.6.4': - dependencies: - '@types/node': 22.5.5 - - '@types/unist@2.0.11': {} - - '@types/unist@3.0.3': {} - - '@types/vfile-message@2.0.0': - dependencies: - vfile-message: 4.0.2 - - '@types/vfile@3.0.2': - dependencies: - '@types/node': 22.5.5 - '@types/unist': 2.0.11 - '@types/vfile-message': 2.0.0 + '@types/tinycolor2@1.4.6': {} '@types/web-bluetooth@0.0.16': {} - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)': + '@types/web-bluetooth@0.0.20': {} + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) - debug: 4.3.7 - eslint: 8.57.0 + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 9.9.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 - natural-compare-lite: 1.4.0 - semver: 7.6.3 - tsutils: 3.21.0(typescript@4.9.5) + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 4.9.5 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5)': + '@typescript-eslint/parser@7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - debug: 4.3.7 - eslint: 8.57.0 + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 + eslint: 9.9.0(jiti@1.21.6) optionalDependencies: - typescript: 4.9.5 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.62.0': + '@typescript-eslint/scope-manager@7.18.0': dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)': + '@typescript-eslint/type-utils@7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) - debug: 4.3.7 - eslint: 8.57.0 - tsutils: 3.21.0(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + debug: 4.3.6 + eslint: 9.9.0(jiti@1.21.6) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 4.9.5 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@5.62.0': {} + '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.7 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 + minimatch: 9.0.5 semver: 7.6.3 - tsutils: 3.21.0(typescript@4.9.5) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 4.9.5 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)': + '@typescript-eslint/utils@7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - eslint: 8.57.0 - eslint-scope: 5.1.1 - semver: 7.6.3 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + eslint: 9.9.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@5.62.0': + '@typescript-eslint/visitor-keys@7.18.0': dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} - - '@vitejs/plugin-vue-jsx@2.1.1(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0))(vue@3.5.5(typescript@4.9.5))': + '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) - '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.2) - vite: 3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0) - vue: 3.5.5(typescript@4.9.5) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) + vite: 5.4.1(@types/node@20.16.1)(sass@1.77.8) + vue: 3.4.38(typescript@5.5.4) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@3.2.0(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0))(vue@3.5.5(typescript@4.9.5))': + '@vitejs/plugin-vue@5.1.2(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))': dependencies: - vite: 3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0) - vue: 3.5.5(typescript@4.9.5) + vite: 5.4.1(@types/node@20.16.1)(sass@1.77.8) + vue: 3.4.38(typescript@5.5.4) - '@volar/language-core@1.11.1': + '@volar/language-core@2.4.0': dependencies: - '@volar/source-map': 1.11.1 + '@volar/source-map': 2.4.0 - '@volar/source-map@1.11.1': - dependencies: - muggle-string: 0.3.1 + '@volar/source-map@2.4.0': {} - '@volar/typescript@1.11.1': + '@volar/typescript@2.4.0': dependencies: - '@volar/language-core': 1.11.1 + '@volar/language-core': 2.4.0 path-browserify: 1.0.1 + vscode-uri: 3.0.8 - '@vue/babel-helper-vue-transform-on@1.2.5': {} + '@vue/babel-helper-vue-transform-on@1.2.2': {} - '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.25.2)': + '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.25.2)': dependencies: - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - '@vue/babel-helper-vue-transform-on': 1.2.5 - '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.25.2) + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + '@vue/babel-helper-vue-transform-on': 1.2.2 + '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.25.2) + camelcase: 6.3.0 html-tags: 3.3.1 svg-tags: 1.0.0 optionalDependencies: @@ -5631,106 +4918,155 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.25.2)': + '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.25.2)': dependencies: '@babel/code-frame': 7.24.7 '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.8 - '@babel/parser': 7.25.6 - '@vue/compiler-sfc': 3.5.5 - transitivePeerDependencies: - - supports-color + '@babel/parser': 7.25.3 + '@vue/compiler-sfc': 3.4.38 - '@vue/compiler-core@3.5.5': + '@vue/compiler-core@3.4.38': dependencies: - '@babel/parser': 7.25.6 - '@vue/shared': 3.5.5 + '@babel/parser': 7.25.3 + '@vue/shared': 3.4.38 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.1 + source-map-js: 1.2.0 - '@vue/compiler-dom@3.5.5': + '@vue/compiler-dom@3.4.38': dependencies: - '@vue/compiler-core': 3.5.5 - '@vue/shared': 3.5.5 + '@vue/compiler-core': 3.4.38 + '@vue/shared': 3.4.38 - '@vue/compiler-sfc@3.5.5': + '@vue/compiler-sfc@3.4.38': dependencies: - '@babel/parser': 7.25.6 - '@vue/compiler-core': 3.5.5 - '@vue/compiler-dom': 3.5.5 - '@vue/compiler-ssr': 3.5.5 - '@vue/shared': 3.5.5 + '@babel/parser': 7.25.3 + '@vue/compiler-core': 3.4.38 + '@vue/compiler-dom': 3.4.38 + '@vue/compiler-ssr': 3.4.38 + '@vue/shared': 3.4.38 estree-walker: 2.0.2 magic-string: 0.30.11 - postcss: 8.4.47 - source-map-js: 1.2.1 + postcss: 8.4.41 + source-map-js: 1.2.0 - '@vue/compiler-ssr@3.5.5': + '@vue/compiler-ssr@3.4.38': dependencies: - '@vue/compiler-dom': 3.5.5 - '@vue/shared': 3.5.5 + '@vue/compiler-dom': 3.4.38 + '@vue/shared': 3.4.38 - '@vue/devtools-api@6.6.4': {} - - '@vue/language-core@1.8.27(typescript@4.9.5)': + '@vue/compiler-vue2@2.7.16': dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.5.5 - '@vue/shared': 3.5.5 + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/devtools-api@6.6.3': {} + + '@vue/language-core@2.0.29(typescript@5.5.4)': + dependencies: + '@volar/language-core': 2.4.0 + '@vue/compiler-dom': 3.4.38 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.4.38 computeds: 0.0.1 minimatch: 9.0.5 - muggle-string: 0.3.1 + muggle-string: 0.4.1 path-browserify: 1.0.1 - vue-template-compiler: 2.7.16 optionalDependencies: - typescript: 4.9.5 + typescript: 5.5.4 - '@vue/reactivity@3.5.5': + '@vue/reactivity@3.4.38': dependencies: - '@vue/shared': 3.5.5 + '@vue/shared': 3.4.38 - '@vue/runtime-core@3.5.5': + '@vue/runtime-core@3.4.38': dependencies: - '@vue/reactivity': 3.5.5 - '@vue/shared': 3.5.5 + '@vue/reactivity': 3.4.38 + '@vue/shared': 3.4.38 - '@vue/runtime-dom@3.5.5': + '@vue/runtime-dom@3.4.38': dependencies: - '@vue/reactivity': 3.5.5 - '@vue/runtime-core': 3.5.5 - '@vue/shared': 3.5.5 + '@vue/reactivity': 3.4.38 + '@vue/runtime-core': 3.4.38 + '@vue/shared': 3.4.38 csstype: 3.1.3 - '@vue/server-renderer@3.5.5(vue@3.5.5(typescript@4.9.5))': + '@vue/server-renderer@3.4.38(vue@3.4.38(typescript@5.5.4))': dependencies: - '@vue/compiler-ssr': 3.5.5 - '@vue/shared': 3.5.5 - vue: 3.5.5(typescript@4.9.5) + '@vue/compiler-ssr': 3.4.38 + '@vue/shared': 3.4.38 + vue: 3.4.38(typescript@5.5.4) - '@vue/shared@3.5.5': {} + '@vue/shared@3.4.38': {} - '@vueuse/core@9.13.0(vue@3.5.5(typescript@4.9.5))': + '@vueuse/core@10.11.1(vue@3.4.38(typescript@5.5.4))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.1 + '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/core@9.13.0(vue@3.4.38(typescript@5.5.4))': dependencies: '@types/web-bluetooth': 0.0.16 '@vueuse/metadata': 9.13.0 - '@vueuse/shared': 9.13.0(vue@3.5.5(typescript@4.9.5)) - vue-demi: 0.14.10(vue@3.5.5(typescript@4.9.5)) + '@vueuse/shared': 9.13.0(vue@3.4.38(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue + '@vueuse/metadata@10.11.1': {} + '@vueuse/metadata@9.13.0': {} - '@vueuse/shared@9.13.0(vue@3.5.5(typescript@4.9.5))': + '@vueuse/motion@2.2.3(rollup@4.21.0)(vue@3.4.38(typescript@5.5.4))': dependencies: - vue-demi: 0.14.10(vue@3.5.5(typescript@4.9.5)) + '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.5.4)) + '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.5.4)) + csstype: 3.1.3 + framesync: 6.1.2 + popmotion: 11.0.5 + style-value-types: 5.1.2 + vue: 3.4.38(typescript@5.5.4) + optionalDependencies: + '@nuxt/kit': 3.12.4(rollup@4.21.0) + transitivePeerDependencies: + - '@vue/composition-api' + - magicast + - rollup + - supports-color + + '@vueuse/shared@10.11.1(vue@3.4.38(typescript@5.5.4))': + dependencies: + vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue + '@vueuse/shared@9.13.0(vue@3.4.38(typescript@5.5.4))': + dependencies: + vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@zougt/some-loader-utils@1.4.3': + dependencies: + cac: 6.7.14 + color: 4.2.3 + cssnano: 5.1.15(postcss@8.4.41) + cssnano-preset-lite: 2.1.3(postcss@8.4.41) + fs-extra: 10.1.0 + postcss: 8.4.41 + prettier: 2.8.8 + uuid: 8.3.2 + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -5740,10 +5076,6 @@ snapshots: dependencies: acorn: 8.12.1 - acorn-walk@8.3.4: - dependencies: - acorn: 8.12.1 - acorn@8.12.1: {} ajv@6.12.6: @@ -5760,19 +5092,23 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - ansi-escapes@5.0.0: + animate.css@4.1.1: {} + + ansi-align@3.0.1: dependencies: - type-fest: 1.4.0 + string-width: 4.2.3 - ansi-regex@2.1.1: {} + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 - ansi-regex@4.1.1: {} + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} - - ansi-styles@2.2.1: {} + ansi-regex@6.0.1: {} ansi-styles@3.2.1: dependencies: @@ -5784,196 +5120,64 @@ snapshots: ansi-styles@6.2.1: {} + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - arch@2.2.0: {} - - archive-type@4.0.0: - dependencies: - file-type: 4.4.0 - - arco-design-pro-vue@2.7.3: - dependencies: - fs-extra: 10.1.0 - minimist: 1.2.8 - prettier: 2.8.8 - - arg@4.1.3: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 + arg@5.0.2: {} argparse@2.0.1: {} - arr-diff@4.0.0: {} - - arr-flatten@1.1.0: {} - - arr-union@3.1.0: {} - - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - - array-find-index@1.0.2: {} - array-ify@1.0.0: {} - array-includes@3.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - - array-union@1.0.2: - dependencies: - array-uniq: 1.0.3 - array-union@2.1.0: {} - array-uniq@1.0.3: {} - - array-unique@0.3.2: {} - - array.prototype.findlastindex@1.2.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - - array.prototype.flat@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.flatmap@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - - arrify@1.0.1: {} - - assign-symbols@1.0.0: {} - - astral-regex@1.0.0: {} - astral-regex@2.0.0: {} - atob@2.1.2: {} + async-validator@4.2.5: {} - autoprefixer@9.8.8: + asynckit@0.4.0: {} + + autoprefixer@10.4.20(postcss@8.4.41): dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001660 + caniuse-lite: 1.0.30001651 + fraction.js: 4.3.7 normalize-range: 0.1.2 - num2fraction: 1.2.2 - picocolors: 0.2.1 - postcss: 7.0.39 + picocolors: 1.0.1 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: + axios@1.7.4: dependencies: - possible-typed-array-names: 1.0.0 - - axios@0.24.0: - dependencies: - follow-redirects: 1.15.9 + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - b-tween@0.3.3: {} - - b-validate@1.5.3: {} - - bail@1.0.5: {} - balanced-match@1.0.2: {} balanced-match@2.0.0: {} - base64-js@1.5.1: {} - - base@0.11.2: - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.1 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - - bin-build@3.0.0: - dependencies: - decompress: 4.2.1 - download: 6.2.5 - execa: 0.7.0 - p-map-series: 1.0.0 - tempfile: 2.0.0 - - bin-check@4.1.0: - dependencies: - execa: 0.7.0 - executable: 4.1.1 - - bin-version-check@4.0.0: - dependencies: - bin-version: 3.1.0 - semver: 5.7.2 - semver-truncate: 1.1.2 - - bin-version@3.1.0: - dependencies: - execa: 1.0.0 - find-versions: 3.2.0 - - bin-wrapper-china@0.1.0: - dependencies: - bin-check: 4.1.0 - bin-version-check: 4.0.0 - binary-mirror-config: 1.41.0 - download: 7.1.0 - import-lazy: 4.0.0 - os-filter-obj: 2.0.0 - pify: 4.0.1 - binary-extensions@2.3.0: {} - binary-mirror-config@1.41.0: {} - - bl@1.2.3: - dependencies: - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - boolbase@1.0.0: {} + boxen@7.1.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -5983,69 +5187,39 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@2.3.2: - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - braces@3.0.3: dependencies: fill-range: 7.1.1 browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001660 - electron-to-chromium: 1.5.23 + caniuse-lite: 1.0.30001651 + electron-to-chromium: 1.5.11 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - buffer-alloc-unsafe@1.1.0: {} - - buffer-alloc@1.2.0: + bundle-import@0.0.1: dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 + get-tsconfig: 4.7.6 + import-from-string: 0.0.4 - buffer-crc32@0.2.13: {} - - buffer-fill@1.0.0: {} - - buffer@5.7.1: + c12@1.11.1: dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 + chokidar: 3.6.0 + confbox: 0.1.7 + defu: 6.1.4 + dotenv: 16.4.5 + giget: 1.2.3 + jiti: 1.21.6 + mlly: 1.7.1 + ohash: 1.1.3 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.1.3 + rc9: 2.1.2 + optional: true - cache-base@1.0.1: - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - - cacheable-request@2.1.4: - dependencies: - clone-response: 1.0.2 - get-stream: 3.0.0 - http-cache-semantics: 3.8.1 - keyv: 3.0.0 - lowercase-keys: 1.0.0 - normalize-url: 2.0.1 - responselike: 1.0.2 + cac@6.7.14: {} call-bind@1.0.7: dependencies: @@ -6055,61 +5229,22 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - call-me-maybe@1.0.2: {} - - caller-callsite@2.0.0: - dependencies: - callsites: 2.0.0 - - caller-path@2.0.0: - dependencies: - caller-callsite: 2.0.0 - - callsites@2.0.0: {} - callsites@3.1.0: {} - camelcase-keys@2.1.0: + camelcase-css@2.0.1: {} + + camelcase@6.3.0: {} + + camelcase@7.0.1: {} + + caniuse-api@3.0.0: dependencies: - camelcase: 2.1.1 - map-obj: 1.0.1 + browserslist: 4.23.3 + caniuse-lite: 1.0.30001651 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 - camelcase-keys@4.2.0: - dependencies: - camelcase: 4.1.0 - map-obj: 2.0.0 - quick-lru: 1.1.0 - - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - camelcase@2.1.1: {} - - camelcase@4.1.0: {} - - camelcase@5.3.1: {} - - caniuse-lite@1.0.30001660: {} - - caw@2.0.1: - dependencies: - get-proxy: 2.1.0 - isurl: 1.0.0 - tunnel-agent: 0.6.0 - url-to-options: 1.0.1 - - ccount@1.1.0: {} - - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 + caniuse-lite@1.0.30001651: {} chalk@2.4.2: dependencies: @@ -6124,14 +5259,6 @@ snapshots: chalk@5.3.0: {} - character-entities-html4@1.1.4: {} - - character-entities-legacy@1.1.4: {} - - character-entities@1.2.4: {} - - character-reference-invalid@1.1.4: {} - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -6144,21 +5271,24 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - class-utils@0.3.6: - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 + chownr@2.0.0: + optional: true - cli-cursor@4.0.0: + citty@0.1.6: dependencies: - restore-cursor: 4.0.0 + consola: 3.2.3 + optional: true - cli-truncate@3.1.0: + cli-boxes@3.0.0: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 - string-width: 5.1.2 + string-width: 7.2.0 cliui@8.0.1: dependencies: @@ -6166,22 +5296,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone-regexp@1.0.1: - dependencies: - is-regexp: 1.0.0 - is-supported-regexp-flag: 1.0.1 - - clone-response@1.0.2: - dependencies: - mimic-response: 1.0.1 - - collapse-white-space@1.0.6: {} - - collection-visit@1.0.0: - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -6199,126 +5313,76 @@ snapshots: color-name: 1.1.4 simple-swizzle: 0.2.2 - color@3.2.1: + color@4.2.3: dependencies: - color-convert: 1.9.3 + color-convert: 2.0.1 color-string: 1.9.1 colord@2.9.3: {} colorette@2.0.20: {} - commander@11.0.0: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 commander@12.1.0: {} - commander@2.20.3: {} + commander@4.1.1: {} commander@7.2.0: {} + commander@8.3.0: {} + compare-func@2.0.0: dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 - component-emitter@1.3.1: {} - - compute-scroll-into-view@1.0.20: {} + compatx@0.1.8: + optional: true computeds@0.0.1: {} concat-map@0.0.1: {} - config-chain@1.1.13: - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 + confbox@0.1.7: {} - confusing-browser-globals@1.0.11: {} + consola@3.2.3: + optional: true - consola@2.15.3: {} - - console-stream@0.1.1: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - conventional-changelog-angular@6.0.0: + conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@6.1.0: + conventional-changelog-conventionalcommits@7.0.2: dependencies: compare-func: 2.0.0 - conventional-commits-parser@4.0.0: + conventional-commits-parser@5.0.0: dependencies: JSONStream: 1.3.5 - is-text-path: 1.0.1 - meow: 8.1.2 - split2: 3.2.2 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 convert-source-map@2.0.0: {} - copy-anything@2.0.6: + cosmiconfig-typescript-loader@5.0.0(@types/node@20.16.1)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4): dependencies: - is-what: 3.14.1 + '@types/node': 20.16.1 + cosmiconfig: 9.0.0(typescript@5.5.4) + jiti: 1.21.6 + typescript: 5.5.4 - copy-descriptor@0.1.1: {} - - core-util-is@1.0.3: {} - - cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@4.9.5))(ts-node@10.9.2(@types/node@20.5.1)(typescript@4.9.5))(typescript@4.9.5): - dependencies: - '@types/node': 20.5.1 - cosmiconfig: 8.3.6(typescript@4.9.5) - ts-node: 10.9.2(@types/node@20.5.1)(typescript@4.9.5) - typescript: 4.9.5 - - cosmiconfig@5.2.1: - dependencies: - import-fresh: 2.0.0 - is-directory: 0.3.1 - js-yaml: 3.14.1 - parse-json: 4.0.0 - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@8.3.6(typescript@4.9.5): + cosmiconfig@9.0.0(typescript@5.5.4): dependencies: + env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - path-type: 4.0.0 optionalDependencies: - typescript: 4.9.5 - - create-require@1.1.1: {} - - cross-env@7.0.3: - dependencies: - cross-spawn: 7.0.3 - - cross-spawn@5.1.0: - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - - cross-spawn@6.0.5: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 + typescript: 5.5.4 cross-spawn@7.0.3: dependencies: @@ -6326,6 +5390,14 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-declaration-sorter@6.4.1(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + css-declaration-sorter@7.2.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + css-functions-list@3.2.2: {} css-select@4.3.0: @@ -6336,123 +5408,149 @@ snapshots: domutils: 2.8.0 nth-check: 2.1.1 + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + css-tree@1.1.3: dependencies: mdn-data: 2.0.14 source-map: 0.6.1 + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.0 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + css-what@6.1.0: {} cssesc@3.0.0: {} + cssnano-preset-default@5.2.14(postcss@8.4.41): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.41) + cssnano-utils: 3.1.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-calc: 8.2.4(postcss@8.4.41) + postcss-colormin: 5.3.1(postcss@8.4.41) + postcss-convert-values: 5.1.3(postcss@8.4.41) + postcss-discard-comments: 5.1.2(postcss@8.4.41) + postcss-discard-duplicates: 5.1.0(postcss@8.4.41) + postcss-discard-empty: 5.1.1(postcss@8.4.41) + postcss-discard-overridden: 5.1.0(postcss@8.4.41) + postcss-merge-longhand: 5.1.7(postcss@8.4.41) + postcss-merge-rules: 5.1.4(postcss@8.4.41) + postcss-minify-font-values: 5.1.0(postcss@8.4.41) + postcss-minify-gradients: 5.1.1(postcss@8.4.41) + postcss-minify-params: 5.1.4(postcss@8.4.41) + postcss-minify-selectors: 5.2.1(postcss@8.4.41) + postcss-normalize-charset: 5.1.0(postcss@8.4.41) + postcss-normalize-display-values: 5.1.0(postcss@8.4.41) + postcss-normalize-positions: 5.1.1(postcss@8.4.41) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.41) + postcss-normalize-string: 5.1.0(postcss@8.4.41) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.41) + postcss-normalize-unicode: 5.1.1(postcss@8.4.41) + postcss-normalize-url: 5.1.0(postcss@8.4.41) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.41) + postcss-ordered-values: 5.1.3(postcss@8.4.41) + postcss-reduce-initial: 5.1.2(postcss@8.4.41) + postcss-reduce-transforms: 5.1.0(postcss@8.4.41) + postcss-svgo: 5.1.0(postcss@8.4.41) + postcss-unique-selectors: 5.1.1(postcss@8.4.41) + + cssnano-preset-default@7.0.5(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + css-declaration-sorter: 7.2.0(postcss@8.4.41) + cssnano-utils: 5.0.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-calc: 10.0.2(postcss@8.4.41) + postcss-colormin: 7.0.2(postcss@8.4.41) + postcss-convert-values: 7.0.3(postcss@8.4.41) + postcss-discard-comments: 7.0.2(postcss@8.4.41) + postcss-discard-duplicates: 7.0.1(postcss@8.4.41) + postcss-discard-empty: 7.0.0(postcss@8.4.41) + postcss-discard-overridden: 7.0.0(postcss@8.4.41) + postcss-merge-longhand: 7.0.3(postcss@8.4.41) + postcss-merge-rules: 7.0.3(postcss@8.4.41) + postcss-minify-font-values: 7.0.0(postcss@8.4.41) + postcss-minify-gradients: 7.0.0(postcss@8.4.41) + postcss-minify-params: 7.0.2(postcss@8.4.41) + postcss-minify-selectors: 7.0.3(postcss@8.4.41) + postcss-normalize-charset: 7.0.0(postcss@8.4.41) + postcss-normalize-display-values: 7.0.0(postcss@8.4.41) + postcss-normalize-positions: 7.0.0(postcss@8.4.41) + postcss-normalize-repeat-style: 7.0.0(postcss@8.4.41) + postcss-normalize-string: 7.0.0(postcss@8.4.41) + postcss-normalize-timing-functions: 7.0.0(postcss@8.4.41) + postcss-normalize-unicode: 7.0.2(postcss@8.4.41) + postcss-normalize-url: 7.0.0(postcss@8.4.41) + postcss-normalize-whitespace: 7.0.0(postcss@8.4.41) + postcss-ordered-values: 7.0.1(postcss@8.4.41) + postcss-reduce-initial: 7.0.2(postcss@8.4.41) + postcss-reduce-transforms: 7.0.0(postcss@8.4.41) + postcss-svgo: 7.0.1(postcss@8.4.41) + postcss-unique-selectors: 7.0.2(postcss@8.4.41) + + cssnano-preset-lite@2.1.3(postcss@8.4.41): + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-discard-comments: 5.1.2(postcss@8.4.41) + postcss-discard-empty: 5.1.1(postcss@8.4.41) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.41) + + cssnano-utils@3.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + cssnano-utils@5.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + cssnano@5.1.15(postcss@8.4.41): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.41) + lilconfig: 2.1.0 + postcss: 8.4.41 + yaml: 1.10.2 + + cssnano@7.0.5(postcss@8.4.41): + dependencies: + cssnano-preset-default: 7.0.5(postcss@8.4.41) + lilconfig: 3.1.2 + postcss: 8.4.41 + csso@4.2.0: dependencies: css-tree: 1.1.3 + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + csstype@3.1.3: {} - currently-unhandled@0.4.1: - dependencies: - array-find-index: 1.0.2 + dargs@8.1.0: {} - cwebp-bin@6.1.2: - dependencies: - bin-build: 3.0.0 - bin-wrapper: bin-wrapper-china@0.1.0 - - dargs@7.0.0: {} - - data-view-buffer@1.0.1: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - data-view-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - data-view-byte-offset@1.0.0: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - dayjs@1.11.13: {} + dayjs@1.11.12: {} de-indent@1.0.2: {} - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@3.2.7: - dependencies: - ms: 2.1.3 - - debug@4.3.4: + debug@4.3.6: dependencies: ms: 2.1.2 - debug@4.3.7: - dependencies: - ms: 2.1.3 - - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - - decode-uri-component@0.2.2: {} - - decode-uri-component@0.4.1: {} - - decompress-response@3.3.0: - dependencies: - mimic-response: 1.0.1 - - decompress-tar@4.1.1: - dependencies: - file-type: 5.2.0 - is-stream: 1.1.0 - tar-stream: 1.6.2 - - decompress-tarbz2@4.1.1: - dependencies: - decompress-tar: 4.1.1 - file-type: 6.2.0 - is-stream: 1.1.0 - seek-bzip: 1.0.6 - unbzip2-stream: 1.4.3 - - decompress-targz@4.1.1: - dependencies: - decompress-tar: 4.1.1 - file-type: 5.2.0 - is-stream: 1.1.0 - - decompress-unzip@4.0.1: - dependencies: - file-type: 3.9.0 - get-stream: 2.3.1 - pify: 2.3.0 - yauzl: 2.10.0 - - decompress@4.2.1: - dependencies: - decompress-tar: 4.1.1 - decompress-tarbz2: 4.1.1 - decompress-targz: 4.1.1 - decompress-unzip: 4.0.1 - graceful-fs: 4.2.11 - make-dir: 1.3.0 - pify: 2.3.0 - strip-dirs: 2.1.0 - deep-is@0.1.4: {} define-data-property@1.1.4: @@ -6463,47 +5561,21 @@ snapshots: define-lazy-prop@2.0.0: {} - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 + defu@6.1.4: + optional: true - define-property@0.2.5: - dependencies: - is-descriptor: 0.1.7 + delayed-stream@1.0.0: {} - define-property@1.0.0: - dependencies: - is-descriptor: 1.0.3 + destr@2.0.3: + optional: true - define-property@2.0.2: - dependencies: - is-descriptor: 1.0.3 - isobject: 3.0.1 - - diff@4.0.2: {} - - dir-glob@2.2.2: - dependencies: - path-type: 3.0.0 + didyoumean@1.2.2: {} dir-glob@3.0.1: dependencies: path-type: 4.0.0 - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - dom-serializer@0.2.2: - dependencies: - domelementtype: 2.3.0 - entities: 2.2.0 + dlv@1.1.3: {} dom-serializer@1.4.1: dependencies: @@ -6517,14 +5589,8 @@ snapshots: domhandler: 5.0.3 entities: 4.5.0 - domelementtype@1.3.1: {} - domelementtype@2.3.0: {} - domhandler@2.4.2: - dependencies: - domelementtype: 1.3.1 - domhandler@4.3.1: dependencies: domelementtype: 2.3.0 @@ -6533,11 +5599,6 @@ snapshots: dependencies: domelementtype: 2.3.0 - domutils@1.7.0: - dependencies: - dom-serializer: 0.2.2 - domelementtype: 1.3.1 - domutils@2.8.0: dependencies: dom-serializer: 1.4.1 @@ -6554,36 +5615,8 @@ snapshots: dependencies: is-obj: 2.0.0 - download@6.2.5: - dependencies: - caw: 2.0.1 - content-disposition: 0.5.4 - decompress: 4.2.1 - ext-name: 5.0.0 - file-type: 5.2.0 - filenamify: 2.1.0 - get-stream: 3.0.0 - got: 7.1.0 - make-dir: 1.3.0 - p-event: 1.3.0 - pify: 3.0.0 - - download@7.1.0: - dependencies: - archive-type: 4.0.0 - caw: 2.0.1 - content-disposition: 0.5.4 - decompress: 4.2.1 - ext-name: 5.0.0 - file-type: 8.1.0 - filenamify: 2.1.0 - get-stream: 3.0.0 - got: 8.3.2 - make-dir: 1.3.0 - p-event: 2.3.1 - pify: 3.0.0 - - duplexer3@0.1.5: {} + dotenv@16.4.5: + optional: true eastasianwidth@0.2.0: {} @@ -6592,433 +5625,197 @@ snapshots: tslib: 2.3.0 zrender: 5.6.0 - electron-to-chromium@1.5.23: {} + electron-to-chromium@1.5.11: {} - emoji-regex@7.0.3: {} + element-plus@2.8.0(vue@3.4.38(typescript@5.5.4)): + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.1(vue@3.4.38(typescript@5.5.4)) + '@floating-ui/dom': 1.6.10 + '@popperjs/core': '@sxzz/popperjs-es@2.11.7' + '@types/lodash': 4.17.7 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.4.38(typescript@5.5.4)) + async-validator: 4.2.5 + dayjs: 1.11.12 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.4.38(typescript@5.5.4) + transitivePeerDependencies: + - '@vue/composition-api' + + emoji-regex@10.3.0: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - enhanced-resolve@5.17.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - entities@1.1.2: {} - entities@2.2.0: {} entities@4.5.0: {} - errno@0.1.8: - dependencies: - prr: 1.0.1 - optional: true + env-paths@2.2.1: {} + + environment@1.1.0: {} error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.3: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.2 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 es-errors@1.3.0: {} - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 + es-module-lexer@0.4.1: {} - es-set-tostringtag@2.0.3: - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.0.2: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - esbuild-android-64@0.14.54: - optional: true - - esbuild-android-64@0.15.18: - optional: true - - esbuild-android-arm64@0.14.54: - optional: true - - esbuild-android-arm64@0.15.18: - optional: true - - esbuild-darwin-64@0.14.54: - optional: true - - esbuild-darwin-64@0.15.18: - optional: true - - esbuild-darwin-arm64@0.14.54: - optional: true - - esbuild-darwin-arm64@0.15.18: - optional: true - - esbuild-freebsd-64@0.14.54: - optional: true - - esbuild-freebsd-64@0.15.18: - optional: true - - esbuild-freebsd-arm64@0.14.54: - optional: true - - esbuild-freebsd-arm64@0.15.18: - optional: true - - esbuild-linux-32@0.14.54: - optional: true - - esbuild-linux-32@0.15.18: - optional: true - - esbuild-linux-64@0.14.54: - optional: true - - esbuild-linux-64@0.15.18: - optional: true - - esbuild-linux-arm64@0.14.54: - optional: true - - esbuild-linux-arm64@0.15.18: - optional: true - - esbuild-linux-arm@0.14.54: - optional: true - - esbuild-linux-arm@0.15.18: - optional: true - - esbuild-linux-mips64le@0.14.54: - optional: true - - esbuild-linux-mips64le@0.15.18: - optional: true - - esbuild-linux-ppc64le@0.14.54: - optional: true - - esbuild-linux-ppc64le@0.15.18: - optional: true - - esbuild-linux-riscv64@0.14.54: - optional: true - - esbuild-linux-riscv64@0.15.18: - optional: true - - esbuild-linux-s390x@0.14.54: - optional: true - - esbuild-linux-s390x@0.15.18: - optional: true - - esbuild-netbsd-64@0.14.54: - optional: true - - esbuild-netbsd-64@0.15.18: - optional: true - - esbuild-openbsd-64@0.14.54: - optional: true - - esbuild-openbsd-64@0.15.18: - optional: true - - esbuild-sunos-64@0.14.54: - optional: true - - esbuild-sunos-64@0.15.18: - optional: true - - esbuild-windows-32@0.14.54: - optional: true - - esbuild-windows-32@0.15.18: - optional: true - - esbuild-windows-64@0.14.54: - optional: true - - esbuild-windows-64@0.15.18: - optional: true - - esbuild-windows-arm64@0.14.54: - optional: true - - esbuild-windows-arm64@0.15.18: - optional: true - - esbuild@0.14.54: + esbuild@0.19.12: optionalDependencies: - '@esbuild/linux-loong64': 0.14.54 - esbuild-android-64: 0.14.54 - esbuild-android-arm64: 0.14.54 - esbuild-darwin-64: 0.14.54 - esbuild-darwin-arm64: 0.14.54 - esbuild-freebsd-64: 0.14.54 - esbuild-freebsd-arm64: 0.14.54 - esbuild-linux-32: 0.14.54 - esbuild-linux-64: 0.14.54 - esbuild-linux-arm: 0.14.54 - esbuild-linux-arm64: 0.14.54 - esbuild-linux-mips64le: 0.14.54 - esbuild-linux-ppc64le: 0.14.54 - esbuild-linux-riscv64: 0.14.54 - esbuild-linux-s390x: 0.14.54 - esbuild-netbsd-64: 0.14.54 - esbuild-openbsd-64: 0.14.54 - esbuild-sunos-64: 0.14.54 - esbuild-windows-32: 0.14.54 - esbuild-windows-64: 0.14.54 - esbuild-windows-arm64: 0.14.54 + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 - esbuild@0.15.18: + esbuild@0.21.5: 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 + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 - escalade@3.2.0: {} + escalade@3.1.2: {} + + escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0))(eslint@8.57.0): - dependencies: - confusing-browser-globals: 1.0.11 - eslint: 8.57.0 - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) - object.assign: 4.1.5 - object.entries: 1.1.8 - semver: 6.3.1 + escape-string-regexp@5.0.0: + optional: true - eslint-config-prettier@8.10.0(eslint@8.57.0): + escodegen@2.1.0: dependencies: - eslint: 8.57.0 - - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7 - is-core-module: 2.15.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.3.7 - enhanced-resolve: 5.17.1 - eslint: 8.57.0 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0) - fast-glob: 3.3.2 - get-tsconfig: 4.8.1 - is-bun-module: 1.2.1 - is-glob: 4.0.3 + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color + source-map: 0.6.1 - eslint-module-utils@2.11.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0): + eslint-config-prettier@9.1.0(eslint@9.9.0(jiti@1.21.6)): dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0) - transitivePeerDependencies: - - supports-color + eslint: 9.9.0(jiti@1.21.6) - eslint-plugin-import@2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.15.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color + eslint-define-config@2.1.0: {} - eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.9.0(jiti@1.21.6)))(eslint@9.9.0(jiti@1.21.6))(prettier@3.3.3): dependencies: - eslint: 8.57.0 - prettier: 2.8.8 + eslint: 9.9.0(jiti@1.21.6) + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 + synckit: 0.9.1 optionalDependencies: - eslint-config-prettier: 8.10.0(eslint@8.57.0) + eslint-config-prettier: 9.1.0(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-vue@9.28.0(eslint@8.57.0): + eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + eslint: 9.9.0(jiti@1.21.6) globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@8.57.0) + vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@1.21.6)) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@8.0.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-visitor-keys@3.4.3: {} - eslint@8.57.0: + eslint-visitor-keys@4.0.0: {} + + eslint@9.9.0(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.11.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.17.1 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.9.0 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.7 - doctrine: 3.0.0 + debug: 4.3.6 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -7027,9 +5824,17 @@ snapshots: optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 transitivePeerDependencies: - supports-color + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + espree@9.6.1: dependencies: acorn: 8.12.1 @@ -7046,155 +5851,41 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + esutils@2.0.3: {} eventemitter3@5.0.1: {} - exec-buffer@3.2.0: - dependencies: - execa: 0.7.0 - p-finally: 1.0.0 - pify: 3.0.0 - rimraf: 2.7.1 - tempfile: 2.0.0 - - execa@0.7.0: - dependencies: - cross-spawn: 5.1.0 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - - execa@1.0.0: - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - - execa@4.1.0: + execa@8.0.1: dependencies: cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@7.2.0: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 + get-stream: 8.0.1 + human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 npm-run-path: 5.3.0 onetime: 6.0.0 - signal-exit: 3.0.7 + signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execall@1.0.0: - dependencies: - clone-regexp: 1.0.1 - - executable@4.1.1: - dependencies: - pify: 2.3.0 - - expand-brackets@2.1.4: - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - ext-list@2.2.2: - dependencies: - mime-db: 1.53.0 - - ext-name@5.0.0: - dependencies: - ext-list: 2.2.2 - sort-keys-length: 1.0.1 - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - extend-shallow@3.0.2: - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - - extend@3.0.2: {} - - extglob@2.0.4: - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} - fast-glob@2.2.7: - dependencies: - '@mrmlnc/readdir-enhanced': 2.2.1 - '@nodelib/fs.stat': 1.1.3 - glob-parent: 3.1.0 - is-glob: 4.0.3 - merge2: 1.4.1 - micromatch: 3.1.10 - transitivePeerDependencies: - - supports-color - fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.8 + micromatch: 4.0.7 fast-json-stable-stringify@2.1.0: {} @@ -7202,125 +5893,65 @@ snapshots: fast-uri@3.0.1: {} - fast-xml-parser@4.5.0: - dependencies: - strnum: 1.0.5 - fastest-levenshtein@1.0.16: {} fastq@1.17.1: dependencies: reusify: 1.0.4 - fd-slicer@1.1.0: + file-entry-cache@8.0.0: dependencies: - pend: 1.2.0 + flat-cache: 4.0.1 - figures@1.7.0: + file-entry-cache@9.0.0: dependencies: - escape-string-regexp: 1.0.5 - object-assign: 4.1.1 - - file-entry-cache@4.0.0: - dependencies: - flat-cache: 2.0.1 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - - file-type@10.11.0: {} - - file-type@12.4.2: {} - - file-type@3.9.0: {} - - file-type@4.4.0: {} - - file-type@5.2.0: {} - - file-type@6.2.0: {} - - file-type@8.1.0: {} - - filename-reserved-regex@2.0.0: {} - - filenamify@2.1.0: - dependencies: - filename-reserved-regex: 2.0.0 - strip-outer: 1.0.1 - trim-repeated: 1.0.0 - - fill-range@4.0.0: - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 + flat-cache: 5.0.0 fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - filter-obj@5.1.0: {} - - find-up@1.1.2: - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - - find-up@2.1.0: - dependencies: - locate-path: 2.0.0 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - find-versions@3.2.0: + find-up@7.0.0: dependencies: - semver-regex: 2.0.0 + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 - flat-cache@2.0.1: - dependencies: - flatted: 2.0.2 - rimraf: 2.6.3 - write: 1.0.3 - - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 - flatted@2.0.2: {} + flat-cache@5.0.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 flatted@3.3.1: {} - follow-redirects@1.15.9: {} + follow-redirects@1.15.6: {} - for-each@0.3.3: + foreground-child@3.3.0: dependencies: - is-callable: 1.2.7 + cross-spawn: 7.0.3 + signal-exit: 4.1.0 - for-in@1.0.2: {} - - fragment-cache@0.2.1: + form-data@4.0.0: dependencies: - map-cache: 0.2.2 + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 - from2@2.3.0: + fraction.js@4.3.7: {} + + framesync@6.1.2: dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - fs-constants@1.0.0: {} + tslib: 2.4.0 fs-extra@10.1.0: dependencies: @@ -7334,26 +5965,22 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 - fs.realpath@1.0.0: {} + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + optional: true fsevents@2.3.3: optional: true function-bind@1.1.2: {} - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - functions-have-names: 1.2.3 - - functions-have-names@1.2.3: {} - gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} + get-east-asian-width@1.2.0: {} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -7362,62 +5989,29 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-proxy@2.1.0: - dependencies: - npm-conf: 1.1.3 + get-stream@8.0.1: {} - get-stdin@4.0.1: {} - - get-stdin@6.0.0: {} - - get-stream@2.3.1: - dependencies: - object-assign: 4.1.1 - pinkie-promise: 2.0.1 - - get-stream@3.0.0: {} - - get-stream@4.1.0: - dependencies: - pump: 3.0.2 - - get-stream@5.2.0: - dependencies: - pump: 3.0.2 - - get-stream@6.0.1: {} - - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - - get-tsconfig@4.8.1: + get-tsconfig@4.7.6: dependencies: resolve-pkg-maps: 1.0.0 - get-value@2.0.6: {} - - gifsicle@5.2.0: + giget@1.2.3: dependencies: - bin-build: 3.0.0 - bin-wrapper: bin-wrapper-china@0.1.0 - execa: 5.1.1 - logalot: 2.1.0 + citty: 0.1.6 + consola: 3.2.3 + defu: 6.1.4 + node-fetch-native: 1.6.4 + nypm: 0.3.9 + ohash: 1.1.3 + pathe: 1.1.2 + tar: 6.2.1 + optional: true - git-raw-commits@2.0.11: + git-raw-commits@4.0.0: dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - - glob-parent@3.1.0: - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 glob-parent@5.1.2: dependencies: @@ -7427,20 +6021,18 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.3.0: {} - - glob@7.2.3: + glob@10.4.5: dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 - global-dirs@0.1.1: + global-directory@4.0.1: dependencies: - ini: 1.3.8 + ini: 4.1.1 global-modules@2.0.0: dependencies: @@ -7458,21 +6050,7 @@ snapshots: dependencies: type-fest: 0.20.2 - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.0.1 - - globby@10.0.2: - dependencies: - '@types/glob': 7.2.0 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - glob: 7.2.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 + globals@14.0.0: {} globby@11.1.0: dependencies: @@ -7483,81 +6061,30 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@9.2.0: + globby@14.0.2: dependencies: - '@types/glob': 7.2.0 - array-union: 1.0.2 - dir-glob: 2.2.2 - fast-glob: 2.2.7 - glob: 7.2.3 - ignore: 4.0.6 - pify: 4.0.1 - slash: 2.0.0 - transitivePeerDependencies: - - supports-color + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.2 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + optional: true globjoin@0.1.4: {} - gonzales-pe@4.3.0: - dependencies: - minimist: 1.2.8 - gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - got@7.1.0: - dependencies: - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 3.0.0 - is-plain-obj: 1.1.0 - is-retry-allowed: 1.2.0 - is-stream: 1.1.0 - isurl: 1.0.0 - lowercase-keys: 1.0.1 - p-cancelable: 0.3.0 - p-timeout: 1.2.1 - safe-buffer: 5.2.1 - timed-out: 4.0.1 - url-parse-lax: 1.0.0 - url-to-options: 1.0.1 - - got@8.3.2: - dependencies: - '@sindresorhus/is': 0.7.0 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - cacheable-request: 2.1.4 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 3.0.0 - into-stream: 3.1.0 - is-retry-allowed: 1.2.0 - isurl: 1.0.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 0.4.1 - p-timeout: 2.0.1 - pify: 3.0.0 - safe-buffer: 5.2.1 - timed-out: 4.0.1 - url-parse-lax: 3.0.0 - url-to-options: 1.0.1 - graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - - hard-rejection@2.1.0: {} - - has-ansi@2.0.0: + gradient-string@2.0.2: dependencies: - ansi-regex: 2.1.1 + chalk: 4.1.2 + tinygradient: 1.1.5 - has-bigints@1.0.2: {} + graphemer@1.4.0: {} has-flag@3.0.0: {} @@ -7569,36 +6096,10 @@ snapshots: has-proto@1.0.3: {} - has-symbol-support-x@1.4.2: {} - has-symbols@1.0.3: {} - has-to-string-tag-x@1.4.1: - dependencies: - has-symbol-support-x: 1.4.2 - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - has-value@0.3.1: - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - - has-value@1.0.0: - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - - has-values@0.1.4: {} - - has-values@1.0.0: - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 + hash-sum@2.0.0: + optional: true hasown@2.0.2: dependencies: @@ -7606,25 +6107,13 @@ snapshots: he@1.2.0: {} - hosted-git-info@2.8.9: {} + hey-listen@1.0.8: {} - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - - html-tags@2.0.0: {} + hookable@5.5.3: + optional: true html-tags@3.3.1: {} - htmlparser2@3.10.1: - dependencies: - domelementtype: 1.3.1 - domhandler: 2.4.2 - domutils: 1.7.0 - entities: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - htmlparser2@8.0.2: dependencies: domelementtype: 2.3.0 @@ -7632,380 +6121,112 @@ snapshots: domutils: 3.1.0 entities: 4.5.0 - http-cache-semantics@3.8.1: {} + human-signals@5.0.0: {} - human-signals@1.1.1: {} - - human-signals@2.1.0: {} - - human-signals@4.3.1: {} - - husky@8.0.3: {} - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - optional: true - - ieee754@1.2.1: {} - - ignore@4.0.6: {} + husky@9.1.4: {} ignore@5.3.2: {} - image-size@0.5.5: - optional: true + immediate@3.0.6: {} - imagemin-gifsicle@7.0.0: - dependencies: - execa: 1.0.0 - gifsicle: 5.2.0 - is-gif: 3.0.0 - - imagemin-jpegtran@7.0.0: - dependencies: - exec-buffer: 3.2.0 - is-jpg: 2.0.0 - jpegtran-bin: 5.0.2 - - imagemin-mozjpeg@9.0.0: - dependencies: - execa: 4.1.0 - is-jpg: 2.0.0 - mozjpeg: 7.1.1 - - imagemin-optipng@8.0.0: - dependencies: - exec-buffer: 3.2.0 - is-png: 2.0.0 - optipng-bin: 7.0.1 - - imagemin-pngquant@9.0.2: - dependencies: - execa: 4.1.0 - is-png: 2.0.0 - is-stream: 2.0.1 - ow: 0.17.0 - pngquant-bin: 6.0.1 - - imagemin-svgo@9.0.0: - dependencies: - is-svg: 4.4.0 - svgo: 2.8.0 - - imagemin-webp@6.1.0: - dependencies: - cwebp-bin: 6.1.2 - exec-buffer: 3.2.0 - is-cwebp-readable: 3.0.0 - - imagemin@7.0.1: - dependencies: - file-type: 12.4.2 - globby: 10.0.2 - graceful-fs: 4.2.11 - junk: 3.1.0 - make-dir: 3.1.0 - p-pipe: 3.1.0 - replace-ext: 1.0.1 - - import-fresh@2.0.0: - dependencies: - caller-path: 2.0.0 - resolve-from: 3.0.0 + immutable@4.3.7: {} import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - import-lazy@3.1.0: {} + import-from-string@0.0.4: + dependencies: + esbuild: 0.19.12 + import-meta-resolve: 3.1.1 - import-lazy@4.0.0: {} + import-meta-resolve@3.1.1: {} + + import-meta-resolve@4.1.0: {} imurmurhash@0.1.4: {} - indent-string@2.1.0: - dependencies: - repeating: 2.0.1 - - indent-string@3.2.0: {} - - indent-string@4.0.0: {} - - indexes-of@1.0.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} + inherits@2.0.3: {} ini@1.3.8: {} - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - - into-stream@3.1.0: - dependencies: - from2: 2.3.0 - p-is-promise: 1.1.0 - - is-accessor-descriptor@1.0.1: - dependencies: - hasown: 2.0.2 - - is-alphabetical@1.0.4: {} - - is-alphanumeric@1.0.0: {} - - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + ini@4.1.1: {} is-arrayish@0.2.1: {} is-arrayish@0.3.2: {} - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-buffer@1.1.6: {} - - is-buffer@2.0.5: {} - - is-bun-module@1.2.1: - dependencies: - semver: 7.6.3 - - is-callable@1.2.7: {} - - is-core-module@2.15.1: + is-core-module@2.15.0: dependencies: hasown: 2.0.2 - is-cwebp-readable@3.0.0: - dependencies: - file-type: 10.11.0 - - is-data-descriptor@1.0.1: - dependencies: - hasown: 2.0.2 - - is-data-view@1.0.1: - dependencies: - is-typed-array: 1.1.13 - - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.2 - - is-decimal@1.0.4: {} - - is-descriptor@0.1.7: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - - is-descriptor@1.0.3: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - - is-directory@0.3.1: {} - is-docker@2.2.1: {} - is-extendable@0.1.1: {} - - is-extendable@1.0.1: - dependencies: - is-plain-object: 2.0.4 - is-extglob@2.1.1: {} - is-finite@1.1.0: {} - - is-fullwidth-code-point@2.0.0: {} - is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@4.0.0: {} - is-gif@3.0.0: + is-fullwidth-code-point@5.0.0: dependencies: - file-type: 10.11.0 - - is-glob@3.1.0: - dependencies: - is-extglob: 2.1.1 + get-east-asian-width: 1.2.0 is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-hexadecimal@1.0.4: {} - - is-jpg@2.0.0: {} - - is-natural-number@4.0.1: {} - - is-negative-zero@2.0.3: {} - - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-number@3.0.0: - dependencies: - kind-of: 3.2.2 - is-number@7.0.0: {} is-obj@2.0.0: {} - is-object@1.0.2: {} - is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} - - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - is-plain-object@5.0.0: {} - is-png@2.0.0: {} - - is-regex@1.1.4: + is-reference@3.0.2: dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-regexp@1.0.0: {} - - is-retry-allowed@1.2.0: {} - - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 - - is-stream@1.1.0: {} - - is-stream@2.0.1: {} + '@types/estree': 1.0.5 is-stream@3.0.0: {} - is-string@1.0.7: + is-text-path@2.0.0: dependencies: - has-tostringtag: 1.0.2 - - is-supported-regexp-flag@1.0.1: {} - - is-svg@4.4.0: - dependencies: - fast-xml-parser: 4.5.0 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - - is-text-path@1.0.1: - dependencies: - text-extensions: 1.9.0 - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-utf8@0.2.1: {} - - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.7 - - is-what@3.14.1: {} - - is-whitespace-character@1.0.4: {} - - is-windows@1.0.2: {} - - is-word-character@1.0.4: {} + text-extensions: 2.4.0 is-wsl@2.2.0: dependencies: is-docker: 2.2.1 - isarray@1.0.0: {} - - isarray@2.0.5: {} - isexe@2.0.0: {} - isobject@2.1.0: + jackspeak@3.4.3: dependencies: - isarray: 1.0.0 + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 - isobject@3.0.1: {} + jiti@1.21.6: {} - isurl@1.0.0: - dependencies: - has-to-string-tag-x: 1.4.1 - is-object: 1.0.2 - - jpegtran-bin@5.0.2: - dependencies: - bin-build: 3.0.0 - bin-wrapper: bin-wrapper-china@0.1.0 - logalot: 2.1.0 - - jpegtran-bin@6.0.1: - dependencies: - bin-build: 3.0.0 - bin-wrapper: bin-wrapper-china@0.1.0 + js-cookie@3.0.5: {} js-tokens@4.0.0: {} js-tokens@9.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 jsesc@2.5.2: {} - json-buffer@3.0.0: {} - json-buffer@3.0.1: {} - json-parse-better-errors@1.0.2: {} - json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -8014,12 +6235,15 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json5@1.0.2: - dependencies: - minimist: 1.2.8 - json5@2.2.3: {} + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.12.1 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.3 + jsonfile@6.1.0: dependencies: universalify: 2.0.1 @@ -8028,118 +6252,95 @@ snapshots: jsonparse@1.3.1: {} - junk@3.1.0: {} - - keyv@3.0.0: - dependencies: - json-buffer: 3.0.0 - keyv@4.5.4: dependencies: json-buffer: 3.0.1 - kind-of@3.2.2: - dependencies: - is-buffer: 1.1.6 - - kind-of@4.0.0: - dependencies: - is-buffer: 1.1.6 - kind-of@6.0.3: {} - known-css-properties@0.11.0: {} + klona@2.0.6: + optional: true - known-css-properties@0.26.0: {} + knitwork@1.1.0: + optional: true - less@4.2.0: - dependencies: - copy-anything: 2.0.6 - parse-node-version: 1.0.1 - tslib: 2.7.0 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - image-size: 0.5.5 - make-dir: 2.1.0 - mime: 1.6.0 - needle: 3.3.1 - source-map: 0.6.1 + known-css-properties@0.34.0: {} - leven@2.1.0: {} + kolorist@1.8.0: {} levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + lie@3.1.1: + dependencies: + immediate: 3.0.6 + lilconfig@2.1.0: {} + lilconfig@3.1.2: {} + lines-and-columns@1.2.4: {} - lint-staged@13.3.0: + lint-staged@15.2.9: dependencies: chalk: 5.3.0 - commander: 11.0.0 - debug: 4.3.4 - execa: 7.2.0 - lilconfig: 2.1.0 - listr2: 6.6.1 - micromatch: 4.0.5 + commander: 12.1.0 + debug: 4.3.6 + execa: 8.0.1 + lilconfig: 3.1.2 + listr2: 8.2.4 + micromatch: 4.0.7 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.3.1 + yaml: 2.5.0 transitivePeerDependencies: - - enquirer - supports-color - listr2@6.6.1: + listr2@8.2.4: dependencies: - cli-truncate: 3.1.0 + cli-truncate: 4.0.0 colorette: 2.0.20 eventemitter3: 5.0.1 - log-update: 5.0.1 + log-update: 6.1.0 rfdc: 1.4.1 - wrap-ansi: 8.1.0 + wrap-ansi: 9.0.0 - load-json-file@1.1.0: + local-pkg@0.5.0: dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 + mlly: 1.7.1 + pkg-types: 1.1.3 + optional: true - load-json-file@4.0.0: + localforage@1.10.0: dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - - local-pkg@0.4.3: {} - - locate-path@2.0.0: - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 + lie: 3.1.1 locate-path@6.0.0: dependencies: p-locate: 5.0.0 - lodash.camelcase@4.3.0: {} + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 - lodash.isfunction@3.0.9: {} + lodash-es@4.17.21: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + + lodash.camelcase@4.3.0: {} lodash.isplainobject@4.0.6: {} lodash.kebabcase@4.1.1: {} + lodash.memoize@4.1.2: {} + lodash.merge@4.6.2: {} lodash.mergewith@4.6.2: {} @@ -8156,318 +6357,128 @@ snapshots: lodash@4.17.21: {} - log-symbols@2.2.0: + log-update@6.1.0: dependencies: - chalk: 2.4.2 - - log-update@5.0.1: - dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 strip-ansi: 7.1.0 - wrap-ansi: 8.1.0 + wrap-ansi: 9.0.0 - logalot@2.1.0: - dependencies: - figures: 1.7.0 - squeak: 1.3.0 - - longest-streak@2.0.4: {} - - longest@1.0.1: {} - - loud-rejection@1.6.0: - dependencies: - currently-unhandled: 0.4.1 - signal-exit: 3.0.7 - - lowercase-keys@1.0.0: {} - - lowercase-keys@1.0.1: {} - - lpad-align@1.1.2: - dependencies: - get-stdin: 4.0.1 - indent-string: 2.1.0 - longest: 1.0.1 - meow: 3.7.0 - - lru-cache@4.1.5: - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 + lru-cache@10.4.3: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: + magic-string@0.25.9: dependencies: - yallist: 4.0.0 + sourcemap-codec: 1.4.8 magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - make-dir@1.3.0: - dependencies: - pify: 3.0.0 - - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - optional: true - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - - make-error@1.3.6: {} - - map-cache@0.2.2: {} - - map-obj@1.0.1: {} - - map-obj@2.0.0: {} - - map-obj@4.3.0: {} - - map-visit@1.0.0: - dependencies: - object-visit: 1.0.1 - - markdown-escapes@1.0.4: {} - - markdown-table@1.1.3: {} - mathml-tag-names@2.1.3: {} - mdast-util-compact@1.0.4: - dependencies: - unist-util-visit: 1.4.1 - mdn-data@2.0.14: {} - meow@3.7.0: - dependencies: - camelcase-keys: 2.1.0 - decamelize: 1.2.0 - loud-rejection: 1.6.0 - map-obj: 1.0.1 - minimist: 1.2.8 - normalize-package-data: 2.5.0 - object-assign: 4.1.1 - read-pkg-up: 1.0.1 - redent: 1.0.0 - trim-newlines: 1.0.0 + mdn-data@2.0.28: {} - meow@5.0.0: - dependencies: - camelcase-keys: 4.2.0 - decamelize-keys: 1.1.1 - loud-rejection: 1.6.0 - minimist-options: 3.0.2 - normalize-package-data: 2.5.0 - read-pkg-up: 3.0.0 - redent: 2.0.0 - trim-newlines: 2.0.0 - yargs-parser: 10.1.0 + mdn-data@2.0.30: {} - meow@8.1.2: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 + memoize-one@6.0.0: {} - meow@9.0.0: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 + meow@12.1.1: {} + + meow@13.2.0: {} merge-stream@2.0.0: {} merge2@1.4.1: {} - micromatch@3.1.10: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.5: + micromatch@4.0.7: dependencies: braces: 3.0.3 picomatch: 2.3.1 - micromatch@4.0.8: + mime-db@1.52.0: {} + + mime-types@2.1.35: dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.53.0: {} - - mime@1.6.0: - optional: true - - mimic-fn@2.1.0: {} + mime-db: 1.52.0 mimic-fn@4.0.0: {} - mimic-response@1.0.1: {} - - min-indent@1.0.1: {} + mimic-function@5.0.1: {} minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - minimatch@7.4.6: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 - minimist-options@3.0.2: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + optional: true + + minipass@5.0.0: + optional: true + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + optional: true + mitt@3.0.1: {} - mixin-deep@1.3.2: - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 + mkdirp@1.0.4: + optional: true - mkdirp@0.5.6: + mlly@1.7.1: dependencies: - minimist: 1.2.8 + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.4 - mockjs@1.1.0: - dependencies: - commander: 12.1.0 - - mozjpeg@7.1.1: - dependencies: - bin-build: 3.0.0 - bin-wrapper: bin-wrapper-china@0.1.0 - - ms@2.0.0: {} + mri@1.2.0: + optional: true ms@2.1.2: {} - ms@2.1.3: {} + muggle-string@0.4.1: {} - muggle-string@0.3.1: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 nanoid@3.3.7: {} - nanomatch@1.2.13: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - natural-compare-lite@1.4.0: {} - natural-compare@1.4.0: {} - needle@3.3.1: - dependencies: - iconv-lite: 0.6.3 - sax: 1.4.1 + node-fetch-native@1.6.4: optional: true - nice-try@1.0.5: {} - node-releases@2.0.18: {} - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.15.1 - semver: 7.6.3 - validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} normalize-range@0.1.2: {} - normalize-selector@0.2.0: {} + normalize-url@6.1.0: {} - normalize-url@2.0.1: - dependencies: - prepend-http: 2.0.0 - query-string: 5.1.1 - sort-keys: 2.0.0 - - npm-conf@1.1.3: - dependencies: - config-chain: 1.1.13 - pify: 3.0.0 - - npm-run-path@2.0.2: - dependencies: - path-key: 2.0.1 + normalize-wheel-es@1.2.0: {} npm-run-path@4.0.1: dependencies: @@ -8483,74 +6494,33 @@ snapshots: dependencies: boolbase: 1.0.0 - num2fraction@1.2.2: {} - - number-precision@1.6.0: {} + nypm@0.3.9: + dependencies: + citty: 0.1.6 + consola: 3.2.3 + execa: 8.0.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.4 + optional: true object-assign@4.1.1: {} - object-copy@0.1.0: - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 + object-hash@3.0.0: {} object-inspect@1.13.2: {} - object-keys@1.1.1: {} - - object-visit@1.0.1: - dependencies: - isobject: 3.0.1 - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - object.entries@1.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - - object.pick@1.3.0: - dependencies: - isobject: 3.0.1 - - object.values@1.2.0: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 + ohash@1.1.3: + optional: true onetime@6.0.0: dependencies: mimic-fn: 4.0.0 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -8566,101 +6536,28 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - optipng-bin@7.0.1: - dependencies: - bin-build: 3.0.0 - bin-wrapper: bin-wrapper-china@0.1.0 - - os-filter-obj@2.0.0: - dependencies: - arch: 2.2.0 - - ow@0.17.0: - dependencies: - type-fest: 0.11.0 - - p-cancelable@0.3.0: {} - - p-cancelable@0.4.1: {} - - p-event@1.3.0: - dependencies: - p-timeout: 1.2.1 - - p-event@2.3.1: - dependencies: - p-timeout: 2.0.1 - - p-finally@1.0.0: {} - - p-is-promise@1.1.0: {} - - p-limit@1.3.0: - dependencies: - p-try: 1.0.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-locate@2.0.0: + p-limit@4.0.0: dependencies: - p-limit: 1.3.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 + yocto-queue: 1.1.1 p-locate@5.0.0: dependencies: p-limit: 3.1.0 - p-map-series@1.0.0: + p-locate@6.0.0: dependencies: - p-reduce: 1.0.0 + p-limit: 4.0.0 - p-pipe@3.1.0: {} - - p-reduce@1.0.0: {} - - p-timeout@1.2.1: - dependencies: - p-finally: 1.0.0 - - p-timeout@2.0.1: - dependencies: - p-finally: 1.0.0 - - p-try@1.0.0: {} - - p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} parent-module@1.0.1: dependencies: callsites: 3.1.0 - parse-entities@1.2.2: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - - parse-json@2.2.0: - dependencies: - error-ex: 1.3.2 - - parse-json@4.0.0: - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.7 @@ -8668,25 +6565,11 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-node-version@1.0.1: {} - - pascalcase@0.1.1: {} - path-browserify@1.0.1: {} - path-dirname@1.0.2: {} - - path-exists@2.1.0: - dependencies: - pinkie-promise: 2.0.1 - - path-exists@3.0.0: {} - path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - - path-key@2.0.1: {} + path-exists@5.0.0: {} path-key@3.1.1: {} @@ -8694,25 +6577,29 @@ snapshots: path-parse@1.0.7: {} - path-type@1.1.0: + path-scurry@1.11.1: dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - pinkie-promise: 2.0.1 + lru-cache: 10.4.3 + minipass: 7.1.2 - path-type@3.0.0: - dependencies: - pify: 3.0.0 + path-to-regexp@6.2.2: {} path-type@4.0.0: {} - pathe@0.2.0: {} + path-type@5.0.0: + optional: true - pend@1.2.0: {} + path@0.12.7: + dependencies: + process: 0.11.10 + util: 0.10.4 - picocolors@0.2.1: {} + pathe@1.1.2: {} - picocolors@1.1.0: {} + perfect-debounce@1.0.0: + optional: true + + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -8720,441 +6607,528 @@ snapshots: pify@2.3.0: {} - pify@3.0.0: {} - - pify@4.0.1: {} - - pinia@2.2.2(typescript@4.9.5)(vue@3.5.5(typescript@4.9.5)): + pinia@2.2.2(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)): dependencies: - '@vue/devtools-api': 6.6.4 - vue: 3.5.5(typescript@4.9.5) - vue-demi: 0.14.10(vue@3.5.5(typescript@4.9.5)) + '@vue/devtools-api': 6.6.3 + vue: 3.4.38(typescript@5.5.4) + vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) optionalDependencies: - typescript: 4.9.5 + typescript: 5.5.4 - pinkie-promise@2.0.1: + pinyin-pro@3.24.2: {} + + pirates@4.0.6: {} + + pkg-types@1.1.3: dependencies: - pinkie: 2.0.4 + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 - pinkie@2.0.4: {} - - pngquant-bin@6.0.1: + plus-pro-components@0.1.16(element-plus@2.8.0(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): dependencies: - bin-build: 3.0.0 - bin-wrapper: bin-wrapper-china@0.1.0 - execa: 4.1.0 + '@element-plus/icons-vue': 2.3.1(vue@3.4.38(typescript@5.5.4)) + element-plus: 2.8.0(vue@3.4.38(typescript@5.5.4)) + lodash-es: 4.17.21 + sortablejs: 1.15.2 + vue: 3.4.38(typescript@5.5.4) - posix-character-classes@0.1.1: {} - - possible-typed-array-names@1.0.0: {} - - postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39): + popmotion@11.0.5: dependencies: - htmlparser2: 3.10.1 - postcss: 7.0.39 - postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + framesync: 6.1.2 + hey-listen: 1.0.8 + style-value-types: 5.1.2 + tslib: 2.4.0 + + postcss-calc@10.0.2(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-calc@8.2.4(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-colormin@5.3.1(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-colormin@7.0.2(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-convert-values@5.1.3(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-convert-values@7.0.3(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@5.1.2(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + postcss-discard-comments@7.0.2(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + postcss-discard-duplicates@5.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + postcss-discard-duplicates@7.0.1(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + postcss-discard-empty@5.1.1(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + postcss-discard-empty@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + postcss-discard-overridden@5.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + postcss-discard-overridden@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 postcss-html@1.7.0: dependencies: htmlparser2: 8.0.2 js-tokens: 9.0.0 - postcss: 8.4.47 - postcss-safe-parser: 6.0.0(postcss@8.4.47) + postcss: 8.4.41 + postcss-safe-parser: 6.0.0(postcss@8.4.41) - postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39): + postcss-import@15.1.0(postcss@8.4.41): dependencies: - '@babel/core': 7.25.2 - postcss: 7.0.39 - postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) - transitivePeerDependencies: - - supports-color + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 - postcss-less@3.1.4: + postcss-import@16.1.0(postcss@8.4.41): dependencies: - postcss: 7.0.39 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 - postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39): + postcss-js@4.0.1(postcss@8.4.41): dependencies: - postcss: 7.0.39 - postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) - remark: 10.0.1 - unist-util-find-all-after: 1.0.5 + camelcase-css: 2.0.1 + postcss: 8.4.41 + + postcss-load-config@4.0.2(postcss@8.4.41): + dependencies: + lilconfig: 3.1.2 + yaml: 2.5.0 + optionalDependencies: + postcss: 8.4.41 postcss-media-query-parser@0.2.3: {} - postcss-reporter@6.0.1: + postcss-merge-longhand@5.1.7(postcss@8.4.41): dependencies: - chalk: 2.4.2 - lodash: 4.17.21 - log-symbols: 2.2.0 - postcss: 7.0.39 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.41) + + postcss-merge-longhand@7.0.3(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.3(postcss@8.4.41) + + postcss-merge-rules@5.1.4(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + postcss-merge-rules@7.0.3(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@5.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-minify-font-values@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@5.1.1(postcss@8.4.41): + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@7.0.0(postcss@8.4.41): + dependencies: + colord: 2.9.3 + cssnano-utils: 5.0.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-minify-params@5.1.4(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + cssnano-utils: 3.1.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-minify-params@7.0.2(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + cssnano-utils: 5.0.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@5.2.1(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + postcss-minify-selectors@7.0.3(postcss@8.4.41): + dependencies: + cssesc: 3.0.0 + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + postcss-nested@6.2.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + postcss-normalize-charset@5.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + postcss-normalize-charset@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + + postcss-normalize-display-values@5.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-display-values@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@5.1.1(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@5.1.1(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@5.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@5.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@5.1.1(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@7.0.2(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@5.1.0(postcss@8.4.41): + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@5.1.1(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@5.1.3(postcss@8.4.41): + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@7.0.1(postcss@8.4.41): + dependencies: + cssnano-utils: 5.0.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@5.1.2(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + postcss: 8.4.41 + + postcss-reduce-initial@7.0.2(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + postcss: 8.4.41 + + postcss-reduce-transforms@5.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + + postcss-reduce-transforms@7.0.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@4.0.2: + postcss-safe-parser@6.0.0(postcss@8.4.41): dependencies: - postcss: 7.0.39 + postcss: 8.4.41 - postcss-safe-parser@6.0.0(postcss@8.4.47): + postcss-safe-parser@7.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.47 + postcss: 8.4.41 - postcss-sass@0.3.5: + postcss-scss@4.0.9(postcss@8.4.41): dependencies: - gonzales-pe: 4.3.0 - postcss: 7.0.39 - - postcss-scss@2.1.1: - dependencies: - postcss: 7.0.39 - - postcss-selector-parser@3.1.2: - dependencies: - dot-prop: 5.3.0 - indexes-of: 1.0.1 - uniq: 1.0.1 + postcss: 8.4.41 postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sorting@4.1.0: + postcss-sorting@8.0.2(postcss@8.4.41): dependencies: - lodash: 4.17.21 - postcss: 7.0.39 + postcss: 8.4.41 - postcss-sorting@7.0.1(postcss@8.4.47): + postcss-svgo@5.1.0(postcss@8.4.41): dependencies: - postcss: 8.4.47 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 - postcss-syntax@0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39): + postcss-svgo@7.0.1(postcss@8.4.41): dependencies: - postcss: 7.0.39 - optionalDependencies: - postcss-html: 0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39) - postcss-jsx: 0.36.4(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39) - postcss-less: 3.1.4 - postcss-markdown: 0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39) - postcss-scss: 2.1.1 + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 - postcss-value-parser@3.3.1: {} + postcss-unique-selectors@5.1.1(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + postcss-unique-selectors@7.0.2(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss@7.0.39: - dependencies: - picocolors: 0.2.1 - source-map: 0.6.1 - - postcss@8.4.47: + postcss@8.4.41: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 - source-map-js: 1.2.1 + picocolors: 1.0.1 + source-map-js: 1.2.0 prelude-ls@1.2.1: {} - prepend-http@1.0.4: {} - - prepend-http@2.0.0: {} - prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 prettier@2.8.8: {} - process-nextick-args@2.0.1: {} + prettier@3.3.3: {} - proto-list@1.2.4: {} + process@0.11.10: {} - prr@1.0.1: - optional: true - - pseudomap@1.0.2: {} - - pump@3.0.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 + proxy-from-env@1.1.0: {} punycode@2.3.1: {} - query-string@5.1.1: + qs@6.13.0: dependencies: - decode-uri-component: 0.2.2 - object-assign: 4.1.1 - strict-uri-encode: 1.1.0 - - query-string@8.2.0: - dependencies: - decode-uri-component: 0.4.1 - filter-obj: 5.1.0 - split-on-first: 3.0.0 + side-channel: 1.0.6 queue-microtask@1.2.3: {} - quick-lru@1.1.0: {} - - quick-lru@4.0.1: {} - - read-pkg-up@1.0.1: + rc9@2.1.2: dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 + defu: 6.1.4 + destr: 2.0.3 + optional: true - read-pkg-up@3.0.0: + read-cache@1.0.0: dependencies: - find-up: 2.1.0 - read-pkg: 3.0.0 - - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@1.1.0: - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - - read-pkg@3.0.0: - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 + pify: 2.3.0 readdirp@3.6.0: dependencies: picomatch: 2.3.1 - redent@1.0.0: - dependencies: - indent-string: 2.1.0 - strip-indent: 1.0.1 - - redent@2.0.0: - dependencies: - indent-string: 3.2.0 - strip-indent: 2.0.0 - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - regex-not@1.0.2: - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - remark-parse@6.0.3: - dependencies: - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 1.2.2 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 0.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 1.1.4 - vfile-location: 2.0.6 - xtend: 4.0.2 - - remark-stringify@6.0.4: - dependencies: - ccount: 1.1.0 - is-alphanumeric: 1.0.0 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - longest-streak: 2.0.4 - markdown-escapes: 1.0.4 - markdown-table: 1.1.3 - mdast-util-compact: 1.0.4 - parse-entities: 1.2.2 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - stringify-entities: 1.3.2 - unherit: 1.1.3 - xtend: 4.0.2 - - remark@10.0.1: - dependencies: - remark-parse: 6.0.3 - remark-stringify: 6.0.4 - unified: 7.1.0 - - repeat-element@1.1.4: {} - - repeat-string@1.6.1: {} - - repeating@2.0.1: - dependencies: - is-finite: 1.1.0 - - replace-ext@1.0.0: {} - - replace-ext@1.0.1: {} - require-directory@2.1.1: {} require-from-string@2.0.2: {} - resize-detector@0.3.0: {} - - resize-observer-polyfill@1.5.1: {} - - resolve-from@3.0.0: {} - resolve-from@4.0.0: {} resolve-from@5.0.0: {} - resolve-global@1.0.0: - dependencies: - global-dirs: 0.1.1 - resolve-pkg-maps@1.0.0: {} - resolve-url@0.2.1: {} - resolve@1.22.8: dependencies: - is-core-module: 2.15.1 + is-core-module: 2.15.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - responselike@1.0.2: - dependencies: - lowercase-keys: 1.0.1 + responsive-storage@2.2.0: {} - restore-cursor@4.0.0: + restore-cursor@5.1.0: dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - ret@0.1.15: {} + onetime: 7.0.0 + signal-exit: 4.1.0 reusify@1.0.4: {} rfdc@1.4.1: {} - rimraf@2.6.3: + rimraf@5.0.10: dependencies: - glob: 7.2.3 + glob: 10.4.5 - rimraf@2.7.1: + rollup-plugin-external-globals@0.10.0(rollup@4.21.0): dependencies: - glob: 7.2.3 + '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + estree-walker: 3.0.3 + is-reference: 3.0.2 + magic-string: 0.30.11 + rollup: 4.21.0 - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - rollup-plugin-visualizer@5.12.0(rollup@2.79.1): + rollup-plugin-visualizer@5.12.0(rollup@4.21.0): dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 2.79.1 + rollup: 4.21.0 - rollup@2.79.1: + rollup@4.21.0: + dependencies: + '@types/estree': 1.0.5 optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.21.0 + '@rollup/rollup-android-arm64': 4.21.0 + '@rollup/rollup-darwin-arm64': 4.21.0 + '@rollup/rollup-darwin-x64': 4.21.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 + '@rollup/rollup-linux-arm-musleabihf': 4.21.0 + '@rollup/rollup-linux-arm64-gnu': 4.21.0 + '@rollup/rollup-linux-arm64-musl': 4.21.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 + '@rollup/rollup-linux-riscv64-gnu': 4.21.0 + '@rollup/rollup-linux-s390x-gnu': 4.21.0 + '@rollup/rollup-linux-x64-gnu': 4.21.0 + '@rollup/rollup-linux-x64-musl': 4.21.0 + '@rollup/rollup-win32-arm64-msvc': 4.21.0 + '@rollup/rollup-win32-ia32-msvc': 4.21.0 + '@rollup/rollup-win32-x64-msvc': 4.21.0 fsevents: 2.3.3 run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.2: + sass@1.77.8: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 + chokidar: 3.6.0 + immutable: 4.3.7 + source-map-js: 1.2.0 - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - - safe-regex@1.1.0: - dependencies: - ret: 0.1.15 - - safer-buffer@2.1.2: + scule@1.3.0: optional: true - sax@1.4.1: - optional: true - - scroll-into-view-if-needed@2.2.31: - dependencies: - compute-scroll-into-view: 1.0.20 - - seek-bzip@1.0.6: - dependencies: - commander: 2.20.3 - - semver-regex@2.0.0: {} - - semver-truncate@1.1.2: - dependencies: - semver: 5.7.2 - - semver@5.7.2: {} - semver@6.3.1: {} - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - semver@7.6.3: {} set-function-length@1.2.2: @@ -9166,30 +7140,10 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-value@2.0.1: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} side-channel@1.0.6: @@ -9199,21 +7153,16 @@ snapshots: get-intrinsic: 1.2.4 object-inspect: 1.13.2 - signal-exit@3.0.7: {} + signal-exit@4.1.0: {} simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 - slash@2.0.0: {} - slash@3.0.0: {} - slice-ansi@2.1.0: - dependencies: - ansi-styles: 3.2.1 - astral-regex: 1.0.0 - is-fullwidth-code-point: 2.0.0 + slash@5.1.0: + optional: true slice-ansi@4.0.0: dependencies: @@ -9226,113 +7175,31 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 - snapdragon-node@2.1.1: + slice-ansi@7.1.0: dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 - snapdragon-util@3.0.1: - dependencies: - kind-of: 3.2.2 + sortablejs@1.15.2: {} - snapdragon@0.8.2: - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - - sort-keys-length@1.0.1: - dependencies: - sort-keys: 1.1.2 - - sort-keys@1.1.2: - dependencies: - is-plain-obj: 1.1.0 - - sort-keys@2.0.0: - dependencies: - is-plain-obj: 1.1.0 - - sortablejs@1.15.3: {} - - source-map-js@1.2.1: {} - - source-map-resolve@0.5.3: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - - source-map-url@0.4.1: {} - - source-map@0.5.7: {} + source-map-js@1.2.0: {} source-map@0.6.1: {} source-map@0.7.4: {} - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 + sourcemap-codec@1.4.8: {} - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 - - spdx-license-ids@3.0.20: {} - - specificity@0.4.1: {} - - split-on-first@3.0.0: {} - - split-string@3.1.0: - dependencies: - extend-shallow: 3.0.2 - - split2@3.2.2: - dependencies: - readable-stream: 3.6.2 - - sprintf-js@1.0.3: {} - - squeak@1.3.0: - dependencies: - chalk: 1.1.3 - console-stream: 0.1.1 - lpad-align: 1.1.2 + split2@4.2.0: {} stable@0.1.8: {} - state-toggle@1.0.3: {} - - static-extend@0.1.2: - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - - strict-uri-encode@1.1.0: {} + std-env@3.7.0: + optional: true string-argv@0.3.2: {} - string-width@3.1.0: - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 + string-hash@1.1.3: {} string-width@4.2.3: dependencies: @@ -9346,47 +7213,11 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.trim@1.2.9: + string-width@7.2.0: dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - string.prototype.trimend@1.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - stringify-entities@1.3.2: - dependencies: - character-entities-html4: 1.1.4 - character-entities-legacy: 1.1.4 - is-alphanumerical: 1.0.4 - is-hexadecimal: 1.0.4 - - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - - strip-ansi@5.2.0: - dependencies: - ansi-regex: 4.1.1 + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 strip-ansi@6.0.1: dependencies: @@ -9394,194 +7225,155 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.1.0 - - strip-bom@2.0.0: - dependencies: - is-utf8: 0.2.1 - - strip-bom@3.0.0: {} - - strip-dirs@2.1.0: - dependencies: - is-natural-number: 4.0.1 - - strip-eof@1.0.0: {} - - strip-final-newline@2.0.0: {} + ansi-regex: 6.0.1 strip-final-newline@3.0.0: {} - strip-indent@1.0.1: - dependencies: - get-stdin: 4.0.1 - - strip-indent@2.0.0: {} - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - strip-json-comments@3.1.1: {} - strip-outer@1.0.1: + strip-literal@2.1.0: dependencies: - escape-string-regexp: 1.0.5 + js-tokens: 9.0.0 + optional: true - strnum@1.0.5: {} + style-value-types@5.1.2: + dependencies: + hey-listen: 1.0.8 + tslib: 2.4.0 - style-search@0.1.0: {} + stylehacks@5.1.1(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 - stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@14.16.1): + stylehacks@7.0.3(postcss@8.4.41): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@16.8.2(typescript@5.5.4)): dependencies: postcss-html: 1.7.0 - stylelint: 14.16.1 + stylelint: 16.8.2(typescript@5.5.4) - stylelint-config-prettier@9.0.5(stylelint@14.16.1): + stylelint-config-recess-order@5.0.1(stylelint@16.8.2(typescript@5.5.4)): dependencies: - stylelint: 14.16.1 + stylelint: 16.8.2(typescript@5.5.4) + stylelint-order: 6.0.4(stylelint@16.8.2(typescript@5.5.4)) - stylelint-config-rational-order@0.1.2: + stylelint-config-recommended-scss@14.1.0(postcss@8.4.41)(stylelint@16.8.2(typescript@5.5.4)): dependencies: - stylelint: 9.10.1 - stylelint-order: 2.2.1(stylelint@9.10.1) - transitivePeerDependencies: - - supports-color + postcss-scss: 4.0.9(postcss@8.4.41) + stylelint: 16.8.2(typescript@5.5.4) + stylelint-config-recommended: 14.0.1(stylelint@16.8.2(typescript@5.5.4)) + stylelint-scss: 6.5.0(stylelint@16.8.2(typescript@5.5.4)) + optionalDependencies: + postcss: 8.4.41 - stylelint-config-recommended-vue@1.5.0(postcss-html@1.7.0)(stylelint@14.16.1): + stylelint-config-recommended-vue@1.5.0(postcss-html@1.7.0)(stylelint@16.8.2(typescript@5.5.4)): dependencies: postcss-html: 1.7.0 semver: 7.6.3 - stylelint: 14.16.1 - stylelint-config-html: 1.1.0(postcss-html@1.7.0)(stylelint@14.16.1) - stylelint-config-recommended: 14.0.1(stylelint@14.16.1) + stylelint: 16.8.2(typescript@5.5.4) + stylelint-config-html: 1.1.0(postcss-html@1.7.0)(stylelint@16.8.2(typescript@5.5.4)) + stylelint-config-recommended: 14.0.1(stylelint@16.8.2(typescript@5.5.4)) - stylelint-config-recommended@14.0.1(stylelint@14.16.1): + stylelint-config-recommended@14.0.1(stylelint@16.8.2(typescript@5.5.4)): dependencies: - stylelint: 14.16.1 + stylelint: 16.8.2(typescript@5.5.4) - stylelint-config-recommended@9.0.0(stylelint@14.16.1): + stylelint-config-standard-scss@13.1.0(postcss@8.4.41)(stylelint@16.8.2(typescript@5.5.4)): dependencies: - stylelint: 14.16.1 + stylelint: 16.8.2(typescript@5.5.4) + stylelint-config-recommended-scss: 14.1.0(postcss@8.4.41)(stylelint@16.8.2(typescript@5.5.4)) + stylelint-config-standard: 36.0.1(stylelint@16.8.2(typescript@5.5.4)) + optionalDependencies: + postcss: 8.4.41 - stylelint-config-standard@29.0.0(stylelint@14.16.1): + stylelint-config-standard@36.0.1(stylelint@16.8.2(typescript@5.5.4)): dependencies: - stylelint: 14.16.1 - stylelint-config-recommended: 9.0.0(stylelint@14.16.1) + stylelint: 16.8.2(typescript@5.5.4) + stylelint-config-recommended: 14.0.1(stylelint@16.8.2(typescript@5.5.4)) - stylelint-order@2.2.1(stylelint@9.10.1): + stylelint-order@6.0.4(stylelint@16.8.2(typescript@5.5.4)): dependencies: - lodash: 4.17.21 - postcss: 7.0.39 - postcss-sorting: 4.1.0 - stylelint: 9.10.1 + postcss: 8.4.41 + postcss-sorting: 8.0.2(postcss@8.4.41) + stylelint: 16.8.2(typescript@5.5.4) - stylelint-order@5.0.0(stylelint@14.16.1): + stylelint-prettier@5.0.2(prettier@3.3.3)(stylelint@16.8.2(typescript@5.5.4)): dependencies: - postcss: 8.4.47 - postcss-sorting: 7.0.1(postcss@8.4.47) - stylelint: 14.16.1 + prettier: 3.3.3 + prettier-linter-helpers: 1.0.0 + stylelint: 16.8.2(typescript@5.5.4) - stylelint@14.16.1: + stylelint-scss@6.5.0(stylelint@16.8.2(typescript@5.5.4)): dependencies: - '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + css-tree: 2.3.1 + is-plain-object: 5.0.0 + known-css-properties: 0.34.0 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + stylelint: 16.8.2(typescript@5.5.4) + + stylelint@16.8.2(typescript@5.5.4): + dependencies: + '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) + '@csstools/css-tokenizer': 3.0.1 + '@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1) + '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) + '@dual-bundle/import-meta-resolve': 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 7.1.0 + cosmiconfig: 9.0.0(typescript@5.5.4) css-functions-list: 3.2.2 - debug: 4.3.7 + css-tree: 2.3.1 + debug: 4.3.6 fast-glob: 3.3.2 fastest-levenshtein: 1.0.16 - file-entry-cache: 6.0.1 + file-entry-cache: 9.0.0 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 ignore: 5.3.2 - import-lazy: 4.0.0 imurmurhash: 0.1.4 is-plain-object: 5.0.0 - known-css-properties: 0.26.0 + known-css-properties: 0.34.0 mathml-tag-names: 2.1.3 - meow: 9.0.0 - micromatch: 4.0.8 + meow: 13.2.0 + micromatch: 4.0.7 normalize-path: 3.0.0 - picocolors: 1.1.0 - postcss: 8.4.47 - postcss-media-query-parser: 0.2.3 + picocolors: 1.0.1 + postcss: 8.4.41 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 6.0.0(postcss@8.4.47) + postcss-safe-parser: 7.0.0(postcss@8.4.41) postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 - strip-ansi: 6.0.1 - style-search: 0.1.0 - supports-hyperlinks: 2.3.0 + strip-ansi: 7.1.0 + supports-hyperlinks: 3.0.0 svg-tags: 1.0.0 table: 6.8.2 - v8-compile-cache: 2.4.0 - write-file-atomic: 4.0.2 + write-file-atomic: 5.0.1 transitivePeerDependencies: - supports-color + - typescript - stylelint@9.10.1: + sucrase@3.35.0: dependencies: - autoprefixer: 9.8.8 - balanced-match: 1.0.2 - chalk: 2.4.2 - cosmiconfig: 5.2.1 - debug: 4.3.7 - execall: 1.0.0 - file-entry-cache: 4.0.0 - get-stdin: 6.0.0 - global-modules: 2.0.0 - globby: 9.2.0 - globjoin: 0.1.4 - html-tags: 2.0.0 - ignore: 5.3.2 - import-lazy: 3.1.0 - imurmurhash: 0.1.4 - known-css-properties: 0.11.0 - leven: 2.1.0 - lodash: 4.17.21 - log-symbols: 2.2.0 - mathml-tag-names: 2.1.3 - meow: 5.0.0 - micromatch: 3.1.10 - normalize-selector: 0.2.0 - pify: 4.0.1 - postcss: 7.0.39 - postcss-html: 0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39) - postcss-jsx: 0.36.4(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39) - postcss-less: 3.1.4 - postcss-markdown: 0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39) - postcss-media-query-parser: 0.2.3 - postcss-reporter: 6.0.1 - postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 4.0.2 - postcss-sass: 0.3.5 - postcss-scss: 2.1.1 - postcss-selector-parser: 3.1.2 - postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.7.0)(postcss@8.4.47))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) - postcss-value-parser: 3.3.1 - resolve-from: 4.0.0 - signal-exit: 3.0.7 - slash: 2.0.0 - specificity: 0.4.1 - string-width: 3.1.0 - style-search: 0.1.0 - sugarss: 2.0.0 - svg-tags: 1.0.0 - table: 5.4.6 - transitivePeerDependencies: - - supports-color - - sugarss@2.0.0: - dependencies: - postcss: 7.0.39 - - supports-color@2.0.0: {} + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 supports-color@5.5.0: dependencies: @@ -9591,7 +7383,7 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@2.3.0: + supports-hyperlinks@3.0.0: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 @@ -9607,15 +7399,23 @@ snapshots: css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.1.0 + picocolors: 1.0.1 stable: 0.1.8 - table@5.4.6: + svgo@3.3.2: dependencies: - ajv: 6.12.6 - lodash: 4.17.21 - slice-ansi: 2.1.0 - string-width: 3.1.0 + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.0.1 + + synckit@0.9.1: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.3 table@6.8.2: dependencies: @@ -9625,401 +7425,298 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tapable@2.2.1: {} - - tar-stream@1.6.2: + tailwindcss@3.4.10: dependencies: - bl: 1.2.3 - buffer-alloc: 1.2.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - readable-stream: 2.3.8 - to-buffer: 1.1.1 - xtend: 4.0.2 + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.41 + postcss-import: 15.1.0(postcss@8.4.41) + postcss-js: 4.0.1(postcss@8.4.41) + postcss-load-config: 4.0.2(postcss@8.4.41) + postcss-nested: 6.2.0(postcss@8.4.41) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node - temp-dir@1.0.0: {} - - tempfile@2.0.0: + tar@6.2.1: dependencies: - temp-dir: 1.0.0 - uuid: 3.4.0 + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + optional: true - text-extensions@1.9.0: {} + text-extensions@2.4.0: {} text-table@0.2.0: {} - through2@4.0.2: + thenify-all@1.6.0: dependencies: - readable-stream: 3.6.2 + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 through@2.3.8: {} - timed-out@4.0.1: {} + tiny-invariant@1.3.3: {} - to-buffer@1.1.1: {} + tinycolor2@1.6.0: {} + + tinygradient@1.1.5: + dependencies: + '@types/tinycolor2': 1.4.6 + tinycolor2: 1.6.0 + + tippy.js@6.3.7: + dependencies: + '@popperjs/core': 2.11.8 to-fast-properties@2.0.0: {} - to-object-path@0.3.0: - dependencies: - kind-of: 3.2.2 - - to-regex-range@2.1.1: - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - to-regex@3.0.2: + ts-api-utils@1.3.0(typescript@5.5.4): dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 + typescript: 5.5.4 - trim-newlines@1.0.0: {} - - trim-newlines@2.0.0: {} - - trim-newlines@3.0.1: {} - - trim-repeated@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - - trim-trailing-lines@1.1.4: {} - - trim@0.0.1: {} - - trough@1.0.5: {} - - ts-node@10.9.2(@types/node@20.5.1)(typescript@4.9.5): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.5.1 - acorn: 8.12.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@1.14.1: {} + ts-interface-checker@0.1.13: {} tslib@2.3.0: {} - tslib@2.7.0: {} + tslib@2.4.0: {} - tsutils@3.21.0(typescript@4.9.5): - dependencies: - tslib: 1.14.1 - typescript: 4.9.5 - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 + tslib@2.6.3: {} type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - type-fest@0.11.0: {} - - type-fest@0.18.1: {} - type-fest@0.20.2: {} - type-fest@0.6.0: {} + type-fest@0.21.3: {} - type-fest@0.8.1: {} + type-fest@2.19.0: {} - type-fest@1.4.0: {} + typescript@5.5.4: {} - typed-array-buffer@1.0.2: + ufo@1.5.4: {} + + uncrypto@0.1.3: + optional: true + + unctx@2.3.1: dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - - typed-array-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-byte-offset@1.0.2: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.6: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - - typescript@4.9.5: {} - - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 + acorn: 8.12.1 + estree-walker: 3.0.3 + magic-string: 0.30.11 + unplugin: 1.12.2 + optional: true undici-types@6.19.8: {} - unherit@1.1.3: + unicorn-magic@0.1.0: {} + + unimport@3.10.0(rollup@4.21.0): dependencies: - inherits: 2.0.4 - xtend: 4.0.2 - - unified@7.1.0: - dependencies: - '@types/unist': 2.0.11 - '@types/vfile': 3.0.2 - bail: 1.0.5 - extend: 3.0.2 - is-plain-obj: 1.1.0 - trough: 1.0.5 - vfile: 3.0.1 - x-is-string: 0.1.0 - - union-value@1.0.1: - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - - uniq@1.0.1: {} - - unist-util-find-all-after@1.0.5: - dependencies: - unist-util-is: 3.0.0 - - unist-util-is@3.0.0: {} - - unist-util-remove-position@1.1.4: - dependencies: - unist-util-visit: 1.4.1 - - unist-util-stringify-position@1.1.2: {} - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@2.1.2: - dependencies: - unist-util-is: 3.0.0 - - unist-util-visit@1.4.1: - dependencies: - unist-util-visit-parents: 2.1.2 + '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + acorn: 8.12.1 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.11 + mlly: 1.7.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + scule: 1.3.0 + strip-literal: 2.1.0 + unplugin: 1.12.2 + transitivePeerDependencies: + - rollup + optional: true universalify@2.0.1: {} - unplugin-vue-components@0.24.1(@babel/parser@7.25.6)(rollup@2.79.1)(vue@3.5.5(typescript@4.9.5)): - dependencies: - '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.0(rollup@2.79.1) - chokidar: 3.6.0 - debug: 4.3.7 - fast-glob: 3.3.2 - local-pkg: 0.4.3 - magic-string: 0.30.11 - minimatch: 7.4.6 - resolve: 1.22.8 - unplugin: 1.14.1 - vue: 3.5.5(typescript@4.9.5) - optionalDependencies: - '@babel/parser': 7.25.6 - transitivePeerDependencies: - - rollup - - supports-color - - webpack-sources - - unplugin@1.14.1: + unplugin@1.12.2: dependencies: acorn: 8.12.1 + chokidar: 3.6.0 + webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.2 - unset-value@1.0.0: + untyped@1.4.2: dependencies: - has-value: 0.3.1 - isobject: 3.0.1 + '@babel/core': 7.25.2 + '@babel/standalone': 7.25.3 + '@babel/types': 7.25.2 + defu: 6.1.4 + jiti: 1.21.6 + mri: 1.2.0 + scule: 1.3.0 + transitivePeerDependencies: + - supports-color + optional: true update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 - escalade: 3.2.0 - picocolors: 1.1.0 + escalade: 3.1.2 + picocolors: 1.0.1 uri-js@4.4.1: dependencies: punycode: 2.3.1 - urix@0.1.0: {} - - url-parse-lax@1.0.0: - dependencies: - prepend-http: 1.0.4 - - url-parse-lax@3.0.0: - dependencies: - prepend-http: 2.0.0 - - url-to-options@1.0.1: {} - - use@3.1.1: {} - util-deprecate@1.0.2: {} - uuid@3.4.0: {} - - v8-compile-cache-lib@3.0.1: {} - - v8-compile-cache@2.4.0: {} - - validate-npm-package-license@3.0.4: + util@0.10.4: dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 + inherits: 2.0.3 - vfile-location@2.0.6: {} + uuid@8.3.2: {} - vfile-message@1.1.1: + vite-plugin-cdn-import@1.0.1(rollup@4.21.0)(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8)): dependencies: - unist-util-stringify-position: 1.1.2 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@3.0.1: - dependencies: - is-buffer: 2.0.5 - replace-ext: 1.0.0 - unist-util-stringify-position: 1.1.2 - vfile-message: 1.1.1 - - vite-plugin-compression@0.5.1(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0)): - dependencies: - chalk: 4.1.2 - debug: 4.3.7 - fs-extra: 10.1.0 - vite: 3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0) + rollup-plugin-external-globals: 0.10.0(rollup@4.21.0) + vite-plugin-externals: 0.6.2(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8)) transitivePeerDependencies: - - supports-color + - rollup + - vite - vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0)): + vite-plugin-checker@0.7.2(eslint@9.9.0(jiti@1.21.6))(optionator@0.9.4)(stylelint@16.8.2(typescript@5.5.4))(typescript@5.5.4)(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8))(vue-tsc@2.0.29(typescript@5.5.4)): dependencies: - '@rollup/pluginutils': 4.2.1 - '@types/eslint': 8.56.12 - eslint: 8.57.0 - rollup: 2.79.1 - vite: 3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0) - - vite-plugin-imagemin@0.6.1(vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0)): - dependencies: - '@types/imagemin': 7.0.1 - '@types/imagemin-gifsicle': 7.0.4 - '@types/imagemin-jpegtran': 5.0.4 - '@types/imagemin-mozjpeg': 8.0.4 - '@types/imagemin-optipng': 5.2.4 - '@types/imagemin-svgo': 10.0.5 - '@types/imagemin-webp': 7.0.3 - '@types/svgo': 2.6.4 + '@babel/code-frame': 7.24.7 + ansi-escapes: 4.3.2 chalk: 4.1.2 - debug: 4.3.7 - esbuild: 0.14.54 - fs-extra: 10.1.0 - gifsicle: 5.2.0 - imagemin: 7.0.1 - imagemin-gifsicle: 7.0.0 - imagemin-jpegtran: 7.0.0 - imagemin-mozjpeg: 9.0.0 - imagemin-optipng: 8.0.0 - imagemin-pngquant: 9.0.2 - imagemin-svgo: 9.0.0 - imagemin-webp: 6.1.0 - jpegtran-bin: 6.0.1 - pathe: 0.2.0 - vite: 3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0) - transitivePeerDependencies: - - supports-color - - vite-svg-loader@3.6.0: - dependencies: - '@vue/compiler-sfc': 3.5.5 - svgo: 2.8.0 - - vite@3.2.10(@types/node@20.5.1)(less@4.2.0)(sugarss@2.0.0): - dependencies: - esbuild: 0.15.18 - postcss: 8.4.47 - resolve: 1.22.8 - rollup: 2.79.1 + chokidar: 3.6.0 + commander: 8.3.0 + fast-glob: 3.3.2 + fs-extra: 11.2.0 + npm-run-path: 4.0.1 + strip-ansi: 6.0.1 + tiny-invariant: 1.3.3 + vite: 5.4.1(@types/node@20.16.1)(sass@1.77.8) + vscode-languageclient: 7.0.0 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 optionalDependencies: - '@types/node': 20.5.1 + eslint: 9.9.0(jiti@1.21.6) + optionator: 0.9.4 + stylelint: 16.8.2(typescript@5.5.4) + typescript: 5.5.4 + vue-tsc: 2.0.29(typescript@5.5.4) + + vite-plugin-compression@0.5.1(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8)): + dependencies: + chalk: 4.1.2 + debug: 4.3.6 + fs-extra: 10.1.0 + vite: 5.4.1(@types/node@20.16.1)(sass@1.77.8) + transitivePeerDependencies: + - supports-color + + vite-plugin-externals@0.6.2(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8)): + dependencies: + acorn: 8.12.1 + es-module-lexer: 0.4.1 + fs-extra: 10.1.0 + magic-string: 0.25.9 + vite: 5.4.1(@types/node@20.16.1)(sass@1.77.8) + + vite-plugin-fake-server@2.1.1: + dependencies: + bundle-import: 0.0.1 + chokidar: 3.6.0 + fast-glob: 3.3.2 + path-to-regexp: 6.2.2 + picocolors: 1.0.1 + + vite-plugin-remove-console@2.2.0: {} + + vite-plugin-router-warn@1.0.0: {} + + vite-plugin-vue-inspector@5.1.3(vite@5.4.1(@types/node@20.16.1)(sass@1.77.8)): + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) + '@vue/compiler-dom': 3.4.38 + kolorist: 1.8.0 + magic-string: 0.30.11 + vite: 5.4.1(@types/node@20.16.1)(sass@1.77.8) + transitivePeerDependencies: + - supports-color + + vite-svg-loader@5.1.0(vue@3.4.38(typescript@5.5.4)): + dependencies: + svgo: 3.3.2 + vue: 3.4.38(typescript@5.5.4) + + vite@5.4.1(@types/node@20.16.1)(sass@1.77.8): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.41 + rollup: 4.21.0 + optionalDependencies: + '@types/node': 20.16.1 fsevents: 2.3.3 - less: 4.2.0 - sugarss: 2.0.0 + sass: 1.77.8 - vue-demi@0.13.11(vue@3.5.5(typescript@4.9.5)): - dependencies: - vue: 3.5.5(typescript@4.9.5) + vscode-jsonrpc@6.0.0: {} - vue-demi@0.14.10(vue@3.5.5(typescript@4.9.5)): + vscode-languageclient@7.0.0: dependencies: - vue: 3.5.5(typescript@4.9.5) + minimatch: 3.1.2 + semver: 7.6.3 + vscode-languageserver-protocol: 3.16.0 - vue-echarts@6.7.3(@vue/runtime-core@3.5.5)(echarts@5.5.1)(vue@3.5.5(typescript@4.9.5)): + vscode-languageserver-protocol@3.16.0: dependencies: - echarts: 5.5.1 - resize-detector: 0.3.0 - vue: 3.5.5(typescript@4.9.5) - vue-demi: 0.13.11(vue@3.5.5(typescript@4.9.5)) - optionalDependencies: - '@vue/runtime-core': 3.5.5 + vscode-jsonrpc: 6.0.0 + vscode-languageserver-types: 3.16.0 - vue-eslint-parser@9.4.3(eslint@8.57.0): + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.16.0: {} + + vscode-languageserver@7.0.0: dependencies: - debug: 4.3.7 - eslint: 8.57.0 + vscode-languageserver-protocol: 3.16.0 + + vscode-uri@3.0.8: {} + + vue-demi@0.14.10(vue@3.4.38(typescript@5.5.4)): + dependencies: + vue: 3.4.38(typescript@5.5.4) + + vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6)): + dependencies: + debug: 4.3.6 + eslint: 9.9.0(jiti@1.21.6) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -10029,58 +7726,50 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@9.14.0(vue@3.5.5(typescript@4.9.5)): + vue-i18n@9.14.0(vue@3.4.38(typescript@5.5.4)): dependencies: '@intlify/core-base': 9.14.0 '@intlify/shared': 9.14.0 - '@vue/devtools-api': 6.6.4 - vue: 3.5.5(typescript@4.9.5) + '@vue/devtools-api': 6.6.3 + vue: 3.4.38(typescript@5.5.4) - vue-router@4.4.5(vue@3.5.5(typescript@4.9.5)): + vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)): dependencies: - '@vue/devtools-api': 6.6.4 - vue: 3.5.5(typescript@4.9.5) + '@vue/devtools-api': 6.6.3 + vue: 3.4.38(typescript@5.5.4) - vue-template-compiler@2.7.16: + vue-tippy@6.4.4(vue@3.4.38(typescript@5.5.4)): dependencies: - de-indent: 1.0.2 - he: 1.2.0 + tippy.js: 6.3.7 + vue: 3.4.38(typescript@5.5.4) - vue-tsc@1.8.27(typescript@4.9.5): + vue-tsc@2.0.29(typescript@5.5.4): dependencies: - '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@4.9.5) + '@volar/typescript': 2.4.0 + '@vue/language-core': 2.0.29(typescript@5.5.4) semver: 7.6.3 - typescript: 4.9.5 + typescript: 5.5.4 - vue@3.5.5(typescript@4.9.5): + vue-types@5.1.3(vue@3.4.38(typescript@5.5.4)): dependencies: - '@vue/compiler-dom': 3.5.5 - '@vue/compiler-sfc': 3.5.5 - '@vue/runtime-dom': 3.5.5 - '@vue/server-renderer': 3.5.5(vue@3.5.5(typescript@4.9.5)) - '@vue/shared': 3.5.5 + is-plain-object: 5.0.0 optionalDependencies: - typescript: 4.9.5 + vue: 3.4.38(typescript@5.5.4) + + vue@3.4.38(typescript@5.5.4): + dependencies: + '@vue/compiler-dom': 3.4.38 + '@vue/compiler-sfc': 3.4.38 + '@vue/runtime-dom': 3.4.38 + '@vue/server-renderer': 3.4.38(vue@3.4.38(typescript@5.5.4)) + '@vue/shared': 3.4.38 + optionalDependencies: + typescript: 5.5.4 + + webpack-sources@3.2.3: {} webpack-virtual-modules@0.6.2: {} - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - which@1.3.1: dependencies: isexe: 2.0.0 @@ -10089,6 +7778,10 @@ snapshots: dependencies: isexe: 2.0.0 + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -10103,62 +7796,52 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 - wrappy@1.0.2: {} + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 - write-file-atomic@4.0.2: + write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - write@1.0.3: - dependencies: - mkdirp: 0.5.6 - - x-is-string@0.1.0: {} + signal-exit: 4.1.0 xml-name-validator@4.0.0: {} - xtend@4.0.2: {} - y18n@5.0.8: {} - yallist@2.1.2: {} - yallist@3.1.1: {} - yallist@4.0.0: {} + yallist@4.0.0: + optional: true + + yaml-eslint-parser@1.2.3: + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.5.0 yaml@1.10.2: {} - yaml@2.3.1: {} - - yargs-parser@10.1.0: - dependencies: - camelcase: 4.1.0 - - yargs-parser@20.2.9: {} + yaml@2.5.0: {} yargs-parser@21.1.1: {} yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.2.0 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yn@3.1.1: {} - yocto-queue@0.1.0: {} + yocto-queue@1.1.1: {} + zrender@5.6.0: dependencies: tslib: 2.3.0 diff --git a/sop-admin/sop-admin-frontend/postcss.config.js b/sop-admin/sop-admin-frontend/postcss.config.js new file mode 100644 index 00000000..86239486 --- /dev/null +++ b/sop-admin/sop-admin-frontend/postcss.config.js @@ -0,0 +1,12 @@ +// @ts-check + +/** @type {import('postcss-load-config').Config} */ +export default { + plugins: { + "postcss-import": {}, + "tailwindcss/nesting": {}, + tailwindcss: {}, + autoprefixer: {}, + ...(process.env.NODE_ENV === "production" ? { cssnano: {} } : {}) + } +}; diff --git a/sop-admin/sop-admin-frontend/public/favicon.ico b/sop-admin/sop-admin-frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bef93d4b01212f57cecb50658e8c9518be13e607 GIT binary patch literal 1270 zcmVPx(ut`KgR9Hu~mu*a2RT#(r=eE7z0C^Jz8!DR##z|jzZ413cjgEl9q1$4Zb4*!4 zXjK@R=~U)K+?GvQvStqBzAS3?L86&PjfvBRDVv}SWNy0Q3kb4JH)snHXnD*f0=Mn$ z3o0k+m;3ym|MR=gIX&lGh6N72)v@-pEvi*6?L;@NDA2N>7h=g4A{MmK2d#^rozi|Cv!*48t1H)C9mNv+tmC;++D_EL^x z@6DML`&inAwjP%aAoDmWjfGk^7AizYYd}|fEhcPA`8fl0Qe(!@*lvqzXzLum3B0NY zKr}HtXI86T`CkF_7H2a9)ykSOTC=xu$!dTs|HMZ)H{F?^!Ji2QB4`JETJPnWqWEm| z$u0Lrdp>6G3mWD9{~5qkO|fon>^OluT0d(XA3lu1&KHrFSAepzM?C5gQJq=K?+*qM zumc9`*a6VA)t^b^m0kGb(yue&&6}%{m8F+TLz)V|00yh$K@g7mD}Ez)3>SJnnhWzh zk8Rr;k(jttk`jC>WC4tIw8)}BbepS}9xTq9G#ii2NIEe1@cSiUC7_Fm)MBFF-h~u3t82qKn z@7hXQnv7?+H-Y20`8^Bx)T~hz$|d;#7%Yyr0c?;HFJE#NeP164wy?2jQzde8@;r15 zXfSD1jo!%~0J+wYY>pHi{wkzQ9>T>RgYPf5r)%+8Rh_R5M>-*$@0JEU0E||9DUoEq zmnaiez3A_<1$}!_5EC1R#+P36(GsZHtl_r?0;nKjZ_2jceH4A?z6c3G6z$$^LqtTR z_cZ*eB&E)vWxve^JUU>o*tY|$Nv=x#=spY%TnrhYzWxQIrrzSKpLUlBy6_KW0gN@y zGGgR&)8ROR`-eJAO#BrxK-0_naeZ`*%sOD@Lb~#ZJb=}yCL-}z^%${Xm+<>HJ3=lV z7k2}8?%XGhfr|GJ${Q5sKcz`bG-#Y?}Xx~7y$8mU}mhK7Mwdfe;TIVyb>k%twUPc zs(^E&;FR%s>CER04+@xw6S^HzZ9QG3RDwUU%Cn4H6O(gRBZR1WsWT z(pkTpFeCuE#FM@5TAH424p^PB*9En*CXnV|1Bj+4zMERj5i$VE1Y;Q>Br%|a#2-y} gnzdo?2K(3i4UB<+FiBYjEC2ui07*qoM6N<$f(X(_s{jB1 literal 0 HcmV?d00001 diff --git a/sop-admin/sop-admin-frontend/public/logo.svg b/sop-admin/sop-admin-frontend/public/logo.svg new file mode 100644 index 00000000..a63d2b1a --- /dev/null +++ b/sop-admin/sop-admin-frontend/public/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/public/platform-config.json b/sop-admin/sop-admin-frontend/public/platform-config.json new file mode 100644 index 00000000..9fc2ab8c --- /dev/null +++ b/sop-admin/sop-admin-frontend/public/platform-config.json @@ -0,0 +1,27 @@ +{ + "Version": "5.8.0", + "Title": "PureAdmin", + "FixedHeader": true, + "HiddenSideBar": false, + "MultiTagsCache": false, + "KeepAlive": true, + "Locale": "zh", + "Layout": "vertical", + "Theme": "light", + "DarkMode": false, + "OverallStyle": "light", + "Grey": false, + "Weak": false, + "HideTabs": false, + "HideFooter": false, + "Stretch": false, + "SidebarStatus": true, + "EpThemeColor": "#409EFF", + "ShowLogo": true, + "ShowModel": "smart", + "MenuArrowIconNoTransition": false, + "CachingAsyncRoutes": false, + "TooltipEffect": "light", + "ResponsiveStorageNameSpace": "responsive-", + "MenuSearchHistory": 6 +} diff --git a/sop-admin/sop-admin-frontend/src/App.vue b/sop-admin/sop-admin-frontend/src/App.vue index 238e31b7..533be72e 100644 --- a/sop-admin/sop-admin-frontend/src/App.vue +++ b/sop-admin/sop-admin-frontend/src/App.vue @@ -1,26 +1,38 @@ - diff --git a/sop-admin/sop-admin-frontend/src/api/apiTable.ts b/sop-admin/sop-admin-frontend/src/api/apiTable.ts deleted file mode 100644 index d0a39706..00000000 --- a/sop-admin/sop-admin-frontend/src/api/apiTable.ts +++ /dev/null @@ -1,56 +0,0 @@ -import axios from 'axios'; -import qs from 'query-string'; -import type { DescData } from '@arco-design/web-vue/es/descriptions/interface'; - -export interface PolicyRecord { - id: string; - number: number; - name: string; - contentType: 'img' | 'horizontalVideo' | 'verticalVideo'; - filterType: 'artificial' | 'rules'; - count: number; - status: 'online' | 'offline'; - createdTime: string; -} - -export interface PolicyParams extends Partial { - pageIndex: number; - pageSize: number; -} - -export interface PolicyListRes { - list: PolicyRecord[]; - total: number; -} - -export function queryPolicyList(params: PolicyParams) { - return axios.get('/api/page', { - params, - paramsSerializer: (obj) => { - return qs.stringify(obj); - }, - }); -} - -export interface ServiceRecord { - id: number; - title: string; - description: string; - name?: string; - actionType?: string; - icon?: string; - data?: DescData[]; - enable?: boolean; - expires?: boolean; -} -export function queryInspectionList() { - return axios.get('/api/list/quality-inspection'); -} - -export function queryTheServiceList() { - return axios.get('/api/list/the-service'); -} - -export function queryRulesPresetList() { - return axios.get('/api/list/rules-preset'); -} diff --git a/sop-admin/sop-admin-frontend/src/api/dashboard.ts b/sop-admin/sop-admin-frontend/src/api/dashboard.ts deleted file mode 100644 index 773a1048..00000000 --- a/sop-admin/sop-admin-frontend/src/api/dashboard.ts +++ /dev/null @@ -1,22 +0,0 @@ -import axios from 'axios'; -import type { TableData } from '@arco-design/web-vue/es/table/interface'; - -export interface ContentDataRecord { - x: string; - y: number; -} - -export function queryContentData() { - return axios.get('/api/content-data'); -} - -export interface PopularRecord { - key: number; - clickNumber: string; - title: string; - increases: number; -} - -export function queryPopularList(params: { type: string }) { - return axios.get('/api/popular/list', { params }); -} diff --git a/sop-admin/sop-admin-frontend/src/api/interceptor.ts b/sop-admin/sop-admin-frontend/src/api/interceptor.ts deleted file mode 100644 index 1d8214fa..00000000 --- a/sop-admin/sop-admin-frontend/src/api/interceptor.ts +++ /dev/null @@ -1,77 +0,0 @@ -import axios from 'axios'; -import type { AxiosRequestConfig, AxiosResponse } from 'axios'; -import { Message, Modal } from '@arco-design/web-vue'; -import { useUserStore } from '@/store'; -import { getToken } from '@/utils/auth'; - -export interface HttpResponse { - status: number; - msg: string; - code: number; - data: T; -} - -if (import.meta.env.VITE_API_BASE_URL) { - axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL; -} - -axios.interceptors.request.use( - (config: AxiosRequestConfig) => { - // let each request carry token - // this example using the JWT token - // Authorization is a custom headers key - // please modify it according to the actual situation - const token = getToken(); - if (token) { - if (!config.headers) { - config.headers = {}; - } - config.headers.Authorization = `Bearer ${token}`; - } - return config; - }, - (error) => { - // do something - return Promise.reject(error); - } -); -// add response interceptors -axios.interceptors.response.use( - (response: AxiosResponse) => { - const res = response.data; - // if the custom code is not 20000, it is judged as an error. - if (res.code !== 20000) { - Message.error({ - content: res.msg || 'Error', - duration: 5 * 1000, - }); - // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; - if ( - [50008, 50012, 50014].includes(res.code) && - response.config.url !== '/api/user/info' - ) { - Modal.error({ - title: 'Confirm logout', - content: - 'You have been logged out, you can cancel to stay on this page, or log in again', - okText: 'Re-Login', - async onOk() { - const userStore = useUserStore(); - - await userStore.logout(); - window.location.reload(); - }, - }); - } - return Promise.reject(new Error(res.msg || 'Error')); - } - return res; - }, - (error) => { - Message.error({ - content: error.msg || 'Request Error', - duration: 5 * 1000, - }); - return Promise.reject(error); - } -); diff --git a/sop-admin/sop-admin-frontend/src/api/message.ts b/sop-admin/sop-admin-frontend/src/api/message.ts deleted file mode 100644 index e2d60eee..00000000 --- a/sop-admin/sop-admin-frontend/src/api/message.ts +++ /dev/null @@ -1,38 +0,0 @@ -import axios from 'axios'; - -export interface MessageRecord { - id: number; - type: string; - title: string; - subTitle: string; - avatar?: string; - content: string; - time: string; - status: 0 | 1; - messageType?: number; -} -export type MessageListType = MessageRecord[]; - -export function queryMessageList() { - return axios.post('/api/message/list'); -} - -interface MessageStatus { - ids: number[]; -} - -export function setMessageStatus(data: MessageStatus) { - return axios.post('/api/message/read', data); -} - -export interface ChatRecord { - id: number; - username: string; - content: string; - time: string; - isCollect: boolean; -} - -export function queryChatList() { - return axios.post('/api/chat/list'); -} diff --git a/sop-admin/sop-admin-frontend/src/api/routes.ts b/sop-admin/sop-admin-frontend/src/api/routes.ts new file mode 100644 index 00000000..915ca377 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/api/routes.ts @@ -0,0 +1,10 @@ +import { http } from "@/utils/http"; + +type Result = { + success: boolean; + data: Array; +}; + +export const getAsyncRoutes = () => { + return http.request("get", "/mock/get-async-routes"); +}; diff --git a/sop-admin/sop-admin-frontend/src/api/user.ts b/sop-admin/sop-admin-frontend/src/api/user.ts index 35b88120..7ba6d46e 100644 --- a/sop-admin/sop-admin-frontend/src/api/user.ts +++ b/sop-admin/sop-admin-frontend/src/api/user.ts @@ -1,27 +1,45 @@ -import axios from 'axios'; -import type { RouteRecordNormalized } from 'vue-router'; -import { UserState } from '@/store/modules/user/types'; +import { http } from "@/utils/http"; -export interface LoginData { - username: string; - password: string; -} +export type UserResult = { + success: boolean; + data: { + /** 头像 */ + avatar: string; + /** 用户名 */ + username: string; + /** 昵称 */ + nickname: string; + /** 当前登录用户的角色 */ + roles: Array; + /** 按钮级别权限 */ + permissions: Array; + /** `token` */ + accessToken: string; + /** 用于调用刷新`accessToken`的接口时所需的`token` */ + refreshToken: string; + /** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */ + expires: Date; + }; +}; -export interface LoginRes { - token: string; -} -export function login(data: LoginData) { - return axios.post('/api/user/login', data); -} +export type RefreshTokenResult = { + success: boolean; + data: { + /** `token` */ + accessToken: string; + /** 用于调用刷新`accessToken`的接口时所需的`token` */ + refreshToken: string; + /** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */ + expires: Date; + }; +}; -export function logout() { - return axios.post('/api/user/logout'); -} +/** 登录 */ +export const getLogin = (data?: object) => { + return http.request("post", "/sys/login", { data }); +}; -export function getUserInfo() { - return axios.post('/api/user/info'); -} - -export function getMenuList() { - return axios.post('/api/user/menu'); -} +/** 刷新`token` */ +export const refreshTokenApi = (data?: object) => { + return http.request("post", "/refresh-token", { data }); +}; diff --git a/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.css b/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.css new file mode 100644 index 00000000..9a153df3 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.css @@ -0,0 +1,27 @@ +@font-face { + font-family: "iconfont"; /* Project id 2208059 */ + src: + url("iconfont.woff2?t=1671895108120") format("woff2"), + url("iconfont.woff?t=1671895108120") format("woff"), + url("iconfont.ttf?t=1671895108120") format("truetype"); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.pure-iconfont-tabs:before { + content: "\e63e"; +} + +.pure-iconfont-logo:before { + content: "\e620"; +} + +.pure-iconfont-new:before { + content: "\e615"; +} diff --git a/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.js b/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.js new file mode 100644 index 00000000..64d8bd84 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.js @@ -0,0 +1,69 @@ +(window._iconfont_svg_string_2208059 = + ''), + (function (e) { + var t = (t = document.getElementsByTagName("script"))[t.length - 1], + c = t.getAttribute("data-injectcss"), + t = t.getAttribute("data-disable-injectsvg"); + if (!t) { + var n, + l, + i, + o, + a, + h = function (t, c) { + c.parentNode.insertBefore(t, c); + }; + if (c && !e.__iconfont__svg__cssinject__) { + e.__iconfont__svg__cssinject__ = !0; + try { + document.write( + "" + ); + } catch (t) { + console && console.log(t); + } + } + (n = function () { + var t, + c = document.createElement("div"); + (c.innerHTML = e._iconfont_svg_string_2208059), + (c = c.getElementsByTagName("svg")[0]) && + (c.setAttribute("aria-hidden", "true"), + (c.style.position = "absolute"), + (c.style.width = 0), + (c.style.height = 0), + (c.style.overflow = "hidden"), + (c = c), + (t = document.body).firstChild + ? h(c, t.firstChild) + : t.appendChild(c)); + }), + document.addEventListener + ? ~["complete", "loaded", "interactive"].indexOf(document.readyState) + ? setTimeout(n, 0) + : ((l = function () { + document.removeEventListener("DOMContentLoaded", l, !1), n(); + }), + document.addEventListener("DOMContentLoaded", l, !1)) + : document.attachEvent && + ((i = n), + (o = e.document), + (a = !1), + v(), + (o.onreadystatechange = function () { + "complete" == o.readyState && + ((o.onreadystatechange = null), d()); + })); + } + function d() { + a || ((a = !0), i()); + } + function v() { + try { + o.documentElement.doScroll("left"); + } catch (t) { + return void setTimeout(v, 50); + } + d(); + } + })(window); diff --git a/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.json b/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.json new file mode 100644 index 00000000..cec48060 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.json @@ -0,0 +1,30 @@ +{ + "id": "2208059", + "name": "pure-admin", + "font_family": "iconfont", + "css_prefix_text": "pure-iconfont-", + "description": "pure-admin-iconfont", + "glyphs": [ + { + "icon_id": "20594647", + "name": "Tabs", + "font_class": "tabs", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "22129506", + "name": "PureLogo", + "font_class": "logo", + "unicode": "e620", + "unicode_decimal": 58912 + }, + { + "icon_id": "7795615", + "name": "New", + "font_class": "new", + "unicode": "e615", + "unicode_decimal": 58901 + } + ] +} diff --git a/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.ttf b/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..82efcf8f7a34c697125264a48d96d149237662a8 GIT binary patch literal 3904 zcmd^CU2Ggz6~5=*`Q7>1UGMIUw~lw$yY)I7N4xf}cQ?(?Hi;cOKSh)@^;4_Van?>6 z+iN-7&>ut-C=w|BiJ%fitprlwfwxNKrwEWx1p-x}FAd2HDmoFt7n8hwK!Nz7DdiY@O^6=A)(Joj|eEy+Ib?@jA7y9$i zADdsETYck41DBxx1J7%VOHVEQ^+5Lp#>Dp-GyZ<2J$E|)<{zE|_Rn}4XJF9Z6JLY; z3q1FpS?)d=g8<(TFvONR^K1Fu80zI-k_v9)K@&e}jq32fSmfNwbdtYbFevL7{ zxY{}2ee5p>k1!ThFu#W(cX4s^B6~!tjA4|kx${y2i^O&6M@~lf-ey*a{nNGI{aOOU z_vW(-n4lVrODitPq;Q`_15H{ZxEb3F^l(1H##oE-sp$t!Fn4LLyTa~~Nd#Bme}_y< zXBX$dA9@mS5=pQS(|T3~>0V(f*7^;84YrrUH~o!O37(v(0@lyC9$Ywdn*Hil>Q*bL z2NQo}mjIJFd~$Ia@XiM+VxjYl?F^^rOwZ>OtkQcY-dHv43Tr?&!U`c$?pA9PwfIEB zY`7kYk*r)YkX+mU`(+0OnCO)O^}dw~A6ffbx$u#{dAC~O6Lx_(y{vo*UY7I}-{b2n ziH_9SarP)%W?l9iyUeb#pQFlNQX46xl3KpFj|y6GqOpgnzBfqHQr8MvnI>A~H~fi4 z)z=#n#k`jEs>7b|C3Tky`Qk{*1F~5!HmaVUYEiA~OOy^+qbVe7K1)UHv9-^f^r-Le=+CE}KD`#rjAgQAig-4z9sTjFMNYyYa{63~Wct!ZG+T~FGnMEg5yy#q z)60-+e&>=9&uml^`jhWW0@rm*u|^V*P?l zi+(Re*87SGHa&*TXT`U0O6A!h^q)~u*S79d(nl|=%|^3PpBO1_-Tr@u(1ditEeU)t zwqF0mgp=70=E+x~Y?NifNr>C};(#cY~UP%tc6K^N}&1`bxdVm~F7=b@877rde zUb|0RERUC}gZmB*w{{(znmszRV{~-K%+cAY$!2SKdhcMhG`G=X~92T`|IMqxgGlZfQ?xHH@qi~YM>i-<4h&cX#9VbzfDa!LIuc2&GYw@~V zEG#Zh$tuvh`TGye9QBiZG1rb5x~g*`Ju_f?1vBC&OM|<|?&ZohO?~{rwoFuipcK`0 zLAGfdgfp6iqT|iE6%mA6jTnM!pb*4OLl^*&DujYjRV+W=A04o`bkj5=0O_hBbZ%Q* z7lsWYN5!n6Dv79~*rjSZ?#C2MLjc{;xKKG4pyE1LI8^ZHq?*yblpVMFla6D6!PHb! zK|o}OQL_sNWWbo$Y-BS?4EN|g_gHyF=!r<}@Ch@f7-lk&h+={d7xaXweq3scsB5}$ zClnkUimYuqj)?(FZ+l)K3<c!|4HMaG)Q(jia}&s*t5Bim@X%B1C^o86I>8ud9}5Wpq^-b5s5CC~D_e zLG4fuSwsc33v?-K=vxE^T?<;w$&FdQp&Lq6lOTk}!7WHdYYFWlvMfW5#LRTDPjJIT z+ay(w5@@i?Fph|2QvJ5BXlMn;?++&|gEX`oOm1@D!@wrhNIYVrZ^*P?V9y+`L2|o|s&}~K2 z&YjaV#nx}gZo=)Hg`Yrq`|yj_4gD_49@4(;7}rC}>mFLXKxjFE`wKU9Tc`o4YUwwF zTyBP>fwFN8@E{dW(F}xFG@qc^}a|MOF$35XysRPq9=2vvw@y0V9)nt z1@exbtl|r*+LJZd_x0om8^zz!kkbO=s{HCzOvEX&ul8hOG4{ir%$du6){_P7zwOBi zu;$F@u}?UnZ07R~t!i`8y-A-AyBSonlX6Jj>=;hpn)MVC;TMKMwRFdx9;&bL~^J zcYDtQy~fT1CpmL$oR#r!)7_{UpjHCp-PxRH7Z9zA9J|OUhi45;%aEpf`L&VB6672j zDCZsr&pgm&b|&yzWxH7g_ttv0@a15g%km$q@RI-Eeb%L5n+lwyDpR_1r_L)&oyCq= JX@3#ee*y;q>;3=$ literal 0 HcmV?d00001 diff --git a/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.woff b/sop-admin/sop-admin-frontend/src/assets/iconfont/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..0fdaa0a4174505d3116137ed761c9534b21b05f4 GIT binary patch literal 2484 zcmY*bc{tQtAOFo*W-!^hN|Kpt3E2r{yM)kU*UdT`W`r>^F|v&!W67NfSsU59SsR2z zOhj4YlI-SMO4cY#k~jC~eV_Zs`+c6z`JT_`e80~*=XuWad`_6%`SSn-07Kv@AasyL zO#jCZ=Kmj7PA=yF00IY9LlDlWWQCh{P8!;vW&!d8V2o63gzE>{Tx+r&IV+)YybXt5haUXyrZML=! zh7aObrHp{F5>0CHq@BMx98P3HftXS+y^t;d_0&%)UyB&tri^wLu~EQ zUAp3!RI$-bblgkb(zQ=^4F4vIEWoxp$-+3f; zBF;AsD#fz>%yj*2lqEW?n~J*5xI;onG7{m(h$LG+%&R5oyS``Lx_ye0-Z98~*P@a( zT%S8XCnz_|MgC}cC^Nad6C2gBdu8W_okFEV$^BfLo+pV8k|J}VNa@9yy2*-q&-G;! z8d`{x=&z;{@U2}_CeF^FWvy8S4`2Dit7NmJ-B=O6qTy}GZvB})AR-czwp!n;I*}rd zPKKTBNcQ+MW#IPTAGI#b1bS`El=Xc)#lJq>xFK-riqMfeiU~qM_xAUXMBU{NW3bq3 ztbo#Zj)K8@|LztY*@CPLEu+&6nimZ<#?7RSS9kuS*6k%2;9Q`VUvvAXFqW+8ck!!j z_AfrwMtR+O-(v@FAEmghA1(>}E>+_5wKBG=@j^V@mfEAV zVErbYp;mKDh1!|TihGA#3x5DetM?^DO~0+eD{DLR+Zn5G=U!YH^1sYK;8+)3`BS8J zV8%=N$xx-ZS&5WPdG|(OsOTD%%u2E}KZF5acb8SR)NKw{}dgRsKh;l2j zYN_AYQ`r*7kADj5C%(#_+BhC!k&*^Ozs;C^>{+PSzZ#H#2D^>!l#2H$P-kk~RbbCZ zR=hk+7URH zb>y{Dj+-g|%aL`5F)8B2oZYr_*7r9zLE&`)1sLNHX3`%2%Y4PJ#7q~phfb`MDvS@x zwmlGs-DB5?NT|J*vM-HE`K3+h?&p(%jIq7Mg7W9>@3mh@iuel*E4so?oy zOovul8=p#BD#N81@SCk=_XV2XV@icyEGqU#F+%uv$^2}%Wj52KTW6tIU_^XgXSH4M zaiXN3jl8n(o@>h2@6H2s9H+1(%)!ToZtJGAAC`xhd%Q3Gr^#T|ZcGMQHFwz8yYOi8 zecEY?#Ps>E)5CpLN!KzsA*xtGC~B6^?ooYFA$K;aJpyjn{g!|}Bb6{a z%?V{jn{_*0E%ZhE)h@a35H|EzP?+U01ECA~+~>qETVD1X!mW#*@)F3q+%JYhK*O9uT-@I-xsN{R=idgZ?k_l5P0&-`WSeYMGPMEiBi z*_#pTH66USlFC)F)r{qE#KkRj&FVVZDwOQmLpc?yQtp5ovj|cve&FOdg(_^{c`B}- z!@@|ro00cLIX=MaP&p^jO5@nkHpMkxR+;yLh1zv& z<24(*;=U*z@|X1culIny1>oi*o%*TKxla(2st6Q$zc*11z8hmK#1q29=y}QE73Tw# zY=mU~tv~P}(e^d~3O;X$1RDUX1fhYTk6|$wj9D81umLg98Nq-+A?du4z`uPMtT-MZBN;hzs- zwewc>BW@bjLuW6iG7f)$FA_tNtiwmmc`Td9$AY*m*(bVy&+LSRuT7uS$J!NY@2NcF z6p=G_)7W;=N2&@ES>y-1S0n1zEhYL(@_y0h81bp5v`i$&u?>CLbsWGcYk&V zwg(?6-51o?{8AO4OAMdkES0_s(VZxDAr8JN{!C5X!X36-Ej1d@LuWhRxZURr)1$lk?ccClsDD$6ydJL(rSy5oJs)ffH@KXthF*5KK~W*~3X9qhQpA1oy4pN5fivqhr-VkY97!yvS zIIyecWI*&8`V)ZyPj>fwXIQ2sN}~}XjY>%jkLTNaNf8YB{ZaQ1-4|I*Kyv3~b1<=gpf5dDC!l>m zF3iW@eEYfj|1b|t56Ogr$9yvTCX>U&;vS*UOyWX9R6~SNdF%8}EI^*-9zQLXMVN%= zl1X3VDh_;!K%;g0+WY6X53q47QUhDM#LU3y8@IU?Fx(nSLPDsQYta*ncvnMuNS}B! zem?%&42+~E6Sq1zKhyAa=35pjf&AsZya}{(LJcyOTjq+()KvfE??(DNCiz9FPwJg`#HygM1P~NSgOE@(Q71{+rGmgG9U%5y zIwl^!9CtoR)MduGRXipg5su1Z_uDrM{H6hZNfoKmsJ|*y*V+^mER;BJs&ls zM6%Nk+E=3qHwi_JAV!5To@`)nb{ zsA+^mD=C|3T7;Z+F`1xgi6nKJPzY9HSdC$1Hk~4!SVm=8ZCwOl1OEeF{+E)-*){1hrT95R!!&qv>0wyEq9ZGIdIX#3`YoyyZM8 z)>U=RLljdj(at>2v`5vE@3E{_I1C+3Iw5>-c9xXQs+;7Oi18?4KTI#^QT4Uft{!hQ zgyLJoJCX0=w~E#owzu)U*!ha_#5Tf+yoybV77ooUoVjHd^&D>4#%D_(X9Y6@*`KE4 z+VFGd3oo48!bg022*Hg=1OGhnkazI5ZSUFa){P%$eUkn`%7Z`nXsApW#1h;`Y+&C- zM-m*gDNU?HW6-53ONe*zC3tl@4tl?1hnt(7P21Ukl_=?DG#m9b_GSNLpP~l=`)MIP6N9DS*(^#>U_Ss2F=#MHiXvnDFaw$N;8#uQx;|TKh(mm zxca!ds+8K4E>l|J3h?@tf&YC{%hwNR>NBmF`^|rH-SVkT(`gh;3G6-XNm{Fo$$tKo zjlYyWUK-^$52>D9HvjQ+fsZD(j7qHeeAJ9MGj;{?;I*e@#zFFYIZ6rA`+mbWXs)acuD7-~ik2LzSW7%GeEiKzd3 z#!N#1=ve&;*K!Ue`Mlfr7eQOZvz98MAkPHN2n`D$7=Ajn(rKe0{P|&W=a+Afp&$jQ zz1w!|8Tg;6FnWSxYxegI89g@f_pFs-Ze0AQNYd|h#E*+zTlrID(`sp4Fz(ZUgoUto z!Ap3^y@`){>Hl8{H*mj#j7z{P_;{D!H6HhYD~|D~Ii0)PE@a?bI)=Xkjp~k&RrUw- zDyGDHlf0l`wuW#YWfTUlcZz*TpD2a!cd09l4;$A=$@7 zpb`=30hgt|^dyWWQSjMb5;(k_J6x&i3|qIpekZSzssfTV++Gt86H`gN-A3fJG&3#D zMB2gdN)2OiSGalQW#!QGeo9UbhU=|SDqPviP!T)(9DtJq$BB%eFb^hI)^61ClyJAgedYmXJkIqsbId!;N zUH7+LP(z`JL*k2Fr)1CsuJL?*JE|&17q}pm=2=Q^d$D#Nb;w+C4JQI3BrUUsr1z{j zg*A-to>eE^uoNoo^vrwP|L^ yMK>0RIu*}lIU1d93(1#3g?ar_ee*7YMnW&~cDquE8s$#N*sa)dr=eE>0000mD!%Oi literal 0 HcmV?d00001 diff --git a/sop-admin/sop-admin-frontend/src/assets/login/avatar.svg b/sop-admin/sop-admin-frontend/src/assets/login/avatar.svg new file mode 100644 index 00000000..a63d2b1a --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/login/avatar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/login/illustration.svg b/sop-admin/sop-admin-frontend/src/assets/login/illustration.svg new file mode 100644 index 00000000..b58ffd08 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/login/illustration.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/logo.svg b/sop-admin/sop-admin-frontend/src/assets/logo.svg deleted file mode 100644 index 3215438f..00000000 --- a/sop-admin/sop-admin-frontend/src/assets/logo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/sop-admin/sop-admin-frontend/src/assets/status/403.svg b/sop-admin/sop-admin-frontend/src/assets/status/403.svg new file mode 100644 index 00000000..ba3ce293 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/status/403.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/status/404.svg b/sop-admin/sop-admin-frontend/src/assets/status/404.svg new file mode 100644 index 00000000..aacb7402 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/status/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/status/500.svg b/sop-admin/sop-admin-frontend/src/assets/status/500.svg new file mode 100644 index 00000000..ea23a378 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/status/500.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/style/breakpoint.less b/sop-admin/sop-admin-frontend/src/assets/style/breakpoint.less deleted file mode 100644 index 584f21e5..00000000 --- a/sop-admin/sop-admin-frontend/src/assets/style/breakpoint.less +++ /dev/null @@ -1,19 +0,0 @@ -// ==============breakpoint============ - -// Extra small screen / phone -@screen-xs: 480px; - -// Small screen / tablet -@screen-sm: 576px; - -// Medium screen / desktop -@screen-md: 768px; - -// Large screen / wide desktop -@screen-lg: 992px; - -// Extra large screen / full hd -@screen-xl: 1200px; - -// Extra extra large screen / large desktop -@screen-xxl: 1600px; diff --git a/sop-admin/sop-admin-frontend/src/assets/style/global.less b/sop-admin/sop-admin-frontend/src/assets/style/global.less deleted file mode 100644 index f90b206f..00000000 --- a/sop-admin/sop-admin-frontend/src/assets/style/global.less +++ /dev/null @@ -1,94 +0,0 @@ -* { - box-sizing: border-box; -} - -html, -body { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - font-size: 14px; - background-color: var(--color-bg-1); - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; -} - -.echarts-tooltip-diy { - background: linear-gradient( - 304.17deg, - rgba(253, 254, 255, 0.6) -6.04%, - rgba(244, 247, 252, 0.6) 85.2% - ) !important; - border: none !important; - backdrop-filter: blur(10px) !important; - /* Note: backdrop-filter has minimal browser support */ - - border-radius: 6px !important; - .content-panel { - display: flex; - justify-content: space-between; - padding: 0 9px; - background: rgba(255, 255, 255, 0.8); - width: 164px; - height: 32px; - line-height: 32px; - box-shadow: 6px 0px 20px rgba(34, 87, 188, 0.1); - border-radius: 4px; - margin-bottom: 4px; - } - .tooltip-title { - margin: 0 0 10px 0; - } - p { - margin: 0; - } - .tooltip-title, - .tooltip-value { - font-size: 13px; - line-height: 15px; - display: flex; - align-items: center; - text-align: right; - color: #1d2129; - font-weight: bold; - } - .tooltip-item-icon { - display: inline-block; - margin-right: 8px; - width: 10px; - height: 10px; - border-radius: 50%; - } -} - -.general-card { - border-radius: 4px; - border: none; - & > .arco-card-header { - height: auto; - padding: 20px; - border: none; - } - & > .arco-card-body { - padding: 0 20px 20px 20px; - } -} - -.split-line { - border-color: rgb(var(--gray-2)); -} - -.arco-table-cell { - .circle { - display: inline-block; - margin-right: 4px; - width: 6px; - height: 6px; - border-radius: 50%; - background-color: rgb(var(--blue-6)); - &.pass { - background-color: rgb(var(--green-6)); - } - } -} diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/back_top.svg b/sop-admin/sop-admin-frontend/src/assets/svg/back_top.svg new file mode 100644 index 00000000..f8e6aa02 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/back_top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/dark.svg b/sop-admin/sop-admin-frontend/src/assets/svg/dark.svg new file mode 100644 index 00000000..b5c4d2d5 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/day.svg b/sop-admin/sop-admin-frontend/src/assets/svg/day.svg new file mode 100644 index 00000000..b7600345 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/day.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/enter_outlined.svg b/sop-admin/sop-admin-frontend/src/assets/svg/enter_outlined.svg new file mode 100644 index 00000000..45e0bafe --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/enter_outlined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/exit_screen.svg b/sop-admin/sop-admin-frontend/src/assets/svg/exit_screen.svg new file mode 100644 index 00000000..007c0b63 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/exit_screen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/full_screen.svg b/sop-admin/sop-admin-frontend/src/assets/svg/full_screen.svg new file mode 100644 index 00000000..fff93a5d --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/full_screen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/globalization.svg b/sop-admin/sop-admin-frontend/src/assets/svg/globalization.svg new file mode 100644 index 00000000..5f6bce6b --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/globalization.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/keyboard_esc.svg b/sop-admin/sop-admin-frontend/src/assets/svg/keyboard_esc.svg new file mode 100644 index 00000000..bd671654 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/keyboard_esc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/svg/system.svg b/sop-admin/sop-admin-frontend/src/assets/svg/system.svg new file mode 100644 index 00000000..9ad39a56 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/svg/system.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/table-bar/collapse.svg b/sop-admin/sop-admin-frontend/src/assets/table-bar/collapse.svg new file mode 100644 index 00000000..0823ae63 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/table-bar/collapse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/table-bar/drag.svg b/sop-admin/sop-admin-frontend/src/assets/table-bar/drag.svg new file mode 100644 index 00000000..8ac32a7b --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/table-bar/drag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/table-bar/expand.svg b/sop-admin/sop-admin-frontend/src/assets/table-bar/expand.svg new file mode 100644 index 00000000..bb41c350 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/table-bar/expand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/table-bar/refresh.svg b/sop-admin/sop-admin-frontend/src/assets/table-bar/refresh.svg new file mode 100644 index 00000000..140288cd --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/table-bar/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/table-bar/settings.svg b/sop-admin/sop-admin-frontend/src/assets/table-bar/settings.svg new file mode 100644 index 00000000..4ecd0779 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/assets/table-bar/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/assets/user.jpg b/sop-admin/sop-admin-frontend/src/assets/user.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2973ace3367cf7181b470e2814db5a9c06a4533 GIT binary patch literal 3694 zcmV-!4w3OvNk&Fy4gdgGMM6+kP&go34gdfUJpi2nDxd(M06vjGnMtLiq9G@=4G6Fj z31%=YJ_J#Mqzynh+5qkiBt9n)6vG`w5 z59Yt%zw-M=|Ci+3>i=N>Ew5u=yB^RVw5UFe3RiK5ppxFI5hZzrgl1&wg-n3c))Y%AQ zztZ0A)fc1!SiK%ISX~$|)-hs;X=zAAAD@Z*gWVgzm)%g1+`$}ptJ-~!RpF(M+D9~| zyzKiw5rIMAM4W$##xF)FI@aAEmGoC*qlTH*Y#7}@iW_duD(>JV*{zEr22N+LV{FP<1qq}&(tt4p3;yxmOQ!w+`1j={ETfnRl zb*POc9Om`L-8@f+Gk(-A2)n%p1tC~&oQ?yQ38vTpU!MQ)ux#BxhN6FS+Ip3+kZ zo)vP~0RH)Kb6xxU_v?P7m=(NjXJ{Qq)1;v4mM+fSM86gKRbTlS-Q*o$`VsB;freYXMC&Fq|O+`H_g4W7j#I156=zk-lyK(W;g4Pr^fJEUsrmG@~M< z8YJKtA)lr1dC%-VDU&Z@=;T7n$wm_N*ypE#R{lf>W{F^Cc+%9AvK*ifnV3I72I=~y zrX$rW(zQAbZygSnMX7Y;U5>deXIh31`1g-ozrKYzNYUp04RlM>U>Ij}<*ZZho!<05 zYmb%3O)I4=oaZb8Dw2p_yb?=pr8GA){5J)#o6zoeg0xoY9UXILJq>qq^Hr+Y5_Yag zId(Fll_vTlz>?58^}uZksfi)kv{%Pol8y;#(Z3Qjz(#GqGs97bk8XnB4BC(unp=DF zwb@#fdhkZHt?382*X9i4H3( zP%33VLUkL7<7cB&pEAN|2jiP_KpfK{BwK(ZQ;sRM)qUC5H(1&2goq|LPtRZv0uO}(WVRdjlr->H4e|s$?c(t= z0Y+*WC>B3@x61{)IcDz!K7qehBk6sfXnf(5`f*hK;TvIM#Isf=jLMsYL;sj$x!2Y8 z{cbjG*LdoeU*lwo%hL0ALneG>2>`vmeQ(IQ^#t3emMwCnq#_gAJ@P0XY1%L2vwB1J z^X|s=t%IgV-(Qy%kXc93u`9Dk&2Ls3i4mGtR(DUGY_(Zm{2##iZJ{CzQ@OnEfM{Qo ze#f+W8o~d;onaf71-BcWY!b=oo`-r;Nq_}|8ehGiG5*utgI7MMek4CM1hxkxXrlORW=5OfHu(6?{I)XQg87b!kL2!Z zukGavgW)KJ+F`?&ZR$T>*<|}e=^$Y)*j|G&9bU3GMX6GxjN?uRKFarnJ1Ii3(q-FM*cM~QMOv{tbAPN}BsP9Y?3ec^(|(8D>aYFf8<+-HrcvmwDl-?u-Vp zJ|3KvuNMo~Fj-xr9OYGmPg6QI~cU=+S4PG9EoZLla zf~s<=?i7=OIk8oX2%pFnZz4v}0d_Yy_WSVi&tWnP*o6YH(vSfzlb$(ZTy2RS$T+)f z(5r!}zZSDj4mr^-J1`2Yp{${_`5%})c>iJ5iW)1!>1mFAFGx z;B;)cd(7#6vu0zB3Qiz&wE9A&QQy8+YwetHC?0#?zR%)|rIuC^P(^NcLGFLLWvrwT ziSba^I7L^ceM_vWH_7yL!}bLW3DNWJjqs&HWJa>c6e!xK__eysks1GnQI z=f_v}Bj_px0`6cV_hwtJ5)QfC)>1IDGb$J>Vy9^nQaj04!pnQu2D>_Ozw$GD}C-N_mEcRS!<`}D?FWA;{I4@mjmo4iX`{bVhu`N5_P7$ z$*T<)7`5sHvXa}65d`e%prY8yx~xO-i9`QIz@F?0o2dtu#R1kNto!5Rr&u4`(XmBy zEWzm3Sj90g7xrfDLt|ZF4$qYzc0Sq}*PSHT6JDm}trLU{TeU&6#Fqam6qK9*P z=N#HV3O9LNdF|4Kk}aJkxHdJT#X4I;oHW$da#uo4OO6Srw>$?F!``-RN^mw_Yxw1o zxo`|bmxWItG&jIDM3j3qsV{jks(QdvNM(AEOv@?eVx=4w8)k6rnBFTQh?@{8W=HvQ zk>-?8)CHGVg;;uXr{F^8={SY<_^v;05dcUlv@?V@0}i&WN8? z@E5~EBta9?8mDw9)qrV$3OL(`wg?`sH$8rc1(LIi5)6y=vR_*$r<4r|;t)!_qCNEp zF}2c#-d4enAZYOlHcS0MkH5V_;>cd~ETx8-fJK#EXWSaQg!I}N`C=~yR^_y3!@Duh z(oAswXyBc3&2Q>c31feA8*p;L0a89nQ9)??NeirTT=;C8ExeBxwgMzTBU5Pr#G_C} zGE9$H@qU}U)DgzCagb1$xUof9d-id5Bs6=`!!BN#>C#n?d6;ksZSVCO-%~UvJ&#_O z7K93jU4giQlw`I7QvtbdUa&p-I;*l@#2YW?%Ku7!?Gt*r8+9vL{`Ga=mN)Kn1Dh}1 zFFK$=E^uzUi^92o+^tUHv9BwVxin&)&?V)_I#1gC?F^CYC}ZI^4rPOaD>`V-8W`mJ zj)FqAei|k^JBZFZDI5_r$N{6To8A>=DE(nmG4eZ z0Oco+JGokWUkHtBtHHGj|L+S#dTpwVov{G}q#pQd^(dy7@qE`=a28_{C^L8vH zbFj1Kh!|RsnqvSfIg*Y=_P5~OclqFwGl`?fv>G@;%KOeL5AjlIPzeTbrk;ru(H1L0 zd;Isk3}O=|1XHS9xWfK3LT8g=)b>X@PjwP=3)n^4FB>`%!VQ>9+IHe-L z!`KUQU$KxlEY<-h#RJ_gB9-EV)mBh34C%_DsmSnql4?BtvY8Hl^pqD(!_cnWV@K}M zYr8t?Tlh}AngVOKjWx9G3uu{pb{O&yFosG{7Fnp+`9aBx?GId7yL=665}>Y zbn=*9Gkfa|B$iYPJv{zfO!NZx9NZ9*AXlhxm=t>4pfj{%eUw~!G)t0L4-lj)}T~z zuzBX_ { + if (!slots) return null; + return hasAuth(props.value) ? ( + {slots.default?.()} + ) : null; + }; + } +}); diff --git a/sop-admin/sop-admin-frontend/src/components/ReCol/index.ts b/sop-admin/sop-admin-frontend/src/components/ReCol/index.ts new file mode 100644 index 00000000..7a6c9374 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReCol/index.ts @@ -0,0 +1,29 @@ +import { ElCol } from "element-plus"; +import { h, defineComponent } from "vue"; + +// 封装element-plus的el-col组件 +export default defineComponent({ + name: "ReCol", + props: { + value: { + type: Number, + default: 24 + } + }, + render() { + const attrs = this.$attrs; + const val = this.value; + return h( + ElCol, + { + xs: val, + sm: val, + md: val, + lg: val, + xl: val, + ...attrs + }, + { default: () => this.$slots.default() } + ); + } +}); diff --git a/sop-admin/sop-admin-frontend/src/components/ReDialog/index.ts b/sop-admin/sop-admin-frontend/src/components/ReDialog/index.ts new file mode 100644 index 00000000..b471764b --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReDialog/index.ts @@ -0,0 +1,69 @@ +import { ref } from "vue"; +import reDialog from "./index.vue"; +import { useTimeoutFn } from "@vueuse/core"; +import { withInstall } from "@pureadmin/utils"; +import type { + EventType, + ArgsType, + DialogProps, + ButtonProps, + DialogOptions +} from "./type"; + +const dialogStore = ref>([]); + +/** 打开弹框 */ +const addDialog = (options: DialogOptions) => { + const open = () => + dialogStore.value.push(Object.assign(options, { visible: true })); + if (options?.openDelay) { + useTimeoutFn(() => { + open(); + }, options.openDelay); + } else { + open(); + } +}; + +/** 关闭弹框 */ +const closeDialog = (options: DialogOptions, index: number, args?: any) => { + dialogStore.value[index].visible = false; + options.closeCallBack && options.closeCallBack({ options, index, args }); + + const closeDelay = options?.closeDelay ?? 200; + useTimeoutFn(() => { + dialogStore.value.splice(index, 1); + }, closeDelay); +}; + +/** + * @description 更改弹框自身属性值 + * @param value 属性值 + * @param key 属性,默认`title` + * @param index 弹框索引(默认`0`,代表只有一个弹框,对于嵌套弹框要改哪个弹框的属性值就把该弹框索引赋给`index`) + */ +const updateDialog = (value: any, key = "title", index = 0) => { + dialogStore.value[index][key] = value; +}; + +/** 关闭所有弹框 */ +const closeAllDialog = () => { + dialogStore.value = []; +}; + +/** 千万别忘了在下面这三处引入并注册下,放心注册,不使用`addDialog`调用就不会被挂载 + * https://github.com/pure-admin/vue-pure-admin/blob/main/src/App.vue#L4 + * https://github.com/pure-admin/vue-pure-admin/blob/main/src/App.vue#L12 + * https://github.com/pure-admin/vue-pure-admin/blob/main/src/App.vue#L22 + */ +const ReDialog = withInstall(reDialog); + +export type { EventType, ArgsType, DialogProps, ButtonProps, DialogOptions }; +export { + ReDialog, + dialogStore, + addDialog, + closeDialog, + updateDialog, + closeAllDialog +}; diff --git a/sop-admin/sop-admin-frontend/src/components/ReDialog/index.vue b/sop-admin/sop-admin-frontend/src/components/ReDialog/index.vue new file mode 100644 index 00000000..23a0106e --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReDialog/index.vue @@ -0,0 +1,206 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/components/ReDialog/type.ts b/sop-admin/sop-admin-frontend/src/components/ReDialog/type.ts new file mode 100644 index 00000000..7efbe201 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReDialog/type.ts @@ -0,0 +1,275 @@ +import type { CSSProperties, VNode, Component } from "vue"; + +type DoneFn = (cancel?: boolean) => void; +type EventType = + | "open" + | "close" + | "openAutoFocus" + | "closeAutoFocus" + | "fullscreenCallBack"; +type ArgsType = { + /** `cancel` 点击取消按钮、`sure` 点击确定按钮、`close` 点击右上角关闭按钮或空白页或按下了esc键 */ + command: "cancel" | "sure" | "close"; +}; +type ButtonType = + | "primary" + | "success" + | "warning" + | "danger" + | "info" + | "text"; + +/** https://element-plus.org/zh-CN/component/dialog.html#attributes */ +type DialogProps = { + /** `Dialog` 的显示与隐藏 */ + visible?: boolean; + /** `Dialog` 的标题 */ + title?: string; + /** `Dialog` 的宽度,默认 `50%` */ + width?: string | number; + /** 是否为全屏 `Dialog`(会一直处于全屏状态,除非弹框关闭),默认 `false`,`fullscreen` 和 `fullscreenIcon` 都传时只有 `fullscreen` 会生效 */ + fullscreen?: boolean; + /** 是否显示全屏操作图标,默认 `false`,`fullscreen` 和 `fullscreenIcon` 都传时只有 `fullscreen` 会生效 */ + fullscreenIcon?: boolean; + /** `Dialog CSS` 中的 `margin-top` 值,默认 `15vh` */ + top?: string; + /** 是否需要遮罩层,默认 `true` */ + modal?: boolean; + /** `Dialog` 自身是否插入至 `body` 元素上。嵌套的 `Dialog` 必须指定该属性并赋值为 `true`,默认 `false` */ + appendToBody?: boolean; + /** 是否在 `Dialog` 出现时将 `body` 滚动锁定,默认 `true` */ + lockScroll?: boolean; + /** `Dialog` 的自定义类名 */ + class?: string; + /** `Dialog` 的自定义样式 */ + style?: CSSProperties; + /** `Dialog` 打开的延时时间,单位毫秒,默认 `0` */ + openDelay?: number; + /** `Dialog` 关闭的延时时间,单位毫秒,默认 `0` */ + closeDelay?: number; + /** 是否可以通过点击 `modal` 关闭 `Dialog`,默认 `true` */ + closeOnClickModal?: boolean; + /** 是否可以通过按下 `ESC` 关闭 `Dialog`,默认 `true` */ + closeOnPressEscape?: boolean; + /** 是否显示关闭按钮,默认 `true` */ + showClose?: boolean; + /** 关闭前的回调,会暂停 `Dialog` 的关闭. 回调函数内执行 `done` 参数方法的时候才是真正关闭对话框的时候 */ + beforeClose?: (done: DoneFn) => void; + /** 为 `Dialog` 启用可拖拽功能,默认 `false` */ + draggable?: boolean; + /** 是否让 `Dialog` 的 `header` 和 `footer` 部分居中排列,默认 `false` */ + center?: boolean; + /** 是否水平垂直对齐对话框,默认 `false` */ + alignCenter?: boolean; + /** 当关闭 `Dialog` 时,销毁其中的元素,默认 `false` */ + destroyOnClose?: boolean; +}; + +//element-plus.org/zh-CN/component/popconfirm.html#attributes +type Popconfirm = { + /** 标题 */ + title?: string; + /** 确定按钮文字 */ + confirmButtonText?: string; + /** 取消按钮文字 */ + cancelButtonText?: string; + /** 确定按钮类型,默认 `primary` */ + confirmButtonType?: ButtonType; + /** 取消按钮类型,默认 `text` */ + cancelButtonType?: ButtonType; + /** 自定义图标,默认 `QuestionFilled` */ + icon?: string | Component; + /** `Icon` 颜色,默认 `#f90` */ + iconColor?: string; + /** 是否隐藏 `Icon`,默认 `false` */ + hideIcon?: boolean; + /** 关闭时的延迟,默认 `200` */ + hideAfter?: number; + /** 是否将 `popover` 的下拉列表插入至 `body` 元素,默认 `true` */ + teleported?: boolean; + /** 当 `popover` 组件长时间不触发且 `persistent` 属性设置为 `false` 时, `popover` 将会被删除,默认 `false` */ + persistent?: boolean; + /** 弹层宽度,最小宽度 `150px`,默认 `150` */ + width?: string | number; +}; + +type BtnClickDialog = { + options?: DialogOptions; + index?: number; +}; +type BtnClickButton = { + btn?: ButtonProps; + index?: number; +}; +/** https://element-plus.org/zh-CN/component/button.html#button-attributes */ +type ButtonProps = { + /** 按钮文字 */ + label: string; + /** 按钮尺寸 */ + size?: "large" | "default" | "small"; + /** 按钮类型 */ + type?: "primary" | "success" | "warning" | "danger" | "info"; + /** 是否为朴素按钮,默认 `false` */ + plain?: boolean; + /** 是否为文字按钮,默认 `false` */ + text?: boolean; + /** 是否显示文字按钮背景颜色,默认 `false` */ + bg?: boolean; + /** 是否为链接按钮,默认 `false` */ + link?: boolean; + /** 是否为圆角按钮,默认 `false` */ + round?: boolean; + /** 是否为圆形按钮,默认 `false` */ + circle?: boolean; + /** 确定按钮的 `Popconfirm` 气泡确认框相关配置 */ + popconfirm?: Popconfirm; + /** 是否为加载中状态,默认 `false` */ + loading?: boolean; + /** 自定义加载中状态图标组件 */ + loadingIcon?: string | Component; + /** 按钮是否为禁用状态,默认 `false` */ + disabled?: boolean; + /** 图标组件 */ + icon?: string | Component; + /** 是否开启原生 `autofocus` 属性,默认 `false` */ + autofocus?: boolean; + /** 原生 `type` 属性,默认 `button` */ + nativeType?: "button" | "submit" | "reset"; + /** 自动在两个中文字符之间插入空格 */ + autoInsertSpace?: boolean; + /** 自定义按钮颜色, 并自动计算 `hover` 和 `active` 触发后的颜色 */ + color?: string; + /** `dark` 模式, 意味着自动设置 `color` 为 `dark` 模式的颜色,默认 `false` */ + dark?: boolean; + /** 自定义元素标签 */ + tag?: string | Component; + /** 点击按钮后触发的回调 */ + btnClick?: ({ + dialog, + button + }: { + /** 当前 `Dialog` 信息 */ + dialog: BtnClickDialog; + /** 当前 `button` 信息 */ + button: BtnClickButton; + }) => void; +}; + +interface DialogOptions extends DialogProps { + /** 内容区组件的 `props`,可通过 `defineProps` 接收 */ + props?: any; + /** 是否隐藏 `Dialog` 按钮操作区的内容 */ + hideFooter?: boolean; + /** 确定按钮的 `Popconfirm` 气泡确认框相关配置 */ + popconfirm?: Popconfirm; + /** 点击确定按钮后是否开启 `loading` 加载动画 */ + sureBtnLoading?: boolean; + /** + * @description 自定义对话框标题的内容渲染器 + * @see {@link https://element-plus.org/zh-CN/component/dialog.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%A4%B4%E9%83%A8} + */ + headerRenderer?: ({ + close, + titleId, + titleClass + }: { + close: Function; + titleId: string; + titleClass: string; + }) => VNode | Component; + /** 自定义内容渲染器 */ + contentRenderer?: ({ + options, + index + }: { + options: DialogOptions; + index: number; + }) => VNode | Component; + /** 自定义按钮操作区的内容渲染器,会覆盖`footerButtons`以及默认的 `取消` 和 `确定` 按钮 */ + footerRenderer?: ({ + options, + index + }: { + options: DialogOptions; + index: number; + }) => VNode | Component; + /** 自定义底部按钮操作 */ + footerButtons?: Array; + /** `Dialog` 打开后的回调 */ + open?: ({ + options, + index + }: { + options: DialogOptions; + index: number; + }) => void; + /** `Dialog` 关闭后的回调(只有点击右上角关闭按钮或空白页或按下了esc键关闭页面时才会触发) */ + close?: ({ + options, + index + }: { + options: DialogOptions; + index: number; + }) => void; + /** `Dialog` 关闭后的回调。 `args` 返回的 `command` 值解析:`cancel` 点击取消按钮、`sure` 点击确定按钮、`close` 点击右上角关闭按钮或空白页或按下了esc键 */ + closeCallBack?: ({ + options, + index, + args + }: { + options: DialogOptions; + index: number; + args: any; + }) => void; + /** 点击全屏按钮时的回调 */ + fullscreenCallBack?: ({ + options, + index + }: { + options: DialogOptions; + index: number; + }) => void; + /** 输入焦点聚焦在 `Dialog` 内容时的回调 */ + openAutoFocus?: ({ + options, + index + }: { + options: DialogOptions; + index: number; + }) => void; + /** 输入焦点从 `Dialog` 内容失焦时的回调 */ + closeAutoFocus?: ({ + options, + index + }: { + options: DialogOptions; + index: number; + }) => void; + /** 点击底部取消按钮的回调,会暂停 `Dialog` 的关闭. 回调函数内执行 `done` 参数方法的时候才是真正关闭对话框的时候 */ + beforeCancel?: ( + done: Function, + { + options, + index + }: { + options: DialogOptions; + index: number; + } + ) => void; + /** 点击底部确定按钮的回调,会暂停 `Dialog` 的关闭. 回调函数内执行 `done` 参数方法的时候才是真正关闭对话框的时候 */ + beforeSure?: ( + done: Function, + { + options, + index, + closeLoading + }: { + options: DialogOptions; + index: number; + /** 关闭确定按钮的 `loading` 加载动画 */ + closeLoading: Function; + } + ) => void; +} + +export type { EventType, ArgsType, DialogProps, ButtonProps, DialogOptions }; diff --git a/sop-admin/sop-admin-frontend/src/components/ReIcon/index.ts b/sop-admin/sop-admin-frontend/src/components/ReIcon/index.ts new file mode 100644 index 00000000..86efe721 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReIcon/index.ts @@ -0,0 +1,12 @@ +import iconifyIconOffline from "./src/iconifyIconOffline"; +import iconifyIconOnline from "./src/iconifyIconOnline"; +import fontIcon from "./src/iconfont"; + +/** 本地图标组件 */ +const IconifyIconOffline = iconifyIconOffline; +/** 在线图标组件 */ +const IconifyIconOnline = iconifyIconOnline; +/** `iconfont`组件 */ +const FontIcon = fontIcon; + +export { IconifyIconOffline, IconifyIconOnline, FontIcon }; diff --git a/sop-admin/sop-admin-frontend/src/components/ReIcon/src/hooks.ts b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/hooks.ts new file mode 100644 index 00000000..5a377dac --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/hooks.ts @@ -0,0 +1,61 @@ +import type { iconType } from "./types"; +import { h, defineComponent, type Component } from "vue"; +import { IconifyIconOnline, IconifyIconOffline, FontIcon } from "../index"; + +/** + * 支持 `iconfont`、自定义 `svg` 以及 `iconify` 中所有的图标 + * @see 点击查看文档图标篇 {@link https://pure-admin.github.io/pure-admin-doc/pages/icon/} + * @param icon 必传 图标 + * @param attrs 可选 iconType 属性 + * @returns Component + */ +export function useRenderIcon(icon: any, attrs?: iconType): Component { + // iconfont + const ifReg = /^IF-/; + // typeof icon === "function" 属于SVG + if (ifReg.test(icon)) { + // iconfont + const name = icon.split(ifReg)[1]; + const iconName = name.slice( + 0, + name.indexOf(" ") == -1 ? name.length : name.indexOf(" ") + ); + const iconType = name.slice(name.indexOf(" ") + 1, name.length); + return defineComponent({ + name: "FontIcon", + render() { + return h(FontIcon, { + icon: iconName, + iconType, + ...attrs + }); + } + }); + } else if (typeof icon === "function" || typeof icon?.render === "function") { + // svg + return attrs ? h(icon, { ...attrs }) : icon; + } else if (typeof icon === "object") { + return defineComponent({ + name: "OfflineIcon", + render() { + return h(IconifyIconOffline, { + icon: icon, + ...attrs + }); + } + }); + } else { + // 通过是否存在 : 符号来判断是在线还是本地图标,存在即是在线图标,反之 + return defineComponent({ + name: "Icon", + render() { + const IconifyIcon = + icon && icon.includes(":") ? IconifyIconOnline : IconifyIconOffline; + return h(IconifyIcon, { + icon: icon, + ...attrs + }); + } + }); + } +} diff --git a/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconfont.ts b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconfont.ts new file mode 100644 index 00000000..c1104519 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconfont.ts @@ -0,0 +1,48 @@ +import { h, defineComponent } from "vue"; + +// 封装iconfont组件,默认`font-class`引用模式,支持`unicode`引用、`font-class`引用、`symbol`引用 (https://www.iconfont.cn/help/detail?spm=a313x.7781069.1998910419.20&helptype=code) +export default defineComponent({ + name: "FontIcon", + props: { + icon: { + type: String, + default: "" + } + }, + render() { + const attrs = this.$attrs; + if (Object.keys(attrs).includes("uni") || attrs?.iconType === "uni") { + return h( + "i", + { + class: "iconfont", + ...attrs + }, + this.icon + ); + } else if ( + Object.keys(attrs).includes("svg") || + attrs?.iconType === "svg" + ) { + return h( + "svg", + { + class: "icon-svg", + "aria-hidden": true + }, + { + default: () => [ + h("use", { + "xlink:href": `#${this.icon}` + }) + ] + } + ); + } else { + return h("i", { + class: `iconfont ${this.icon}`, + ...attrs + }); + } + } +}); diff --git a/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconifyIconOffline.ts b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconifyIconOffline.ts new file mode 100644 index 00000000..b47aa99a --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconifyIconOffline.ts @@ -0,0 +1,30 @@ +import { h, defineComponent } from "vue"; +import { Icon as IconifyIcon, addIcon } from "@iconify/vue/dist/offline"; + +// Iconify Icon在Vue里本地使用(用于内网环境) +export default defineComponent({ + name: "IconifyIconOffline", + components: { IconifyIcon }, + props: { + icon: { + default: null + } + }, + render() { + if (typeof this.icon === "object") addIcon(this.icon, this.icon); + const attrs = this.$attrs; + return h( + IconifyIcon, + { + icon: this.icon, + style: attrs?.style + ? Object.assign(attrs.style, { outline: "none" }) + : { outline: "none" }, + ...attrs + }, + { + default: () => [] + } + ); + } +}); diff --git a/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconifyIconOnline.ts b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconifyIconOnline.ts new file mode 100644 index 00000000..a5f5822d --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/iconifyIconOnline.ts @@ -0,0 +1,30 @@ +import { h, defineComponent } from "vue"; +import { Icon as IconifyIcon } from "@iconify/vue"; + +// Iconify Icon在Vue里在线使用(用于外网环境) +export default defineComponent({ + name: "IconifyIconOnline", + components: { IconifyIcon }, + props: { + icon: { + type: String, + default: "" + } + }, + render() { + const attrs = this.$attrs; + return h( + IconifyIcon, + { + icon: `${this.icon}`, + style: attrs?.style + ? Object.assign(attrs.style, { outline: "none" }) + : { outline: "none" }, + ...attrs + }, + { + default: () => [] + } + ); + } +}); diff --git a/sop-admin/sop-admin-frontend/src/components/ReIcon/src/offlineIcon.ts b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/offlineIcon.ts new file mode 100644 index 00000000..fc5f9120 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/offlineIcon.ts @@ -0,0 +1,14 @@ +// 这里存放本地图标,在 src/layout/index.vue 文件中加载,避免在首启动加载 +import { addIcon } from "@iconify/vue/dist/offline"; + +// 本地菜单图标,后端在路由的 icon 中返回对应的图标字符串并且前端在此处使用 addIcon 添加即可渲染菜单图标 +// @iconify-icons/ep +import Lollipop from "@iconify-icons/ep/lollipop"; +import HomeFilled from "@iconify-icons/ep/home-filled"; +addIcon("ep:lollipop", Lollipop); +addIcon("ep:home-filled", HomeFilled); +// @iconify-icons/ri +import Search from "@iconify-icons/ri/search-line"; +import InformationLine from "@iconify-icons/ri/information-line"; +addIcon("ri:search-line", Search); +addIcon("ri:information-line", InformationLine); diff --git a/sop-admin/sop-admin-frontend/src/components/ReIcon/src/types.ts b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/types.ts new file mode 100644 index 00000000..000bdc59 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReIcon/src/types.ts @@ -0,0 +1,20 @@ +export interface iconType { + // iconify (https://docs.iconify.design/icon-components/vue/#properties) + inline?: boolean; + width?: string | number; + height?: string | number; + horizontalFlip?: boolean; + verticalFlip?: boolean; + flip?: string; + rotate?: number | string; + color?: string; + horizontalAlign?: boolean; + verticalAlign?: boolean; + align?: string; + onLoad?: Function; + includes?: Function; + // svg 需要什么SVG属性自行添加 + fill?: string; + // all icon + style?: object; +} diff --git a/sop-admin/sop-admin-frontend/src/components/RePerms/index.ts b/sop-admin/sop-admin-frontend/src/components/RePerms/index.ts new file mode 100644 index 00000000..3701c3c1 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/RePerms/index.ts @@ -0,0 +1,5 @@ +import perms from "./src/perms"; + +const Perms = perms; + +export { Perms }; diff --git a/sop-admin/sop-admin-frontend/src/components/RePerms/src/perms.tsx b/sop-admin/sop-admin-frontend/src/components/RePerms/src/perms.tsx new file mode 100644 index 00000000..da01bc16 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/RePerms/src/perms.tsx @@ -0,0 +1,20 @@ +import { defineComponent, Fragment } from "vue"; +import { hasPerms } from "@/utils/auth"; + +export default defineComponent({ + name: "Perms", + props: { + value: { + type: undefined, + default: [] + } + }, + setup(props, { slots }) { + return () => { + if (!slots) return null; + return hasPerms(props.value) ? ( + {slots.default?.()} + ) : null; + }; + } +}); diff --git a/sop-admin/sop-admin-frontend/src/components/RePureTableBar/index.ts b/sop-admin/sop-admin-frontend/src/components/RePureTableBar/index.ts new file mode 100644 index 00000000..31b8a16e --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/RePureTableBar/index.ts @@ -0,0 +1,5 @@ +import pureTableBar from "./src/bar"; +import { withInstall } from "@pureadmin/utils"; + +/** 配合 `@pureadmin/table` 实现快速便捷的表格操作 https://github.com/pure-admin/pure-admin-table */ +export const PureTableBar = withInstall(pureTableBar); diff --git a/sop-admin/sop-admin-frontend/src/components/RePureTableBar/src/bar.tsx b/sop-admin/sop-admin-frontend/src/components/RePureTableBar/src/bar.tsx new file mode 100644 index 00000000..5367c6b3 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/RePureTableBar/src/bar.tsx @@ -0,0 +1,393 @@ +import Sortable from "sortablejs"; +import { transformI18n } from "@/plugins/i18n"; +import { useEpThemeStoreHook } from "@/store/modules/epTheme"; +import { + type PropType, + ref, + unref, + computed, + nextTick, + defineComponent, + getCurrentInstance +} from "vue"; +import { + delay, + cloneDeep, + isBoolean, + isFunction, + getKeyList +} from "@pureadmin/utils"; + +import Fullscreen from "@iconify-icons/ri/fullscreen-fill"; +import ExitFullscreen from "@iconify-icons/ri/fullscreen-exit-fill"; +import DragIcon from "@/assets/table-bar/drag.svg?component"; +import ExpandIcon from "@/assets/table-bar/expand.svg?component"; +import RefreshIcon from "@/assets/table-bar/refresh.svg?component"; +import SettingIcon from "@/assets/table-bar/settings.svg?component"; +import CollapseIcon from "@/assets/table-bar/collapse.svg?component"; + +const props = { + /** 头部最左边的标题 */ + title: { + type: String, + default: "列表" + }, + /** 对于树形表格,如果想启用展开和折叠功能,传入当前表格的ref即可 */ + tableRef: { + type: Object as PropType + }, + /** 需要展示的列 */ + columns: { + type: Array as PropType, + default: () => [] + }, + isExpandAll: { + type: Boolean, + default: true + }, + tableKey: { + type: [String, Number] as PropType, + default: "0" + } +}; + +export default defineComponent({ + name: "PureTableBar", + props, + emits: ["refresh"], + setup(props, { emit, slots, attrs }) { + const size = ref("default"); + const loading = ref(false); + const checkAll = ref(true); + const isFullscreen = ref(false); + const isIndeterminate = ref(false); + const instance = getCurrentInstance()!; + const isExpandAll = ref(props.isExpandAll); + const filterColumns = cloneDeep(props?.columns).filter(column => + isBoolean(column?.hide) + ? !column.hide + : !(isFunction(column?.hide) && column?.hide()) + ); + let checkColumnList = getKeyList(cloneDeep(props?.columns), "label"); + const checkedColumns = ref(getKeyList(cloneDeep(filterColumns), "label")); + const dynamicColumns = ref(cloneDeep(props?.columns)); + + const getDropdownItemStyle = computed(() => { + return s => { + return { + background: + s === size.value ? useEpThemeStoreHook().epThemeColor : "", + color: s === size.value ? "#fff" : "var(--el-text-color-primary)" + }; + }; + }); + + const iconClass = computed(() => { + return [ + "text-black", + "dark:text-white", + "duration-100", + "hover:!text-primary", + "cursor-pointer", + "outline-none" + ]; + }); + + const topClass = computed(() => { + return [ + "flex", + "justify-between", + "pt-[3px]", + "px-[11px]", + "border-b-[1px]", + "border-solid", + "border-[#dcdfe6]", + "dark:border-[#303030]" + ]; + }); + + function onReFresh() { + loading.value = true; + emit("refresh"); + delay(500).then(() => (loading.value = false)); + } + + function onExpand() { + isExpandAll.value = !isExpandAll.value; + toggleRowExpansionAll(props.tableRef.data, isExpandAll.value); + } + + function toggleRowExpansionAll(data, isExpansion) { + data.forEach(item => { + props.tableRef.toggleRowExpansion(item, isExpansion); + if (item.children !== undefined && item.children !== null) { + toggleRowExpansionAll(item.children, isExpansion); + } + }); + } + + function handleCheckAllChange(val: boolean) { + checkedColumns.value = val ? checkColumnList : []; + isIndeterminate.value = false; + dynamicColumns.value.map(column => + val ? (column.hide = false) : (column.hide = true) + ); + } + + function handleCheckedColumnsChange(value: string[]) { + checkedColumns.value = value; + const checkedCount = value.length; + checkAll.value = checkedCount === checkColumnList.length; + isIndeterminate.value = + checkedCount > 0 && checkedCount < checkColumnList.length; + } + + function handleCheckColumnListChange(val: boolean, label: string) { + dynamicColumns.value.filter( + item => transformI18n(item.label) === transformI18n(label) + )[0].hide = !val; + } + + async function onReset() { + checkAll.value = true; + isIndeterminate.value = false; + dynamicColumns.value = cloneDeep(props?.columns); + checkColumnList = []; + checkColumnList = await getKeyList(cloneDeep(props?.columns), "label"); + checkedColumns.value = getKeyList(cloneDeep(filterColumns), "label"); + } + + const dropdown = { + dropdown: () => ( + + (size.value = "large")} + > + 宽松 + + (size.value = "default")} + > + 默认 + + (size.value = "small")} + > + 紧凑 + + + ) + }; + + /** 列展示拖拽排序 */ + const rowDrop = (event: { preventDefault: () => void }) => { + event.preventDefault(); + nextTick(() => { + const wrapper: HTMLElement = ( + instance?.proxy?.$refs[`GroupRef${unref(props.tableKey)}`] as any + ).$el.firstElementChild; + Sortable.create(wrapper, { + animation: 300, + handle: ".drag-btn", + onEnd: ({ newIndex, oldIndex, item }) => { + const targetThElem = item; + const wrapperElem = targetThElem.parentNode as HTMLElement; + const oldColumn = dynamicColumns.value[oldIndex]; + const newColumn = dynamicColumns.value[newIndex]; + if (oldColumn?.fixed || newColumn?.fixed) { + // 当前列存在fixed属性 则不可拖拽 + const oldThElem = wrapperElem.children[oldIndex] as HTMLElement; + if (newIndex > oldIndex) { + wrapperElem.insertBefore(targetThElem, oldThElem); + } else { + wrapperElem.insertBefore( + targetThElem, + oldThElem ? oldThElem.nextElementSibling : oldThElem + ); + } + return; + } + const currentRow = dynamicColumns.value.splice(oldIndex, 1)[0]; + dynamicColumns.value.splice(newIndex, 0, currentRow); + } + }); + }); + }; + + const isFixedColumn = (label: string) => { + return dynamicColumns.value.filter( + item => transformI18n(item.label) === transformI18n(label) + )[0].fixed + ? true + : false; + }; + + const rendTippyProps = (content: string) => { + // https://vue-tippy.netlify.app/props + return { + content, + offset: [0, 18], + duration: [300, 0], + followCursor: true, + hideOnClick: "toggle" + }; + }; + + const reference = { + reference: () => ( + + ) + }; + + return () => ( + <> +
+
+ {slots?.title ? ( + slots.title() + ) : ( +

{props.title}

+ )} +
+ {slots?.buttons ? ( +
{slots.buttons()}
+ ) : null} + {props.tableRef?.size ? ( + <> + onExpand()} + /> + + + ) : null} + onReFresh()} + /> + + + + + + + +
+ handleCheckAllChange(value)} + /> + onReset()}> + 重置 + +
+ +
+ + handleCheckedColumnsChange(value)} + > + + {checkColumnList.map((item, index) => { + return ( +
+ void; + }) => rowDrop(event)} + /> + + handleCheckColumnListChange(value, item) + } + > + + {transformI18n(item)} + + +
+ ); + })} +
+
+
+
+
+ + + (isFullscreen.value = !isFullscreen.value)} + /> +
+
+ {slots.default({ + size: size.value, + dynamicColumns: dynamicColumns.value + })} +
+ + ); + } +}); diff --git a/sop-admin/sop-admin-frontend/src/components/ReSegmented/index.ts b/sop-admin/sop-admin-frontend/src/components/ReSegmented/index.ts new file mode 100644 index 00000000..de4253c4 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReSegmented/index.ts @@ -0,0 +1,8 @@ +import reSegmented from "./src/index"; +import { withInstall } from "@pureadmin/utils"; + +/** 分段控制器组件 */ +export const ReSegmented = withInstall(reSegmented); + +export default ReSegmented; +export type { OptionsType } from "./src/type"; diff --git a/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/index.css b/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/index.css new file mode 100644 index 00000000..503bbe43 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/index.css @@ -0,0 +1,157 @@ +.pure-segmented { + --pure-control-padding-horizontal: 12px; + --pure-control-padding-horizontal-sm: 8px; + --pure-segmented-track-padding: 2px; + --pure-segmented-line-width: 1px; + + --pure-segmented-border-radius-small: 4px; + --pure-segmented-border-radius-base: 6px; + --pure-segmented-border-radius-large: 8px; + + box-sizing: border-box; + display: inline-block; + padding: var(--pure-segmented-track-padding); + font-size: var(--el-font-size-base); + color: rgba(0, 0, 0, 0.65); + background-color: rgb(0 0 0 / 4%); + border-radius: var(--pure-segmented-border-radius-base); +} + +.pure-segmented-block { + display: flex; +} + +.pure-segmented-block .pure-segmented-item { + flex: 1; + min-width: 0; +} + +.pure-segmented-block .pure-segmented-item > .pure-segmented-item-label > span { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +/* small */ +.pure-segmented.pure-segmented--small { + border-radius: var(--pure-segmented-border-radius-small); +} +.pure-segmented.pure-segmented--small .pure-segmented-item { + border-radius: var(--el-border-radius-small); +} +.pure-segmented.pure-segmented--small .pure-segmented-item > div { + min-height: calc( + var(--el-component-size-small) - var(--pure-segmented-track-padding) * 2 + ); + line-height: calc( + var(--el-component-size-small) - var(--pure-segmented-track-padding) * 2 + ); + padding: 0 + calc( + var(--pure-control-padding-horizontal-sm) - + var(--pure-segmented-line-width) + ); +} + +/* large */ +.pure-segmented.pure-segmented--large { + border-radius: var(--pure-segmented-border-radius-large); +} +.pure-segmented.pure-segmented--large .pure-segmented-item { + border-radius: calc( + var(--el-border-radius-base) + var(--el-border-radius-small) + ); +} +.pure-segmented.pure-segmented--large .pure-segmented-item > div { + min-height: calc( + var(--el-component-size-large) - var(--pure-segmented-track-padding) * 2 + ); + line-height: calc( + var(--el-component-size-large) - var(--pure-segmented-track-padding) * 2 + ); + padding: 0 + calc( + var(--pure-control-padding-horizontal) - var(--pure-segmented-line-width) + ); + font-size: var(--el-font-size-medium); +} + +/* default */ +.pure-segmented-item { + position: relative; + text-align: center; + cursor: pointer; + border-radius: var(--el-border-radius-base); + transition: all 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); +} +.pure-segmented .pure-segmented-item > div { + min-height: calc( + var(--el-component-size) - var(--pure-segmented-track-padding) * 2 + ); + line-height: calc( + var(--el-component-size) - var(--pure-segmented-track-padding) * 2 + ); + padding: 0 + calc( + var(--pure-control-padding-horizontal) - var(--pure-segmented-line-width) + ); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + transition: 0.1s; +} + +.pure-segmented-group { + position: relative; + display: flex; + align-items: stretch; + justify-items: flex-start; + width: 100%; +} + +.pure-segmented-item-selected { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + display: none; + width: 0; + height: 100%; + padding: 4px 0; + background-color: #fff; + border-radius: 4px; + box-shadow: + 0 2px 8px -2px rgb(0 0 0 / 5%), + 0 1px 4px -1px rgb(0 0 0 / 7%), + 0 0 1px rgb(0 0 0 / 7%); + transition: + transform 0.5s cubic-bezier(0.645, 0.045, 0.355, 1), + width 0.5s cubic-bezier(0.645, 0.045, 0.355, 1); + will-change: transform, width; +} + +.pure-segmented-item > input { + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + width: 0; + height: 0; + opacity: 0; + pointer-events: none; +} + +.pure-segmented-item-label { + display: flex; + align-items: center; + justify-content: center; +} + +.pure-segmented-item-icon svg { + width: 16px; + height: 16px; +} + +.pure-segmented-item-disabled { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} diff --git a/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/index.tsx b/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/index.tsx new file mode 100644 index 00000000..39580ed8 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/index.tsx @@ -0,0 +1,216 @@ +import "./index.css"; +import type { OptionsType } from "./type"; +import { useRenderIcon } from "@/components/ReIcon/src/hooks"; +import { + useDark, + isNumber, + isFunction, + useResizeObserver +} from "@pureadmin/utils"; +import { + type PropType, + h, + ref, + toRef, + watch, + nextTick, + defineComponent, + getCurrentInstance +} from "vue"; + +const props = { + options: { + type: Array, + default: () => [] + }, + /** 默认选中,按照第一个索引为 `0` 的模式,可选(`modelValue`只有传`number`类型时才为响应式) */ + modelValue: { + type: undefined, + require: false, + default: "0" + }, + /** 将宽度调整为父元素宽度 */ + block: { + type: Boolean, + default: false + }, + /** 控件尺寸 */ + size: { + type: String as PropType<"small" | "default" | "large"> + }, + /** 是否全局禁用,默认 `false` */ + disabled: { + type: Boolean, + default: false + }, + /** 当内容发生变化时,设置 `resize` 可使其自适应容器位置 */ + resize: { + type: Boolean, + default: false + } +}; + +export default defineComponent({ + name: "ReSegmented", + props, + emits: ["change", "update:modelValue"], + setup(props, { emit }) { + const width = ref(0); + const translateX = ref(0); + const { isDark } = useDark(); + const initStatus = ref(false); + const curMouseActive = ref(-1); + const segmentedItembg = ref(""); + const instance = getCurrentInstance()!; + const curIndex = isNumber(props.modelValue) + ? toRef(props, "modelValue") + : ref(0); + + function handleChange({ option, index }, event: Event) { + if (props.disabled || option.disabled) return; + event.preventDefault(); + isNumber(props.modelValue) + ? emit("update:modelValue", index) + : (curIndex.value = index); + segmentedItembg.value = ""; + emit("change", { index, option }); + } + + function handleMouseenter({ option, index }, event: Event) { + if (props.disabled) return; + event.preventDefault(); + curMouseActive.value = index; + if (option.disabled || curIndex.value === index) { + segmentedItembg.value = ""; + } else { + segmentedItembg.value = isDark.value + ? "#1f1f1f" + : "rgba(0, 0, 0, 0.06)"; + } + } + + function handleMouseleave(_, event: Event) { + if (props.disabled) return; + event.preventDefault(); + curMouseActive.value = -1; + } + + function handleInit(index = curIndex.value) { + nextTick(() => { + const curLabelRef = instance?.proxy?.$refs[`labelRef${index}`] as ElRef; + if (!curLabelRef) return; + width.value = curLabelRef.clientWidth; + translateX.value = curLabelRef.offsetLeft; + initStatus.value = true; + }); + } + + function handleResizeInit() { + useResizeObserver(".pure-segmented", () => { + nextTick(() => { + handleInit(curIndex.value); + }); + }); + } + + (props.block || props.resize) && handleResizeInit(); + + watch( + () => curIndex.value, + index => { + nextTick(() => { + handleInit(index); + }); + }, + { + immediate: true + } + ); + + watch(() => props.size, handleResizeInit, { + immediate: true + }); + + const rendLabel = () => { + return props.options.map((option, index) => { + return ( + + ); + }); + }; + + return () => ( +
+
+
+ {rendLabel()} +
+
+ ); + } +}); diff --git a/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/type.ts b/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/type.ts new file mode 100644 index 00000000..205e34dc --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReSegmented/src/type.ts @@ -0,0 +1,20 @@ +import type { VNode, Component } from "vue"; +import type { iconType } from "@/components/ReIcon/src/types.ts"; + +export interface OptionsType { + /** 文字 */ + label?: string | (() => VNode | Component); + /** + * @description 图标,采用平台内置的 `useRenderIcon` 函数渲染 + * @see {@link 用法参考 https://pure-admin.github.io/pure-admin-doc/pages/icon/#%E9%80%9A%E7%94%A8%E5%9B%BE%E6%A0%87-userendericon-hooks } + */ + icon?: string | Component; + /** 图标属性、样式配置 */ + iconAttrs?: iconType; + /** 值 */ + value?: any; + /** 是否禁用 */ + disabled?: boolean; + /** `tooltip` 提示 */ + tip?: string; +} diff --git a/sop-admin/sop-admin-frontend/src/components/ReText/index.ts b/sop-admin/sop-admin-frontend/src/components/ReText/index.ts new file mode 100644 index 00000000..62135660 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReText/index.ts @@ -0,0 +1,7 @@ +import reText from "./src/index.vue"; +import { withInstall } from "@pureadmin/utils"; + +/** 支持`Tooltip`提示的文本省略组件 */ +export const ReText = withInstall(reText); + +export default ReText; diff --git a/sop-admin/sop-admin-frontend/src/components/ReText/src/index.vue b/sop-admin/sop-admin-frontend/src/components/ReText/src/index.vue new file mode 100644 index 00000000..ecaebdbb --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/components/ReText/src/index.vue @@ -0,0 +1,66 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/components/breadcrumb/index.vue b/sop-admin/sop-admin-frontend/src/components/breadcrumb/index.vue deleted file mode 100644 index e4c9f139..00000000 --- a/sop-admin/sop-admin-frontend/src/components/breadcrumb/index.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/chart/index.vue b/sop-admin/sop-admin-frontend/src/components/chart/index.vue deleted file mode 100644 index 417c4c8b..00000000 --- a/sop-admin/sop-admin-frontend/src/components/chart/index.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/footer/index.vue b/sop-admin/sop-admin-frontend/src/components/footer/index.vue deleted file mode 100644 index 9a250ccc..00000000 --- a/sop-admin/sop-admin-frontend/src/components/footer/index.vue +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/global-setting/block.vue b/sop-admin/sop-admin-frontend/src/components/global-setting/block.vue deleted file mode 100644 index be43e8cc..00000000 --- a/sop-admin/sop-admin-frontend/src/components/global-setting/block.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/global-setting/form-wrapper.vue b/sop-admin/sop-admin-frontend/src/components/global-setting/form-wrapper.vue deleted file mode 100644 index fe3bbbe1..00000000 --- a/sop-admin/sop-admin-frontend/src/components/global-setting/form-wrapper.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - diff --git a/sop-admin/sop-admin-frontend/src/components/global-setting/index.vue b/sop-admin/sop-admin-frontend/src/components/global-setting/index.vue deleted file mode 100644 index 7874fbec..00000000 --- a/sop-admin/sop-admin-frontend/src/components/global-setting/index.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/index.ts b/sop-admin/sop-admin-frontend/src/components/index.ts deleted file mode 100644 index f418972f..00000000 --- a/sop-admin/sop-admin-frontend/src/components/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { App } from 'vue'; -import { use } from 'echarts/core'; -import { CanvasRenderer } from 'echarts/renderers'; -import { BarChart, LineChart, PieChart, RadarChart } from 'echarts/charts'; -import { - GridComponent, - TooltipComponent, - LegendComponent, - DataZoomComponent, - GraphicComponent, -} from 'echarts/components'; -import Chart from './chart/index.vue'; -import Breadcrumb from './breadcrumb/index.vue'; - -// Manually introduce ECharts modules to reduce packing size - -use([ - CanvasRenderer, - BarChart, - LineChart, - PieChart, - RadarChart, - GridComponent, - TooltipComponent, - LegendComponent, - DataZoomComponent, - GraphicComponent, -]); - -export default { - install(Vue: App) { - Vue.component('Chart', Chart); - Vue.component('Breadcrumb', Breadcrumb); - }, -}; diff --git a/sop-admin/sop-admin-frontend/src/components/menu/index.vue b/sop-admin/sop-admin-frontend/src/components/menu/index.vue deleted file mode 100644 index 0702897e..00000000 --- a/sop-admin/sop-admin-frontend/src/components/menu/index.vue +++ /dev/null @@ -1,160 +0,0 @@ - - - diff --git a/sop-admin/sop-admin-frontend/src/components/menu/use-menu-tree.ts b/sop-admin/sop-admin-frontend/src/components/menu/use-menu-tree.ts deleted file mode 100644 index ed548c5a..00000000 --- a/sop-admin/sop-admin-frontend/src/components/menu/use-menu-tree.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { computed } from 'vue'; -import { RouteRecordRaw, RouteRecordNormalized } from 'vue-router'; -import usePermission from '@/hooks/permission'; -import { useAppStore } from '@/store'; -import appClientMenus from '@/router/app-menus'; -import { cloneDeep } from 'lodash'; - -export default function useMenuTree() { - const permission = usePermission(); - const appStore = useAppStore(); - const appRoute = computed(() => { - if (appStore.menuFromServer) { - return appStore.appAsyncMenus; - } - return appClientMenus; - }); - const menuTree = computed(() => { - const copyRouter = cloneDeep(appRoute.value) as RouteRecordNormalized[]; - copyRouter.sort((a: RouteRecordNormalized, b: RouteRecordNormalized) => { - return (a.meta.order || 0) - (b.meta.order || 0); - }); - function travel(_routes: RouteRecordRaw[], layer: number) { - if (!_routes) return null; - - const collector: any = _routes.map((element) => { - // no access - if (!permission.accessRouter(element)) { - return null; - } - - // leaf node - if (element.meta?.hideChildrenInMenu || !element.children) { - element.children = []; - return element; - } - - // route filter hideInMenu true - element.children = element.children.filter( - (x) => x.meta?.hideInMenu !== true - ); - - // Associated child node - const subItem = travel(element.children, layer + 1); - - if (subItem.length) { - element.children = subItem; - return element; - } - // the else logic - if (layer > 1) { - element.children = subItem; - return element; - } - - if (element.meta?.hideInMenu === false) { - return element; - } - - return null; - }); - return collector.filter(Boolean); - } - return travel(copyRouter, 0); - }); - - return { - menuTree, - }; -} diff --git a/sop-admin/sop-admin-frontend/src/components/message-box/index.vue b/sop-admin/sop-admin-frontend/src/components/message-box/index.vue deleted file mode 100644 index c0a24f73..00000000 --- a/sop-admin/sop-admin-frontend/src/components/message-box/index.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/message-box/list.vue b/sop-admin/sop-admin-frontend/src/components/message-box/list.vue deleted file mode 100644 index b0c64885..00000000 --- a/sop-admin/sop-admin-frontend/src/components/message-box/list.vue +++ /dev/null @@ -1,149 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/message-box/locale/en-US.ts b/sop-admin/sop-admin-frontend/src/components/message-box/locale/en-US.ts deleted file mode 100644 index 8a0f68e0..00000000 --- a/sop-admin/sop-admin-frontend/src/components/message-box/locale/en-US.ts +++ /dev/null @@ -1,13 +0,0 @@ -export default { - 'messageBox.tab.title.message': 'Message', - 'messageBox.tab.title.notice': 'Notice', - 'messageBox.tab.title.todo': 'Todo', - 'messageBox.tab.button': 'empty', - 'messageBox.allRead': 'All Read', - 'messageBox.viewMore': 'View More', - 'messageBox.noContent': 'No Content', - 'messageBox.switchRoles': 'Switch Roles', - 'messageBox.userCenter': 'User Center', - 'messageBox.userSettings': 'User Settings', - 'messageBox.logout': 'Logout', -}; diff --git a/sop-admin/sop-admin-frontend/src/components/message-box/locale/zh-CN.ts b/sop-admin/sop-admin-frontend/src/components/message-box/locale/zh-CN.ts deleted file mode 100644 index cf3e6303..00000000 --- a/sop-admin/sop-admin-frontend/src/components/message-box/locale/zh-CN.ts +++ /dev/null @@ -1,13 +0,0 @@ -export default { - 'messageBox.tab.title.message': '消息', - 'messageBox.tab.title.notice': '通知', - 'messageBox.tab.title.todo': '待办', - 'messageBox.tab.button': '清空', - 'messageBox.allRead': '全部已读', - 'messageBox.viewMore': '查看更多', - 'messageBox.noContent': '暂无内容', - 'messageBox.switchRoles': '切换角色', - 'messageBox.userCenter': '用户中心', - 'messageBox.userSettings': '用户设置', - 'messageBox.logout': '登出登录', -}; diff --git a/sop-admin/sop-admin-frontend/src/components/navbar/index.vue b/sop-admin/sop-admin-frontend/src/components/navbar/index.vue deleted file mode 100644 index e37b6978..00000000 --- a/sop-admin/sop-admin-frontend/src/components/navbar/index.vue +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/tab-bar/index.vue b/sop-admin/sop-admin-frontend/src/components/tab-bar/index.vue deleted file mode 100644 index 609ba2a4..00000000 --- a/sop-admin/sop-admin-frontend/src/components/tab-bar/index.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/components/tab-bar/readme.md b/sop-admin/sop-admin-frontend/src/components/tab-bar/readme.md deleted file mode 100644 index cea5c934..00000000 --- a/sop-admin/sop-admin-frontend/src/components/tab-bar/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -## 组件说明 - -该组件非官方最终设计规范,以单独组件存在。 - -同时仅仅提供最基本的功能,后续进行优化及更改。 - - -## Component description - -The component unofficial final design specification exists as a separate component. - -At the same time, only the most basic functions are provided, and subsequent optimizations and changes will be made. \ No newline at end of file diff --git a/sop-admin/sop-admin-frontend/src/components/tab-bar/tab-item.vue b/sop-admin/sop-admin-frontend/src/components/tab-bar/tab-item.vue deleted file mode 100644 index bc2014d2..00000000 --- a/sop-admin/sop-admin-frontend/src/components/tab-bar/tab-item.vue +++ /dev/null @@ -1,200 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/config/index.ts b/sop-admin/sop-admin-frontend/src/config/index.ts new file mode 100644 index 00000000..c81d1c4d --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/config/index.ts @@ -0,0 +1,55 @@ +import axios from "axios"; +import type { App } from "vue"; + +let config: object = {}; +const { VITE_PUBLIC_PATH } = import.meta.env; + +const setConfig = (cfg?: unknown) => { + config = Object.assign(config, cfg); +}; + +const getConfig = (key?: string): PlatformConfigs => { + if (typeof key === "string") { + const arr = key.split("."); + if (arr && arr.length) { + let data = config; + arr.forEach(v => { + if (data && typeof data[v] !== "undefined") { + data = data[v]; + } else { + data = null; + } + }); + return data; + } + } + return config; +}; + +/** 获取项目动态全局配置 */ +export const getPlatformConfig = async (app: App): Promise => { + app.config.globalProperties.$config = getConfig(); + return axios({ + method: "get", + url: `${VITE_PUBLIC_PATH}platform-config.json` + }) + .then(({ data: config }) => { + let $config = app.config.globalProperties.$config; + // 自动注入系统配置 + if (app && $config && typeof config === "object") { + $config = Object.assign($config, config); + app.config.globalProperties.$config = $config; + // 设置全局配置 + setConfig($config); + } + return $config; + }) + .catch(() => { + throw "请在public文件夹下添加platform-config.json配置文件"; + }); +}; + +/** 本地响应式存储的命名空间 */ +const responsiveStorageNameSpace = () => getConfig().ResponsiveStorageNameSpace; + +export { getConfig, setConfig, responsiveStorageNameSpace }; diff --git a/sop-admin/sop-admin-frontend/src/config/settings.json b/sop-admin/sop-admin-frontend/src/config/settings.json deleted file mode 100644 index ef20b23c..00000000 --- a/sop-admin/sop-admin-frontend/src/config/settings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "theme": "light", - "colorWeak": false, - "navbar": true, - "menu": true, - "topMenu": false, - "hideMenu": false, - "menuCollapse": false, - "footer": true, - "themeColor": "#165DFF", - "menuWidth": 220, - "globalSettings": false, - "device": "desktop", - "tabBar": false, - "menuFromServer": false, - "serverMenu": [] -} diff --git a/sop-admin/sop-admin-frontend/src/directive/index.ts b/sop-admin/sop-admin-frontend/src/directive/index.ts deleted file mode 100644 index 85c567f8..00000000 --- a/sop-admin/sop-admin-frontend/src/directive/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { App } from 'vue'; -import permission from './permission'; - -export default { - install(Vue: App) { - Vue.directive('permission', permission); - }, -}; diff --git a/sop-admin/sop-admin-frontend/src/directive/permission/index.ts b/sop-admin/sop-admin-frontend/src/directive/permission/index.ts deleted file mode 100644 index 4968e984..00000000 --- a/sop-admin/sop-admin-frontend/src/directive/permission/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { DirectiveBinding } from 'vue'; -import { useUserStore } from '@/store'; - -function checkPermission(el: HTMLElement, binding: DirectiveBinding) { - const { value } = binding; - const userStore = useUserStore(); - const { role } = userStore; - - if (Array.isArray(value)) { - if (value.length > 0) { - const permissionValues = value; - - const hasPermission = permissionValues.includes(role); - if (!hasPermission && el.parentNode) { - el.parentNode.removeChild(el); - } - } - } else { - throw new Error(`need roles! Like v-permission="['admin','user']"`); - } -} - -export default { - mounted(el: HTMLElement, binding: DirectiveBinding) { - checkPermission(el, binding); - }, - updated(el: HTMLElement, binding: DirectiveBinding) { - checkPermission(el, binding); - }, -}; diff --git a/sop-admin/sop-admin-frontend/src/directives/auth/index.ts b/sop-admin/sop-admin-frontend/src/directives/auth/index.ts new file mode 100644 index 00000000..2fc64904 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/directives/auth/index.ts @@ -0,0 +1,15 @@ +import { hasAuth } from "@/router/utils"; +import type { Directive, DirectiveBinding } from "vue"; + +export const auth: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding>) { + const { value } = binding; + if (value) { + !hasAuth(value) && el.parentNode?.removeChild(el); + } else { + throw new Error( + "[Directive: auth]: need auths! Like v-auth=\"['btn.add','btn.edit']\"" + ); + } + } +}; diff --git a/sop-admin/sop-admin-frontend/src/directives/copy/index.ts b/sop-admin/sop-admin-frontend/src/directives/copy/index.ts new file mode 100644 index 00000000..b71fa190 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/directives/copy/index.ts @@ -0,0 +1,33 @@ +import { message } from "@/utils/message"; +import { useEventListener } from "@vueuse/core"; +import { copyTextToClipboard } from "@pureadmin/utils"; +import type { Directive, DirectiveBinding } from "vue"; + +export interface CopyEl extends HTMLElement { + copyValue: string; +} + +/** 文本复制指令(默认双击复制) */ +export const copy: Directive = { + mounted(el: CopyEl, binding: DirectiveBinding) { + const { value } = binding; + if (value) { + el.copyValue = value; + const arg = binding.arg ?? "dblclick"; + // Register using addEventListener on mounted, and removeEventListener automatically on unmounted + useEventListener(el, arg, () => { + const success = copyTextToClipboard(el.copyValue); + success + ? message("复制成功", { type: "success" }) + : message("复制失败", { type: "error" }); + }); + } else { + throw new Error( + '[Directive: copy]: need value! Like v-copy="modelValue"' + ); + } + }, + updated(el: CopyEl, binding: DirectiveBinding) { + el.copyValue = binding.value; + } +}; diff --git a/sop-admin/sop-admin-frontend/src/directives/index.ts b/sop-admin/sop-admin-frontend/src/directives/index.ts new file mode 100644 index 00000000..d01fe714 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/directives/index.ts @@ -0,0 +1,6 @@ +export * from "./auth"; +export * from "./copy"; +export * from "./longpress"; +export * from "./optimize"; +export * from "./perms"; +export * from "./ripple"; diff --git a/sop-admin/sop-admin-frontend/src/directives/longpress/index.ts b/sop-admin/sop-admin-frontend/src/directives/longpress/index.ts new file mode 100644 index 00000000..4eec6a22 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/directives/longpress/index.ts @@ -0,0 +1,63 @@ +import { useEventListener } from "@vueuse/core"; +import type { Directive, DirectiveBinding } from "vue"; +import { subBefore, subAfter, isFunction } from "@pureadmin/utils"; + +export const longpress: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + const cb = binding.value; + if (cb && isFunction(cb)) { + let timer = null; + let interTimer = null; + let num = 500; + let interNum = null; + const isInter = binding?.arg?.includes(":") ?? false; + + if (isInter) { + num = Number(subBefore(binding.arg, ":")); + interNum = Number(subAfter(binding.arg, ":")); + } else if (binding.arg) { + num = Number(binding.arg); + } + + const clear = () => { + if (timer) { + clearTimeout(timer); + timer = null; + } + if (interTimer) { + clearInterval(interTimer); + interTimer = null; + } + }; + + const onDownInter = (ev: PointerEvent) => { + ev.preventDefault(); + if (interTimer === null) { + interTimer = setInterval(() => cb(), interNum); + } + }; + + const onDown = (ev: PointerEvent) => { + clear(); + ev.preventDefault(); + if (timer === null) { + timer = isInter + ? setTimeout(() => { + cb(); + onDownInter(ev); + }, num) + : setTimeout(() => cb(), num); + } + }; + + // Register using addEventListener on mounted, and removeEventListener automatically on unmounted + useEventListener(el, "pointerdown", onDown); + useEventListener(el, "pointerup", clear); + useEventListener(el, "pointerleave", clear); + } else { + throw new Error( + '[Directive: longpress]: need callback and callback must be a function! Like v-longpress="callback"' + ); + } + } +}; diff --git a/sop-admin/sop-admin-frontend/src/directives/optimize/index.ts b/sop-admin/sop-admin-frontend/src/directives/optimize/index.ts new file mode 100644 index 00000000..7b92538d --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/directives/optimize/index.ts @@ -0,0 +1,68 @@ +import { + isArray, + throttle, + debounce, + isObject, + isFunction +} from "@pureadmin/utils"; +import { useEventListener } from "@vueuse/core"; +import type { Directive, DirectiveBinding } from "vue"; + +export interface OptimizeOptions { + /** 事件名 */ + event: string; + /** 事件触发的方法 */ + fn: (...params: any) => any; + /** 是否立即执行 */ + immediate?: boolean; + /** 防抖或节流的延迟时间(防抖默认:`200`毫秒、节流默认:`1000`毫秒) */ + timeout?: number; + /** 传递的参数 */ + params?: any; +} + +/** 防抖(v-optimize或v-optimize:debounce)、节流(v-optimize:throttle)指令 */ +export const optimize: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + const { value } = binding; + const optimizeType = binding.arg ?? "debounce"; + const type = ["debounce", "throttle"].find(t => t === optimizeType); + if (type) { + if (value && value.event && isFunction(value.fn)) { + let params = value?.params; + if (params) { + if (isArray(params) || isObject(params)) { + params = isObject(params) ? Array.of(params) : params; + } else { + throw new Error( + "[Directive: optimize]: `params` must be an array or object" + ); + } + } + // Register using addEventListener on mounted, and removeEventListener automatically on unmounted + useEventListener( + el, + value.event, + type === "debounce" + ? debounce( + params ? () => value.fn(...params) : value.fn, + value?.timeout ?? 200, + value?.immediate ?? false + ) + : throttle( + params ? () => value.fn(...params) : value.fn, + value?.timeout ?? 1000 + ) + ); + } else { + throw new Error( + "[Directive: optimize]: `event` and `fn` are required, and `fn` must be a function" + ); + } + } else { + throw new Error( + "[Directive: optimize]: only `debounce` and `throttle` are supported" + ); + } + } +}; diff --git a/sop-admin/sop-admin-frontend/src/directives/perms/index.ts b/sop-admin/sop-admin-frontend/src/directives/perms/index.ts new file mode 100644 index 00000000..073c918b --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/directives/perms/index.ts @@ -0,0 +1,15 @@ +import { hasPerms } from "@/utils/auth"; +import type { Directive, DirectiveBinding } from "vue"; + +export const perms: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding>) { + const { value } = binding; + if (value) { + !hasPerms(value) && el.parentNode?.removeChild(el); + } else { + throw new Error( + "[Directive: perms]: need perms! Like v-perms=\"['btn.add','btn.edit']\"" + ); + } + } +}; diff --git a/sop-admin/sop-admin-frontend/src/directives/ripple/index.scss b/sop-admin/sop-admin-frontend/src/directives/ripple/index.scss new file mode 100644 index 00000000..061c82c9 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/directives/ripple/index.scss @@ -0,0 +1,48 @@ +/* stylelint-disable-next-line scss/dollar-variable-colon-space-after */ +$ripple-animation-transition-in: + transform 0.4s cubic-bezier(0, 0, 0.2, 1), + opacity 0.2s cubic-bezier(0, 0, 0.2, 1) !default; +$ripple-animation-transition-out: opacity 0.5s cubic-bezier(0, 0, 0.2, 1) !default; +$ripple-animation-visible-opacity: 0.25 !default; + +.v-ripple { + &__container { + position: absolute; + top: 0; + left: 0; + z-index: 0; + width: 100%; + height: 100%; + overflow: hidden; + pointer-events: none; + border-radius: inherit; + contain: strict; + } + + &__animation { + position: absolute; + top: 0; + left: 0; + overflow: hidden; + pointer-events: none; + background: currentcolor; + border-radius: 50%; + opacity: 0; + will-change: transform, opacity; + + &--enter { + opacity: 0; + transition: none; + } + + &--in { + opacity: $ripple-animation-visible-opacity; + transition: $ripple-animation-transition-in; + } + + &--out { + opacity: 0; + transition: $ripple-animation-transition-out; + } + } +} diff --git a/sop-admin/sop-admin-frontend/src/directives/ripple/index.ts b/sop-admin/sop-admin-frontend/src/directives/ripple/index.ts new file mode 100644 index 00000000..3fd94d9c --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/directives/ripple/index.ts @@ -0,0 +1,229 @@ +import "./index.scss"; +import { isObject } from "@pureadmin/utils"; +import type { Directive, DirectiveBinding } from "vue"; + +export interface RippleOptions { + /** 自定义`ripple`颜色,支持`tailwindcss` */ + class?: string; + /** 是否从中心扩散 */ + center?: boolean; + circle?: boolean; +} + +export interface RippleDirectiveBinding + extends Omit { + value?: boolean | { class: string }; + modifiers: { + center?: boolean; + circle?: boolean; + }; +} + +function transform(el: HTMLElement, value: string) { + el.style.transform = value; + el.style.webkitTransform = value; +} + +const calculate = ( + e: PointerEvent, + el: HTMLElement, + value: RippleOptions = {} +) => { + const offset = el.getBoundingClientRect(); + + // 获取点击位置距离 el 的垂直和水平距离 + let localX = e.clientX - offset.left; + let localY = e.clientY - offset.top; + + let radius = 0; + let scale = 0.3; + // 计算点击位置到 el 顶点最远距离,即为圆的最大半径(勾股定理) + if (el._ripple?.circle) { + scale = 0.15; + radius = el.clientWidth / 2; + radius = value.center + ? radius + : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4; + } else { + radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2; + } + + // 中心点坐标 + const centerX = `${(el.clientWidth - radius * 2) / 2}px`; + const centerY = `${(el.clientHeight - radius * 2) / 2}px`; + + // 点击位置坐标 + const x = value.center ? centerX : `${localX - radius}px`; + const y = value.center ? centerY : `${localY - radius}px`; + + return { radius, scale, x, y, centerX, centerY }; +}; + +const ripples = { + show(e: PointerEvent, el: HTMLElement, value: RippleOptions = {}) { + if (!el?._ripple?.enabled) { + return; + } + + // 创建 ripple 元素和 ripple 父元素 + const container = document.createElement("span"); + const animation = document.createElement("span"); + + container.appendChild(animation); + container.className = "v-ripple__container"; + + if (value.class) { + container.className += ` ${value.class}`; + } + + const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value); + + // ripple 圆大小 + const size = `${radius * 2}px`; + + animation.className = "v-ripple__animation"; + animation.style.width = size; + animation.style.height = size; + + el.appendChild(container); + + // 获取目标元素样式表 + const computed = window.getComputedStyle(el); + // 防止 position 被覆盖导致 ripple 位置有问题 + if (computed && computed.position === "static") { + el.style.position = "relative"; + el.dataset.previousPosition = "static"; + } + + animation.classList.add("v-ripple__animation--enter"); + animation.classList.add("v-ripple__animation--visible"); + transform( + animation, + `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})` + ); + animation.dataset.activated = String(performance.now()); + + setTimeout(() => { + animation.classList.remove("v-ripple__animation--enter"); + animation.classList.add("v-ripple__animation--in"); + transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`); + }, 0); + }, + + hide(el: HTMLElement | null) { + if (!el?._ripple?.enabled) return; + + const ripples = el.getElementsByClassName("v-ripple__animation"); + + if (ripples.length === 0) return; + const animation = ripples[ripples.length - 1] as HTMLElement; + + if (animation.dataset.isHiding) return; + else animation.dataset.isHiding = "true"; + + const diff = performance.now() - Number(animation.dataset.activated); + const delay = Math.max(250 - diff, 0); + + setTimeout(() => { + animation.classList.remove("v-ripple__animation--in"); + animation.classList.add("v-ripple__animation--out"); + + setTimeout(() => { + const ripples = el.getElementsByClassName("v-ripple__animation"); + if (ripples.length === 1 && el.dataset.previousPosition) { + el.style.position = el.dataset.previousPosition; + delete el.dataset.previousPosition; + } + + if (animation.parentNode?.parentNode === el) + el.removeChild(animation.parentNode); + }, 300); + }, delay); + } +}; + +function isRippleEnabled(value: any): value is true { + return typeof value === "undefined" || !!value; +} + +function rippleShow(e: PointerEvent) { + const value: RippleOptions = {}; + const element = e.currentTarget as HTMLElement | undefined; + + if (!element?._ripple || element._ripple.touched) return; + + value.center = element._ripple.centered; + if (element._ripple.class) { + value.class = element._ripple.class; + } + + ripples.show(e, element, value); +} + +function rippleHide(e: Event) { + const element = e.currentTarget as HTMLElement | null; + if (!element?._ripple) return; + + window.setTimeout(() => { + if (element._ripple) { + element._ripple.touched = false; + } + }); + ripples.hide(element); +} + +function updateRipple( + el: HTMLElement, + binding: RippleDirectiveBinding, + wasEnabled: boolean +) { + const { value, modifiers } = binding; + const enabled = isRippleEnabled(value); + if (!enabled) { + ripples.hide(el); + } + + el._ripple = el._ripple ?? {}; + el._ripple.enabled = enabled; + el._ripple.centered = modifiers.center; + el._ripple.circle = modifiers.circle; + if (isObject(value) && value.class) { + el._ripple.class = value.class; + } + + if (enabled && !wasEnabled) { + el.addEventListener("pointerdown", rippleShow); + el.addEventListener("pointerup", rippleHide); + } else if (!enabled && wasEnabled) { + removeListeners(el); + } +} + +function removeListeners(el: HTMLElement) { + el.removeEventListener("pointerdown", rippleShow); + el.removeEventListener("pointerup", rippleHide); +} + +function mounted(el: HTMLElement, binding: RippleDirectiveBinding) { + updateRipple(el, binding, false); +} + +function unmounted(el: HTMLElement) { + delete el._ripple; + removeListeners(el); +} + +function updated(el: HTMLElement, binding: RippleDirectiveBinding) { + if (binding.value === binding.oldValue) { + return; + } + + const wasEnabled = isRippleEnabled(binding.oldValue); + updateRipple(el, binding, wasEnabled); +} + +export const Ripple: Directive = { + mounted, + unmounted, + updated +}; diff --git a/sop-admin/sop-admin-frontend/src/env.d.ts b/sop-admin/sop-admin-frontend/src/env.d.ts deleted file mode 100644 index 6b7fc7d7..00000000 --- a/sop-admin/sop-admin-frontend/src/env.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/// - -declare module '*.vue' { - import { DefineComponent } from 'vue'; - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types - const component: DefineComponent<{}, {}, any>; - export default component; -} -interface ImportMetaEnv { - readonly VITE_API_BASE_URL: string; -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/chart-option.ts b/sop-admin/sop-admin-frontend/src/hooks/chart-option.ts deleted file mode 100644 index 13c39260..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/chart-option.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { computed } from 'vue'; -import { EChartsOption } from 'echarts'; -import { useAppStore } from '@/store'; - -// for code hints -// import { SeriesOption } from 'echarts'; -// Because there are so many configuration items, this provides a relatively convenient code hint. -// When using vue, pay attention to the reactive issues. It is necessary to ensure that corresponding functions can be triggered, TypeScript does not report errors, and code writing is convenient. -interface optionsFn { - (isDark: boolean): EChartsOption; -} - -export default function useChartOption(sourceOption: optionsFn) { - const appStore = useAppStore(); - const isDark = computed(() => { - return appStore.theme === 'dark'; - }); - // echarts support https://echarts.apache.org/zh/theme-builder.html - // It's not used here - // TODO echarts themes - const chartOption = computed(() => { - return sourceOption(isDark.value); - }); - return { - chartOption, - }; -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/loading.ts b/sop-admin/sop-admin-frontend/src/hooks/loading.ts deleted file mode 100644 index a6f2768a..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/loading.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ref } from 'vue'; - -export default function useLoading(initValue = false) { - const loading = ref(initValue); - const setLoading = (value: boolean) => { - loading.value = value; - }; - const toggle = () => { - loading.value = !loading.value; - }; - return { - loading, - setLoading, - toggle, - }; -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/locale.ts b/sop-admin/sop-admin-frontend/src/hooks/locale.ts deleted file mode 100644 index afe4bf76..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/locale.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { computed } from 'vue'; -import { useI18n } from 'vue-i18n'; -import { Message } from '@arco-design/web-vue'; - -export default function useLocale() { - const i18 = useI18n(); - const currentLocale = computed(() => { - return i18.locale.value; - }); - const changeLocale = (value: string) => { - if (i18.locale.value === value) { - return; - } - i18.locale.value = value; - localStorage.setItem('arco-locale', value); - Message.success(i18.t('navbar.action.locale')); - }; - return { - currentLocale, - changeLocale, - }; -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/permission.ts b/sop-admin/sop-admin-frontend/src/hooks/permission.ts deleted file mode 100644 index de8cdc4f..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/permission.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router'; -import { useUserStore } from '@/store'; - -export default function usePermission() { - const userStore = useUserStore(); - return { - accessRouter(route: RouteLocationNormalized | RouteRecordRaw) { - return ( - !route.meta?.requiresAuth || - !route.meta?.roles || - route.meta?.roles?.includes('*') || - route.meta?.roles?.includes(userStore.role) - ); - }, - findFirstPermissionRoute(_routers: any, role = 'admin') { - const cloneRouters = [..._routers]; - while (cloneRouters.length) { - const firstElement = cloneRouters.shift(); - if ( - firstElement?.meta?.roles?.find((el: string[]) => { - return el.includes('*') || el.includes(role); - }) - ) - return { name: firstElement.name }; - if (firstElement?.children) { - cloneRouters.push(...firstElement.children); - } - } - return null; - }, - // You can add any rules you want - }; -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/request.ts b/sop-admin/sop-admin-frontend/src/hooks/request.ts deleted file mode 100644 index 7b853362..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/request.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ref, UnwrapRef } from 'vue'; -import { AxiosResponse } from 'axios'; -import { HttpResponse } from '@/api/interceptor'; -import useLoading from './loading'; - -// use to fetch list -// Don't use async function. It doesn't work in async function. -// Use the bind function to add parameters -// example: useRequest(api.bind(null, {})) - -export default function useRequest( - api: () => Promise>, - defaultValue = [] as unknown as T, - isLoading = true -) { - const { loading, setLoading } = useLoading(isLoading); - const response = ref(defaultValue); - api() - .then((res) => { - response.value = res.data as unknown as UnwrapRef; - }) - .finally(() => { - setLoading(false); - }); - return { loading, response }; -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/responsive.ts b/sop-admin/sop-admin-frontend/src/hooks/responsive.ts deleted file mode 100644 index eefee8e2..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/responsive.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { onMounted, onBeforeMount, onBeforeUnmount } from 'vue'; -import { useDebounceFn } from '@vueuse/core'; -import { useAppStore } from '@/store'; -import { addEventListen, removeEventListen } from '@/utils/event'; - -const WIDTH = 992; // https://arco.design/vue/component/grid#responsivevalue - -function queryDevice() { - const rect = document.body.getBoundingClientRect(); - return rect.width - 1 < WIDTH; -} - -export default function useResponsive(immediate?: boolean) { - const appStore = useAppStore(); - function resizeHandler() { - if (!document.hidden) { - const isMobile = queryDevice(); - appStore.toggleDevice(isMobile ? 'mobile' : 'desktop'); - appStore.toggleMenu(isMobile); - } - } - const debounceFn = useDebounceFn(resizeHandler, 100); - onMounted(() => { - if (immediate) debounceFn(); - }); - onBeforeMount(() => { - addEventListen(window, 'resize', debounceFn); - }); - onBeforeUnmount(() => { - removeEventListen(window, 'resize', debounceFn); - }); -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/themes.ts b/sop-admin/sop-admin-frontend/src/hooks/themes.ts deleted file mode 100644 index 7ce85b78..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/themes.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { computed } from 'vue'; -import { useAppStore } from '@/store'; - -export default function useThemes() { - const appStore = useAppStore(); - const isDark = computed(() => { - return appStore.theme === 'dark'; - }); - return { - isDark, - }; -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/user.ts b/sop-admin/sop-admin-frontend/src/hooks/user.ts deleted file mode 100644 index 107358cb..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/user.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { useRouter } from 'vue-router'; -import { Message } from '@arco-design/web-vue'; - -import { useUserStore } from '@/store'; - -export default function useUser() { - const router = useRouter(); - const userStore = useUserStore(); - const logout = async (logoutTo?: string) => { - await userStore.logout(); - const currentRoute = router.currentRoute.value; - Message.success('登出成功'); - router.push({ - name: logoutTo && typeof logoutTo === 'string' ? logoutTo : 'login', - query: { - ...router.currentRoute.value.query, - redirect: currentRoute.name as string, - }, - }); - }; - return { - logout, - }; -} diff --git a/sop-admin/sop-admin-frontend/src/hooks/visible.ts b/sop-admin/sop-admin-frontend/src/hooks/visible.ts deleted file mode 100644 index 211f90da..00000000 --- a/sop-admin/sop-admin-frontend/src/hooks/visible.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ref } from 'vue'; - -export default function useVisible(initValue = false) { - const visible = ref(initValue); - const setVisible = (value: boolean) => { - visible.value = value; - }; - const toggle = () => { - visible.value = !visible.value; - }; - return { - visible, - setVisible, - toggle, - }; -} diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-content/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-content/index.vue new file mode 100644 index 00000000..5810d665 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-content/index.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-footer/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-footer/index.vue new file mode 100644 index 00000000..77631343 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-footer/index.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-frame/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-frame/index.vue new file mode 100644 index 00000000..b2bb9d51 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-frame/index.vue @@ -0,0 +1,79 @@ + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-navbar/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-navbar/index.vue new file mode 100644 index 00000000..e9030edf --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-navbar/index.vue @@ -0,0 +1,191 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/components/NoticeItem.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/components/NoticeItem.vue new file mode 100644 index 00000000..823d9cd8 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/components/NoticeItem.vue @@ -0,0 +1,177 @@ + + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/components/NoticeList.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/components/NoticeList.vue new file mode 100644 index 00000000..7bc9922c --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/components/NoticeList.vue @@ -0,0 +1,24 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/data.ts b/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/data.ts new file mode 100644 index 00000000..bd49f5e5 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/data.ts @@ -0,0 +1,99 @@ +import { $t } from "@/plugins/i18n"; + +export interface ListItem { + avatar: string; + title: string; + datetime: string; + type: string; + description: string; + status?: "primary" | "success" | "warning" | "info" | "danger"; + extra?: string; +} + +export interface TabItem { + key: string; + name: string; + list: ListItem[]; + emptyText: string; +} + +export const noticesData: TabItem[] = [ + { + key: "1", + name: $t("status.pureNotify"), + list: [], + emptyText: $t("status.pureNoNotify") + }, + { + key: "2", + name: $t("status.pureMessage"), + list: [ + { + avatar: "https://xiaoxian521.github.io/hyperlink/svg/smile1.svg", + title: "小铭 评论了你", + description: "诚在于心,信在于行,诚信在于心行合一。", + datetime: "今天", + type: "2" + }, + { + avatar: "https://xiaoxian521.github.io/hyperlink/svg/smile2.svg", + title: "李白 回复了你", + description: "长风破浪会有时,直挂云帆济沧海。", + datetime: "昨天", + type: "2" + }, + { + avatar: "https://xiaoxian521.github.io/hyperlink/svg/smile5.svg", + title: "标题", + description: + "请将鼠标移动到此处,以便测试超长的消息在此处将如何处理。本例中设置的描述最大行数为2,超过2行的描述内容将被省略并且可以通过tooltip查看完整内容", + datetime: "时间", + type: "2" + } + ], + emptyText: $t("status.pureNoMessage") + }, + { + key: "3", + name: $t("status.pureTodo"), + list: [ + { + avatar: "", + title: "第三方紧急代码变更", + description: + "小林提交于 2024-05-10,需在 2024-05-11 前完成代码变更任务", + datetime: "", + extra: "马上到期", + status: "danger", + type: "3" + }, + { + avatar: "", + title: "版本发布", + description: "指派小铭于 2024-06-18 前完成更新并发布", + datetime: "", + extra: "已耗时 8 天", + status: "warning", + type: "3" + }, + { + avatar: "", + title: "新功能开发", + description: "开发多租户管理", + datetime: "", + extra: "进行中", + type: "3" + }, + { + avatar: "", + title: "任务名称", + description: "任务需要在 2030-10-30 10:00 前启动", + datetime: "", + extra: "未开始", + status: "info", + type: "3" + } + ], + emptyText: $t("status.pureNoTodo") + } +]; diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/index.vue new file mode 100644 index 00000000..d85cf0f7 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-notice/index.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-panel/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-panel/index.vue new file mode 100644 index 00000000..fb4fb20a --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-panel/index.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchFooter.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchFooter.vue new file mode 100644 index 00000000..d8350d0f --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchFooter.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchHistory.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchHistory.vue new file mode 100644 index 00000000..87d5488c --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchHistory.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchHistoryItem.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchHistoryItem.vue new file mode 100644 index 00000000..0ee9f194 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchHistoryItem.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchModal.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchModal.vue new file mode 100644 index 00000000..48fb9cf7 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchModal.vue @@ -0,0 +1,338 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchResult.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchResult.vue new file mode 100644 index 00000000..12507b15 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/components/SearchResult.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-search/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/index.vue new file mode 100644 index 00000000..123d6a66 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/index.vue @@ -0,0 +1,21 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-search/types.ts b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/types.ts new file mode 100644 index 00000000..a39adbd4 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-search/types.ts @@ -0,0 +1,20 @@ +interface optionsItem { + path: string; + type: "history" | "collect"; + meta: { + icon?: string; + title?: string; + }; +} + +interface dragItem { + oldIndex: number; + newIndex: number; +} + +interface Props { + value: string; + options: Array; +} + +export type { optionsItem, dragItem, Props }; diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-setting/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-setting/index.vue new file mode 100644 index 00000000..18aacf25 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-setting/index.vue @@ -0,0 +1,642 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavHorizontal.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavHorizontal.vue new file mode 100644 index 00000000..e2e81d06 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavHorizontal.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavMix.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavMix.vue new file mode 100644 index 00000000..fc50ede5 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavMix.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavVertical.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavVertical.vue new file mode 100644 index 00000000..0e9fa129 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/NavVertical.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarBreadCrumb.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarBreadCrumb.vue new file mode 100644 index 00000000..417b8394 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarBreadCrumb.vue @@ -0,0 +1,121 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarCenterCollapse.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarCenterCollapse.vue new file mode 100644 index 00000000..447fa500 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarCenterCollapse.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarExtraIcon.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarExtraIcon.vue new file mode 100644 index 00000000..7cad16e6 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarExtraIcon.vue @@ -0,0 +1,20 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarFullScreen.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarFullScreen.vue new file mode 100644 index 00000000..4d38bd0c --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarFullScreen.vue @@ -0,0 +1,30 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarItem.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarItem.vue new file mode 100644 index 00000000..cffa6771 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarItem.vue @@ -0,0 +1,223 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLeftCollapse.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLeftCollapse.vue new file mode 100644 index 00000000..c007d3b8 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLeftCollapse.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLinkItem.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLinkItem.vue new file mode 100644 index 00000000..8911c122 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLinkItem.vue @@ -0,0 +1,32 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLogo.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLogo.vue new file mode 100644 index 00000000..0441f52f --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarLogo.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarTopCollapse.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarTopCollapse.vue new file mode 100644 index 00000000..c2f1b5ad --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-sidebar/components/SidebarTopCollapse.vue @@ -0,0 +1,38 @@ + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/components/TagChrome.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/components/TagChrome.vue new file mode 100644 index 00000000..137365b4 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/components/TagChrome.vue @@ -0,0 +1,33 @@ + diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/index.scss b/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/index.scss new file mode 100644 index 00000000..b8812169 --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/index.scss @@ -0,0 +1,371 @@ +@keyframes schedule-in-width { + from { + width: 0; + } + + to { + width: 100%; + } +} + +@keyframes schedule-out-width { + from { + width: 100%; + } + + to { + width: 0; + } +} + +.tags-view { + position: relative; + display: flex; + align-items: center; + width: 100%; + font-size: 14px; + color: var(--el-text-color-primary); + background: #fff; + box-shadow: 0 0 1px #888; + + .scroll-item { + position: relative; + display: inline-block; + height: 34px; + padding-left: 6px; + line-height: 34px; + cursor: pointer; + transition: all 0.4s; + + &:not(:first-child) { + padding-right: 24px; + } + + &.chrome-item { + padding-right: 0; + padding-left: 0; + margin-right: -18px; + box-shadow: none; + } + + .el-icon-close { + position: absolute; + top: 50%; + display: inline-flex; + align-items: center; + justify-content: center; + width: 18px; + height: 18px; + color: var(--el-color-primary); + cursor: pointer; + border-radius: 4px; + transition: + background-color 0.12s, + color 0.12s; + transform: translate(0, -50%); + + &:hover { + color: rgb(0 0 0 / 88%) !important; + background-color: rgb(0 0 0 / 6%); + } + } + } + + .tag-title { + padding: 0 4px; + color: var(--el-text-color-primary); + text-decoration: none; + } + + .scroll-container { + position: relative; + flex: 1; + overflow: hidden; + white-space: nowrap; + + &.chrome-scroll-container { + padding-top: 4px; + + .fixed-tag { + padding: 0 !important; + } + } + + .tab { + position: relative; + float: left; + overflow: visible; + white-space: nowrap; + list-style: none; + + .scroll-item { + transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); + + &:nth-child(1) { + padding: 0 12px; + } + + &.chrome-item { + &:nth-child(1) { + padding: 0; + } + } + } + + .fixed-tag { + padding: 0 12px; + } + } + } + + /* 右键菜单 */ + .contextmenu { + position: absolute; + padding: 5px 0; + margin: 0; + font-size: 13px; + font-weight: normal; + color: var(--el-text-color-primary); + white-space: nowrap; + list-style-type: none; + background: #fff; + border-radius: 4px; + outline: 0; + box-shadow: 0 2px 8px rgb(0 0 0 / 15%); + + li { + display: flex; + align-items: center; + width: 100%; + padding: 7px 12px; + margin: 0; + cursor: pointer; + + &:hover { + color: var(--el-color-primary); + } + + svg { + display: block; + margin-right: 0.5em; + } + } + } +} + +.el-dropdown-menu { + li { + display: flex; + align-items: center; + width: 100%; + margin: 0; + cursor: pointer; + + svg { + display: block; + margin-right: 0.5em; + } + } +} + +.el-dropdown-menu__item:not(.is-disabled):hover { + color: #606266; + background: #f0f0f0; +} + +:deep(.el-dropdown-menu__item) i { + margin-right: 10px; +} + +:deep(.el-dropdown-menu__item--divided) { + margin: 1px 0; +} + +.el-dropdown-menu__item--divided::before { + margin: 0; +} + +.el-dropdown-menu__item.is-disabled { + cursor: not-allowed; +} + +.scroll-item.is-active { + position: relative; + color: #fff; + box-shadow: 0 0 0.7px #888; + + .chrome-tab { + z-index: 10; + } + + .chrome-tab__bg { + color: var(--el-color-primary-light-9) !important; + } + + .tag-title { + color: var(--el-color-primary) !important; + } + + .chrome-close-btn { + color: var(--el-color-primary); + + &:hover { + background-color: var(--el-color-primary); + } + } + + .chrome-tab-divider { + opacity: 0; + } +} + +.arrow-left, +.arrow-right, +.arrow-down { + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 34px; + color: var(--el-text-color-primary); + + svg { + width: 20px; + height: 20px; + } +} + +.arrow-left { + box-shadow: 5px 0 5px -6px #ccc; + + &:hover { + cursor: w-resize; + } +} + +.arrow-right { + border-right: 0.5px solid #ccc; + box-shadow: -5px 0 5px -6px #ccc; + + &:hover { + cursor: e-resize; + } +} + +/* 卡片模式下鼠标移入显示蓝色边框 */ +.card-in { + color: var(--el-color-primary); + + .tag-title { + color: var(--el-color-primary); + } +} + +/* 卡片模式下鼠标移出隐藏蓝色边框 */ +.card-out { + color: #666; + border: none; + + .tag-title { + color: #666; + } +} + +/* 灵动模式 */ +.schedule-active { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 2px; + background: var(--el-color-primary); +} + +/* 灵动模式下鼠标移入显示蓝色进度条 */ +.schedule-in { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 2px; + background: var(--el-color-primary); + animation: schedule-in-width 200ms ease-in; +} + +/* 灵动模式下鼠标移出隐藏蓝色进度条 */ +.schedule-out { + position: absolute; + bottom: 0; + left: 0; + width: 0; + height: 2px; + background: var(--el-color-primary); + animation: schedule-out-width 200ms ease-in; +} + +/* 谷歌风格的页签 */ +.chrome-tab { + position: relative; + display: inline-flex; + gap: 16px; + align-items: center; + justify-content: center; + padding: 0 24px; + white-space: nowrap; + cursor: pointer; + + .tag-title { + padding: 0; + } + + .chrome-tab-divider { + position: absolute; + right: 7px; + width: 1px; + height: 14px; + background-color: #2b2d2f; + } + + &:hover { + z-index: 10; + + .chrome-tab__bg { + color: #dee1e6; + } + + .tag-title { + color: #1f1f1f; + } + + .chrome-tab-divider { + opacity: 0; + } + } + + .chrome-tab__bg { + position: absolute; + top: 0; + left: 0; + z-index: -10; + width: 100%; + height: 100%; + color: transparent; + pointer-events: none; + } + + .chrome-close-btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 16px; + height: 16px; + color: #666; + border-radius: 50%; + + &:hover { + color: white; + background-color: #b1b3b8; + } + } +} diff --git a/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/index.vue b/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/index.vue new file mode 100644 index 00000000..87f234fd --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/components/lay-tag/index.vue @@ -0,0 +1,685 @@ + + + + + diff --git a/sop-admin/sop-admin-frontend/src/layout/default-layout.vue b/sop-admin/sop-admin-frontend/src/layout/default-layout.vue deleted file mode 100644 index 6e570677..00000000 --- a/sop-admin/sop-admin-frontend/src/layout/default-layout.vue +++ /dev/null @@ -1,178 +0,0 @@ - - - - - diff --git a/sop-admin/sop-admin-frontend/src/layout/frame.vue b/sop-admin/sop-admin-frontend/src/layout/frame.vue new file mode 100644 index 00000000..4243b57d --- /dev/null +++ b/sop-admin/sop-admin-frontend/src/layout/frame.vue @@ -0,0 +1,97 @@ + + +