diff --git a/smart-admin-api-java17-springboot3/pom.xml b/smart-admin-api-java17-springboot3/pom.xml index 212f55df..60d8a911 100644 --- a/smart-admin-api-java17-springboot3/pom.xml +++ b/smart-admin-api-java17-springboot3/pom.xml @@ -34,10 +34,11 @@ 2.15.0 3.12.0 4.4 + 1.26.0 1.13 1.9 2.12.0 - 3.3.2 + 1.0.0 5.2.4 1.4 1.11.842 @@ -164,6 +165,12 @@ ${commons-collections4.version} + + org.apache.commons + commons-compress + ${commons-compress.version} + + commons-codec commons-codec @@ -248,13 +255,13 @@ - com.alibaba - easyexcel - ${easy-excel.version} + cn.idev.excel + fastexcel + ${fast-excel.version} - poi-ooxml-schemas - org.apache.poi + logback-classic + ch.qos.logback diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java index 7205c5fe..28cd5511 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java @@ -2,8 +2,8 @@ package net.lab1024.sa.admin.interceptor; import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.exception.SaTokenException; -import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.strategy.SaStrategy; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.StrUtil; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; @@ -14,14 +14,9 @@ import net.lab1024.sa.admin.module.system.login.service.LoginService; import net.lab1024.sa.base.common.annoation.NoNeedLogin; import net.lab1024.sa.base.common.code.SystemErrorCode; import net.lab1024.sa.base.common.code.UserErrorCode; -import net.lab1024.sa.base.common.constant.StringConst; import net.lab1024.sa.base.common.domain.ResponseDTO; -import net.lab1024.sa.base.common.domain.SystemEnvironment; -import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum; -import net.lab1024.sa.base.common.enumeration.UserTypeEnum; import net.lab1024.sa.base.common.util.SmartRequestUtil; import net.lab1024.sa.base.common.util.SmartResponseUtil; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; @@ -47,9 +42,6 @@ public class AdminInterceptor implements HandlerInterceptor { @Resource private LoginService loginService; - @Resource - private SystemEnvironment systemEnvironment; - @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -68,17 +60,7 @@ public class AdminInterceptor implements HandlerInterceptor { // --------------- 第一步: 根据token 获取用户 --------------- String tokenValue = StpUtil.getTokenValue(); - boolean debugNumberTokenFlag = isDevDebugNumberToken(tokenValue); - - String loginId = null; - if (debugNumberTokenFlag) { - //开发、测试环境,且为数字的话,则表明为 调试临时用户,即需要调用 sa-token switch - loginId = UserTypeEnum.ADMIN_EMPLOYEE.getValue() + StringConst.COLON + tokenValue; - StpUtil.switchTo(loginId); - } else { - loginId = (String) StpUtil.getLoginIdByToken(tokenValue); - } - + String loginId = (String) StpUtil.getLoginIdByToken(tokenValue); RequestEmployee requestEmployee = loginService.getLoginEmployee(loginId, request); // --------------- 第二步: 校验 登录 --------------- @@ -86,7 +68,7 @@ public class AdminInterceptor implements HandlerInterceptor { Method method = ((HandlerMethod) handler).getMethod(); NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class); if (noNeedLogin != null) { - checkActiveTimeout(requestEmployee, debugNumberTokenFlag); + checkActiveTimeout(requestEmployee); return true; } @@ -96,7 +78,7 @@ public class AdminInterceptor implements HandlerInterceptor { } // 检测token 活跃频率 - checkActiveTimeout(requestEmployee, debugNumberTokenFlag); + checkActiveTimeout(requestEmployee); // --------------- 第三步: 校验 权限 --------------- @@ -143,12 +125,7 @@ public class AdminInterceptor implements HandlerInterceptor { /** * 检测:token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结 */ - private void checkActiveTimeout(RequestEmployee requestEmployee, boolean debugNumberTokenFlag) { - - // 对于开发环境的 数字 debug token ,不需要检测活跃有效期 - if (debugNumberTokenFlag) { - return; - } + private void checkActiveTimeout(RequestEmployee requestEmployee) { // 用户不在线,也不用检测 if (requestEmployee == null) { @@ -160,28 +137,11 @@ public class AdminInterceptor implements HandlerInterceptor { } - /** - * 是否为开发使用的 debug token - * - * @param token - * @return - */ - private boolean isDevDebugNumberToken(String token) { - if (!StrUtil.isNumeric(token)) { - return false; - } - return systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.DEV - || systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.TEST; - } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 清除上下文 SmartRequestUtil.remove(); - // 开发环境,关闭 sa token 的临时切换用户 - if (systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.DEV) { - StpUtil.endSwitch(); - } } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java index 4b832166..d6ccbffc 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.goods.domain.form; -import com.alibaba.excel.annotation.ExcelProperty; +import cn.idev.excel.annotation.ExcelProperty; import lombok.Data; import java.math.BigDecimal; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java index fc7c8d8a..98a29b18 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java @@ -1,6 +1,7 @@ package net.lab1024.sa.admin.module.business.goods.domain.vo; -import com.alibaba.excel.annotation.ExcelProperty; + +import cn.idev.excel.annotation.ExcelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java index 686b8e55..24f07738 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; -import net.lab1024.sa.base.common.json.serializer.DictValueVoSerializer; import net.lab1024.sa.base.common.swagger.SchemaEnum; import java.math.BigDecimal; @@ -32,7 +31,6 @@ public class GoodsVO { private Integer goodsStatus; @Schema(description = "产地") - @JsonSerialize(using = DictValueVoSerializer.class) private String place; @Schema(description = "商品价格") diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java index b9287196..f6b41bde 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.goods.service; -import com.alibaba.excel.EasyExcel; +import cn.idev.excel.FastExcel; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; @@ -174,7 +174,7 @@ public class GoodsService { public ResponseDTO importGoods(MultipartFile file) { List dataList; try { - dataList = EasyExcel.read(file.getInputStream()).head(GoodsImportForm.class) + dataList = FastExcel.read(file.getInputStream()).head(GoodsImportForm.class) .sheet() .doReadSync(); } catch (IOException e) { @@ -194,12 +194,13 @@ public class GoodsService { */ public List getAllGoods() { List goodsEntityList = goodsDao.selectList(null); + String keyCode="GODOS_PLACE"; return goodsEntityList.stream() .map(e -> GoodsExcelVO.builder() .goodsStatus(SmartEnumUtil.getEnumDescByValue(e.getGoodsStatus(), GoodsStatusEnum.class)) .categoryName(categoryQueryService.queryCategoryName(e.getCategoryId())) - .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictCacheService.selectValueNameByValueCode(code)).collect(Collectors.joining(","))) + .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictCacheService.selectValueNameByValueCode(keyCode,code)).collect(Collectors.joining(","))) .price(e.getPrice()) .goodsName(e.getGoodsName()) .remark(e.getRemark()) diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java index 023f1b67..8b9c838e 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo; -import com.alibaba.excel.annotation.ExcelProperty; +import cn.idev.excel.annotation.ExcelProperty; import lombok.Data; /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java index 15585731..b48134e6 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java @@ -56,7 +56,6 @@ public class DataScopeViewService { if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB == viewType) { return this.getDepartmentAndSubEmployeeIdList(employeeId); } - // 可以查看所有员工数据 return Lists.newArrayList(); } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java index 2d01476e..cac01bf4 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java @@ -59,8 +59,8 @@ public class LoginController { @Operation(summary = "退出登陆 @author 卓大") @GetMapping("/login/logout") - public ResponseDTO logout(@RequestHeader(value = RequestHeaderConst.TOKEN, required = false) String token) { - return loginService.logout(token, SmartRequestUtil.getRequestUser()); + public ResponseDTO logout() { + return loginService.logout(SmartRequestUtil.getRequestUser()); } @Operation(summary = "获取验证码 @author 卓大") diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java index a4fb79a5..b118b967 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java @@ -376,10 +376,10 @@ public class LoginService implements StpInterface { /** * 退出登录 */ - public ResponseDTO logout(String token, RequestUser requestUser) { + public ResponseDTO logout(RequestUser requestUser) { // sa token 登出 - StpUtil.logoutByTokenValue(token); + StpUtil.logout(); // 清空登录信息缓存 loginEmployeeCache.remove(requestUser.getUserId()); diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/system/role/RoleMenuMapper.xml b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/system/role/RoleMenuMapper.xml index 12b84f0d..448fa583 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/system/role/RoleMenuMapper.xml +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/system/role/RoleMenuMapper.xml @@ -19,9 +19,8 @@ - SELECT - t_menu.* + distinct t_menu.* from t_menu left join t_role_menu on t_role_menu.menu_id = t_menu.menu_id @@ -35,8 +34,6 @@ - group by t_menu.menu_id ORDER BY t_menu.sort ASC - \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/pom.xml b/smart-admin-api-java17-springboot3/sa-base/pom.xml index 97920440..45f99636 100644 --- a/smart-admin-api-java17-springboot3/sa-base/pom.xml +++ b/smart-admin-api-java17-springboot3/sa-base/pom.xml @@ -177,6 +177,11 @@ commons-io + + org.apache.commons + commons-compress + + cn.hutool hutool-all @@ -213,8 +218,14 @@ - com.alibaba - easyexcel + cn.idev.excel + fastexcel + + + logback-classic + ch.qos.logback + + diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java index fe5acb62..d0e4060e 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java @@ -11,7 +11,7 @@ package net.lab1024.sa.base.common.constant; */ public class RequestHeaderConst { - public static final String TOKEN = "x-access-token"; + public static final String TOKEN = "Authorization"; public static final String USER_AGENT = "user-agent"; diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java deleted file mode 100644 index 76d0083b..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.lab1024.sa.base.common.json.serializer; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.google.common.collect.Lists; -import jakarta.annotation.Resource; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; -import org.apache.commons.lang3.StringUtils; - -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -/** - * 字典序列化 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022-08-12 22:17:53 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -public class DictValueVoSerializer extends JsonSerializer { - - @Resource - private DictCacheService dictCacheService; - - - @Override - public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { - if (StringUtils.isEmpty(value)) { - jsonGenerator.writeObject(Lists.newArrayList()); - return; - } - - String[] valueCodeArray = value.split(","); - List valueCodeList = Arrays.asList(valueCodeArray); - List dictValueVOList = Lists.newArrayList(); - valueCodeList.forEach(e->{ - if(StringUtils.isNotBlank(e)){ - DictValueVO dictValueVO = dictCacheService.selectValueByValueCode(e); - if(dictValueVO != null){ - dictValueVOList.add(dictValueVO); - } - } - }); - jsonGenerator.writeObject(dictValueVOList); - - } -} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartExcelUtil.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartExcelUtil.java index 48fde342..c917028f 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartExcelUtil.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartExcelUtil.java @@ -1,9 +1,9 @@ package net.lab1024.sa.base.common.util; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.write.handler.SheetWriteHandler; -import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; -import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; +import cn.idev.excel.FastExcel; +import cn.idev.excel.write.handler.SheetWriteHandler; +import cn.idev.excel.write.metadata.holder.WriteSheetHolder; +import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder; import jakarta.servlet.http.HttpServletResponse; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -43,7 +43,7 @@ public final class SmartExcelUtil { // 设置下载消息头 SmartResponseUtil.setDownloadFileHeader(response, fileName, null); // 下载 - EasyExcel.write(response.getOutputStream(), head) + FastExcel.write(response.getOutputStream(), head) .autoCloseStream(Boolean.FALSE) .sheet(sheetName) .doWrite(data); @@ -58,7 +58,7 @@ public final class SmartExcelUtil { // 水印 Watermark watermark = new Watermark(watermarkString); // 一定要inMemory - EasyExcel.write(response.getOutputStream(), head) + FastExcel.write(response.getOutputStream(), head) .inMemory(true) .sheet(sheetName) .registerWriteHandler(new CustomWaterMarkHandler(watermark)) diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java index 6d93ccda..5aff202f 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java @@ -77,7 +77,7 @@ public class SwaggerConfig { private Components components() { return new Components() - .addSecuritySchemes(RequestHeaderConst.TOKEN, new SecurityScheme().type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name(RequestHeaderConst.TOKEN)); + .addSecuritySchemes(RequestHeaderConst.TOKEN, new SecurityScheme().scheme("Bearer").description("请输入token,格式为[Bearer xxxxxxxx]").type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name(RequestHeaderConst.TOKEN)); } @Bean diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java index 569944a4..0e65d902 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java @@ -18,5 +18,5 @@ import java.lang.annotation.Target; @Target(ElementType.FIELD) public @interface DataTracerFieldDict { - + String keyCode() default ""; } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java index 0052cdf3..c67e8569 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java @@ -303,7 +303,7 @@ public class DataTracerChangeContentService { fieldContent = SmartEnumUtil.getEnumDescByValue(fieldValue, dataTracerFieldEnum.enumClass()); } } else if (dataTracerFieldDict != null) { - fieldContent = dictCacheService.selectValueNameByValueCodeSplit(fieldValue.toString()); + fieldContent = dictCacheService.selectValueNameByValueCodeSplit(dataTracerFieldDict.keyCode(), fieldValue.toString()); } else if (dataTracerFieldSql != null) { fieldContent = this.getRelateDisplayValue(fieldValue, dataTracerFieldSql); } else if (fieldValue instanceof Date) { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java index 9e31b7e5..2f0070a1 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java @@ -52,5 +52,5 @@ public interface DictValueDao extends BaseMapper { * 跟进code查询 * */ - DictValueEntity selectByCode(@Param("valueCode") String valueCode, @Param("deletedFlag") Boolean deletedFlag); + DictValueEntity selectByCode(@Param("dictKeyId") Long dictKeyId,@Param("valueCode") String valueCode, @Param("deletedFlag") Boolean deletedFlag); } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java index 13778341..ad9edf5d 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -41,8 +42,6 @@ public class DictCacheService { private ConcurrentHashMap> DICT_CACHE = new ConcurrentHashMap<>(); - private ConcurrentHashMap VALUE_CACHE = new ConcurrentHashMap<>(); - @PostConstruct public void dictCache() { @@ -63,10 +62,6 @@ public class DictCacheService { Long dictKeyId = dictKeyEntity.getDictKeyId(); DICT_CACHE.put(keyCode, valueListMap.getOrDefault(dictKeyId, Lists.newArrayList())); } - //字典值缓存 - dictValueVOList.forEach(e -> { - VALUE_CACHE.put(e.getValueCode(), e); - }); log.info("################# 数据字典缓存初始化完毕 ###################"); } @@ -75,7 +70,6 @@ public class DictCacheService { */ public ResponseDTO cacheRefresh() { DICT_CACHE.clear(); - VALUE_CACHE.clear(); this.cacheInit(); return ResponseDTO.ok(); } @@ -92,37 +86,45 @@ public class DictCacheService { /** * 查询值code名称 - * + * @param keyCode * @param valueCode * @return */ - public String selectValueNameByValueCode(String valueCode) { - if (StrUtil.isEmpty(valueCode)) { - return null; - } - - DictValueVO dictValueVO = VALUE_CACHE.get(valueCode); - if (dictValueVO == null) { + public String selectValueNameByValueCode(String keyCode, String valueCode) { + DictValueVO dictValueVO = this.selectValueByValueCode(keyCode, valueCode); + if (dictValueVO == null){ return ""; } - return dictValueVO.getValueName(); + return dictValueVO.getValueName() + ; } - public DictValueVO selectValueByValueCode(String valueCode) { + public DictValueVO selectValueByValueCode(String keyCode, String valueCode) { if (StrUtil.isEmpty(valueCode)) { return null; } - return VALUE_CACHE.get(valueCode); - } + if (StrUtil.isEmpty(keyCode)) { + return null; + } - public String selectValueNameByValueCodeSplit(String valueCodes) { + List dictValueVOList = DICT_CACHE.get(valueCode); + if (CollectionUtils.isEmpty(dictValueVOList)) { + return null; + } + Optional option = dictValueVOList.stream().filter(e->e.getValueCode().equals(valueCode)).findFirst(); + if(option.isPresent()){ + return option.get(); + } + return null; + } + public String selectValueNameByValueCodeSplit(String keyCode, String valueCodes) { if (StrUtil.isEmpty(valueCodes)) { return ""; } List valueNameList = Lists.newArrayList(); String[] valueCodeArray = valueCodes.split(","); for (String valueCode : valueCodeArray) { - DictValueVO dictValueVO = VALUE_CACHE.get(valueCode); + DictValueVO dictValueVO = this.selectValueByValueCode(keyCode, valueCode); if (dictValueVO != null) { valueNameList.add(dictValueVO.getValueName()); } @@ -130,4 +132,4 @@ public class DictCacheService { return StringUtils.join(valueNameList, ","); } -} \ No newline at end of file +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java index e84280ed..481b2f4b 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java @@ -66,7 +66,7 @@ public class DictService { * @return */ public synchronized ResponseDTO valueAdd(DictValueAddForm valueAddForm) { - DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueAddForm.getValueCode(), false); + DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueAddForm.getDictKeyId(),valueAddForm.getValueCode(), false); if (dictValueEntity != null) { return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); } @@ -106,7 +106,7 @@ public class DictService { if (dictKeyEntity == null || dictKeyEntity.getDeletedFlag()) { return ResponseDTO.userErrorParam("key不能存在"); } - DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueUpdateForm.getValueCode(), false); + DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueUpdateForm.getDictKeyId(),valueUpdateForm.getValueCode(), false); if (dictValueEntity != null && !dictValueEntity.getDictValueId().equals(valueUpdateForm.getDictValueId())) { return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java index 5a0117e3..df219c0c 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java @@ -1,5 +1,6 @@ package net.lab1024.sa.base.module.support.securityprotect.service; +import lombok.extern.slf4j.Slf4j; import jakarta.annotation.Resource; import net.lab1024.sa.base.common.domain.ResponseDTO; import org.apache.tika.config.TikaConfig; @@ -17,7 +18,7 @@ import java.util.Arrays; import java.util.List; /** - * 三级等保 文件上传 相关 + * 三级等保 文件 相关 * * @Author 1024创新实验室-主任:卓大 * @Date 2024/08/22 19:25:59 @@ -27,6 +28,7 @@ import java.util.List; */ @Service +@Slf4j public class SecurityFileService { @Resource @@ -96,6 +98,7 @@ public class SecurityFileService { MediaType mimetype = tika.getDetector().detect(stream, metadata); return mimetype.toString(); } catch (IOException | TikaException e) { + log.error(e.getMessage(), e); return MimeTypes.OCTET_STREAM; } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java index 64732dd4..167deb0f 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java @@ -35,10 +35,8 @@ public class SecurityPasswordService { public static final String PASSWORD_FORMAT_MSG = "密码必须为长度8-20位且必须包含大小写字母、数字、特殊符号(如:@#$%^&*()_+-=)等三种字符"; - private static final int PASSWORD_LENGTH = 8; - private static final String PASSWORD_SALT_FORMAT = "smart_%s_admin_$^&*"; @Resource @@ -47,7 +45,7 @@ public class SecurityPasswordService { @Resource private Level3ProtectConfigService level3ProtectConfigService; - static Argon2PasswordEncoder encoder = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8(); + static Argon2PasswordEncoder ARGON2_PASSWORD_ENCODER = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8(); /** * 校验密码复杂度 @@ -87,7 +85,7 @@ public class SecurityPasswordService { // 检查最近几次是否有重复密码 List oldPasswords = passwordLogDao.selectOldPassword(requestUser.getUserType().getValue(), requestUser.getUserId(), level3ProtectConfigService.getRegularChangePasswordNotAllowRepeatTimes()); - boolean isDuplicate = oldPasswords.stream().anyMatch(oldPassword -> encoder.matches(newPassword, oldPassword)); + boolean isDuplicate = oldPasswords.stream().anyMatch(oldPassword -> ARGON2_PASSWORD_ENCODER.matches(newPassword, oldPassword)); if (isDuplicate) { return ResponseDTO.userErrorParam(String.format("与前%d个历史密码重复,请换个密码!", level3ProtectConfigService.getRegularChangePasswordNotAllowRepeatTimes())); } @@ -147,14 +145,14 @@ public class SecurityPasswordService { * 获取 加密后 的密码 */ public static String getEncryptPwd(String password) { - return encoder.encode(password); + return ARGON2_PASSWORD_ENCODER.encode(password); } /** * 校验密码是否匹配 */ public static Boolean matchesPwd( String password, String encodedPassword){ - return encoder.matches( password, encodedPassword); + return ARGON2_PASSWORD_ENCODER.matches( password, encodedPassword); } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/dev/sa-base.yaml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/dev/sa-base.yaml index 1600d310..e6cdf57d 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/dev/sa-base.yaml +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/dev/sa-base.yaml @@ -132,7 +132,9 @@ reload: # sa-token 配置 sa-token: # token 名称(同时也是 cookie 名称) - token-name: x-access-token + token-name: Authorization + # token 前缀 例如:Bearer + token-prefix: Bearer # token 有效期(单位:秒) 默认30天(2592000秒),-1 代表永久有效 timeout: 2592000 # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictValueMapper.xml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictValueMapper.xml index f0bc3faf..1aecdc4f 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictValueMapper.xml +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictValueMapper.xml @@ -29,7 +29,7 @@ - select * from t_dict_value where value_code = #{valueCode} and deleted_flag = #{deletedFlag} + select * from t_dict_value where dict_Key_id = #{dictKeyId} and value_code = #{valueCode} and deleted_flag = #{deletedFlag} 2.15.0 3.12.0 4.4 + 1.26.0 1.13 1.9 2.12.0 - 3.3.2 + 1.0.0 5.2.4 1.4 1.11.842 @@ -189,6 +190,12 @@ ${commons-collections4.version} + + org.apache.commons + commons-compress + ${commons-compress.version} + + commons-codec commons-codec @@ -274,13 +281,13 @@ - com.alibaba - easyexcel - ${easy-excel.version} + cn.idev.excel + fastexcel + ${fast-excel.version} - poi-ooxml-schemas - org.apache.poi + logback-classic + ch.qos.logback diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java index 4731cab8..46d67349 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java @@ -4,21 +4,15 @@ import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.exception.SaTokenException; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.strategy.SaStrategy; -import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee; import net.lab1024.sa.admin.module.system.login.service.LoginService; import net.lab1024.sa.base.common.annoation.NoNeedLogin; import net.lab1024.sa.base.common.code.SystemErrorCode; import net.lab1024.sa.base.common.code.UserErrorCode; -import net.lab1024.sa.base.common.constant.StringConst; import net.lab1024.sa.base.common.domain.ResponseDTO; -import net.lab1024.sa.base.common.domain.SystemEnvironment; -import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum; -import net.lab1024.sa.base.common.enumeration.UserTypeEnum; import net.lab1024.sa.base.common.util.SmartRequestUtil; import net.lab1024.sa.base.common.util.SmartResponseUtil; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; @@ -47,9 +41,6 @@ public class AdminInterceptor implements HandlerInterceptor { @Resource private LoginService loginService; - @Resource - private SystemEnvironment systemEnvironment; - @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -68,17 +59,7 @@ public class AdminInterceptor implements HandlerInterceptor { // --------------- 第一步: 根据token 获取用户 --------------- String tokenValue = StpUtil.getTokenValue(); - boolean debugNumberTokenFlag = isDevDebugNumberToken(tokenValue); - - String loginId = null; - if (debugNumberTokenFlag) { - //开发、测试环境,且为数字的话,则表明为 调试临时用户,即需要调用 sa-token switch - loginId = UserTypeEnum.ADMIN_EMPLOYEE.getValue() + StringConst.COLON + tokenValue; - StpUtil.switchTo(loginId); - } else { - loginId = (String) StpUtil.getLoginIdByToken(tokenValue); - } - + String loginId = (String) StpUtil.getLoginIdByToken(tokenValue); RequestEmployee requestEmployee = loginService.getLoginEmployee(loginId, request); // --------------- 第二步: 校验 登录 --------------- @@ -86,7 +67,7 @@ public class AdminInterceptor implements HandlerInterceptor { Method method = ((HandlerMethod) handler).getMethod(); NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class); if (noNeedLogin != null) { - checkActiveTimeout(requestEmployee, debugNumberTokenFlag); + checkActiveTimeout(requestEmployee); return true; } @@ -96,7 +77,7 @@ public class AdminInterceptor implements HandlerInterceptor { } // 检测token 活跃频率 - checkActiveTimeout(requestEmployee, debugNumberTokenFlag); + checkActiveTimeout(requestEmployee); // --------------- 第三步: 校验 权限 --------------- @@ -143,13 +124,7 @@ public class AdminInterceptor implements HandlerInterceptor { /** * 检测:token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结 */ - private void checkActiveTimeout(RequestEmployee requestEmployee, boolean debugNumberTokenFlag) { - - // 对于开发环境的 数字 debug token ,不需要检测活跃有效期 - if (debugNumberTokenFlag) { - return; - } - + private void checkActiveTimeout(RequestEmployee requestEmployee) { // 用户不在线,也不用检测 if (requestEmployee == null) { return; @@ -160,29 +135,9 @@ public class AdminInterceptor implements HandlerInterceptor { } - /** - * 是否为开发使用的 debug token - * - * @param token - * @return - */ - private boolean isDevDebugNumberToken(String token) { - if (!StrUtil.isNumeric(token)) { - return false; - } - return systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.DEV - || systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.TEST; - } - @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 清除上下文 SmartRequestUtil.remove(); - // 开发环境,关闭 sa token 的临时切换用户 - if (systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.DEV) { - StpUtil.endSwitch(); - } } - - } \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java index 4b832166..d6ccbffc 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.goods.domain.form; -import com.alibaba.excel.annotation.ExcelProperty; +import cn.idev.excel.annotation.ExcelProperty; import lombok.Data; import java.math.BigDecimal; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java index fc7c8d8a..60d2277e 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.goods.domain.vo; -import com.alibaba.excel.annotation.ExcelProperty; +import cn.idev.excel.annotation.ExcelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java index 686b8e55..24f07738 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; -import net.lab1024.sa.base.common.json.serializer.DictValueVoSerializer; import net.lab1024.sa.base.common.swagger.SchemaEnum; import java.math.BigDecimal; @@ -32,7 +31,6 @@ public class GoodsVO { private Integer goodsStatus; @Schema(description = "产地") - @JsonSerialize(using = DictValueVoSerializer.class) private String place; @Schema(description = "商品价格") diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java index 497a168e..8da001d5 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.goods.service; -import com.alibaba.excel.EasyExcel; +import cn.idev.excel.FastExcel; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; @@ -174,7 +174,7 @@ public class GoodsService { public ResponseDTO importGoods(MultipartFile file) { List dataList; try { - dataList = EasyExcel.read(file.getInputStream()).head(GoodsImportForm.class) + dataList = FastExcel.read(file.getInputStream()).head(GoodsImportForm.class) .sheet() .doReadSync(); } catch (IOException e) { @@ -194,12 +194,13 @@ public class GoodsService { */ public List getAllGoods() { List goodsEntityList = goodsDao.selectList(null); + String keyCode="GODOS_PLACE"; return goodsEntityList.stream() .map(e -> GoodsExcelVO.builder() .goodsStatus(SmartEnumUtil.getEnumDescByValue(e.getGoodsStatus(), GoodsStatusEnum.class)) .categoryName(categoryQueryService.queryCategoryName(e.getCategoryId())) - .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictCacheService.selectValueNameByValueCode(code)).collect(Collectors.joining(","))) + .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictCacheService.selectValueNameByValueCode(keyCode,code)).collect(Collectors.joining(","))) .price(e.getPrice()) .goodsName(e.getGoodsName()) .remark(e.getRemark()) diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java index 023f1b67..8b9c838e 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo; -import com.alibaba.excel.annotation.ExcelProperty; +import cn.idev.excel.annotation.ExcelProperty; import lombok.Data; /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java index f6367d19..76d0f734 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.system.employee.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.employee.domain.form.*; import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java index 8cecbbd6..df755339 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java @@ -4,9 +4,9 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.base.common.enumeration.GenderEnum; import net.lab1024.sa.base.common.swagger.SchemaEnum; -import net.lab1024.sa.base.common.util.SmartVerificationUtil; import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; +import net.lab1024.sa.base.common.util.SmartVerificationUtil; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateCenterForm.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateCenterForm.java index 08295a2a..e77fcafd 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateCenterForm.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateCenterForm.java @@ -55,4 +55,4 @@ public class EmployeeUpdateCenterForm { @Schema(description = "备注") @Length(max = 200, message = "备注最多200字符") private String remark; -} +} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java index d2ab72a0..d51f2c4a 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java @@ -60,8 +60,8 @@ public class LoginController { @Operation(summary = "退出登陆 @author 卓大") @GetMapping("/login/logout") - public ResponseDTO logout(@RequestHeader(value = RequestHeaderConst.TOKEN, required = false) String token) { - return loginService.logout(token, SmartRequestUtil.getRequestUser()); + public ResponseDTO logout() { + return loginService.logout(SmartRequestUtil.getRequestUser()); } @Operation(summary = "获取验证码 @author 卓大") diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java index efb82c66..ca6c40a9 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java @@ -378,10 +378,10 @@ public class LoginService implements StpInterface { /** * 退出登录 */ - public ResponseDTO logout(String token, RequestUser requestUser) { + public ResponseDTO logout(RequestUser requestUser) { // sa token 登出 - StpUtil.logoutByTokenValue(token); + StpUtil.logout(); // 清空登录信息缓存 loginEmployeeCache.remove(requestUser.getUserId()); diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/resources/mapper/system/role/RoleMenuMapper.xml b/smart-admin-api-java8-springboot2/sa-admin/src/main/resources/mapper/system/role/RoleMenuMapper.xml index 12b84f0d..448fa583 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/resources/mapper/system/role/RoleMenuMapper.xml +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/resources/mapper/system/role/RoleMenuMapper.xml @@ -19,9 +19,8 @@ - SELECT - t_menu.* + distinct t_menu.* from t_menu left join t_role_menu on t_role_menu.menu_id = t_menu.menu_id @@ -35,8 +34,6 @@ - group by t_menu.menu_id ORDER BY t_menu.sort ASC - \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/pom.xml b/smart-admin-api-java8-springboot2/sa-base/pom.xml index b85edb17..d0864424 100644 --- a/smart-admin-api-java8-springboot2/sa-base/pom.xml +++ b/smart-admin-api-java8-springboot2/sa-base/pom.xml @@ -198,6 +198,11 @@ commons-io + + org.apache.commons + commons-compress + + cn.hutool hutool-all @@ -234,8 +239,14 @@ - com.alibaba - easyexcel + cn.idev.excel + fastexcel + + + logback-classic + ch.qos.logback + + diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java index fe5acb62..d0e4060e 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java @@ -11,7 +11,7 @@ package net.lab1024.sa.base.common.constant; */ public class RequestHeaderConst { - public static final String TOKEN = "x-access-token"; + public static final String TOKEN = "Authorization"; public static final String USER_AGENT = "user-agent"; diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java deleted file mode 100644 index fceba7b4..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.lab1024.sa.base.common.json.serializer; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.google.common.collect.Lists; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; -import org.apache.commons.lang3.StringUtils; - -import javax.annotation.Resource; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -/** - * 字典序列化 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022-08-12 22:17:53 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -public class DictValueVoSerializer extends JsonSerializer { - - @Resource - private DictCacheService dictCacheService; - - - @Override - public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { - if (StringUtils.isEmpty(value)) { - jsonGenerator.writeObject(Lists.newArrayList()); - return; - } - - String[] valueCodeArray = value.split(","); - List valueCodeList = Arrays.asList(valueCodeArray); - List dictValueVOList = Lists.newArrayList(); - valueCodeList.forEach(e->{ - if(StringUtils.isNotBlank(e)){ - DictValueVO dictValueVO = dictCacheService.selectValueByValueCode(e); - if(dictValueVO != null){ - dictValueVOList.add(dictValueVO); - } - } - }); - jsonGenerator.writeObject(dictValueVOList); - - } -} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartExcelUtil.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartExcelUtil.java index 47dad555..175a230a 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartExcelUtil.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartExcelUtil.java @@ -1,9 +1,9 @@ package net.lab1024.sa.base.common.util; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.write.handler.SheetWriteHandler; -import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; -import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; +import cn.idev.excel.FastExcel; +import cn.idev.excel.write.handler.SheetWriteHandler; +import cn.idev.excel.write.metadata.holder.WriteSheetHolder; +import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.poi.openxml4j.opc.PackagePartName; @@ -43,7 +43,7 @@ public final class SmartExcelUtil { // 设置下载消息头 SmartResponseUtil.setDownloadFileHeader(response, fileName, null); // 下载 - EasyExcel.write(response.getOutputStream(), head) + FastExcel.write(response.getOutputStream(), head) .autoCloseStream(Boolean.FALSE) .sheet(sheetName) .doWrite(data); @@ -58,7 +58,7 @@ public final class SmartExcelUtil { // 水印 Watermark watermark = new Watermark(watermarkString); // 一定要inMemory - EasyExcel.write(response.getOutputStream(), head) + FastExcel.write(response.getOutputStream(), head) .inMemory(true) .sheet(sheetName) .registerWriteHandler(new CustomWaterMarkHandler(watermark)) diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java index e980dba1..99e9cb77 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java @@ -73,7 +73,7 @@ public class SwaggerConfig { private Components components() { return new Components() - .addSecuritySchemes(RequestHeaderConst.TOKEN, new SecurityScheme().type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name(RequestHeaderConst.TOKEN)); + .addSecuritySchemes(RequestHeaderConst.TOKEN, new SecurityScheme().scheme("Bearer").description("请输入token,格式为[Bearer xxxxxxxx]").type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name(RequestHeaderConst.TOKEN)); } @Bean diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java index 569944a4..0e65d902 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java @@ -18,5 +18,5 @@ import java.lang.annotation.Target; @Target(ElementType.FIELD) public @interface DataTracerFieldDict { - + String keyCode() default ""; } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java index b6d8c881..808c7aac 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java @@ -303,7 +303,7 @@ public class DataTracerChangeContentService { fieldContent = SmartEnumUtil.getEnumDescByValue(fieldValue, dataTracerFieldEnum.enumClass()); } } else if (dataTracerFieldDict != null) { - fieldContent = dictCacheService.selectValueNameByValueCodeSplit(fieldValue.toString()); + fieldContent = dictCacheService.selectValueNameByValueCodeSplit(dataTracerFieldDict.keyCode(), fieldValue.toString()); } else if (dataTracerFieldSql != null) { fieldContent = this.getRelateDisplayValue(fieldValue, dataTracerFieldSql); } else if (fieldValue instanceof Date) { diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java index 9e31b7e5..2f0070a1 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java @@ -52,5 +52,5 @@ public interface DictValueDao extends BaseMapper { * 跟进code查询 * */ - DictValueEntity selectByCode(@Param("valueCode") String valueCode, @Param("deletedFlag") Boolean deletedFlag); + DictValueEntity selectByCode(@Param("dictKeyId") Long dictKeyId,@Param("valueCode") String valueCode, @Param("deletedFlag") Boolean deletedFlag); } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java index 69c01761..7279cbdb 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java @@ -18,6 +18,7 @@ import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -41,8 +42,6 @@ public class DictCacheService { private ConcurrentHashMap> DICT_CACHE = new ConcurrentHashMap<>(); - private ConcurrentHashMap VALUE_CACHE = new ConcurrentHashMap<>(); - @PostConstruct public void dictCache() { @@ -63,10 +62,6 @@ public class DictCacheService { Long dictKeyId = dictKeyEntity.getDictKeyId(); DICT_CACHE.put(keyCode, valueListMap.getOrDefault(dictKeyId, Lists.newArrayList())); } - //字典值缓存 - dictValueVOList.forEach(e -> { - VALUE_CACHE.put(e.getValueCode(), e); - }); log.info("################# 数据字典缓存初始化完毕 ###################"); } @@ -75,7 +70,6 @@ public class DictCacheService { */ public ResponseDTO cacheRefresh() { DICT_CACHE.clear(); - VALUE_CACHE.clear(); this.cacheInit(); return ResponseDTO.ok(); } @@ -92,37 +86,45 @@ public class DictCacheService { /** * 查询值code名称 - * + * @param keyCode * @param valueCode * @return */ - public String selectValueNameByValueCode(String valueCode) { - if (StrUtil.isEmpty(valueCode)) { - return null; - } - - DictValueVO dictValueVO = VALUE_CACHE.get(valueCode); - if (dictValueVO == null) { + public String selectValueNameByValueCode(String keyCode, String valueCode) { + DictValueVO dictValueVO = this.selectValueByValueCode(keyCode, valueCode); + if (dictValueVO == null){ return ""; } - return dictValueVO.getValueName(); + return dictValueVO.getValueName() + ; } - public DictValueVO selectValueByValueCode(String valueCode) { + public DictValueVO selectValueByValueCode(String keyCode, String valueCode) { if (StrUtil.isEmpty(valueCode)) { return null; } - return VALUE_CACHE.get(valueCode); - } + if (StrUtil.isEmpty(keyCode)) { + return null; + } - public String selectValueNameByValueCodeSplit(String valueCodes) { + List dictValueVOList = DICT_CACHE.get(valueCode); + if (CollectionUtils.isEmpty(dictValueVOList)) { + return null; + } + Optional option = dictValueVOList.stream().filter(e->e.getValueCode().equals(valueCode)).findFirst(); + if(option.isPresent()){ + return option.get(); + } + return null; + } + public String selectValueNameByValueCodeSplit(String keyCode, String valueCodes) { if (StrUtil.isEmpty(valueCodes)) { return ""; } List valueNameList = Lists.newArrayList(); String[] valueCodeArray = valueCodes.split(","); for (String valueCode : valueCodeArray) { - DictValueVO dictValueVO = VALUE_CACHE.get(valueCode); + DictValueVO dictValueVO = this.selectValueByValueCode(keyCode, valueCode); if (dictValueVO != null) { valueNameList.add(dictValueVO.getValueName()); } @@ -130,4 +132,4 @@ public class DictCacheService { return StringUtils.join(valueNameList, ","); } -} \ No newline at end of file +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java index 439f96f6..f162472b 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java @@ -1,6 +1,8 @@ package net.lab1024.sa.base.module.support.dict.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Interner; +import com.google.common.collect.Interners; import net.lab1024.sa.base.common.code.UserErrorCode; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.ResponseDTO; @@ -26,7 +28,7 @@ import java.util.List; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Service public class DictService { @@ -37,6 +39,10 @@ public class DictService { private DictValueDao dictValueDao; @Resource private DictCacheService dictCacheService; + /** + * CODE锁 + */ + private static final Interner CODE_POOL = Interners.newWeakInterner(); /** @@ -45,15 +51,15 @@ public class DictService { * @param keyAddForm * @return */ - public synchronized ResponseDTO keyAdd(DictKeyAddForm keyAddForm) { - DictKeyEntity dictKeyEntity = dictKeyDao.selectByCode(keyAddForm.getKeyCode(), false); - if (dictKeyEntity != null) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + public ResponseDTO keyAdd(DictKeyAddForm keyAddForm) { + synchronized (CODE_POOL.intern(keyAddForm.getKeyCode())) { + DictKeyEntity dictKeyEntity = dictKeyDao.selectByCode(keyAddForm.getKeyCode(), false); + if (dictKeyEntity != null) { + return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + } + dictKeyEntity = SmartBeanUtil.copy(keyAddForm, DictKeyEntity.class); + dictKeyDao.insert(dictKeyEntity); } - dictKeyEntity = SmartBeanUtil.copy(keyAddForm, DictKeyEntity.class); - dictKeyDao.insert(dictKeyEntity); - //刷新缓存 - dictCacheService.cacheRefresh(); return ResponseDTO.ok(); } @@ -63,15 +69,16 @@ public class DictService { * @param valueAddForm * @return */ - public synchronized ResponseDTO valueAdd(DictValueAddForm valueAddForm) { - DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueAddForm.getValueCode(), false); - if (dictValueEntity != null) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + public ResponseDTO valueAdd(DictValueAddForm valueAddForm) { + + synchronized (CODE_POOL.intern(valueAddForm.getValueCode())) { + DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueAddForm.getDictKeyId(),valueAddForm.getValueCode(), false); + if (dictValueEntity != null) { + return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + } + dictValueEntity = SmartBeanUtil.copy(valueAddForm, DictValueEntity.class); + dictValueDao.insert(dictValueEntity); } - dictValueEntity = SmartBeanUtil.copy(valueAddForm, DictValueEntity.class); - dictValueDao.insert(dictValueEntity); - //刷新缓存 - dictCacheService.cacheRefresh(); return ResponseDTO.ok(); } @@ -81,15 +88,15 @@ public class DictService { * @param keyUpdateForm * @return */ - public synchronized ResponseDTO keyEdit(DictKeyUpdateForm keyUpdateForm) { - DictKeyEntity dictKeyEntity = dictKeyDao.selectByCode(keyUpdateForm.getKeyCode(), false); - if (dictKeyEntity != null && !dictKeyEntity.getDictKeyId().equals(keyUpdateForm.getDictKeyId())) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + public ResponseDTO keyEdit(DictKeyUpdateForm keyUpdateForm) { + synchronized (CODE_POOL.intern(keyUpdateForm.getKeyCode())) { + DictKeyEntity dictKeyEntity = dictKeyDao.selectByCode(keyUpdateForm.getKeyCode(), false); + if (dictKeyEntity != null && !dictKeyEntity.getDictKeyId().equals(keyUpdateForm.getDictKeyId())) { + return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + } + DictKeyEntity dictKeyUpdateEntity = SmartBeanUtil.copy(keyUpdateForm, DictKeyEntity.class); + dictKeyDao.updateById(dictKeyUpdateEntity); } - DictKeyEntity dictKeyUpdateEntity = SmartBeanUtil.copy(keyUpdateForm, DictKeyEntity.class); - dictKeyDao.updateById(dictKeyUpdateEntity); - //刷新缓存 - dictCacheService.cacheRefresh(); return ResponseDTO.ok(); } @@ -99,19 +106,19 @@ public class DictService { * @param valueUpdateForm * @return */ - public synchronized ResponseDTO valueEdit(DictValueUpdateForm valueUpdateForm) { + public ResponseDTO valueEdit(DictValueUpdateForm valueUpdateForm) { DictKeyEntity dictKeyEntity = dictKeyDao.selectById(valueUpdateForm.getDictKeyId()); if (dictKeyEntity == null || dictKeyEntity.getDeletedFlag()) { return ResponseDTO.userErrorParam("key不能存在"); } - DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueUpdateForm.getValueCode(), false); - if (dictValueEntity != null && !dictValueEntity.getDictValueId().equals(valueUpdateForm.getDictValueId())) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + synchronized (CODE_POOL.intern(valueUpdateForm.getValueCode())) { + DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueUpdateForm.getDictKeyId() ,valueUpdateForm.getValueCode(), false); + if (dictValueEntity != null && !dictValueEntity.getDictValueId().equals(valueUpdateForm.getDictValueId())) { + return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + } + DictValueEntity dictValueUpdateEntity = SmartBeanUtil.copy(valueUpdateForm, DictValueEntity.class); + dictValueDao.updateById(dictValueUpdateEntity); } - DictValueEntity dictValueUpdateEntity = SmartBeanUtil.copy(valueUpdateForm, DictValueEntity.class); - dictValueDao.updateById(dictValueUpdateEntity); - //刷新缓存 - dictCacheService.cacheRefresh(); return ResponseDTO.ok(); } @@ -121,13 +128,11 @@ public class DictService { * @param keyIdList * @return */ - public synchronized ResponseDTO keyDelete(List keyIdList) { + public ResponseDTO keyDelete(List keyIdList) { if (CollectionUtils.isEmpty(keyIdList)) { return ResponseDTO.ok(); } dictKeyDao.updateDeletedFlagByIdList(keyIdList, true); - //刷新缓存 - dictCacheService.cacheRefresh(); return ResponseDTO.ok(); } @@ -137,13 +142,11 @@ public class DictService { * @param valueIdList * @return */ - public synchronized ResponseDTO valueDelete(List valueIdList) { + public ResponseDTO valueDelete(List valueIdList) { if (CollectionUtils.isEmpty(valueIdList)) { return ResponseDTO.ok(); } dictValueDao.updateDeletedFlagByIdList(valueIdList, true); - //刷新缓存 - dictCacheService.cacheRefresh(); return ResponseDTO.ok(); } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java index cd1190a5..e49bee98 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java @@ -1,26 +1,24 @@ package net.lab1024.sa.base.module.support.securityprotect.service; +import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.base.common.domain.ResponseDTO; import org.apache.tika.config.TikaConfig; -import org.apache.tika.detect.Detector; import org.apache.tika.exception.TikaException; import org.apache.tika.io.TikaInputStream; import org.apache.tika.metadata.Metadata; import org.apache.tika.metadata.TikaCoreProperties; import org.apache.tika.mime.MediaType; import org.apache.tika.mime.MimeTypes; -import org.apache.tika.parser.AutoDetectParser; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; /** - * 三级等保 文件上传 相关 + * 三级等保 文件 相关 * * @Author 1024创新实验室-主任:卓大 * @Date 2024/08/22 19:25:59 @@ -30,6 +28,7 @@ import java.util.List; */ @Service +@Slf4j public class SecurityFileService { @Resource @@ -74,8 +73,8 @@ public class SecurityFileService { // 文件类型安全检测 if (level3ProtectConfigService.isFileDetectFlag()) { String fileType = getFileMimeType(file); - if(ALLOWED_MIME_TYPES.stream() - .noneMatch(allowedType -> matchesMimeType(fileType, allowedType))){ + if (ALLOWED_MIME_TYPES.stream() + .noneMatch(allowedType -> matchesMimeType(fileType, allowedType))) { return ResponseDTO.userErrorParam("禁止上传此文件类型"); } } @@ -88,17 +87,17 @@ public class SecurityFileService { * * @param file 要检查的文件 * @return 文件的 MIME 类型 - * */ public static String getFileMimeType(MultipartFile file) { try { TikaConfig tika = new TikaConfig(); Metadata metadata = new Metadata(); - metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, file.getOriginalFilename()); + metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, file.getOriginalFilename()); TikaInputStream stream = TikaInputStream.get(file.getInputStream()); MediaType mimetype = tika.getDetector().detect(stream, metadata); return mimetype.toString(); } catch (IOException | TikaException e) { + log.error(e.getMessage(), e); return MimeTypes.OCTET_STREAM; } } @@ -106,8 +105,8 @@ public class SecurityFileService { /** * 检查文件的 MIME 类型是否与指定的MIME 类型匹配(支持通配符) * - * @param fileType 文件的 MIME 类型 - * @param mimetype MIME 类型(支持通配符) + * @param fileType 文件的 MIME 类型 + * @param mimetype MIME 类型(支持通配符) * @return 是否匹配 */ private static boolean matchesMimeType(String fileType, String mimetype) { diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java index 98209315..b4fc8712 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java @@ -34,11 +34,8 @@ public class SecurityPasswordService { public static final String PASSWORD_FORMAT_MSG = "密码必须为长度8-20位且必须包含大小写字母、数字、特殊符号(如:@#$%^&*()_+-=)等三种字符"; - private static final int PASSWORD_LENGTH = 8; - private static final String PASSWORD_SALT_FORMAT = "smart_%s_admin_$^&*"; - @Resource private PasswordLogDao passwordLogDao; @@ -46,7 +43,7 @@ public class SecurityPasswordService { @Resource private Level3ProtectConfigService level3ProtectConfigService; - static Argon2PasswordEncoder encoder = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8(); + static Argon2PasswordEncoder ARGON2_PASSWORD_ENCODER = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8(); /** * 校验密码复杂度 @@ -86,7 +83,7 @@ public class SecurityPasswordService { // 检查最近几次是否有重复密码 List oldPasswords = passwordLogDao.selectOldPassword(requestUser.getUserType().getValue(), requestUser.getUserId(), level3ProtectConfigService.getRegularChangePasswordNotAllowRepeatTimes()); - boolean isDuplicate = oldPasswords.stream().anyMatch(oldPassword -> encoder.matches(newPassword, oldPassword)); + boolean isDuplicate = oldPasswords.stream().anyMatch(oldPassword -> ARGON2_PASSWORD_ENCODER.matches(newPassword, oldPassword)); if (isDuplicate) { return ResponseDTO.userErrorParam(String.format("与前%d个历史密码重复,请换个密码!", level3ProtectConfigService.getRegularChangePasswordNotAllowRepeatTimes())); } @@ -146,14 +143,14 @@ public class SecurityPasswordService { * 获取 加密后 的密码 */ public static String getEncryptPwd(String password) { - return encoder.encode(password); + return ARGON2_PASSWORD_ENCODER.encode(password); } /** * 校验密码是否匹配 */ - public static Boolean matchesPwd( String password, String encodedPassword){ - return encoder.matches( password, encodedPassword); + public static Boolean matchesPwd(String password, String encodedPassword) { + return ARGON2_PASSWORD_ENCODER.matches(password, encodedPassword); } } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/dev/sa-base.yaml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/dev/sa-base.yaml index 6137e6d2..1e1766c3 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/dev/sa-base.yaml +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/dev/sa-base.yaml @@ -131,7 +131,9 @@ reload: # sa-token 配置 sa-token: # token 名称(同时也是 cookie 名称) - token-name: x-access-token + token-name: Authorization + # token 前缀 例如:Bearer + token-prefix: Bearer # token 有效期(单位:秒) 默认30天(2592000秒),-1 代表永久有效 timeout: 2592000 # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictValueMapper.xml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictValueMapper.xml index f0bc3faf..1aecdc4f 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictValueMapper.xml +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictValueMapper.xml @@ -29,7 +29,7 @@ - select * from t_dict_value where value_code = #{valueCode} and deleted_flag = #{deletedFlag} + select * from t_dict_value where dict_Key_id = #{dictKeyId} and value_code = #{valueCode} and deleted_flag = #{deletedFlag} @@ -43,13 +44,16 @@ + diff --git a/smart-admin-web-javascript/src/components/dict-preview/index.vue b/smart-admin-web-javascript/src/components/dict-preview/index.vue new file mode 100644 index 00000000..30762b22 --- /dev/null +++ b/smart-admin-web-javascript/src/components/dict-preview/index.vue @@ -0,0 +1,28 @@ + + + + + {{ item.valueName }} + + + + + + + diff --git a/smart-admin-web-javascript/src/components/framework/wangeditor/index.vue b/smart-admin-web-javascript/src/components/framework/wangeditor/index.vue index 0f145909..8666e413 100644 --- a/smart-admin-web-javascript/src/components/framework/wangeditor/index.vue +++ b/smart-admin-web-javascript/src/components/framework/wangeditor/index.vue @@ -99,10 +99,20 @@ getHtml, getText, }); - + + + diff --git a/smart-admin-web-javascript/src/components/smart-copy-icon/index.vue b/smart-admin-web-javascript/src/components/smart-copy-icon/index.vue new file mode 100644 index 00000000..5eeeaf45 --- /dev/null +++ b/smart-admin-web-javascript/src/components/smart-copy-icon/index.vue @@ -0,0 +1,38 @@ + + + + + + diff --git a/smart-admin-web-javascript/src/components/smart-table-header-cell/index.vue b/smart-admin-web-javascript/src/components/smart-table-header-cell/index.vue new file mode 100644 index 00000000..bfa42caa --- /dev/null +++ b/smart-admin-web-javascript/src/components/smart-table-header-cell/index.vue @@ -0,0 +1,178 @@ + + + + + {{ column.title }} + + + + + + + + + + + + + + + + + + + 查询 + + + + 未定义的组件类型 + + + + + + + + diff --git a/smart-admin-web-javascript/src/components/support/file-upload/index.vue b/smart-admin-web-javascript/src/components/support/file-upload/index.vue index c7c02cbe..a6618656 100644 --- a/smart-admin-web-javascript/src/components/support/file-upload/index.vue +++ b/smart-admin-web-javascript/src/components/support/file-upload/index.vue @@ -16,7 +16,7 @@ :before-upload="beforeUpload" :customRequest="customRequest" :file-list="fileList" - :headers="{ 'x-access-token': useUserStore().getToken }" + :headers="{ Authorization: 'Bearer ' + useUserStore().getToken }" :list-type="listType" @change="handleChange" @preview="handlePreview" diff --git a/smart-admin-web-javascript/src/components/support/table-operator/index.vue b/smart-admin-web-javascript/src/components/support/table-operator/index.vue index 17bab8b4..5f8d8bfe 100644 --- a/smart-admin-web-javascript/src/components/support/table-operator/index.vue +++ b/smart-admin-web-javascript/src/components/support/table-operator/index.vue @@ -38,7 +38,7 @@ + + diff --git a/smart-admin-web-javascript/src/config/app-config.js b/smart-admin-web-javascript/src/config/app-config.js index a08098b4..d60c7d92 100644 --- a/smart-admin-web-javascript/src/config/app-config.js +++ b/smart-admin-web-javascript/src/config/app-config.js @@ -14,6 +14,10 @@ export const appDefaultConfig = { layout: 'side', // 侧边菜单宽度 , 默认为200px sideMenuWidth: 200, + // 表格高度 + tableYHeight: 300, + //标签页位置 + pageTagLocation: 'top', // 菜单主题 sideMenuTheme: 'dark', // 主题颜色索引 diff --git a/smart-admin-web-javascript/src/i18n/lang/en-US/index.js b/smart-admin-web-javascript/src/i18n/lang/en-US/index.js index e5301dff..e1e853ad 100644 --- a/smart-admin-web-javascript/src/i18n/lang/en-US/index.js +++ b/smart-admin-web-javascript/src/i18n/lang/en-US/index.js @@ -14,6 +14,8 @@ export default { antdLocale: antd, dayjsLocale: dayjs, 'setting.title': 'Setting', + 'setting.table.yHeight': 'Table Height', + 'setting.pagetag.location': 'TagPage Position', 'setting.color': 'Theme Color', 'setting.menu.layout': 'Menu Layout', 'setting.menu.width': 'Menu Width', diff --git a/smart-admin-web-javascript/src/i18n/lang/zh-CN/index.js b/smart-admin-web-javascript/src/i18n/lang/zh-CN/index.js index 8561276c..c3126f2a 100644 --- a/smart-admin-web-javascript/src/i18n/lang/zh-CN/index.js +++ b/smart-admin-web-javascript/src/i18n/lang/zh-CN/index.js @@ -14,6 +14,8 @@ export default { antdLocale: antd, dayjsLocale: dayjs, 'setting.title': '网站设置', + 'setting.table.yHeight': '表格高度', + 'setting.pagetag.location': '标签页位置', 'setting.color': '主题颜色', 'setting.menu.layout': '菜单布局', 'setting.menu.width': '菜单宽度', diff --git a/smart-admin-web-javascript/src/layout/components/header-user-space/header-setting.vue b/smart-admin-web-javascript/src/layout/components/header-user-space/header-setting.vue index 1601af0d..15dd5d12 100644 --- a/smart-admin-web-javascript/src/layout/components/header-user-space/header-setting.vue +++ b/smart-admin-web-javascript/src/layout/components/header-user-space/header-setting.vue @@ -9,7 +9,7 @@ --> - + @@ -47,6 +47,10 @@ 像素(px) + + + 像素(px) + 像素(px)或者 百分比 @@ -70,6 +74,12 @@ Light + + + 顶部 + 中部 + + 默认 @@ -81,7 +91,13 @@ - + @@ -111,7 +127,7 @@ diff --git a/smart-admin-web-javascript/src/layout/components/side-menu/recursion-menu.vue b/smart-admin-web-javascript/src/layout/components/side-menu/recursion-menu.vue index d8d0101a..02a8d997 100644 --- a/smart-admin-web-javascript/src/layout/components/side-menu/recursion-menu.vue +++ b/smart-admin-web-javascript/src/layout/components/side-menu/recursion-menu.vue @@ -8,14 +8,7 @@ * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 --> - + @@ -80,7 +73,7 @@ let parentList = menuParentIdListMap.get(currentRoute.name) || []; // 如果是折叠菜单的话,则不需要设置openkey - if(!props.collapsed){ + if (!props.collapsed) { // 使用lodash的union函数,进行 去重合并两个数组 let needOpenKeys = _.map(parentList, 'name').map(Number); openKeys.value = _.union(openKeys.value, needOpenKeys); diff --git a/smart-admin-web-javascript/src/layout/components/top-expand-menu/index.vue b/smart-admin-web-javascript/src/layout/components/top-expand-menu/index.vue index ec9baa68..193fe22d 100644 --- a/smart-admin-web-javascript/src/layout/components/top-expand-menu/index.vue +++ b/smart-admin-web-javascript/src/layout/components/top-expand-menu/index.vue @@ -46,7 +46,6 @@ let currentRoute = useRoute(); function updateSelectKeyAndOpenKey() { // 第一步,根据路由 更新选中 顶级菜单 let parentList = useUserStore().menuParentIdListMap.get(currentRoute.name) || []; - console.log('parentList', parentList) if (parentList.length === 0) { topMenuRef.value.updateSelectKey(currentRoute.name); return; diff --git a/smart-admin-web-javascript/src/layout/components/top-expand-menu/recursion-menu.vue b/smart-admin-web-javascript/src/layout/components/top-expand-menu/recursion-menu.vue index 419b0db2..7f20b7da 100644 --- a/smart-admin-web-javascript/src/layout/components/top-expand-menu/recursion-menu.vue +++ b/smart-admin-web-javascript/src/layout/components/top-expand-menu/recursion-menu.vue @@ -1,11 +1,11 @@ @@ -39,10 +39,11 @@ diff --git a/smart-admin-web-javascript/src/layout/top-layout.vue b/smart-admin-web-javascript/src/layout/top-layout.vue index 9d2e71aa..eda48698 100644 --- a/smart-admin-web-javascript/src/layout/top-layout.vue +++ b/smart-admin-web-javascript/src/layout/top-layout.vue @@ -8,7 +8,8 @@ - + + @@ -56,6 +57,7 @@ import { useRouter } from 'vue-router'; import { HOME_PAGE_NAME } from '/@/constants/system/home-const'; import { LAYOUT_ELEMENT_IDS } from '/@/layout/layout-const.js'; + import MenuLocationBreadcrumb from './components/menu-location-breadcrumb/index.vue'; const windowHeight = ref(window.innerHeight); //主题颜色 @@ -76,6 +78,10 @@ const footerFlag = computed(() => useAppConfigStore().$state.footerFlag); // 是否显示水印 const watermarkFlag = computed(() => useAppConfigStore().$state.watermarkFlag); + // 标签页位置 + const pageTagLocation = computed(() => useAppConfigStore().$state.pageTagLocation); + // 面包屑 + const breadCrumbFlag = computed(() => useAppConfigStore().$state.breadCrumbFlag); // 页面宽度 const pageWidth = computed(() => useAppConfigStore().$state.pageWidth); // 多余高度 @@ -85,9 +91,16 @@ } let due = '45px'; - if (useAppConfigStore().$state.pageTagFlag) { + if (useAppConfigStore().$state.pageTagFlag || useAppConfigStore().$state.breadCrumbFlag) { due = '85px'; } + if ( + useAppConfigStore().$state.pageTagFlag && + useAppConfigStore().$state.pageTagLocation === 'center' && + useAppConfigStore().$state.breadCrumbFlag + ) { + due = '125px'; + } return due; }); diff --git a/smart-admin-web-javascript/src/lib/axios.js b/smart-admin-web-javascript/src/lib/axios.js index 2ee2b2d1..84da1c40 100644 --- a/smart-admin-web-javascript/src/lib/axios.js +++ b/smart-admin-web-javascript/src/lib/axios.js @@ -17,7 +17,7 @@ import _ from 'lodash'; import LocalStorageKeyConst from '/@/constants/local-storage-key-const.js'; // token的消息头 -const TOKEN_HEADER = 'x-access-token'; +const TOKEN_HEADER = 'Authorization'; // 创建axios对象 const smartAxios = axios.create({ @@ -37,7 +37,7 @@ smartAxios.interceptors.request.use( // 在发送请求之前消息头加入token token const token = localRead(LocalStorageKeyConst.USER_TOKEN); if (token) { - config.headers[TOKEN_HEADER] = token; + config.headers[TOKEN_HEADER] = 'Bearer ' + token; } else { delete config.headers[TOKEN_HEADER]; } diff --git a/smart-admin-web-javascript/src/main.js b/smart-admin-web-javascript/src/main.js index e9eeeb20..8b140479 100644 --- a/smart-admin-web-javascript/src/main.js +++ b/smart-admin-web-javascript/src/main.js @@ -30,6 +30,9 @@ import 'vue3-tabs-chrome/dist/vue3-tabs-chrome.css'; import '/@/theme/index.less'; import { localRead } from '/@/utils/local-util.js'; import LocalStorageKeyConst from '/@/constants/local-storage-key-const.js'; +import { Table } from 'ant-design-vue'; +import { useAppConfigStore } from '/@/store/modules/system/app-config'; +import '/@/utils/ployfill'; /* * -------------------- ※ 着重 解释说明下main.js的初始化逻辑 begin ※ -------------------- @@ -64,7 +67,7 @@ async function getLoginInfo() { } } -function initVue() { +async function initVue() { let vueApp = createApp(App); let app = vueApp.use(router).use(store).use(i18n).use(Antd).use(smartEnumPlugin, constantsInfo).use(privilegePlugin).use(JsonViewer); //注入权限 @@ -83,11 +86,17 @@ function initVue() { //挂载 app.mount('#app'); } - +function setTableYHeight() { + Table.props.scroll.default = { + y: useAppConfigStore().tableYHeight, + }; +} //不需要获取用户信息、用户菜单、用户菜单动态路由,直接初始化vue即可 let token = localRead(LocalStorageKeyConst.USER_TOKEN); if (!token) { - initVue(); + await initVue(); + setTableYHeight(); } else { - getLoginInfo(); + await getLoginInfo(); + setTableYHeight(); } diff --git a/smart-admin-web-javascript/src/plugins/privilege-plugin.js b/smart-admin-web-javascript/src/plugins/privilege-plugin.js index 547b2593..e2db35fa 100644 --- a/smart-admin-web-javascript/src/plugins/privilege-plugin.js +++ b/smart-admin-web-javascript/src/plugins/privilege-plugin.js @@ -8,7 +8,6 @@ * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 */ import { useUserStore } from '/@/store/modules/system/user'; -import _ from 'lodash'; const privilege = (value) => { // 超级管理员 diff --git a/smart-admin-web-javascript/src/store/modules/system/dict.js b/smart-admin-web-javascript/src/store/modules/system/dict.js new file mode 100644 index 00000000..bd293887 --- /dev/null +++ b/smart-admin-web-javascript/src/store/modules/system/dict.js @@ -0,0 +1,53 @@ +import { defineStore } from 'pinia'; + +export const useDictStore = defineStore({ + id: 'dict', + state: () => ({ + dict: new Array(), + }), + actions: { + // 获取字典 + getDict(keyCode) { + if (keyCode == null && keyCode == '') { + return null; + } + try { + for (let i = 0; i < this.dict.length; i++) { + if (this.dict[i].keyCode == keyCode) { + return this.dict[i].value; + } + } + } catch (e) { + return null; + } + }, + // 设置字典 + setDict(keyCode, value) { + if (keyCode !== null && keyCode !== '') { + this.dict.push({ + key: keyCode, + value: value, + }); + } + }, + // 删除字典 + removeDict(keyCode) { + let flag = false; + try { + for (let i = 0; i < this.dict.length; i++) { + if (this.dict[i].keyCode == keyCode) { + this.dict.splice(i, 1); + return true; + } + } + } catch (e) { + flag = false; + } + return false; + }, + // 清空字典 + cleanDict() { + this.dict = new Array(); + }, + }, +}); diff --git a/smart-admin-web-javascript/src/store/modules/system/user.js b/smart-admin-web-javascript/src/store/modules/system/user.js index 322d4a1c..d31f6f71 100644 --- a/smart-admin-web-javascript/src/store/modules/system/user.js +++ b/smart-admin-web-javascript/src/store/modules/system/user.js @@ -73,7 +73,7 @@ export const useUserStore = defineStore({ } return localRead(localKey.USER_TOKEN); }, - getNeedUpdatePwdFlag(state) { + getNeedUpdatePwdFlag(state){ return state.needUpdatePwdFlag; }, //是否初始化了 路由 @@ -206,7 +206,7 @@ export const useUserStore = defineStore({ // @ts-ignore menuTitle: route.meta.title, menuQuery: route.query, - menuIcon: route.meta?.icon, + menuIcon:route.meta?.icon, // @ts-ignore fromMenuName: from.name, fromMenuQuery: from.query, diff --git a/smart-admin-web-javascript/src/utils/dict.js b/smart-admin-web-javascript/src/utils/dict.js new file mode 100644 index 00000000..27150ed3 --- /dev/null +++ b/smart-admin-web-javascript/src/utils/dict.js @@ -0,0 +1,22 @@ +import { useDictStore } from '/@/store/modules/system/dict'; +import { dictApi } from '/@/api/support/dict-api'; + +/** + * 获取字典数据 + */ + +export function useDict(...args) { + let res = {}; + args.forEach(async (keyCode, index) => { + res[keyCode] = []; + const dicts = useDictStore().getDict(keyCode); + if (dicts) { + res[keyCode] = dicts; + } else { + let result = await dictApi.valueList(keyCode); + res[keyCode] = result.data; + useDictStore().setDict(keyCode, res[keyCode]); + } + }); + return res; +} diff --git a/smart-admin-web-javascript/src/utils/ployfill.js b/smart-admin-web-javascript/src/utils/ployfill.js new file mode 100644 index 00000000..90923f6c --- /dev/null +++ b/smart-admin-web-javascript/src/utils/ployfill.js @@ -0,0 +1,14 @@ +//去除谷歌浏览器的scroll、wheel等事件警告 +(function () { + if (typeof EventTarget !== 'undefined') { + let func = EventTarget.prototype.addEventListener; + EventTarget.prototype.addEventListener = function (type, fn, capture) { + this.func = func; + if (typeof capture !== 'boolean') { + capture = capture || {}; + capture.passive = false; + } + this.func(type, fn, capture); + }; + } +})(); diff --git a/smart-admin-web-javascript/src/views/business/erp/catalog/components/category-form-modal.vue b/smart-admin-web-javascript/src/views/business/erp/catalog/components/category-form-modal.vue index c4d1d5ca..e80071c2 100644 --- a/smart-admin-web-javascript/src/views/business/erp/catalog/components/category-form-modal.vue +++ b/smart-admin-web-javascript/src/views/business/erp/catalog/components/category-form-modal.vue @@ -17,7 +17,7 @@ diff --git a/smart-admin-web-javascript/src/views/business/oa/enterprise/components/enterprise-operate-modal.vue b/smart-admin-web-javascript/src/views/business/oa/enterprise/components/enterprise-operate-modal.vue index 6b00d7e1..0a2c9256 100644 --- a/smart-admin-web-javascript/src/views/business/oa/enterprise/components/enterprise-operate-modal.vue +++ b/smart-admin-web-javascript/src/views/business/oa/enterprise/components/enterprise-operate-modal.vue @@ -85,6 +85,21 @@ detail(enterpriseId); } visible.value = true; + nextTick(() => { + // 解决弹窗错误信息显示,没有可忽略 + const domArr = document.getElementsByClassName('ant-modal'); + if (domArr && domArr.length > 0) { + Array.from(domArr).forEach((item) => { + if (item.childNodes && item.childNodes.length > 0) { + Array.from(item.childNodes).forEach((child) => { + if (child.setAttribute) { + child.setAttribute('aria-hidden', 'false'); + } + }); + } + }); + } + }); } function onClose() { diff --git a/smart-admin-web-javascript/src/views/business/oa/notice/components/notice-view-record-list.vue b/smart-admin-web-javascript/src/views/business/oa/notice/components/notice-view-record-list.vue index 4c1e8368..de4eb520 100644 --- a/smart-admin-web-javascript/src/views/business/oa/notice/components/notice-view-record-list.vue +++ b/smart-admin-web-javascript/src/views/business/oa/notice/components/notice-view-record-list.vue @@ -60,102 +60,102 @@ diff --git a/smart-admin-web-javascript/src/views/support/dict/index.vue b/smart-admin-web-javascript/src/views/support/dict/index.vue index cf5eb2d8..c6c3d4c6 100644 --- a/smart-admin-web-javascript/src/views/support/dict/index.vue +++ b/smart-admin-web-javascript/src/views/support/dict/index.vue @@ -43,7 +43,7 @@ 新建 - + diff --git a/smart-admin-web-javascript/src/views/support/job/job-list.vue b/smart-admin-web-javascript/src/views/support/job/job-list.vue index ae5c2397..cb410470 100644 --- a/smart-admin-web-javascript/src/views/support/job/job-list.vue +++ b/smart-admin-web-javascript/src/views/support/job/job-list.vue @@ -165,7 +165,7 @@ import JobFormModal from './components/job-form-modal.vue'; import JobLogListModal from './components/job-log-list-modal.vue'; import { SmartLoading } from '/@/components/framework/smart-loading/index.js'; - + const activeKey = ref('1'); const columns = ref([ { title: 'id', @@ -242,8 +242,6 @@ }, ]); - const activeKey = ref('1'); - // ---------------- 查询数据 ----------------------- const queryFormState = { diff --git a/smart-admin-web-javascript/src/views/system/account/components/center/index.vue b/smart-admin-web-javascript/src/views/system/account/components/center/index.vue index 6d8204dc..8e4c16e8 100644 --- a/smart-admin-web-javascript/src/views/system/account/components/center/index.vue +++ b/smart-admin-web-javascript/src/views/system/account/components/center/index.vue @@ -51,7 +51,7 @@ list-type="picture-card" class="avatar-uploader" :show-upload-list="false" - :headers="{ 'x-access-token': useUserStore().getToken }" + :headers="{ Authorization: 'Bearer ' + useUserStore().getToken }" :customRequest="customRequest" :before-upload="beforeUpload" > diff --git a/smart-admin-web-javascript/src/views/system/account/components/password/index.vue b/smart-admin-web-javascript/src/views/system/account/components/password/index.vue index d510685b..b05f57e5 100644 --- a/smart-admin-web-javascript/src/views/system/account/components/password/index.vue +++ b/smart-admin-web-javascript/src/views/system/account/components/password/index.vue @@ -4,13 +4,13 @@ - + - + - + 修改密码 diff --git a/smart-admin-web-javascript/src/views/system/account/index.vue b/smart-admin-web-javascript/src/views/system/account/index.vue index 7abb4d81..faf89373 100644 --- a/smart-admin-web-javascript/src/views/system/account/index.vue +++ b/smart-admin-web-javascript/src/views/system/account/index.vue @@ -31,9 +31,13 @@ }); // 选中的菜单 let selectedMenu = ref({ menuId: 0 }); - let selectedKeys = computed(() => { - return _.isEmpty(selectedMenu.value) ? [] : [selectedMenu.value.menuId]; - }); + let selectedKeys = ref([]); + watch( + () => selectedMenu.value, + (newQuery, oldQuery) => { + selectedKeys.value = _.isEmpty(selectedMenu.value) ? [] : [selectedMenu.value.menuId]; + } + ); function selectMenu(menuId) { selectedMenu.value = menuList.value.find((e) => e.menuId === menuId); diff --git a/smart-admin-web-javascript/src/views/system/department/components/department-form-modal.vue b/smart-admin-web-javascript/src/views/system/department/components/department-form-modal.vue index 1abb2be7..a05a9638 100644 --- a/smart-admin-web-javascript/src/views/system/department/components/department-form-modal.vue +++ b/smart-admin-web-javascript/src/views/system/department/components/department-form-modal.vue @@ -28,13 +28,13 @@ diff --git a/smart-admin-web-javascript/src/views/system/position/position-form.vue b/smart-admin-web-javascript/src/views/system/position/position-form.vue index 9b5c7ab7..4d779216 100644 --- a/smart-admin-web-javascript/src/views/system/position/position-form.vue +++ b/smart-admin-web-javascript/src/views/system/position/position-form.vue @@ -17,16 +17,16 @@ > - + - + - + - + @@ -39,86 +39,100 @@ diff --git a/smart-admin-web-typescript/package.json b/smart-admin-web-typescript/package.json index 07f6b09c..e412eb67 100644 --- a/smart-admin-web-typescript/package.json +++ b/smart-admin-web-typescript/package.json @@ -17,7 +17,7 @@ }, "type": "module", "dependencies": { - "@ant-design/icons-vue": "^6.1.0", + "@ant-design/icons-vue": "^7.0.1", "@wangeditor/editor": "5.1.14", "@wangeditor/editor-for-vue": "5.1.12", "ant-design-vue": "4.2.5", @@ -26,6 +26,7 @@ "crypto-js": "4.1.1", "dayjs": "1.10.5", "decimal.js": "10.3.1", + "default-passive-events": "^2.0.0", "diff": "5.2.0", "diff2html": "3.4.47", "echarts": "5.4.3", @@ -38,6 +39,7 @@ "sm-crypto": "0.3.13", "sortablejs": "1.15.0", "ua-parser-js": "1.0.35", + "uuid": "^11.1.0", "v-viewer": "~1.6.4", "vue": "3.4.27", "vue-i18n": "9.13.1", diff --git a/smart-admin-web-typescript/src/App.vue b/smart-admin-web-typescript/src/App.vue index 1251baca..2b6c8cd8 100644 --- a/smart-admin-web-typescript/src/App.vue +++ b/smart-admin-web-typescript/src/App.vue @@ -32,6 +32,7 @@ }, }, }" + :transformCellText="transformCellText" > @@ -43,12 +44,14 @@ + diff --git a/smart-admin-web-typescript/src/components/dict-preview/index.vue b/smart-admin-web-typescript/src/components/dict-preview/index.vue new file mode 100644 index 00000000..30762b22 --- /dev/null +++ b/smart-admin-web-typescript/src/components/dict-preview/index.vue @@ -0,0 +1,28 @@ + + + + + {{ item.valueName }} + + + + + + + diff --git a/smart-admin-web-typescript/src/components/framework/smart-enum-checkbox/index.vue b/smart-admin-web-typescript/src/components/framework/smart-enum-checkbox/index.vue index bb70b89b..f128b8fc 100644 --- a/smart-admin-web-typescript/src/components/framework/smart-enum-checkbox/index.vue +++ b/smart-admin-web-typescript/src/components/framework/smart-enum-checkbox/index.vue @@ -67,7 +67,7 @@ ); const emit = defineEmits(['update:value', 'change']); - + function handleChange(value) { emit('update:value', value); emit('change', value); diff --git a/smart-admin-web-typescript/src/components/framework/smart-enum-radio/index.vue b/smart-admin-web-typescript/src/components/framework/smart-enum-radio/index.vue index 11e0796d..c768ac49 100644 --- a/smart-admin-web-typescript/src/components/framework/smart-enum-radio/index.vue +++ b/smart-admin-web-typescript/src/components/framework/smart-enum-radio/index.vue @@ -59,7 +59,7 @@ default: () => [], }, }); - + const valueDescList = ref([]); const selectValue = ref(props.value); diff --git a/smart-admin-web-typescript/src/components/framework/wangeditor/index.vue b/smart-admin-web-typescript/src/components/framework/wangeditor/index.vue index c27e68d9..e6b1f7d4 100644 --- a/smart-admin-web-typescript/src/components/framework/wangeditor/index.vue +++ b/smart-admin-web-typescript/src/components/framework/wangeditor/index.vue @@ -99,10 +99,19 @@ getHtml, getText, }); - + + diff --git a/smart-admin-web-typescript/src/components/smart-copy-icon/index.vue b/smart-admin-web-typescript/src/components/smart-copy-icon/index.vue new file mode 100644 index 00000000..919f1ad1 --- /dev/null +++ b/smart-admin-web-typescript/src/components/smart-copy-icon/index.vue @@ -0,0 +1,38 @@ + + + + + + diff --git a/smart-admin-web-typescript/src/components/smart-table-header-cell/index.vue b/smart-admin-web-typescript/src/components/smart-table-header-cell/index.vue new file mode 100644 index 00000000..5f063afa --- /dev/null +++ b/smart-admin-web-typescript/src/components/smart-table-header-cell/index.vue @@ -0,0 +1,178 @@ + + + + + {{ column.title }} + + + + + + + + + + + + + + + + + + + 查询 + + + + 未定义的组件类型 + + + + + + + + diff --git a/smart-admin-web-typescript/src/components/support/file-upload/index.vue b/smart-admin-web-typescript/src/components/support/file-upload/index.vue index abe047b8..66d43e42 100644 --- a/smart-admin-web-typescript/src/components/support/file-upload/index.vue +++ b/smart-admin-web-typescript/src/components/support/file-upload/index.vue @@ -11,12 +11,12 @@ import _ from 'lodash'; import { tableColumnApi } from '/@/api/support/table-column-api'; - import { onMounted, ref, watch } from 'vue'; + import { onMounted, ref, watch, reactive } from 'vue'; import SmartTableColumnModal from './smart-table-column-modal.vue'; import { message } from 'ant-design-vue'; import { mergeColumn } from './smart-table-column-merge'; @@ -66,8 +66,16 @@ const emit = defineEmits(['update:modelValue']); // 原始表格列数据(复制一份最原始的columns集合,以供后续各个地方使用) - let originalColumn = _.cloneDeep(props.modelValue); - + let originalColumn = reactive(_.cloneDeep(props.modelValue)); + watch( + () => props.modelValue, + (value) => { + originalColumn = value; + }, + { + deep: true, + } + ); onMounted(buildUserTableColumns); //构建用户的数据列 @@ -168,7 +176,8 @@ // 将弹窗修改的列数据,赋值给原表格 列数组 function updateColumn(changeColumnArray) { //合并列 - const newColumns = mergeColumn(_.cloneDeep(originalColumn), changeColumnArray); + let obj = mergeColumn(_.cloneDeep(originalColumn), changeColumnArray); + const newColumns = obj.newColumns; emit( 'update:modelValue', newColumns.filter((e) => e.showFlag) diff --git a/smart-admin-web-typescript/src/components/support/table-operator/smart-table-column-merge.ts b/smart-admin-web-typescript/src/components/support/table-operator/smart-table-column-merge.ts index d4515caa..3a197365 100644 --- a/smart-admin-web-typescript/src/components/support/table-operator/smart-table-column-merge.ts +++ b/smart-admin-web-typescript/src/components/support/table-operator/smart-table-column-merge.ts @@ -1,12 +1,12 @@ -/* - * 表格列设置 - * - * @Author: 1024创新实验室-主任:卓大 - * @Date: 2022-08-26 23:45:51 - * @Wechat: zhuda1024 - * @Email: lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 - */ +/* + * 表格列设置 + * + * @Author: 1024创新实验室-主任:卓大 + * @Date: 2022-08-26 23:45:51 + * @Wechat: zhuda1024 + * @Email: lab1024@163.com + * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 + */ import _ from 'lodash'; @@ -16,6 +16,7 @@ import _ from 'lodash'; * @param {*} userTableColumnArray */ export function mergeColumn(originalTableColumnArray, userTableColumnArray) { + let saveFlag = false; if (!userTableColumnArray) { return originalTableColumnArray; } @@ -40,8 +41,13 @@ export function mergeColumn(originalTableColumnArray, userTableColumnArray) { if (userColumn) { fontColumn.sort = userColumn.sort; fontColumn.showFlag = userColumn.showFlag; - if (userColumn.width) { - fontColumn.width = userColumn.width; + if (fontColumn.dragAndDropFlag) { + saveFlag = true; + delete fontColumn.dragAndDropFlag; + } else { + if (userColumn.width) { + fontColumn.width = userColumn.width; + } } } newColumns.push(fontColumn); @@ -50,5 +56,8 @@ export function mergeColumn(originalTableColumnArray, userTableColumnArray) { //第三步:前端列进行排序 newColumns = _.sortBy(newColumns, (e) => e.sort); - return newColumns; + return { + newColumns, + saveFlag, + }; } diff --git a/smart-admin-web-typescript/src/components/support/table-operator/smart-table-column-modal.vue b/smart-admin-web-typescript/src/components/support/table-operator/smart-table-column-modal.vue index 00a46e20..842feab8 100644 --- a/smart-admin-web-typescript/src/components/support/table-operator/smart-table-column-modal.vue +++ b/smart-admin-web-typescript/src/components/support/table-operator/smart-table-column-modal.vue @@ -80,7 +80,7 @@ function hide() { visible.value = false; } - + const saveFlag = ref(false); //获取用户的列数据 async function getUserTableColumns(tableId, columns) { SmartLoading.show(); @@ -101,14 +101,18 @@ } //根据前端列和后端列构建新的列数据 - tableData.value = mergeColumn(columns, userTableColumnArray); - + let obj = mergeColumn(columns, userTableColumnArray); + tableData.value = obj.newColumns; + saveFlag.value = obj.saveFlag; //将已经显示的展示出来 for (const item of tableData.value) { if (item.showFlag) { selectedRowKeyList.value.push(item.columnKey); } } + if (saveFlag.value) { + save(false); + } nextTick(() => { initDrag(); @@ -226,7 +230,7 @@ } //保存 - async function save() { + async function save(closeFlag = true) { submitLoading.value = true; try { let columnList = []; @@ -250,9 +254,11 @@ columnList, }); - message.success('保存成功'); emit('change', columnList); - hide(); + if (closeFlag) { + message.success('保存成功'); + hide(); + } } catch (e) { smartSentry.captureError(e); } finally { diff --git a/smart-admin-web-typescript/src/components/text-ellipsis/index.vue b/smart-admin-web-typescript/src/components/text-ellipsis/index.vue new file mode 100644 index 00000000..e4b9d777 --- /dev/null +++ b/smart-admin-web-typescript/src/components/text-ellipsis/index.vue @@ -0,0 +1,79 @@ + + + + + + {{ text }} + + + + + {{ text }} + + + + + + + {{ text }} + + + + + + + diff --git a/smart-admin-web-typescript/src/config/app-config.ts b/smart-admin-web-typescript/src/config/app-config.ts index f68daebf..d0db778b 100644 --- a/smart-admin-web-typescript/src/config/app-config.ts +++ b/smart-admin-web-typescript/src/config/app-config.ts @@ -20,6 +20,10 @@ export const appDefaultConfig: AppConfig = { layout: 'side', // 侧边菜单宽度 , 默认为200px sideMenuWidth: 200, + // 表格高度 + tableYHeight: 300, + //标签页位置 + pageTagLocation: 'top', // 菜单主题 sideMenuTheme: 'dark', // 主题颜色索引 diff --git a/smart-admin-web-typescript/src/i18n/lang/en-US/index.ts b/smart-admin-web-typescript/src/i18n/lang/en-US/index.ts index e5301dff..e1e853ad 100644 --- a/smart-admin-web-typescript/src/i18n/lang/en-US/index.ts +++ b/smart-admin-web-typescript/src/i18n/lang/en-US/index.ts @@ -14,6 +14,8 @@ export default { antdLocale: antd, dayjsLocale: dayjs, 'setting.title': 'Setting', + 'setting.table.yHeight': 'Table Height', + 'setting.pagetag.location': 'TagPage Position', 'setting.color': 'Theme Color', 'setting.menu.layout': 'Menu Layout', 'setting.menu.width': 'Menu Width', diff --git a/smart-admin-web-typescript/src/i18n/lang/zh-CN/index.ts b/smart-admin-web-typescript/src/i18n/lang/zh-CN/index.ts index 8561276c..c3126f2a 100644 --- a/smart-admin-web-typescript/src/i18n/lang/zh-CN/index.ts +++ b/smart-admin-web-typescript/src/i18n/lang/zh-CN/index.ts @@ -14,6 +14,8 @@ export default { antdLocale: antd, dayjsLocale: dayjs, 'setting.title': '网站设置', + 'setting.table.yHeight': '表格高度', + 'setting.pagetag.location': '标签页位置', 'setting.color': '主题颜色', 'setting.menu.layout': '菜单布局', 'setting.menu.width': '菜单宽度', diff --git a/smart-admin-web-typescript/src/layout/components/header-user-space/header-setting.vue b/smart-admin-web-typescript/src/layout/components/header-user-space/header-setting.vue index 33c38bf9..ed07fb31 100644 --- a/smart-admin-web-typescript/src/layout/components/header-user-space/header-setting.vue +++ b/smart-admin-web-typescript/src/layout/components/header-user-space/header-setting.vue @@ -9,7 +9,7 @@ --> - + @@ -47,6 +47,10 @@ 像素(px) + + + 像素(px) + 像素(px)或者 百分比 @@ -70,6 +74,12 @@ Light + + + 顶部 + 中部 + + 默认 @@ -81,7 +91,13 @@ - + @@ -111,12 +127,12 @@ diff --git a/smart-admin-web-typescript/src/layout/components/side-menu/recursion-menu.vue b/smart-admin-web-typescript/src/layout/components/side-menu/recursion-menu.vue index a922e2a5..c6c7ea9f 100644 --- a/smart-admin-web-typescript/src/layout/components/side-menu/recursion-menu.vue +++ b/smart-admin-web-typescript/src/layout/components/side-menu/recursion-menu.vue @@ -8,14 +8,7 @@ * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 --> - + @@ -80,7 +73,7 @@ let parentList = menuParentIdListMap.get(currentRoute.name) || []; // 如果是折叠菜单的话,则不需要设置openkey - if(!props.collapsed){ + if (!props.collapsed) { // 使用lodash的union函数,进行 去重合并两个数组 let needOpenKeys = _.map(parentList, 'name').map(Number); openKeys.value = _.union(openKeys.value, needOpenKeys); diff --git a/smart-admin-web-typescript/src/layout/components/top-expand-menu/recursion-menu.vue b/smart-admin-web-typescript/src/layout/components/top-expand-menu/recursion-menu.vue index 6b2d1215..afcb0a18 100644 --- a/smart-admin-web-typescript/src/layout/components/top-expand-menu/recursion-menu.vue +++ b/smart-admin-web-typescript/src/layout/components/top-expand-menu/recursion-menu.vue @@ -39,79 +39,105 @@ diff --git a/smart-admin-web-typescript/src/layout/components/top-expand-menu/sub-menu.vue b/smart-admin-web-typescript/src/layout/components/top-expand-menu/sub-menu.vue index 40738d74..ff46877d 100644 --- a/smart-admin-web-typescript/src/layout/components/top-expand-menu/sub-menu.vue +++ b/smart-admin-web-typescript/src/layout/components/top-expand-menu/sub-menu.vue @@ -40,7 +40,7 @@ }; diff --git a/smart-admin-web-typescript/src/layout/components/top-expand-menu/top-menu.vue b/smart-admin-web-typescript/src/layout/components/top-expand-menu/top-menu.vue index 41f97ea0..65891631 100644 --- a/smart-admin-web-typescript/src/layout/components/top-expand-menu/top-menu.vue +++ b/smart-admin-web-typescript/src/layout/components/top-expand-menu/top-menu.vue @@ -25,123 +25,128 @@ diff --git a/smart-admin-web-typescript/src/layout/side-expand-layout.vue b/smart-admin-web-typescript/src/layout/side-expand-layout.vue index c7b664ec..515369f9 100644 --- a/smart-admin-web-typescript/src/layout/side-expand-layout.vue +++ b/smart-admin-web-typescript/src/layout/side-expand-layout.vue @@ -20,7 +20,12 @@ - + (collapsed = !collapsed)" /> (collapsed = !collapsed)" /> @@ -32,7 +37,8 @@ - + + @@ -40,7 +46,7 @@ - + @@ -84,7 +90,7 @@ diff --git a/smart-admin-web-typescript/src/layout/top-layout.vue b/smart-admin-web-typescript/src/layout/top-layout.vue index aab1a33f..eb2ae2d3 100644 --- a/smart-admin-web-typescript/src/layout/top-layout.vue +++ b/smart-admin-web-typescript/src/layout/top-layout.vue @@ -8,7 +8,8 @@ - + + @@ -56,6 +57,7 @@ import { useRouter } from 'vue-router'; import { HOME_PAGE_NAME } from '/@/constants/system/home-const'; import { LAYOUT_ELEMENT_IDS } from '/@/layout/layout-const.js'; + import MenuLocationBreadcrumb from './components/menu-location-breadcrumb/index.vue'; const windowHeight = ref(window.innerHeight); //主题颜色 @@ -76,6 +78,10 @@ const footerFlag = computed(() => useAppConfigStore().$state.footerFlag); // 是否显示水印 const watermarkFlag = computed(() => useAppConfigStore().$state.watermarkFlag); + // 标签页位置 + const pageTagLocation = computed(() => useAppConfigStore().$state.pageTagLocation); + // 面包屑 + const breadCrumbFlag = computed(() => useAppConfigStore().$state.breadCrumbFlag); // 页面宽度 const pageWidth = computed(() => useAppConfigStore().$state.pageWidth); // 多余高度 @@ -85,9 +91,16 @@ } let due = '45px'; - if (useAppConfigStore().$state.pageTagFlag) { + if (useAppConfigStore().$state.pageTagFlag || useAppConfigStore().$state.breadCrumbFlag) { due = '85px'; } + if ( + useAppConfigStore().$state.pageTagFlag && + useAppConfigStore().$state.pageTagLocation === 'center' && + useAppConfigStore().$state.breadCrumbFlag + ) { + due = '125px'; + } return due; }); diff --git a/smart-admin-web-typescript/src/lib/axios.ts b/smart-admin-web-typescript/src/lib/axios.ts index 2ee2b2d1..84da1c40 100644 --- a/smart-admin-web-typescript/src/lib/axios.ts +++ b/smart-admin-web-typescript/src/lib/axios.ts @@ -17,7 +17,7 @@ import _ from 'lodash'; import LocalStorageKeyConst from '/@/constants/local-storage-key-const.js'; // token的消息头 -const TOKEN_HEADER = 'x-access-token'; +const TOKEN_HEADER = 'Authorization'; // 创建axios对象 const smartAxios = axios.create({ @@ -37,7 +37,7 @@ smartAxios.interceptors.request.use( // 在发送请求之前消息头加入token token const token = localRead(LocalStorageKeyConst.USER_TOKEN); if (token) { - config.headers[TOKEN_HEADER] = token; + config.headers[TOKEN_HEADER] = 'Bearer ' + token; } else { delete config.headers[TOKEN_HEADER]; } diff --git a/smart-admin-web-typescript/src/main.ts b/smart-admin-web-typescript/src/main.ts index e9eeeb20..8b140479 100644 --- a/smart-admin-web-typescript/src/main.ts +++ b/smart-admin-web-typescript/src/main.ts @@ -30,6 +30,9 @@ import 'vue3-tabs-chrome/dist/vue3-tabs-chrome.css'; import '/@/theme/index.less'; import { localRead } from '/@/utils/local-util.js'; import LocalStorageKeyConst from '/@/constants/local-storage-key-const.js'; +import { Table } from 'ant-design-vue'; +import { useAppConfigStore } from '/@/store/modules/system/app-config'; +import '/@/utils/ployfill'; /* * -------------------- ※ 着重 解释说明下main.js的初始化逻辑 begin ※ -------------------- @@ -64,7 +67,7 @@ async function getLoginInfo() { } } -function initVue() { +async function initVue() { let vueApp = createApp(App); let app = vueApp.use(router).use(store).use(i18n).use(Antd).use(smartEnumPlugin, constantsInfo).use(privilegePlugin).use(JsonViewer); //注入权限 @@ -83,11 +86,17 @@ function initVue() { //挂载 app.mount('#app'); } - +function setTableYHeight() { + Table.props.scroll.default = { + y: useAppConfigStore().tableYHeight, + }; +} //不需要获取用户信息、用户菜单、用户菜单动态路由,直接初始化vue即可 let token = localRead(LocalStorageKeyConst.USER_TOKEN); if (!token) { - initVue(); + await initVue(); + setTableYHeight(); } else { - getLoginInfo(); + await getLoginInfo(); + setTableYHeight(); } diff --git a/smart-admin-web-typescript/src/store/modules/system/dict.ts b/smart-admin-web-typescript/src/store/modules/system/dict.ts new file mode 100644 index 00000000..2e41c044 --- /dev/null +++ b/smart-admin-web-typescript/src/store/modules/system/dict.ts @@ -0,0 +1,53 @@ +import { defineStore } from 'pinia'; + +export const useDictStore = defineStore({ + id: 'dict', + state: () => ({ + dict: new Array(), + }), + actions: { + // 获取字典 + getDict(keyCode: any) { + if (keyCode == null && keyCode == '') { + return null; + } + try { + for (let i = 0; i < this.dict.length; i++) { + if (this.dict[i].keyCode == keyCode) { + return this.dict[i].value; + } + } + } catch (e) { + return null; + } + }, + // 设置字典 + setDict(keyCode: any, value: any) { + if (keyCode !== null && keyCode !== '') { + this.dict.push({ + key: keyCode, + value: value, + }); + } + }, + // 删除字典 + removeDict(keyCode: any) { + let flag = false; + try { + for (let i = 0; i < this.dict.length; i++) { + if (this.dict[i].keyCode == keyCode) { + this.dict.splice(i, 1); + return true; + } + } + } catch (e) { + flag = false; + } + return false; + }, + // 清空字典 + cleanDict() { + this.dict = new Array(); + }, + }, +}); diff --git a/smart-admin-web-typescript/src/types/config.d.ts b/smart-admin-web-typescript/src/types/config.d.ts index 8ddce866..4f8c6e9c 100644 --- a/smart-admin-web-typescript/src/types/config.d.ts +++ b/smart-admin-web-typescript/src/types/config.d.ts @@ -22,7 +22,6 @@ export type LayoutType = 'side' | 'side-expand'; */ export type ThemeType = 'light' | 'dark'; - /** * 应用信息配置 */ @@ -33,6 +32,10 @@ export interface AppConfig { layout: string; // 主题 sideMenuTheme: ThemeType; + // 表格高度 + tableYHeight: number; + //标签页位置 + pageTagLocation: string; // 侧边菜单宽度 , 默认为256px sideMenuWidth: number; // 主题颜色索引 @@ -51,6 +54,8 @@ export interface AppConfig { footerFlag: boolean; // 帮助文档 helpDocFlag: boolean; + // 帮助文档默认展开 + helpDocExpandFlag: boolean; // 水印 watermarkFlag: boolean; // 网站名称 diff --git a/smart-admin-web-typescript/src/utils/dict.ts b/smart-admin-web-typescript/src/utils/dict.ts new file mode 100644 index 00000000..122d26a3 --- /dev/null +++ b/smart-admin-web-typescript/src/utils/dict.ts @@ -0,0 +1,22 @@ +import { useDictStore } from '/@/store/modules/system/dict'; +import { dictApi } from '/@/api/support/dict-api'; + +/** + * 获取字典数据 + */ + +export function useDict(...args: any) { + let res: any = {}; + args.forEach(async (keyCode: any, index: any) => { + res[keyCode] = []; + const dicts = useDictStore().getDict(keyCode); + if (dicts) { + res[keyCode] = dicts; + } else { + let result = await dictApi.valueList(keyCode); + res[keyCode] = result.data; + useDictStore().setDict(keyCode, res[keyCode]); + } + }); + return res; +} diff --git a/smart-admin-web-typescript/src/utils/ployfill.ts b/smart-admin-web-typescript/src/utils/ployfill.ts new file mode 100644 index 00000000..90923f6c --- /dev/null +++ b/smart-admin-web-typescript/src/utils/ployfill.ts @@ -0,0 +1,14 @@ +//去除谷歌浏览器的scroll、wheel等事件警告 +(function () { + if (typeof EventTarget !== 'undefined') { + let func = EventTarget.prototype.addEventListener; + EventTarget.prototype.addEventListener = function (type, fn, capture) { + this.func = func; + if (typeof capture !== 'boolean') { + capture = capture || {}; + capture.passive = false; + } + this.func(type, fn, capture); + }; + } +})(); diff --git a/smart-admin-web-typescript/src/views/business/erp/catalog/components/category-form-modal.vue b/smart-admin-web-typescript/src/views/business/erp/catalog/components/category-form-modal.vue index 5cfe1521..85362100 100644 --- a/smart-admin-web-typescript/src/views/business/erp/catalog/components/category-form-modal.vue +++ b/smart-admin-web-typescript/src/views/business/erp/catalog/components/category-form-modal.vue @@ -17,7 +17,7 @@ diff --git a/smart-admin-web-typescript/src/views/business/oa/enterprise/components/enterprise-operate-modal.vue b/smart-admin-web-typescript/src/views/business/oa/enterprise/components/enterprise-operate-modal.vue index 3a31a401..80d6b617 100644 --- a/smart-admin-web-typescript/src/views/business/oa/enterprise/components/enterprise-operate-modal.vue +++ b/smart-admin-web-typescript/src/views/business/oa/enterprise/components/enterprise-operate-modal.vue @@ -85,6 +85,21 @@ detail(enterpriseId); } visible.value = true; + nextTick(() => { + // 解决弹窗错误信息显示,没有可忽略 + const domArr = document.getElementsByClassName('ant-modal'); + if (domArr && domArr.length > 0) { + Array.from(domArr).forEach((item) => { + if (item.childNodes && item.childNodes.length > 0) { + Array.from(item.childNodes).forEach((child) => { + if (child.setAttribute) { + child.setAttribute('aria-hidden', 'false'); + } + }); + } + }); + } + }); } function onClose() { diff --git a/smart-admin-web-typescript/src/views/support/dict/index.vue b/smart-admin-web-typescript/src/views/support/dict/index.vue index 3aa74584..b51d1948 100644 --- a/smart-admin-web-typescript/src/views/support/dict/index.vue +++ b/smart-admin-web-typescript/src/views/support/dict/index.vue @@ -43,7 +43,7 @@ 新建 - + diff --git a/smart-admin-web-typescript/src/views/support/job/job-list.vue b/smart-admin-web-typescript/src/views/support/job/job-list.vue index 585d63bf..99bc0dfb 100644 --- a/smart-admin-web-typescript/src/views/support/job/job-list.vue +++ b/smart-admin-web-typescript/src/views/support/job/job-list.vue @@ -161,7 +161,8 @@ import { TRIGGER_TYPE_ENUM } from '/@/constants/support/job-const.js'; import JobFormModal from './components/job-form-modal.vue'; import JobLogListModal from './components/job-log-list-modal.vue'; - import { SmartLoading } from "/@/components/framework/smart-loading/index.js"; + import { SmartLoading } from '/@/components/framework/smart-loading/index.js'; + const activeKey = ref('1'); const columns = ref([ { @@ -239,8 +240,6 @@ }, ]); - const activeKey = ref('1'); - // ---------------- 查询数据 ----------------------- const queryFormState = { @@ -333,7 +332,7 @@ // ------------------------------------ 删除操作 ------------------------------------- - function confirmDelete(jobId, jobName){ + function confirmDelete(jobId, jobName) { Modal.confirm({ title: '警告', content: `确定要删除【${jobName}】任务吗?`, @@ -347,15 +346,15 @@ }); } - async function deleteJob(jobId){ - try{ + async function deleteJob(jobId) { + try { SmartLoading.show(); await jobApi.deleteJob(jobId); message.success('删除成功!'); queryJobList(); - }catch (e){ + } catch (e) { smartSentry.captureError(e); - }finally { + } finally { SmartLoading.hide(); } } diff --git a/smart-admin-web-typescript/src/views/system/account/components/center/index.vue b/smart-admin-web-typescript/src/views/system/account/components/center/index.vue index d51d8a06..b38525c7 100644 --- a/smart-admin-web-typescript/src/views/system/account/components/center/index.vue +++ b/smart-admin-web-typescript/src/views/system/account/components/center/index.vue @@ -44,7 +44,7 @@ list-type="picture-card" class="avatar-uploader" :show-upload-list="false" - :headers="{ 'x-access-token': useUserStore().getToken }" + :headers="{ Authorization: 'Bearer ' + useUserStore().getToken }" :customRequest="customRequest" :before-upload="beforeUpload" > diff --git a/smart-admin-web-typescript/src/views/system/account/components/password/index.vue b/smart-admin-web-typescript/src/views/system/account/components/password/index.vue index a7832983..08cea9e0 100644 --- a/smart-admin-web-typescript/src/views/system/account/components/password/index.vue +++ b/smart-admin-web-typescript/src/views/system/account/components/password/index.vue @@ -4,13 +4,13 @@ - + - + - + 修改密码 @@ -74,6 +74,7 @@ const formDefault = { oldPassword: '', newPassword: '', + confirmPwd: '', }; let form = reactive({ ...formDefault, diff --git a/smart-admin-web-typescript/src/views/system/account/index.vue b/smart-admin-web-typescript/src/views/system/account/index.vue index e272cbe8..6707f6d3 100644 --- a/smart-admin-web-typescript/src/views/system/account/index.vue +++ b/smart-admin-web-typescript/src/views/system/account/index.vue @@ -31,10 +31,13 @@ }); // 选中的菜单 let selectedMenu = ref({ menuId: 0 }); - let selectedKeys = computed(() => { - return _.isEmpty(selectedMenu.value) ? [] : [selectedMenu.value.menuId]; - }); - + let selectedKeys = ref([]); + watch( + () => selectedMenu.value, + () => { + selectedKeys.value = _.isEmpty(selectedMenu.value) ? [] : [selectedMenu.value.menuId]; + } + ); function selectMenu(menuId) { selectedMenu.value = menuList.value.find((e) => e.menuId === menuId); } diff --git a/smart-admin-web-typescript/src/views/system/department/components/department-form-modal.vue b/smart-admin-web-typescript/src/views/system/department/components/department-form-modal.vue index 0f56a68a..ee3a85f0 100644 --- a/smart-admin-web-typescript/src/views/system/department/components/department-form-modal.vue +++ b/smart-admin-web-typescript/src/views/system/department/components/department-form-modal.vue @@ -28,44 +28,59 @@ diff --git a/smart-admin-web-typescript/yarn.lock b/smart-admin-web-typescript/yarn.lock new file mode 100644 index 00000000..02bb4ccb --- /dev/null +++ b/smart-admin-web-typescript/yarn.lock @@ -0,0 +1,3981 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.0": + "integrity" "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@ant-design/colors@^6.0.0": + "integrity" "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==" + "resolved" "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/icons-svg@^4.2.1": + "integrity" "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==" + "resolved" "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz" + "version" "4.4.2" + +"@ant-design/icons-vue@^7.0.0", "@ant-design/icons-vue@^7.0.1": + "integrity" "sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q==" + "resolved" "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-svg" "^4.2.1" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": + "integrity" "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" + "version" "7.26.2" + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + "js-tokens" "^4.0.0" + "picocolors" "^1.0.0" + +"@babel/compat-data@^7.26.5": + "integrity" "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz" + "version" "7.26.5" + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.24.7": + "integrity" "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz" + "version" "7.26.0" + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" + "convert-source-map" "^2.0.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.3" + "semver" "^6.3.1" + +"@babel/generator@^7.26.0", "@babel/generator@^7.26.5": + "integrity" "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz" + "version" "7.26.5" + dependencies: + "@babel/parser" "^7.26.5" + "@babel/types" "^7.26.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + "jsesc" "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.25.9": + "integrity" "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-compilation-targets@^7.25.9": + "integrity" "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz" + "version" "7.26.5" + dependencies: + "@babel/compat-data" "^7.26.5" + "@babel/helper-validator-option" "^7.25.9" + "browserslist" "^4.24.0" + "lru-cache" "^5.1.1" + "semver" "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.25.9": + "integrity" "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" + "semver" "^6.3.1" + +"@babel/helper-member-expression-to-functions@^7.25.9": + "integrity" "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-imports@^7.24.7", "@babel/helper-module-imports@^7.25.9": + "integrity" "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.26.0": + "integrity" "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz" + "version" "7.26.0" + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-optimise-call-expression@^7.25.9": + "integrity" "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5": + "integrity" "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz" + "version" "7.26.5" + +"@babel/helper-replace-supers@^7.25.9": + "integrity" "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz" + "version" "7.26.5" + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.26.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + "integrity" "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==" + "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-string-parser@^7.25.9": + "integrity" "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==" + "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz" + "version" "7.25.9" + +"@babel/helper-validator-identifier@^7.25.9": + "integrity" "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" + "version" "7.25.9" + +"@babel/helper-validator-option@^7.25.9": + "integrity" "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz" + "version" "7.25.9" + +"@babel/helpers@^7.26.0": + "integrity" "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz" + "version" "7.26.0" + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + +"@babel/parser@^7.24.4", "@babel/parser@^7.25.3", "@babel/parser@^7.25.6", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.5": + "integrity" "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz" + "version" "7.26.5" + dependencies: + "@babel/types" "^7.26.5" + +"@babel/plugin-syntax-jsx@^7.24.7": + "integrity" "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-typescript@^7.25.9": + "integrity" "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-typescript@^7.24.7": + "integrity" "sha512-GJhPO0y8SD5EYVCy2Zr+9dSZcEgaSmq5BLR0Oc25TOEhC+ba49vUAGZFjy8v79z9E1mdldq4x9d1xgh4L1d5dQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.5.tgz" + "version" "7.26.5" + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-syntax-typescript" "^7.25.9" + +"@babel/runtime@^7.10.5", "@babel/runtime@^7.12.0": + "integrity" "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz" + "version" "7.26.0" + dependencies: + "regenerator-runtime" "^0.14.0" + +"@babel/template@^7.25.0", "@babel/template@^7.25.9": + "integrity" "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz" + "version" "7.25.9" + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.6", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.5": + "integrity" "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz" + "version" "7.26.5" + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.5" + "@babel/parser" "^7.26.5" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.5" + "debug" "^4.3.1" + "globals" "^11.1.0" + +"@babel/types@^7.25.6", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.5": + "integrity" "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz" + "version" "7.26.5" + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.5.0": + "integrity" "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==" + "resolved" "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz" + "version" "3.6.1" + +"@emotion/hash@^0.9.0": + "integrity" "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" + "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz" + "version" "0.9.2" + +"@emotion/unitless@^0.8.0": + "integrity" "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" + "version" "0.8.1" + +"@esbuild/win32-x64@0.20.2": + "integrity" "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==" + "resolved" "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz" + "version" "0.20.2" + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + "integrity" "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==" + "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "eslint-visitor-keys" "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": + "integrity" "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==" + "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" + "version" "4.12.1" + +"@eslint/config-array@^0.19.0": + "integrity" "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==" + "resolved" "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz" + "version" "0.19.1" + dependencies: + "@eslint/object-schema" "^2.1.5" + "debug" "^4.3.1" + "minimatch" "^3.1.2" + +"@eslint/core@^0.10.0": + "integrity" "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==" + "resolved" "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz" + "version" "0.10.0" + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.2.0": + "integrity" "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.3.2" + "espree" "^10.0.1" + "globals" "^14.0.0" + "ignore" "^5.2.0" + "import-fresh" "^3.2.1" + "js-yaml" "^4.1.0" + "minimatch" "^3.1.2" + "strip-json-comments" "^3.1.1" + +"@eslint/js@9.18.0": + "integrity" "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==" + "resolved" "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz" + "version" "9.18.0" + +"@eslint/object-schema@^2.1.5": + "integrity" "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==" + "resolved" "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz" + "version" "2.1.5" + +"@eslint/plugin-kit@^0.2.5": + "integrity" "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==" + "resolved" "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz" + "version" "0.2.5" + dependencies: + "@eslint/core" "^0.10.0" + "levn" "^0.4.1" + +"@humanfs/core@^0.19.1": + "integrity" "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==" + "resolved" "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" + "version" "0.19.1" + +"@humanfs/node@^0.16.6": + "integrity" "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==" + "resolved" "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz" + "version" "0.16.6" + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + +"@humanwhocodes/module-importer@^1.0.1": + "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + "version" "1.0.1" + +"@humanwhocodes/retry@^0.3.0": + "integrity" "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" + "version" "0.3.1" + +"@humanwhocodes/retry@^0.4.1": + "integrity" "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz" + "version" "0.4.1" + +"@intlify/core-base@9.13.1": + "integrity" "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==" + "resolved" "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.13.1.tgz" + "version" "9.13.1" + dependencies: + "@intlify/message-compiler" "9.13.1" + "@intlify/shared" "9.13.1" + +"@intlify/message-compiler@9.13.1": + "integrity" "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==" + "resolved" "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.13.1.tgz" + "version" "9.13.1" + dependencies: + "@intlify/shared" "9.13.1" + "source-map-js" "^1.0.2" + +"@intlify/shared@9.13.1": + "integrity" "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==" + "resolved" "https://registry.npmjs.org/@intlify/shared/-/shared-9.13.1.tgz" + "version" "9.13.1" + +"@isaacs/cliui@^8.0.2": + "integrity" "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==" + "resolved" "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + "version" "8.0.2" + dependencies: + "string-width" "^5.1.2" + "string-width-cjs" "npm:string-width@^4.2.0" + "strip-ansi" "^7.0.1" + "strip-ansi-cjs" "npm:strip-ansi@^6.0.1" + "wrap-ansi" "^8.1.0" + "wrap-ansi-cjs" "npm:wrap-ansi@^7.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + "integrity" "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz" + "version" "0.3.8" + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + "integrity" "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + "version" "3.1.2" + +"@jridgewell/set-array@^1.2.1": + "integrity" "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + "version" "1.2.1" + +"@jridgewell/source-map@^0.3.3": + "integrity" "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" + "version" "0.3.6" + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + "integrity" "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" + "version" "1.5.0" + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + "integrity" "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + "version" "0.3.25" + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@nodelib/fs.scandir@2.1.5": + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" + dependencies: + "@nodelib/fs.stat" "2.0.5" + "run-parallel" "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" + +"@nodelib/fs.walk@^1.2.3": + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "@nodelib/fs.scandir" "2.1.5" + "fastq" "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + "integrity" "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" + "resolved" "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + "version" "0.11.0" + +"@pkgr/core@^0.1.0": + "integrity" "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==" + "resolved" "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz" + "version" "0.1.1" + +"@rollup/rollup-win32-x64-msvc@4.30.1": + "integrity" "sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==" + "resolved" "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz" + "version" "4.30.1" + +"@simonwep/pickr@~1.8.0": + "integrity" "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==" + "resolved" "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.8.2.tgz" + "version" "1.8.2" + dependencies: + "core-js" "^3.15.1" + "nanopop" "^2.1.0" + +"@transloadit/prettier-bytes@0.0.7": + "integrity" "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==" + "resolved" "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz" + "version" "0.0.7" + +"@types/eslint-scope@^3.7.7": + "version" "3.7.7" + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@>=8.0.0": + "version" "9.6.1" + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.6", "@types/estree@1.0.6": + "integrity" "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" + "version" "1.0.6" + +"@types/event-emitter@^0.3.3": + "integrity" "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==" + "resolved" "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.5.tgz" + "version" "0.3.5" + +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": + "integrity" "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + "version" "7.0.15" + +"@types/minimist@^1.2.0": + "integrity" "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" + "resolved" "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz" + "version" "1.2.5" + +"@types/node@*", "@types/node@^18.0.0 || >=20.0.0": + "version" "22.13.9" + dependencies: + "undici-types" "~6.20.0" + +"@types/normalize-package-data@^2.4.0": + "integrity" "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" + "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz" + "version" "2.4.4" + +"@types/parse-json@^4.0.0": + "integrity" "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" + "version" "4.0.2" + +"@typescript-eslint/eslint-plugin@8.20.0": + "integrity" "sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/type-utils" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + "graphemer" "^1.4.0" + "ignore" "^5.3.1" + "natural-compare" "^1.4.0" + "ts-api-utils" "^2.0.0" + +"@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@8.20.0": + "integrity" "sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + "debug" "^4.3.4" + +"@typescript-eslint/scope-manager@8.20.0": + "integrity" "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + +"@typescript-eslint/type-utils@8.20.0": + "integrity" "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + "debug" "^4.3.4" + "ts-api-utils" "^2.0.0" + +"@typescript-eslint/types@8.20.0": + "integrity" "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz" + "version" "8.20.0" + +"@typescript-eslint/typescript-estree@8.20.0": + "integrity" "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + "debug" "^4.3.4" + "fast-glob" "^3.3.2" + "is-glob" "^4.0.3" + "minimatch" "^9.0.4" + "semver" "^7.6.0" + "ts-api-utils" "^2.0.0" + +"@typescript-eslint/utils@^8.20.0", "@typescript-eslint/utils@8.20.0": + "integrity" "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + +"@typescript-eslint/visitor-keys@8.20.0": + "integrity" "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@typescript-eslint/types" "8.20.0" + "eslint-visitor-keys" "^4.2.0" + +"@uppy/companion-client@^2.2.2": + "integrity" "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==" + "resolved" "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.2.2.tgz" + "version" "2.2.2" + dependencies: + "@uppy/utils" "^4.1.2" + "namespace-emitter" "^2.0.1" + +"@uppy/core@^2.0.3", "@uppy/core@^2.1.1", "@uppy/core@^2.1.4", "@uppy/core@^2.3.3": + "integrity" "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==" + "resolved" "https://registry.npmjs.org/@uppy/core/-/core-2.3.4.tgz" + "version" "2.3.4" + dependencies: + "@transloadit/prettier-bytes" "0.0.7" + "@uppy/store-default" "^2.1.1" + "@uppy/utils" "^4.1.3" + "lodash.throttle" "^4.1.1" + "mime-match" "^1.0.2" + "namespace-emitter" "^2.0.1" + "nanoid" "^3.1.25" + "preact" "^10.5.13" + +"@uppy/store-default@^2.1.1": + "integrity" "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==" + "resolved" "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.1.1.tgz" + "version" "2.1.1" + +"@uppy/utils@^4.1.2", "@uppy/utils@^4.1.3": + "integrity" "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==" + "resolved" "https://registry.npmjs.org/@uppy/utils/-/utils-4.1.3.tgz" + "version" "4.1.3" + dependencies: + "lodash.throttle" "^4.1.1" + +"@uppy/xhr-upload@^2.0.3", "@uppy/xhr-upload@^2.0.7": + "integrity" "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==" + "resolved" "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz" + "version" "2.1.3" + dependencies: + "@uppy/companion-client" "^2.2.2" + "@uppy/utils" "^4.1.2" + "nanoid" "^3.1.25" + +"@vitejs/plugin-vue-jsx@4.0.1": + "integrity" "sha512-7mg9HFGnFHMEwCdB6AY83cVK4A6sCqnrjFYF4WIlebYAQVVJ/sC/CiTruVdrRlhrFoeZ8rlMxY9wYpPTIRhhAg==" + "resolved" "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "@babel/core" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.24.7" + "@vue/babel-plugin-jsx" "^1.2.2" + +"@vitejs/plugin-vue@5.1.4": + "integrity" "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==" + "resolved" "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz" + "version" "5.1.4" + +"@volar/language-core@~2.4.11", "@volar/language-core@2.4.11": + "integrity" "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==" + "resolved" "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.11.tgz" + "version" "2.4.11" + dependencies: + "@volar/source-map" "2.4.11" + +"@volar/source-map@2.4.11": + "integrity" "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==" + "resolved" "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.11.tgz" + "version" "2.4.11" + +"@volar/typescript@~2.4.11": + "integrity" "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==" + "resolved" "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.11.tgz" + "version" "2.4.11" + dependencies: + "@volar/language-core" "2.4.11" + "path-browserify" "^1.0.1" + "vscode-uri" "^3.0.8" + +"@vue/babel-helper-vue-transform-on@1.2.5": + "integrity" "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==" + "resolved" "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz" + "version" "1.2.5" + +"@vue/babel-plugin-jsx@^1.2.2": + "integrity" "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==" + "resolved" "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz" + "version" "1.2.5" + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@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" + "html-tags" "^3.3.1" + "svg-tags" "^1.0.0" + +"@vue/babel-plugin-resolve-type@1.2.5": + "integrity" "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==" + "resolved" "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz" + "version" "1.2.5" + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/parser" "^7.25.6" + "@vue/compiler-sfc" "^3.5.3" + +"@vue/compiler-core@3.4.27": + "integrity" "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==" + "resolved" "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@babel/parser" "^7.24.4" + "@vue/shared" "3.4.27" + "entities" "^4.5.0" + "estree-walker" "^2.0.2" + "source-map-js" "^1.2.0" + +"@vue/compiler-core@3.5.13": + "integrity" "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==" + "resolved" "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz" + "version" "3.5.13" + dependencies: + "@babel/parser" "^7.25.3" + "@vue/shared" "3.5.13" + "entities" "^4.5.0" + "estree-walker" "^2.0.2" + "source-map-js" "^1.2.0" + +"@vue/compiler-dom@^3.5.0", "@vue/compiler-dom@3.5.13": + "integrity" "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==" + "resolved" "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz" + "version" "3.5.13" + dependencies: + "@vue/compiler-core" "3.5.13" + "@vue/shared" "3.5.13" + +"@vue/compiler-dom@3.4.27": + "integrity" "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==" + "resolved" "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@vue/compiler-core" "3.4.27" + "@vue/shared" "3.4.27" + +"@vue/compiler-sfc@^3.5.3": + "integrity" "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==" + "resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz" + "version" "3.5.13" + dependencies: + "@babel/parser" "^7.25.3" + "@vue/compiler-core" "3.5.13" + "@vue/compiler-dom" "3.5.13" + "@vue/compiler-ssr" "3.5.13" + "@vue/shared" "3.5.13" + "estree-walker" "^2.0.2" + "magic-string" "^0.30.11" + "postcss" "^8.4.48" + "source-map-js" "^1.2.0" + +"@vue/compiler-sfc@3.4.27": + "integrity" "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==" + "resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@babel/parser" "^7.24.4" + "@vue/compiler-core" "3.4.27" + "@vue/compiler-dom" "3.4.27" + "@vue/compiler-ssr" "3.4.27" + "@vue/shared" "3.4.27" + "estree-walker" "^2.0.2" + "magic-string" "^0.30.10" + "postcss" "^8.4.38" + "source-map-js" "^1.2.0" + +"@vue/compiler-ssr@3.4.27": + "integrity" "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==" + "resolved" "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@vue/compiler-dom" "3.4.27" + "@vue/shared" "3.4.27" + +"@vue/compiler-ssr@3.5.13": + "integrity" "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==" + "resolved" "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz" + "version" "3.5.13" + dependencies: + "@vue/compiler-dom" "3.5.13" + "@vue/shared" "3.5.13" + +"@vue/compiler-vue2@^2.7.16": + "integrity" "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==" + "resolved" "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz" + "version" "2.7.16" + dependencies: + "de-indent" "^1.0.2" + "he" "^1.2.0" + +"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.5.1": + "integrity" "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" + "resolved" "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz" + "version" "6.6.4" + +"@vue/eslint-config-prettier@^10.0.0": + "integrity" "sha512-J6wV91y2pXc0Phha01k0WOHBTPsoSTf4xlmMjoKaeSxBpAdsgTppGF5RZRdOHM7OA74zAXD+VLANrtYXpiPKkQ==" + "resolved" "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "eslint-config-prettier" "^9.1.0" + "eslint-plugin-prettier" "^5.2.1" + +"@vue/eslint-config-typescript@^14.1.1": + "integrity" "sha512-bOreIxlSC/xsUdhDdKIHb1grwJah+IokNeJ50LqA1StdOHeSPUxSIPNxyKgRx4YdjhyzC6TKtrCf6yYK99x3Uw==" + "resolved" "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-14.3.0.tgz" + "version" "14.3.0" + dependencies: + "@typescript-eslint/utils" "^8.20.0" + "fast-glob" "^3.3.3" + "typescript-eslint" "^8.20.0" + "vue-eslint-parser" "^9.4.3" + +"@vue/language-core@2.2.0": + "integrity" "sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==" + "resolved" "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "@volar/language-core" "~2.4.11" + "@vue/compiler-dom" "^3.5.0" + "@vue/compiler-vue2" "^2.7.16" + "@vue/shared" "^3.5.0" + "alien-signals" "^0.4.9" + "minimatch" "^9.0.3" + "muggle-string" "^0.4.1" + "path-browserify" "^1.0.1" + +"@vue/reactivity@3.4.27": + "integrity" "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==" + "resolved" "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@vue/shared" "3.4.27" + +"@vue/runtime-core@3.4.27": + "integrity" "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==" + "resolved" "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@vue/reactivity" "3.4.27" + "@vue/shared" "3.4.27" + +"@vue/runtime-dom@3.4.27": + "integrity" "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==" + "resolved" "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@vue/runtime-core" "3.4.27" + "@vue/shared" "3.4.27" + "csstype" "^3.1.3" + +"@vue/server-renderer@3.4.27": + "integrity" "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==" + "resolved" "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@vue/compiler-ssr" "3.4.27" + "@vue/shared" "3.4.27" + +"@vue/shared@^3.5.0", "@vue/shared@3.5.13": + "integrity" "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==" + "resolved" "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz" + "version" "3.5.13" + +"@vue/shared@3.4.27": + "integrity" "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" + "resolved" "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz" + "version" "3.4.27" + +"@vue/tsconfig@0.5.1": + "integrity" "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==" + "resolved" "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz" + "version" "0.5.1" + +"@wangeditor/basic-modules@^1.1.3", "@wangeditor/basic-modules@1.x": + "integrity" "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==" + "resolved" "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "is-url" "^1.2.4" + +"@wangeditor/code-highlight@^1.0.2": + "integrity" "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==" + "resolved" "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "prismjs" "^1.23.0" + +"@wangeditor/core@^1.1.11", "@wangeditor/core@1.x": + "integrity" "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==" + "resolved" "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz" + "version" "1.1.19" + dependencies: + "@types/event-emitter" "^0.3.3" + "event-emitter" "^0.3.5" + "html-void-elements" "^2.0.0" + "i18next" "^20.4.0" + "scroll-into-view-if-needed" "^2.2.28" + "slate-history" "^0.66.0" + +"@wangeditor/editor-for-vue@5.1.12": + "integrity" "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==" + "resolved" "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz" + "version" "5.1.12" + +"@wangeditor/editor@>=5.1.0", "@wangeditor/editor@5.1.14": + "integrity" "sha512-erILPAkpKldyGi4cEwrOW65v12GhZy2qj2A8kPlypU46lE72Y3XowZxWogN1TI/mqMDR84AHr0QWOvygOV1xwQ==" + "resolved" "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.14.tgz" + "version" "5.1.14" + dependencies: + "@uppy/core" "^2.1.1" + "@uppy/xhr-upload" "^2.0.3" + "@wangeditor/basic-modules" "^1.1.3" + "@wangeditor/code-highlight" "^1.0.2" + "@wangeditor/core" "^1.1.11" + "@wangeditor/list-module" "^1.0.2" + "@wangeditor/table-module" "^1.1.1" + "@wangeditor/upload-image-module" "^1.0.1" + "@wangeditor/video-module" "^1.1.1" + "dom7" "^3.0.0" + "is-hotkey" "^0.2.0" + "lodash.camelcase" "^4.3.0" + "lodash.clonedeep" "^4.5.0" + "lodash.debounce" "^4.0.8" + "lodash.foreach" "^4.5.0" + "lodash.isequal" "^4.5.0" + "lodash.throttle" "^4.1.1" + "lodash.toarray" "^4.4.0" + "nanoid" "^3.2.0" + "slate" "^0.72.0" + "snabbdom" "^3.1.0" + +"@wangeditor/list-module@^1.0.2": + "integrity" "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==" + "resolved" "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz" + "version" "1.0.5" + +"@wangeditor/table-module@^1.1.1": + "integrity" "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==" + "resolved" "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz" + "version" "1.1.4" + +"@wangeditor/upload-image-module@^1.0.1": + "integrity" "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==" + "resolved" "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz" + "version" "1.0.2" + +"@wangeditor/video-module@^1.1.1": + "integrity" "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==" + "resolved" "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz" + "version" "1.1.4" + +"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": + "version" "1.14.1" + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + "version" "1.13.2" + +"@webassemblyjs/helper-api-error@1.13.2": + "version" "1.13.2" + +"@webassemblyjs/helper-buffer@1.14.1": + "version" "1.14.1" + +"@webassemblyjs/helper-numbers@1.13.2": + "version" "1.13.2" + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + "version" "1.13.2" + +"@webassemblyjs/helper-wasm-section@1.14.1": + "version" "1.14.1" + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + "version" "1.13.2" + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + "version" "1.13.2" + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + "version" "1.13.2" + +"@webassemblyjs/wasm-edit@^1.14.1": + "version" "1.14.1" + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + "version" "1.14.1" + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + "version" "1.14.1" + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": + "version" "1.14.1" + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + "version" "1.14.1" + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + "version" "1.2.0" + +"@xtuc/long@4.2.2": + "version" "4.2.2" + +"abbrev@1": + "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + "version" "1.1.1" + +"acorn-jsx@^5.3.2": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8.14.0", "acorn@^8.8.2", "acorn@^8.9.0": + "integrity" "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" + "version" "8.14.0" + +"ajv-formats@^2.1.1": + "version" "2.1.1" + dependencies: + "ajv" "^8.0.0" + +"ajv-keywords@^5.1.0": + "version" "5.1.0" + dependencies: + "fast-deep-equal" "^3.1.3" + +"ajv@^6.12.4": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + dependencies: + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" + +"ajv@^8.0.0": + "version" "8.17.1" + dependencies: + "fast-deep-equal" "^3.1.3" + "fast-uri" "^3.0.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + +"ajv@^8.0.1": + "integrity" "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + "version" "8.17.1" + dependencies: + "fast-deep-equal" "^3.1.3" + "fast-uri" "^3.0.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + +"ajv@^8.8.2", "ajv@^8.9.0": + "version" "8.17.1" + dependencies: + "fast-deep-equal" "^3.1.3" + "fast-uri" "^3.0.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + +"alien-signals@^0.4.9": + "integrity" "sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==" + "resolved" "https://registry.npmjs.org/alien-signals/-/alien-signals-0.4.14.tgz" + "version" "0.4.14" + +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" + +"ansi-regex@^6.0.1": + "integrity" "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" + "version" "6.1.0" + +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansi-styles@^6.1.0": + "integrity" "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + "version" "6.2.1" + +"ant-design-vue@4.2.5": + "integrity" "sha512-dh5CBXSaxJZBFQBd156sOUuZPfxI7pZsNXDYpHNBt/JyKZoYlbetRp/nJmSragS2Oo0mVC23Ote+TQSGc0TX6g==" + "resolved" "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-4.2.5.tgz" + "version" "4.2.5" + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-vue" "^7.0.0" + "@babel/runtime" "^7.10.5" + "@ctrl/tinycolor" "^3.5.0" + "@emotion/hash" "^0.9.0" + "@emotion/unitless" "^0.8.0" + "@simonwep/pickr" "~1.8.0" + "array-tree-filter" "^2.1.0" + "async-validator" "^4.0.0" + "csstype" "^3.1.1" + "dayjs" "^1.10.5" + "dom-align" "^1.12.1" + "dom-scroll-into-view" "^2.0.0" + "lodash" "^4.17.21" + "lodash-es" "^4.17.15" + "resize-observer-polyfill" "^1.5.1" + "scroll-into-view-if-needed" "^2.2.25" + "shallow-equal" "^1.0.0" + "stylis" "^4.1.3" + "throttle-debounce" "^5.0.0" + "vue-types" "^3.0.0" + "warning" "^4.0.0" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"array-tree-filter@^2.1.0": + "integrity" "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + "resolved" "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz" + "version" "2.1.0" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"arrify@^1.0.1": + "integrity" "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" + "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" + "version" "1.0.1" + +"astral-regex@^2.0.0": + "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + "version" "2.0.0" + +"async-validator@^4.0.0": + "integrity" "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + "resolved" "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz" + "version" "4.2.5" + +"asynckit@^0.4.0": + "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "version" "0.4.0" + +"axios@1.6.8": + "integrity" "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==" + "resolved" "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz" + "version" "1.6.8" + dependencies: + "follow-redirects" "^1.15.6" + "form-data" "^4.0.0" + "proxy-from-env" "^1.1.0" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"balanced-match@^2.0.0": + "integrity" "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz" + "version" "2.0.0" + +"boolbase@^1.0.0": + "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + "version" "1.0.0" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"brace-expansion@^2.0.1": + "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "balanced-match" "^1.0.0" + +"braces@^3.0.3": + "integrity" "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "fill-range" "^7.1.1" + +"browserslist@^4.24.0", "browserslist@>= 4.21.0": + "integrity" "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz" + "version" "4.24.4" + dependencies: + "caniuse-lite" "^1.0.30001688" + "electron-to-chromium" "^1.5.73" + "node-releases" "^2.0.19" + "update-browserslist-db" "^1.1.1" + +"buffer-from@^1.0.0": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camelcase-keys@^6.2.2": + "integrity" "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==" + "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" + "version" "6.2.2" + dependencies: + "camelcase" "^5.3.1" + "map-obj" "^4.0.0" + "quick-lru" "^4.0.1" + +"camelcase@^5.3.1": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"caniuse-lite@^1.0.30001688": + "integrity" "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz" + "version" "1.0.30001692" + +"chalk@^4.0.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chrome-trace-event@^1.0.2": + "version" "1.0.4" + +"clipboard@^2.0.10", "clipboard@2.0.11": + "integrity" "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==" + "resolved" "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz" + "version" "2.0.11" + dependencies: + "good-listener" "^1.2.2" + "select" "^1.1.2" + "tiny-emitter" "^2.0.0" + +"clone-regexp@^2.1.0": + "integrity" "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==" + "resolved" "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "is-regexp" "^2.0.0" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"colord@^2.9.2": + "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + "version" "2.9.3" + +"combined-stream@^1.0.8": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "delayed-stream" "~1.0.0" + +"commander@^2.20.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"compute-scroll-into-view@^1.0.20": + "integrity" "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==" + "resolved" "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz" + "version" "1.0.20" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"convert-source-map@^2.0.0": + "integrity" "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + "version" "2.0.0" + +"copy-anything@^2.0.1": + "integrity" "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==" + "resolved" "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "is-what" "^3.14.1" + +"core-js@^3.15.1", "core-js@^3.6.5": + "integrity" "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==" + "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz" + "version" "3.40.0" + +"cosmiconfig@^7.0.1": + "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "@types/parse-json" "^4.0.0" + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" + +"cross-spawn@^7.0.0", "cross-spawn@^7.0.6": + "integrity" "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" + "version" "7.0.6" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"crypto-js@4.1.1": + "integrity" "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" + "version" "4.1.1" + +"css-functions-list@^3.0.1": + "integrity" "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==" + "resolved" "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz" + "version" "3.2.3" + +"cssesc@^3.0.0": + "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + "version" "3.0.0" + +"csstype@^3.1.1", "csstype@^3.1.3": + "integrity" "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" + "version" "3.1.3" + +"d@^1.0.1", "d@^1.0.2", "d@1": + "integrity" "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==" + "resolved" "https://registry.npmjs.org/d/-/d-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "es5-ext" "^0.10.64" + "type" "^2.7.2" + +"dayjs@^1.10.5", "dayjs@1.10.5": + "integrity" "sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g==" + "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.10.5.tgz" + "version" "1.10.5" + +"de-indent@^1.0.2": + "integrity" "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" + "resolved" "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" + "version" "1.0.2" + +"debug@^4.1.0", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.4": + "integrity" "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" + "version" "4.4.0" + dependencies: + "ms" "^2.1.3" + +"decamelize-keys@^1.1.0": + "integrity" "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==" + "resolved" "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "decamelize" "^1.1.0" + "map-obj" "^1.0.0" + +"decamelize@^1.1.0", "decamelize@^1.2.0": + "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "version" "1.2.0" + +"decimal.js@10.3.1": + "integrity" "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz" + "version" "10.3.1" + +"deep-is@^0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" + +"default-passive-events@^2.0.0": + "integrity" "sha512-eMtt76GpDVngZQ3ocgvRcNCklUMwID1PaNbCNxfpDXuiOXttSh0HzBbda1HU9SIUsDc02vb7g9+3I5tlqe/qMQ==" + "resolved" "https://registry.npmmirror.com/default-passive-events/-/default-passive-events-2.0.0.tgz" + "version" "2.0.0" + +"delayed-stream@~1.0.0": + "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "version" "1.0.0" + +"delegate@^3.1.2": + "integrity" "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + "resolved" "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz" + "version" "3.2.0" + +"diff@5.1.0": + "integrity" "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" + "resolved" "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz" + "version" "5.1.0" + +"diff@5.2.0": + "integrity" "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz" + "version" "5.2.0" + +"diff2html@3.4.47": + "integrity" "sha512-2llDp8750FRUJl8n7apM0tlcqZYxbDHTw7qhzv/kGddByHRpn3Xg/sWHHIy34h492aGSpStEULydxqrITYpuoA==" + "resolved" "https://registry.npmjs.org/diff2html/-/diff2html-3.4.47.tgz" + "version" "3.4.47" + dependencies: + "diff" "5.1.0" + "hogan.js" "3.0.2" + optionalDependencies: + "highlight.js" "11.9.0" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"dom-align@^1.12.1": + "integrity" "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==" + "resolved" "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz" + "version" "1.12.4" + +"dom-scroll-into-view@^2.0.0": + "integrity" "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==" + "resolved" "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz" + "version" "2.0.1" + +"dom7@^3.0.0": + "integrity" "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==" + "resolved" "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ssr-window" "^3.0.0-alpha.1" + +"draggabilly@^2.3.0": + "integrity" "sha512-HHHLPEPZqRXIDQDFRFdK7RONZausNlJ4WkA73ST7Z6O2HPWttxFHVwHo8nccuDLzXWwiVKRVuc6fTkW+CQA++A==" + "resolved" "https://registry.npmjs.org/draggabilly/-/draggabilly-2.4.1.tgz" + "version" "2.4.1" + dependencies: + "get-size" "^2.0.2" + "unidragger" "^2.4.0" + +"eastasianwidth@^0.2.0": + "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + "version" "0.2.0" + +"echarts@5.4.3": + "integrity" "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==" + "resolved" "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz" + "version" "5.4.3" + dependencies: + "tslib" "2.3.0" + "zrender" "5.4.4" + +"electron-to-chromium@^1.5.73": + "integrity" "sha512-Zq16uk1hfQhyGx5GpwPAYDwddJuSGhtRhgOA2mCxANYaDT79nAeGnaXogMGng4KqLaJUVnOnuL0+TDop9nLOiA==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.82.tgz" + "version" "1.5.82" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"emoji-regex@^9.2.2": + "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + "version" "9.2.2" + +"enhanced-resolve@^5.17.1": + "version" "5.18.1" + dependencies: + "graceful-fs" "^4.2.4" + "tapable" "^2.2.0" + +"entities@^4.5.0": + "integrity" "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + "resolved" "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + "version" "4.5.0" + +"errno@^0.1.1": + "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" + "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + "version" "0.1.8" + dependencies: + "prr" "~1.0.1" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"es-module-lexer@^1.2.1": + "version" "1.6.0" + +"es5-ext@^0.10.35", "es5-ext@^0.10.62", "es5-ext@^0.10.64", "es5-ext@~0.10.14": + "integrity" "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==" + "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz" + "version" "0.10.64" + dependencies: + "es6-iterator" "^2.0.3" + "es6-symbol" "^3.1.3" + "esniff" "^2.0.1" + "next-tick" "^1.1.0" + +"es6-iterator@^2.0.3": + "integrity" "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==" + "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "d" "1" + "es5-ext" "^0.10.35" + "es6-symbol" "^3.1.1" + +"es6-symbol@^3.1.1", "es6-symbol@^3.1.3": + "integrity" "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==" + "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz" + "version" "3.1.4" + dependencies: + "d" "^1.0.2" + "ext" "^1.7.0" + +"esbuild@^0.20.1": + "integrity" "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==" + "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz" + "version" "0.20.2" + optionalDependencies: + "@esbuild/aix-ppc64" "0.20.2" + "@esbuild/android-arm" "0.20.2" + "@esbuild/android-arm64" "0.20.2" + "@esbuild/android-x64" "0.20.2" + "@esbuild/darwin-arm64" "0.20.2" + "@esbuild/darwin-x64" "0.20.2" + "@esbuild/freebsd-arm64" "0.20.2" + "@esbuild/freebsd-x64" "0.20.2" + "@esbuild/linux-arm" "0.20.2" + "@esbuild/linux-arm64" "0.20.2" + "@esbuild/linux-ia32" "0.20.2" + "@esbuild/linux-loong64" "0.20.2" + "@esbuild/linux-mips64el" "0.20.2" + "@esbuild/linux-ppc64" "0.20.2" + "@esbuild/linux-riscv64" "0.20.2" + "@esbuild/linux-s390x" "0.20.2" + "@esbuild/linux-x64" "0.20.2" + "@esbuild/netbsd-x64" "0.20.2" + "@esbuild/openbsd-x64" "0.20.2" + "@esbuild/sunos-x64" "0.20.2" + "@esbuild/win32-arm64" "0.20.2" + "@esbuild/win32-ia32" "0.20.2" + "@esbuild/win32-x64" "0.20.2" + +"escalade@^3.2.0": + "integrity" "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" + "version" "3.2.0" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"eslint-config-prettier@*", "eslint-config-prettier@^9.1.0": + "integrity" "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==" + "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz" + "version" "9.1.0" + +"eslint-plugin-prettier@^5.2.1": + "integrity" "sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==" + "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.2.tgz" + "version" "5.2.2" + dependencies: + "prettier-linter-helpers" "^1.0.0" + "synckit" "^0.9.1" + +"eslint-plugin-prettier@~5.0.0": + "integrity" "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==" + "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "prettier-linter-helpers" "^1.0.0" + "synckit" "^0.8.5" + +"eslint-plugin-vue@^9.28.0", "eslint-plugin-vue@^9.29.0": + "integrity" "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==" + "resolved" "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz" + "version" "9.32.0" + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "globals" "^13.24.0" + "natural-compare" "^1.4.0" + "nth-check" "^2.1.1" + "postcss-selector-parser" "^6.0.15" + "semver" "^7.6.3" + "vue-eslint-parser" "^9.4.3" + "xml-name-validator" "^4.0.0" + +"eslint-scope@^7.1.1": + "integrity" "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + "version" "7.2.2" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" + +"eslint-scope@^8.2.0": + "integrity" "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz" + "version" "8.2.0" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" + +"eslint-scope@5.1.1": + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-visitor-keys@^3.3.0", "eslint-visitor-keys@^3.4.1": + "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + "version" "3.4.3" + +"eslint-visitor-keys@^3.4.3": + "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + "version" "3.4.3" + +"eslint-visitor-keys@^4.2.0": + "integrity" "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" + "version" "4.2.0" + +"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "eslint@^8.57.0 || ^9.0.0", "eslint@^9.10.0", "eslint@^9.13.0", "eslint@>= 8.21.0", "eslint@>=6.0.0", "eslint@>=7.0.0", "eslint@>=8.0.0": + "integrity" "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz" + "version" "9.18.0" + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.10.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.18.0" + "@eslint/plugin-kit" "^0.2.5" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" + "ajv" "^6.12.4" + "chalk" "^4.0.0" + "cross-spawn" "^7.0.6" + "debug" "^4.3.2" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^8.2.0" + "eslint-visitor-keys" "^4.2.0" + "espree" "^10.3.0" + "esquery" "^1.5.0" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^8.0.0" + "find-up" "^5.0.0" + "glob-parent" "^6.0.2" + "ignore" "^5.2.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "json-stable-stringify-without-jsonify" "^1.0.1" + "lodash.merge" "^4.6.2" + "minimatch" "^3.1.2" + "natural-compare" "^1.4.0" + "optionator" "^0.9.3" + +"esniff@^2.0.1": + "integrity" "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==" + "resolved" "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "d" "^1.0.1" + "es5-ext" "^0.10.62" + "event-emitter" "^0.3.5" + "type" "^2.7.2" + +"espree@^10.0.1", "espree@^10.3.0": + "integrity" "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==" + "resolved" "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "acorn" "^8.14.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^4.2.0" + +"espree@^9.3.1": + "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" + "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + "version" "9.6.1" + dependencies: + "acorn" "^8.9.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.4.1" + +"esquery@^1.4.0", "esquery@^1.5.0": + "integrity" "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "version" "4.3.0" + +"estraverse@^5.1.0", "estraverse@^5.2.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"estree-walker@^2.0.2": + "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + "version" "2.0.2" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"ev-emitter@^1.0.1": + "integrity" "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + "resolved" "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz" + "version" "1.1.1" + +"event-emitter@^0.3.5": + "integrity" "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==" + "resolved" "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + "version" "0.3.5" + dependencies: + "d" "1" + "es5-ext" "~0.10.14" + +"events@^3.2.0": + "version" "3.3.0" + +"execall@^2.0.0": + "integrity" "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==" + "resolved" "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "clone-regexp" "^2.1.0" + +"ext@^1.7.0": + "integrity" "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==" + "resolved" "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "type" "^2.7.2" + +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-diff@^1.1.2": + "integrity" "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" + "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" + "version" "1.3.0" + +"fast-glob@^3.2.11", "fast-glob@^3.2.9", "fast-glob@^3.3.2", "fast-glob@^3.3.3": + "integrity" "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.8" + +"fast-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-levenshtein@^2.0.6": + "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" + +"fast-uri@^3.0.1": + "integrity" "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==" + "resolved" "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz" + "version" "3.0.5" + +"fastest-levenshtein@^1.0.12": + "integrity" "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" + "resolved" "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + "version" "1.0.16" + +"fastq@^1.6.0": + "integrity" "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz" + "version" "1.18.0" + dependencies: + "reusify" "^1.0.4" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + +"file-entry-cache@^8.0.0": + "integrity" "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" + "version" "8.0.0" + dependencies: + "flat-cache" "^4.0.0" + +"fill-range@^7.1.1": + "integrity" "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + "version" "7.1.1" + dependencies: + "to-regex-range" "^5.0.1" + +"find-up@^4.1.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"flat-cache@^3.0.4": + "integrity" "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "flatted" "^3.2.9" + "keyv" "^4.5.3" + "rimraf" "^3.0.2" + +"flat-cache@^4.0.0": + "integrity" "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "flatted" "^3.2.9" + "keyv" "^4.5.4" + +"flatted@^3.2.9": + "integrity" "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz" + "version" "3.3.2" + +"follow-redirects@^1.15.6": + "integrity" "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz" + "version" "1.15.9" + +"foreground-child@^3.1.0": + "integrity" "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==" + "resolved" "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "cross-spawn" "^7.0.0" + "signal-exit" "^4.0.1" + +"form-data@^4.0.0": + "integrity" "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" + +"fs.realpath@^1.0.0": + "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"function-bind@^1.1.2": + "integrity" "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + "version" "1.1.2" + +"gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"get-size@^2.0.2": + "integrity" "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" + "resolved" "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz" + "version" "2.0.3" + +"get-stdin@^8.0.0": + "integrity" "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==" + "resolved" "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz" + "version" "8.0.0" + +"glob-parent@^5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.2": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-to-regexp@^0.4.1": + "version" "0.4.1" + +"glob@^10.3.7": + "integrity" "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==" + "resolved" "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + "version" "10.4.5" + dependencies: + "foreground-child" "^3.1.0" + "jackspeak" "^3.1.2" + "minimatch" "^9.0.4" + "minipass" "^7.1.2" + "package-json-from-dist" "^1.0.0" + "path-scurry" "^1.11.1" + +"glob@^7.1.3": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"global-modules@^2.0.0": + "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" + "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "global-prefix" "^3.0.0" + +"global-prefix@^3.0.0": + "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" + "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ini" "^1.3.5" + "kind-of" "^6.0.2" + "which" "^1.3.1" + +"globals@^11.1.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globals@^13.24.0": + "integrity" "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + "version" "13.24.0" + dependencies: + "type-fest" "^0.20.2" + +"globals@^14.0.0": + "integrity" "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==" + "resolved" "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" + "version" "14.0.0" + +"globby@^11.1.0": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + dependencies: + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.2.9" + "ignore" "^5.2.0" + "merge2" "^1.4.1" + "slash" "^3.0.0" + +"globjoin@^0.1.4": + "integrity" "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" + "resolved" "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz" + "version" "0.1.4" + +"good-listener@^1.2.2": + "integrity" "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==" + "resolved" "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz" + "version" "1.2.2" + dependencies: + "delegate" "^3.1.2" + +"graceful-fs@^4.1.2", "graceful-fs@^4.2.11", "graceful-fs@^4.2.4": + "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + "version" "4.2.11" + +"graphemer@^1.4.0": + "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + "version" "1.4.0" + +"hard-rejection@^2.1.0": + "integrity" "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + "resolved" "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" + "version" "2.1.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"hasown@^2.0.2": + "integrity" "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" + "resolved" "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "function-bind" "^1.1.2" + +"he@^1.2.0": + "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + "version" "1.2.0" + +"highlight.js@11.8.0": + "integrity" "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==" + "resolved" "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz" + "version" "11.8.0" + +"highlight.js@11.9.0": + "integrity" "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==" + "resolved" "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz" + "version" "11.9.0" + +"hogan.js@3.0.2": + "integrity" "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==" + "resolved" "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "mkdirp" "0.3.0" + "nopt" "1.0.10" + +"hosted-git-info@^2.1.4": + "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + "version" "2.8.9" + +"hosted-git-info@^4.0.1": + "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "lru-cache" "^6.0.0" + +"html-tags@^3.2.0", "html-tags@^3.3.1": + "integrity" "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==" + "resolved" "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz" + "version" "3.3.1" + +"html-void-elements@^2.0.0": + "integrity" "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" + "resolved" "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz" + "version" "2.0.1" + +"i18next@^20.4.0": + "integrity" "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==" + "resolved" "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz" + "version" "20.6.1" + dependencies: + "@babel/runtime" "^7.12.0" + +"iconv-lite@^0.6.3": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"ignore@^5.2.0", "ignore@^5.3.1": + "integrity" "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" + "version" "5.3.2" + +"image-size@~0.5.0": + "integrity" "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==" + "resolved" "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" + "version" "0.5.5" + +"immer@^9.0.6": + "integrity" "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" + "resolved" "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" + "version" "9.0.21" + +"import-fresh@^3.2.1": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"import-lazy@^4.0.0": + "integrity" "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==" + "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" + "version" "4.0.0" + +"imurmurhash@^0.1.4": + "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + +"inflight@^1.0.4": + "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@2": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"ini@^1.3.5": + "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + "version" "1.3.8" + +"is-arrayish@^0.2.1": + "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-core-module@^2.16.0", "is-core-module@^2.5.0": + "integrity" "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" + "version" "2.16.1" + dependencies: + "hasown" "^2.0.2" + +"is-extglob@^2.1.1": + "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-hotkey@^0.2.0": + "integrity" "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==" + "resolved" "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz" + "version" "0.2.0" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-plain-obj@^1.1.0": + "integrity" "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + "version" "1.1.0" + +"is-plain-object@^5.0.0": + "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + "version" "5.0.0" + +"is-plain-object@3.0.1": + "integrity" "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz" + "version" "3.0.1" + +"is-regexp@^2.0.0": + "integrity" "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==" + "resolved" "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz" + "version" "2.1.0" + +"is-url@^1.2.4": + "integrity" "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + "resolved" "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" + "version" "1.2.4" + +"is-what@^3.14.1": + "integrity" "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + "resolved" "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" + "version" "3.14.1" + +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"jackspeak@^3.1.2": + "integrity" "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==" + "resolved" "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + "version" "3.4.3" + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +"jest-worker@^27.4.5": + "version" "27.5.1" + dependencies: + "@types/node" "*" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"jsbn@^1.1.0": + "integrity" "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz" + "version" "1.1.0" + +"jsesc@^3.0.2": + "integrity" "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" + "version" "3.1.0" + +"json-buffer@3.0.1": + "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + "version" "3.0.1" + +"json-parse-even-better-errors@^2.3.0", "json-parse-even-better-errors@^2.3.1": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema-traverse@^1.0.0": + "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + "version" "1.0.0" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"json5@^2.2.3": + "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + "version" "2.2.3" + +"keyv@^4.5.3", "keyv@^4.5.4": + "integrity" "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + "version" "4.5.4" + dependencies: + "json-buffer" "3.0.1" + +"kind-of@^6.0.2", "kind-of@^6.0.3": + "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + "version" "6.0.3" + +"known-css-properties@^0.25.0": + "integrity" "sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==" + "resolved" "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.25.0.tgz" + "version" "0.25.0" + +"less-loader@~11.1.3": + "integrity" "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==" + "resolved" "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz" + "version" "11.1.4" + +"less@*", "less@^3.5.0 || ^4.0.0", "less@~4.2.0": + "integrity" "sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg==" + "resolved" "https://registry.npmjs.org/less/-/less-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "copy-anything" "^2.0.1" + "parse-node-version" "^1.0.1" + "tslib" "^2.3.0" + optionalDependencies: + "errno" "^0.1.1" + "graceful-fs" "^4.1.2" + "image-size" "~0.5.0" + "make-dir" "^2.1.0" + "mime" "^1.4.1" + "needle" "^3.1.0" + "source-map" "~0.6.0" + +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"lines-and-columns@^1.1.6": + "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + "version" "1.2.4" + +"loader-runner@^4.2.0": + "version" "4.3.0" + +"locate-path@^5.0.0": + "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-locate" "^4.1.0" + +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"lodash-es@^4.17.15": + "integrity" "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + "version" "4.17.21" + +"lodash.camelcase@^4.3.0": + "integrity" "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + "resolved" "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + "version" "4.3.0" + +"lodash.clonedeep@^4.5.0": + "integrity" "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + "resolved" "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" + "version" "4.5.0" + +"lodash.debounce@^4.0.8": + "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + "version" "4.0.8" + +"lodash.foreach@^4.5.0": + "integrity" "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" + "resolved" "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz" + "version" "4.5.0" + +"lodash.isequal@^4.5.0": + "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + "version" "4.5.0" + +"lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"lodash.throttle@^4.1.1": + "integrity" "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + "resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + "version" "4.1.1" + +"lodash.toarray@^4.4.0": + "integrity" "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==" + "resolved" "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz" + "version" "4.4.0" + +"lodash.truncate@^4.4.2": + "integrity" "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + "version" "4.4.2" + +"lodash@^4.17.21", "lodash@4.17.21": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"loose-envify@^1.0.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lru-cache@^10.2.0": + "integrity" "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + "version" "10.4.3" + +"lru-cache@^5.1.1": + "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "yallist" "^3.0.2" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"lunar-javascript@1.6.12": + "integrity" "sha512-8BIYt50up4B2ihh0O1MCUh7+y6hDiDRIPp0ubP8KKaA7cIgAi4jD3QvM9OdZj0QNhSvopZPKipLt2Eb9+cLhxw==" + "resolved" "https://registry.npmjs.org/lunar-javascript/-/lunar-javascript-1.6.12.tgz" + "version" "1.6.12" + +"magic-string@^0.30.10", "magic-string@^0.30.11": + "integrity" "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==" + "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz" + "version" "0.30.17" + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + +"make-dir@^2.1.0": + "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "pify" "^4.0.1" + "semver" "^5.6.0" + +"map-obj@^1.0.0": + "integrity" "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" + "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + "version" "1.0.1" + +"map-obj@^4.0.0": + "integrity" "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" + "version" "4.3.0" + +"mathml-tag-names@^2.1.3": + "integrity" "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==" + "resolved" "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz" + "version" "2.1.3" + +"meow@^9.0.0": + "integrity" "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==" + "resolved" "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz" + "version" "9.0.0" + dependencies: + "@types/minimist" "^1.2.0" + "camelcase-keys" "^6.2.2" + "decamelize" "^1.2.0" + "decamelize-keys" "^1.1.0" + "hard-rejection" "^2.1.0" + "minimist-options" "4.1.0" + "normalize-package-data" "^3.0.0" + "read-pkg-up" "^7.0.1" + "redent" "^3.0.0" + "trim-newlines" "^3.0.0" + "type-fest" "^0.18.0" + "yargs-parser" "^20.2.3" + +"merge-stream@^2.0.0": + "version" "2.0.0" + +"merge2@^1.3.0", "merge2@^1.4.1": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"micromatch@^4.0.5", "micromatch@^4.0.8": + "integrity" "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" + "version" "4.0.8" + dependencies: + "braces" "^3.0.3" + "picomatch" "^2.3.1" + +"mime-db@1.52.0": + "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + "version" "1.52.0" + +"mime-match@^1.0.2": + "integrity" "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==" + "resolved" "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "wildcard" "^1.1.0" + +"mime-types@^2.1.12", "mime-types@^2.1.27": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime@^1.4.1": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + +"min-indent@^1.0.0": + "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + "version" "1.0.1" + +"minimatch@^3.1.1", "minimatch@^3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimatch@^9.0.3": + "integrity" "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + "version" "9.0.5" + dependencies: + "brace-expansion" "^2.0.1" + +"minimatch@^9.0.4": + "integrity" "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + "version" "9.0.5" + dependencies: + "brace-expansion" "^2.0.1" + +"minimist-options@4.1.0": + "integrity" "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==" + "resolved" "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "arrify" "^1.0.1" + "is-plain-obj" "^1.1.0" + "kind-of" "^6.0.3" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", "minipass@^7.1.2": + "integrity" "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + "version" "7.1.2" + +"mitt@3.0.1": + "integrity" "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + "resolved" "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz" + "version" "3.0.1" + +"mkdirp@0.3.0": + "integrity" "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + "version" "0.3.0" + +"ms@^2.1.3": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"muggle-string@^0.4.1": + "integrity" "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==" + "resolved" "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz" + "version" "0.4.1" + +"namespace-emitter@^2.0.1": + "integrity" "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==" + "resolved" "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz" + "version" "2.0.1" + +"nanoid@^3.1.25", "nanoid@^3.2.0", "nanoid@^3.3.8": + "integrity" "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz" + "version" "3.3.8" + +"nanopop@^2.1.0": + "integrity" "sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==" + "resolved" "https://registry.npmjs.org/nanopop/-/nanopop-2.4.2.tgz" + "version" "2.4.2" + +"natural-compare@^1.4.0": + "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"needle@^3.1.0": + "integrity" "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==" + "resolved" "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz" + "version" "3.3.1" + dependencies: + "iconv-lite" "^0.6.3" + "sax" "^1.2.4" + +"neo-async@^2.6.2": + "version" "2.6.2" + +"next-tick@^1.1.0": + "integrity" "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + "version" "1.1.0" + +"node-releases@^2.0.19": + "integrity" "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz" + "version" "2.0.19" + +"nopt@1.0.10": + "integrity" "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "abbrev" "1" + +"normalize-package-data@^2.5.0": + "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "hosted-git-info" "^2.1.4" + "resolve" "^1.10.0" + "semver" "2 || 3 || 4 || 5" + "validate-npm-package-license" "^3.0.1" + +"normalize-package-data@^3.0.0": + "integrity" "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "hosted-git-info" "^4.0.1" + "is-core-module" "^2.5.0" + "semver" "^7.3.4" + "validate-npm-package-license" "^3.0.1" + +"normalize-path@^3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"nprogress@0.2.0": + "integrity" "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + "resolved" "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" + "version" "0.2.0" + +"nth-check@^2.1.1": + "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" + "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "boolbase" "^1.0.0" + +"once@^1.3.0": + "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"optionator@^0.9.3": + "integrity" "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" + "version" "0.9.4" + dependencies: + "deep-is" "^0.1.3" + "fast-levenshtein" "^2.0.6" + "levn" "^0.4.1" + "prelude-ls" "^1.2.1" + "type-check" "^0.4.0" + "word-wrap" "^1.2.5" + +"p-limit@^2.2.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^3.0.2": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-locate@^4.1.0": + "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "p-limit" "^2.2.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" + +"package-json-from-dist@^1.0.0": + "integrity" "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + "resolved" "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" + "version" "1.0.1" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"parse-json@^5.0.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@babel/code-frame" "^7.0.0" + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" + +"parse-node-version@^1.0.1": + "integrity" "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + "resolved" "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" + "version" "1.0.1" + +"path-browserify@^1.0.1": + "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + "version" "1.0.1" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-parse@^1.0.7": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-scurry@^1.11.1": + "integrity" "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==" + "resolved" "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "lru-cache" "^10.2.0" + "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"picocolors@^1.0.0", "picocolors@^1.1.1": + "integrity" "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + "version" "1.1.1" + +"picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"pify@^4.0.1": + "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + "version" "4.0.1" + +"pinia@2.1.7": + "integrity" "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==" + "resolved" "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz" + "version" "2.1.7" + dependencies: + "@vue/devtools-api" "^6.5.0" + "vue-demi" ">=0.14.5" + +"postcss-media-query-parser@^0.2.3": + "integrity" "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + "resolved" "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz" + "version" "0.2.3" + +"postcss-resolve-nested-selector@^0.1.1": + "integrity" "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==" + "resolved" "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz" + "version" "0.1.6" + +"postcss-safe-parser@^6.0.0": + "integrity" "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==" + "resolved" "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz" + "version" "6.0.0" + +"postcss-selector-parser@^6.0.10", "postcss-selector-parser@^6.0.15": + "integrity" "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" + "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" + "version" "6.1.2" + dependencies: + "cssesc" "^3.0.0" + "util-deprecate" "^1.0.2" + +"postcss-sorting@^7.0.1": + "integrity" "sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==" + "resolved" "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-7.0.1.tgz" + "version" "7.0.1" + +"postcss-value-parser@^4.2.0": + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" + +"postcss@^8.3.11", "postcss@^8.3.3", "postcss@^8.3.9", "postcss@^8.4.14", "postcss@^8.4.38", "postcss@^8.4.48": + "integrity" "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz" + "version" "8.5.1" + dependencies: + "nanoid" "^3.3.8" + "picocolors" "^1.1.1" + "source-map-js" "^1.2.1" + +"preact@^10.5.13": + "integrity" "sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==" + "resolved" "https://registry.npmjs.org/preact/-/preact-10.25.4.tgz" + "version" "10.25.4" + +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" + +"prettier-linter-helpers@^1.0.0": + "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" + "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "fast-diff" "^1.1.2" + +"prettier@>= 3.0.0", "prettier@>=3.0.0", "prettier@~3.0.2": + "integrity" "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" + "version" "3.0.3" + +"prismjs@^1.23.0": + "integrity" "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" + "version" "1.29.0" + +"proxy-from-env@^1.1.0": + "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + "version" "1.1.0" + +"prr@~1.0.1": + "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + "version" "1.0.1" + +"punycode@^2.1.0": + "integrity" "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + "version" "2.3.1" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"quick-lru@^4.0.1": + "integrity" "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" + "version" "4.0.1" + +"randombytes@^2.1.0": + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"read-pkg-up@^7.0.1": + "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==" + "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "find-up" "^4.1.0" + "read-pkg" "^5.2.0" + "type-fest" "^0.8.1" + +"read-pkg@^5.2.0": + "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==" + "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@types/normalize-package-data" "^2.4.0" + "normalize-package-data" "^2.5.0" + "parse-json" "^5.0.0" + "type-fest" "^0.6.0" + +"redent@^3.0.0": + "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" + "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "indent-string" "^4.0.0" + "strip-indent" "^3.0.0" + +"regenerator-runtime@^0.14.0": + "integrity" "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" + "version" "0.14.1" + +"require-from-string@^2.0.2": + "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + "version" "2.0.2" + +"resize-observer-polyfill@^1.5.1": + "integrity" "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + "version" "1.5.1" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" + +"resolve@^1.10.0": + "integrity" "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz" + "version" "1.22.10" + dependencies: + "is-core-module" "^2.16.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"rimraf@~5.0.1": + "integrity" "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz" + "version" "5.0.10" + dependencies: + "glob" "^10.3.7" + +"rollup@^4.13.0": + "integrity" "sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==" + "resolved" "https://registry.npmjs.org/rollup/-/rollup-4.30.1.tgz" + "version" "4.30.1" + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.30.1" + "@rollup/rollup-android-arm64" "4.30.1" + "@rollup/rollup-darwin-arm64" "4.30.1" + "@rollup/rollup-darwin-x64" "4.30.1" + "@rollup/rollup-freebsd-arm64" "4.30.1" + "@rollup/rollup-freebsd-x64" "4.30.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" + "@rollup/rollup-linux-arm-musleabihf" "4.30.1" + "@rollup/rollup-linux-arm64-gnu" "4.30.1" + "@rollup/rollup-linux-arm64-musl" "4.30.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" + "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" + "@rollup/rollup-linux-riscv64-gnu" "4.30.1" + "@rollup/rollup-linux-s390x-gnu" "4.30.1" + "@rollup/rollup-linux-x64-gnu" "4.30.1" + "@rollup/rollup-linux-x64-musl" "4.30.1" + "@rollup/rollup-win32-arm64-msvc" "4.30.1" + "@rollup/rollup-win32-ia32-msvc" "4.30.1" + "@rollup/rollup-win32-x64-msvc" "4.30.1" + "fsevents" "~2.3.2" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "queue-microtask" "^1.2.2" + +"safe-buffer@^5.1.0": + "version" "5.2.1" + +"safer-buffer@>= 2.1.2 < 3.0.0": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"sax@^1.2.4": + "integrity" "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" + "version" "1.4.1" + +"schema-utils@^4.3.0": + "version" "4.3.0" + dependencies: + "@types/json-schema" "^7.0.9" + "ajv" "^8.9.0" + "ajv-formats" "^2.1.1" + "ajv-keywords" "^5.1.0" + +"scroll-into-view-if-needed@^2.2.25", "scroll-into-view-if-needed@^2.2.28": + "integrity" "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==" + "resolved" "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz" + "version" "2.2.31" + dependencies: + "compute-scroll-into-view" "^1.0.20" + +"select@^1.1.2": + "integrity" "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + "resolved" "https://registry.npmjs.org/select/-/select-1.1.2.tgz" + "version" "1.1.2" + +"semver@^5.6.0": + "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + "version" "5.7.2" + +"semver@^6.3.1": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^7.3.4": + "integrity" "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + "version" "7.6.3" + +"semver@^7.3.6": + "integrity" "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + "version" "7.6.3" + +"semver@^7.6.0": + "integrity" "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + "version" "7.6.3" + +"semver@^7.6.3": + "integrity" "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + "version" "7.6.3" + +"semver@2 || 3 || 4 || 5": + "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + "version" "5.7.2" + +"serialize-javascript@^6.0.2": + "version" "6.0.2" + dependencies: + "randombytes" "^2.1.0" + +"shallow-equal@^1.0.0": + "integrity" "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + "resolved" "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz" + "version" "1.2.1" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "shebang-regex" "^3.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"signal-exit@^3.0.7": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" + +"signal-exit@^4.0.1": + "integrity" "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + "version" "4.1.0" + +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + +"slate-history@^0.66.0": + "integrity" "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==" + "resolved" "https://registry.npmjs.org/slate-history/-/slate-history-0.66.0.tgz" + "version" "0.66.0" + dependencies: + "is-plain-object" "^5.0.0" + +"slate@^0.72.0", "slate@>=0.65.3": + "integrity" "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==" + "resolved" "https://registry.npmjs.org/slate/-/slate-0.72.8.tgz" + "version" "0.72.8" + dependencies: + "immer" "^9.0.6" + "is-plain-object" "^5.0.0" + "tiny-warning" "^1.0.3" + +"slice-ansi@^4.0.0": + "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" + +"sm-crypto@0.3.13": + "integrity" "sha512-ztNF+pZq6viCPMA1A6KKu3bgpkmYti5avykRHbcFIdSipFdkVmfUw2CnpM2kBJyppIalqvczLNM3wR8OQ0pT5w==" + "resolved" "https://registry.npmjs.org/sm-crypto/-/sm-crypto-0.3.13.tgz" + "version" "0.3.13" + dependencies: + "jsbn" "^1.1.0" + +"snabbdom@^3.1.0": + "integrity" "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==" + "resolved" "https://registry.npmjs.org/snabbdom/-/snabbdom-3.6.2.tgz" + "version" "3.6.2" + +"sortablejs@1.15.0": + "integrity" "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + "resolved" "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz" + "version" "1.15.0" + +"source-map-js@^1.0.2", "source-map-js@^1.2.0", "source-map-js@^1.2.1": + "integrity" "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" + "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" + "version" "1.2.1" + +"source-map-support@~0.5.20": + "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + "version" "0.5.21" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map@^0.6.0", "source-map@~0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"spdx-correct@^3.0.0": + "integrity" "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==" + "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "spdx-expression-parse" "^3.0.0" + "spdx-license-ids" "^3.0.0" + +"spdx-exceptions@^2.1.0": + "integrity" "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz" + "version" "2.5.0" + +"spdx-expression-parse@^3.0.0": + "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" + "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "spdx-exceptions" "^2.1.0" + "spdx-license-ids" "^3.0.0" + +"spdx-license-ids@^3.0.0": + "integrity" "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==" + "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz" + "version" "3.0.21" + +"specificity@^0.4.1": + "integrity" "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==" + "resolved" "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz" + "version" "0.4.1" + +"ssr-window@^3.0.0-alpha.1": + "integrity" "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==" + "resolved" "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz" + "version" "3.0.0" + +"string-width-cjs@npm:string-width@^4.2.0": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^4.1.0": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^4.2.3": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^5.0.1", "string-width@^5.1.2": + "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "eastasianwidth" "^0.2.0" + "emoji-regex" "^9.2.2" + "strip-ansi" "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + +"strip-ansi@^7.0.1": + "integrity" "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "ansi-regex" "^6.0.1" + +"strip-indent@^3.0.0": + "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" + "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "min-indent" "^1.0.0" + +"strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" + +"style-search@^0.1.0": + "integrity" "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" + "resolved" "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz" + "version" "0.1.0" + +"stylelint-config-prettier@~9.0.3": + "integrity" "sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==" + "resolved" "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz" + "version" "9.0.5" + +"stylelint-config-recommended@^7.0.0": + "integrity" "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==" + "resolved" "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz" + "version" "7.0.0" + +"stylelint-config-standard@~25.0.0": + "integrity" "sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==" + "resolved" "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz" + "version" "25.0.0" + dependencies: + "stylelint-config-recommended" "^7.0.0" + +"stylelint-order@~5.0.0": + "integrity" "sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==" + "resolved" "https://registry.npmjs.org/stylelint-order/-/stylelint-order-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "postcss" "^8.3.11" + "postcss-sorting" "^7.0.1" + +"stylelint@^14.0.0", "stylelint@^14.4.0", "stylelint@>= 11.x < 15", "stylelint@~14.8.5": + "integrity" "sha512-e3t4H/hlWlspkcNUrkhf44RU3OpPTA7uBOoREGBzSwdEF+2g/+gbZq7WEpMP7BpopcSe/uLaTvDuL+URL7cdnQ==" + "resolved" "https://registry.npmjs.org/stylelint/-/stylelint-14.8.5.tgz" + "version" "14.8.5" + dependencies: + "balanced-match" "^2.0.0" + "colord" "^2.9.2" + "cosmiconfig" "^7.0.1" + "css-functions-list" "^3.0.1" + "debug" "^4.3.4" + "execall" "^2.0.0" + "fast-glob" "^3.2.11" + "fastest-levenshtein" "^1.0.12" + "file-entry-cache" "^6.0.1" + "get-stdin" "^8.0.0" + "global-modules" "^2.0.0" + "globby" "^11.1.0" + "globjoin" "^0.1.4" + "html-tags" "^3.2.0" + "ignore" "^5.2.0" + "import-lazy" "^4.0.0" + "imurmurhash" "^0.1.4" + "is-plain-object" "^5.0.0" + "known-css-properties" "^0.25.0" + "mathml-tag-names" "^2.1.3" + "meow" "^9.0.0" + "micromatch" "^4.0.5" + "normalize-path" "^3.0.0" + "picocolors" "^1.0.0" + "postcss" "^8.4.14" + "postcss-media-query-parser" "^0.2.3" + "postcss-resolve-nested-selector" "^0.1.1" + "postcss-safe-parser" "^6.0.0" + "postcss-selector-parser" "^6.0.10" + "postcss-value-parser" "^4.2.0" + "resolve-from" "^5.0.0" + "specificity" "^0.4.1" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + "style-search" "^0.1.0" + "supports-hyperlinks" "^2.2.0" + "svg-tags" "^1.0.0" + "table" "^6.8.0" + "v8-compile-cache" "^2.3.0" + "write-file-atomic" "^4.0.1" + +"stylis@^4.1.3": + "integrity" "sha512-K7npNOKGRYuhAFFzkzMGfxFDpN6gDwf8hcMiE+uveTVbBgm93HrNP3ZDUpKqzZ4pG7TP6fmb+EMAQPjq9FqqvA==" + "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.3.5.tgz" + "version" "4.3.5" + +"supports-color@^7.0.0", "supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^8.0.0": + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"supports-hyperlinks@^2.2.0": + "integrity" "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==" + "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "has-flag" "^4.0.0" + "supports-color" "^7.0.0" + +"supports-preserve-symlinks-flag@^1.0.0": + "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + "version" "1.0.0" + +"svg-tags@^1.0.0": + "integrity" "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + "resolved" "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz" + "version" "1.0.0" + +"synckit@^0.8.5": + "integrity" "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==" + "resolved" "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz" + "version" "0.8.8" + dependencies: + "@pkgr/core" "^0.1.0" + "tslib" "^2.6.2" + +"synckit@^0.9.1": + "integrity" "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==" + "resolved" "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz" + "version" "0.9.2" + dependencies: + "@pkgr/core" "^0.1.0" + "tslib" "^2.6.2" + +"table@^6.8.0": + "integrity" "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==" + "resolved" "https://registry.npmjs.org/table/-/table-6.9.0.tgz" + "version" "6.9.0" + dependencies: + "ajv" "^8.0.1" + "lodash.truncate" "^4.4.2" + "slice-ansi" "^4.0.0" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + +"tapable@^2.1.1", "tapable@^2.2.0": + "version" "2.2.1" + +"terser-webpack-plugin@^5.3.11": + "version" "5.3.14" + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + "jest-worker" "^27.4.5" + "schema-utils" "^4.3.0" + "serialize-javascript" "^6.0.2" + "terser" "^5.31.1" + +"terser@^5.31.1": + "version" "5.39.0" + dependencies: + "@jridgewell/source-map" "^0.3.3" + "acorn" "^8.8.2" + "commander" "^2.20.0" + "source-map-support" "~0.5.20" + +"terser@^5.4.0", "terser@~5.29.2": + "integrity" "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==" + "resolved" "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz" + "version" "5.29.2" + dependencies: + "@jridgewell/source-map" "^0.3.3" + "acorn" "^8.8.2" + "commander" "^2.20.0" + "source-map-support" "~0.5.20" + +"throttle-debounce@^2.0.1": + "integrity" "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==" + "resolved" "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz" + "version" "2.3.0" + +"throttle-debounce@^5.0.0": + "integrity" "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==" + "resolved" "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz" + "version" "5.0.2" + +"tiny-emitter@^2.0.0": + "integrity" "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + "resolved" "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz" + "version" "2.1.0" + +"tiny-warning@^1.0.3": + "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + "version" "1.0.3" + +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "is-number" "^7.0.0" + +"trim-newlines@^3.0.0": + "integrity" "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" + "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" + "version" "3.0.1" + +"ts-api-utils@^2.0.0": + "integrity" "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==" + "resolved" "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz" + "version" "2.0.0" + +"tslib@^2.3.0", "tslib@2.3.0": + "integrity" "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" + "version" "2.3.0" + +"tslib@^2.6.2": + "integrity" "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" + "version" "2.8.1" + +"type-check@^0.4.0", "type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" + +"type-fest@^0.18.0": + "integrity" "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" + "version" "0.18.1" + +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + +"type-fest@^0.6.0": + "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" + "version" "0.6.0" + +"type-fest@^0.8.1": + "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + "version" "0.8.1" + +"type@^2.7.2": + "integrity" "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + "resolved" "https://registry.npmjs.org/type/-/type-2.7.3.tgz" + "version" "2.7.3" + +"typescript-eslint@^8.20.0": + "integrity" "sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==" + "resolved" "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@typescript-eslint/eslint-plugin" "8.20.0" + "@typescript-eslint/parser" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + +"typescript@*", "typescript@>=4.4.4", "typescript@>=4.8.4", "typescript@>=4.8.4 <5.8.0", "typescript@>=5.0.0", "typescript@5.6.3": + "integrity" "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz" + "version" "5.6.3" + +"ua-parser-js@1.0.35": + "integrity" "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==" + "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz" + "version" "1.0.35" + +"undici-types@~6.20.0": + "version" "6.20.0" + +"unidragger@^2.4.0": + "integrity" "sha512-MueZK2oXuGE6OAlGKIrSXK2zCq+8yb1QUZgqyTDCSJzvwYL0g2Llrad+TtoQTYxtFnNyxxSw0IMnKNIgEMia1w==" + "resolved" "https://registry.npmjs.org/unidragger/-/unidragger-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "unipointer" "^2.4.0" + +"unipointer@^2.4.0": + "integrity" "sha512-VjzDLPjGK7aYpQKH7bnDZS8X4axF5AFU/LQi+NQe1oyEHfaz6lWKhaQ7n4o7vJ1iJ4i2T0quCIfrQM139p05Sw==" + "resolved" "https://registry.npmjs.org/unipointer/-/unipointer-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "ev-emitter" "^1.0.1" + +"update-browserslist-db@^1.1.1": + "integrity" "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==" + "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "escalade" "^3.2.0" + "picocolors" "^1.1.1" + +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "punycode" "^2.1.0" + +"util-deprecate@^1.0.2": + "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"uuid@^11.1.0": + "integrity" "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==" + "resolved" "https://registry.npmmirror.com/uuid/-/uuid-11.1.0.tgz" + "version" "11.1.0" + +"v-viewer@~1.6.4": + "integrity" "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==" + "resolved" "https://registry.npmjs.org/v-viewer/-/v-viewer-1.6.4.tgz" + "version" "1.6.4" + dependencies: + "throttle-debounce" "^2.0.1" + "viewerjs" "^1.5.0" + +"v8-compile-cache@^2.3.0": + "integrity" "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" + "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz" + "version" "2.4.0" + +"validate-npm-package-license@^3.0.1": + "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" + "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "spdx-correct" "^3.0.0" + "spdx-expression-parse" "^3.0.0" + +"viewerjs@^1.5.0": + "integrity" "sha512-0JuVqOmL5v1jmEAlG5EBDR3XquxY8DWFQbFMprOXgaBB0F7Q/X9xWdEaQc59D8xzwkdUgXEMSSknTpriq95igg==" + "resolved" "https://registry.npmjs.org/viewerjs/-/viewerjs-1.11.7.tgz" + "version" "1.11.7" + +"vite@^5.0.0", "vite@5.2.12": + "integrity" "sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==" + "resolved" "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz" + "version" "5.2.12" + dependencies: + "esbuild" "^0.20.1" + "postcss" "^8.4.38" + "rollup" "^4.13.0" + optionalDependencies: + "fsevents" "~2.3.3" + +"vscode-uri@^3.0.8": + "integrity" "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + "resolved" "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz" + "version" "3.0.8" + +"vue-demi@>=0.14.5": + "integrity" "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==" + "resolved" "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz" + "version" "0.14.10" + +"vue-eslint-parser@^9.4.3", "vue-eslint-parser@~9.4.2": + "integrity" "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==" + "resolved" "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz" + "version" "9.4.3" + dependencies: + "debug" "^4.3.4" + "eslint-scope" "^7.1.1" + "eslint-visitor-keys" "^3.3.0" + "espree" "^9.3.1" + "esquery" "^1.4.0" + "lodash" "^4.17.21" + "semver" "^7.3.6" + +"vue-i18n@9.13.1": + "integrity" "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==" + "resolved" "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.13.1.tgz" + "version" "9.13.1" + dependencies: + "@intlify/core-base" "9.13.1" + "@intlify/shared" "9.13.1" + "@vue/devtools-api" "^6.5.0" + +"vue-router@4.3.2": + "integrity" "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==" + "resolved" "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz" + "version" "4.3.2" + dependencies: + "@vue/devtools-api" "^6.5.1" + +"vue-tsc@^2.1.6": + "integrity" "sha512-gtmM1sUuJ8aSb0KoAFmK9yMxb8TxjewmxqTJ1aKphD5Cbu0rULFY6+UQT51zW7SpUcenfPUuflKyVwyx9Qdnxg==" + "resolved" "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "@volar/typescript" "~2.4.11" + "@vue/language-core" "2.2.0" + +"vue-types@^3.0.0": + "integrity" "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==" + "resolved" "https://registry.npmjs.org/vue-types/-/vue-types-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "is-plain-object" "3.0.1" + +"vue@^2.6.14 || ^3.3.0", "vue@^3.0.0", "vue@^3.0.0-0 || ^2.6.0", "vue@^3.0.5", "vue@^3.2.0", "vue@^3.2.25", "vue@>=3.0.3", "vue@>=3.2.0", "vue@3.4.27": + "integrity" "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==" + "resolved" "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz" + "version" "3.4.27" + dependencies: + "@vue/compiler-dom" "3.4.27" + "@vue/compiler-sfc" "3.4.27" + "@vue/runtime-dom" "3.4.27" + "@vue/server-renderer" "3.4.27" + "@vue/shared" "3.4.27" + +"vue3-json-viewer@2.2.2": + "integrity" "sha512-56l3XDGggnpwEqZieXsSMhNT4NhtO6d7zuSAxHo4i0UVxymyY2jRb7UMQOU1ztChKALZCAzX7DlgrsnEhxu77A==" + "resolved" "https://registry.npmjs.org/vue3-json-viewer/-/vue3-json-viewer-2.2.2.tgz" + "version" "2.2.2" + dependencies: + "clipboard" "^2.0.10" + +"vue3-tabs-chrome@^0.3.3": + "integrity" "sha512-ifLQZoBMP6nE4f4VwsLeHxAWb+VaT2+cGrBNkHnU0TgJmx1tBxWtVQK8YgwMjq5lpFPn1NnqBdlaA9uKjtoHWQ==" + "resolved" "https://registry.npmjs.org/vue3-tabs-chrome/-/vue3-tabs-chrome-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "core-js" "^3.6.5" + "draggabilly" "^2.3.0" + "vue" "^3.0.0" + +"warning@^4.0.0": + "integrity" "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==" + "resolved" "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "loose-envify" "^1.0.0" + +"watchpack@^2.4.1": + "version" "2.4.2" + dependencies: + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.1.2" + +"webpack-sources@^3.2.3": + "version" "3.2.3" + +"webpack@^5.0.0", "webpack@^5.1.0": + "version" "5.98.0" + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + "acorn" "^8.14.0" + "browserslist" "^4.24.0" + "chrome-trace-event" "^1.0.2" + "enhanced-resolve" "^5.17.1" + "es-module-lexer" "^1.2.1" + "eslint-scope" "5.1.1" + "events" "^3.2.0" + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.2.11" + "json-parse-even-better-errors" "^2.3.1" + "loader-runner" "^4.2.0" + "mime-types" "^2.1.27" + "neo-async" "^2.6.2" + "schema-utils" "^4.3.0" + "tapable" "^2.1.1" + "terser-webpack-plugin" "^5.3.11" + "watchpack" "^2.4.1" + "webpack-sources" "^3.2.3" + +"which@^1.3.1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"wildcard@^1.1.0": + "integrity" "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==" + "resolved" "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz" + "version" "1.1.2" + +"word-wrap@^1.2.5": + "integrity" "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" + "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" + "version" "1.2.5" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^8.1.0": + "integrity" "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "ansi-styles" "^6.1.0" + "string-width" "^5.0.1" + "strip-ansi" "^7.0.1" + +"wrappy@1": + "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"write-file-atomic@^4.0.1": + "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "imurmurhash" "^0.1.4" + "signal-exit" "^3.0.7" + +"xml-name-validator@^4.0.0": + "integrity" "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" + "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + "version" "4.0.0" + +"yallist@^3.0.2": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yaml@^1.10.0": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" + +"yargs-parser@^20.2.3": + "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + "version" "20.2.9" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" + +"zrender@5.4.4": + "integrity" "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==" + "resolved" "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz" + "version" "5.4.4" + dependencies: + "tslib" "2.3.0" diff --git a/smart_admin_v3.sql b/smart_admin_v3.sql index 6cd34063..7c2e1941 100644 --- a/smart_admin_v3.sql +++ b/smart_admin_v3.sql @@ -1236,8 +1236,8 @@ CREATE TABLE `t_smart_job` ( -- ---------------------------- -- Records of t_smart_job -- ---------------------------- -INSERT INTO `t_smart_job` VALUES (1, '示例任务1', 'net.lab1024.sa.base.module.support.job.sample.SmartJobSample1', 'cron', '10 15 0/1 * * *', 1, '1', '2025-01-05 19:15:10', 7988, 1, '测试测试', 0, '管理员', '2024-06-17 20:00:46', '2025-01-08 20:07:51'); -INSERT INTO `t_smart_job` VALUES (2, '示例任务2', 'net.lab1024.sa.base.module.support.job.sample.SmartJobSample2', 'fixed_delay', '120', 1, '一路春光啊一路荆棘呀惊鸿一般短暂如夏花一样绚烂这是一个不能停留太久的世界,一路春光啊一路荆棘呀惊鸿一般短暂如夏花一样绚烂这是一个不能停留太久的世界啊', '2025-01-08 19:56:59', 8144, 2, '一个不能停留太久的世界啊', 0, '管理员', '2024-06-18 20:45:35', '2025-01-08 19:57:00'); +INSERT INTO `t_smart_job` VALUES (1, '示例任务1', 'net.lab1024.sa.base.module.support.job.sample.SmartJobSample1', 'cron', '10 15 0/1 * * *', 1, '执行示例任务1', '2025-01-05 19:15:10', 7988, 1, '执行示例任务1', 0, '管理员', '2024-06-17 20:00:46', '2025-01-08 20:07:51'); +INSERT INTO `t_smart_job` VALUES (2, '示例任务2', 'net.lab1024.sa.base.module.support.job.sample.SmartJobSample2', 'fixed_delay', '120', 1, '执行示例任务2', '2025-01-08 19:56:59', 8144, 2, '执行示例任务2', 0, '管理员', '2024-06-18 20:45:35', '2025-01-08 19:57:00'); -- ----------------------------