Commit 70970eeb1834249a57a0c639d223d9a43f56fee8
Merge remote-tracking branch 'origin/dev' into dev
Showing
24 changed files
with
517 additions
and
282 deletions
README.md
| @@ -191,19 +191,19 @@ ps:核心功能已经实现,正在对接微信小程序中... | @@ -191,19 +191,19 @@ ps:核心功能已经实现,正在对接微信小程序中... | ||
| 191 | | [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.7.7 | [文档](https://github.com/YunaiV/SpringBoot-Labs) | | 191 | | [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.7.7 | [文档](https://github.com/YunaiV/SpringBoot-Labs) | |
| 192 | | [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 / 8.0+ | | | 192 | | [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 / 8.0+ | | |
| 193 | | [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.2.15 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | 193 | | [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.2.15 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | |
| 194 | -| [MyBatis Plus](https://mp.baomidou.com/) | MyBatis 增强工具包 | 3.5.3 | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao) | | 194 | +| [MyBatis Plus](https://mp.baomidou.com/) | MyBatis 增强工具包 | 3.5.3.1 | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao) | |
| 195 | | [Dynamic Datasource](https://dynamic-datasource.com/) | 动态数据源 | 3.6.1 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | 195 | | [Dynamic Datasource](https://dynamic-datasource.com/) | 动态数据源 | 3.6.1 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | |
| 196 | | [Redis](https://redis.io/) | key-value 数据库 | 5.0 / 6.0 | | | 196 | | [Redis](https://redis.io/) | key-value 数据库 | 5.0 / 6.0 | | |
| 197 | | [Redisson](https://github.com/redisson/redisson) | Redis 客户端 | 3.18.0 | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao) | | 197 | | [Redisson](https://github.com/redisson/redisson) | Redis 客户端 | 3.18.0 | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao) | |
| 198 | | [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 5.3.24 | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao) | | 198 | | [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 5.3.24 | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao) | |
| 199 | -| [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 5.7.5 | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) | | 199 | +| [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 5.7.6 | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) | |
| 200 | | [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 6.2.5 | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao) | | 200 | | [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 6.2.5 | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao) | |
| 201 | | [Flowable](https://github.com/flowable/flowable-engine) | 工作流引擎 | 6.8.0 | [文档](https://doc.iocoder.cn/bpm/) | | 201 | | [Flowable](https://github.com/flowable/flowable-engine) | 工作流引擎 | 6.8.0 | [文档](https://doc.iocoder.cn/bpm/) | |
| 202 | | [Quartz](https://github.com/quartz-scheduler) | 任务调度组件 | 2.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao) | | 202 | | [Quartz](https://github.com/quartz-scheduler) | 任务调度组件 | 2.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao) | |
| 203 | | [Knife4j](https://gitee.com/xiaoym/knife4j) | Swagger 增强 UI 实现 | 3.0.3 | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao) | | 203 | | [Knife4j](https://gitee.com/xiaoym/knife4j) | Swagger 增强 UI 实现 | 3.0.3 | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao) | |
| 204 | | [Resilience4j](https://github.com/resilience4j/resilience4j) | 服务保障组件 | 1.7.1 | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao) | | 204 | | [Resilience4j](https://github.com/resilience4j/resilience4j) | 服务保障组件 | 1.7.1 | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao) | |
| 205 | | [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 8.12.0 | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao) | | 205 | | [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 8.12.0 | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao) | |
| 206 | -| [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 2.7.9 | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao) | | 206 | +| [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 2.7.10 | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao) | |
| 207 | | [Jackson](https://github.com/FasterXML/jackson) | JSON 工具库 | 2.13.3 | | | 207 | | [Jackson](https://github.com/FasterXML/jackson) | JSON 工具库 | 2.13.3 | | |
| 208 | | [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.5.3.Final | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao) | | 208 | | [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.5.3.Final | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao) | |
| 209 | | [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.18.24 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao) | | 209 | | [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.18.24 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao) | |
| @@ -227,7 +227,7 @@ ps:核心功能已经实现,正在对接微信小程序中... | @@ -227,7 +227,7 @@ ps:核心功能已经实现,正在对接微信小程序中... | ||
| 227 | | [TypeScript](https://www.typescriptlang.org/docs/) | TypeScript | 4.9.4 | | 227 | | [TypeScript](https://www.typescriptlang.org/docs/) | TypeScript | 4.9.4 | |
| 228 | | [pinia](https://pinia.vuejs.org/) | vuex5 | 2.0.28 | | 228 | | [pinia](https://pinia.vuejs.org/) | vuex5 | 2.0.28 | |
| 229 | | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | | 229 | | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | |
| 230 | -| [vxe-table](https://vxetable.cn/) | vue最强表单 | 4.3.7 | | 230 | +| [vxe-table](https://vxetable.cn/) | vue最强表单 | 4.3.9 | |
| 231 | 231 | ||
| 232 | ### [管理后台 uni-app 跨端](./yudao-ui-admin-uniapp) | 232 | ### [管理后台 uni-app 跨端](./yudao-ui-admin-uniapp) |
| 233 | 233 |
sql/optional/visualization/jimureport.mysql5.7.create.sql
| @@ -1344,6 +1344,7 @@ CREATE TABLE `jimu_report_share` ( | @@ -1344,6 +1344,7 @@ CREATE TABLE `jimu_report_share` ( | ||
| 1344 | `last_update_time` datetime NULL DEFAULT NULL COMMENT '最后更新时间', | 1344 | `last_update_time` datetime NULL DEFAULT NULL COMMENT '最后更新时间', |
| 1345 | `term_of_validity` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '有效期(0:永久有效,1:1天,2:7天)', | 1345 | `term_of_validity` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '有效期(0:永久有效,1:1天,2:7天)', |
| 1346 | `status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否过期(0未过期,1已过期)', | 1346 | `status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否过期(0未过期,1已过期)', |
| 1347 | + `preview_lock_status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码锁状态', | ||
| 1347 | PRIMARY KEY (`id`) USING BTREE | 1348 | PRIMARY KEY (`id`) USING BTREE |
| 1348 | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '积木报表预览权限表' ROW_FORMAT = Dynamic; | 1349 | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '积木报表预览权限表' ROW_FORMAT = Dynamic; |
| 1349 | 1350 |
yudao-dependencies/pom.xml
| @@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
| 32 | <resilience4j.version>1.7.1</resilience4j.version> | 32 | <resilience4j.version>1.7.1</resilience4j.version> |
| 33 | <!-- 监控相关 --> | 33 | <!-- 监控相关 --> |
| 34 | <skywalking.version>8.12.0</skywalking.version> | 34 | <skywalking.version>8.12.0</skywalking.version> |
| 35 | - <spring-boot-admin.version>2.7.9</spring-boot-admin.version> | 35 | + <spring-boot-admin.version>2.7.10</spring-boot-admin.version> |
| 36 | <opentracing.version>0.33.0</opentracing.version> | 36 | <opentracing.version>0.33.0</opentracing.version> |
| 37 | <!-- Test 测试相关 --> | 37 | <!-- Test 测试相关 --> |
| 38 | <podam.version>7.2.11.RELEASE</podam.version> | 38 | <podam.version>7.2.11.RELEASE</podam.version> |
| @@ -41,10 +41,11 @@ | @@ -41,10 +41,11 @@ | ||
| 41 | <!-- Bpm 工作流相关 --> | 41 | <!-- Bpm 工作流相关 --> |
| 42 | <flowable.version>6.8.0</flowable.version> | 42 | <flowable.version>6.8.0</flowable.version> |
| 43 | <!-- 工具类相关 --> | 43 | <!-- 工具类相关 --> |
| 44 | + <jsoup.version>1.15.3</jsoup.version> | ||
| 44 | <lombok.version>1.18.24</lombok.version> | 45 | <lombok.version>1.18.24</lombok.version> |
| 45 | <mapstruct.version>1.5.3.Final</mapstruct.version> | 46 | <mapstruct.version>1.5.3.Final</mapstruct.version> |
| 46 | <hutool.version>5.8.11</hutool.version> | 47 | <hutool.version>5.8.11</hutool.version> |
| 47 | - <easyexcel.verion>3.1.4</easyexcel.verion> | 48 | + <easyexcel.verion>3.1.5</easyexcel.verion> |
| 48 | <velocity.version>2.3</velocity.version> | 49 | <velocity.version>2.3</velocity.version> |
| 49 | <screw.version>1.0.5</screw.version> | 50 | <screw.version>1.0.5</screw.version> |
| 50 | <fastjson.version>1.2.83</fastjson.version> | 51 | <fastjson.version>1.2.83</fastjson.version> |
| @@ -63,7 +64,7 @@ | @@ -63,7 +64,7 @@ | ||
| 63 | <minio.version>8.4.6</minio.version> | 64 | <minio.version>8.4.6</minio.version> |
| 64 | <aliyun-java-sdk-core.version>4.6.3</aliyun-java-sdk-core.version> | 65 | <aliyun-java-sdk-core.version>4.6.3</aliyun-java-sdk-core.version> |
| 65 | <aliyun-java-sdk-dysmsapi.version>2.2.1</aliyun-java-sdk-dysmsapi.version> | 66 | <aliyun-java-sdk-dysmsapi.version>2.2.1</aliyun-java-sdk-dysmsapi.version> |
| 66 | - <tencentcloud-sdk-java.version>3.1.660</tencentcloud-sdk-java.version> | 67 | + <tencentcloud-sdk-java.version>3.1.667</tencentcloud-sdk-java.version> |
| 67 | <justauth.version>1.4.0</justauth.version> | 68 | <justauth.version>1.4.0</justauth.version> |
| 68 | <jimureport.version>1.5.6</jimureport.version> | 69 | <jimureport.version>1.5.6</jimureport.version> |
| 69 | <xercesImpl.version>2.12.2</xercesImpl.version> | 70 | <xercesImpl.version>2.12.2</xercesImpl.version> |
| @@ -522,6 +523,12 @@ | @@ -522,6 +523,12 @@ | ||
| 522 | <version>${ip2region.version}</version> | 523 | <version>${ip2region.version}</version> |
| 523 | </dependency> | 524 | </dependency> |
| 524 | 525 | ||
| 526 | + <dependency> | ||
| 527 | + <groupId>org.jsoup</groupId> | ||
| 528 | + <artifactId>jsoup</artifactId> | ||
| 529 | + <version>${jsoup.version}</version> | ||
| 530 | + </dependency> | ||
| 531 | + | ||
| 525 | <!-- 三方云服务相关 --> | 532 | <!-- 三方云服务相关 --> |
| 526 | <dependency> | 533 | <dependency> |
| 527 | <groupId>com.squareup.okio</groupId> | 534 | <groupId>com.squareup.okio</groupId> |
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
| @@ -2,7 +2,6 @@ package cn.iocoder.yudao.framework.mybatis.core.mapper; | @@ -2,7 +2,6 @@ package cn.iocoder.yudao.framework.mybatis.core.mapper; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 6 | import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; | 5 | import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; |
| 7 | import com.baomidou.mybatisplus.core.conditions.Wrapper; | 6 | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| 8 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 7 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| @@ -10,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | @@ -10,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
| 10 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 9 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| 11 | import com.baomidou.mybatisplus.core.metadata.IPage; | 10 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 12 | import com.baomidou.mybatisplus.core.toolkit.support.SFunction; | 11 | import com.baomidou.mybatisplus.core.toolkit.support.SFunction; |
| 12 | +import com.baomidou.mybatisplus.extension.toolkit.Db; | ||
| 13 | import org.apache.ibatis.annotations.Param; | 13 | import org.apache.ibatis.annotations.Param; |
| 14 | 14 | ||
| 15 | import java.util.Collection; | 15 | import java.util.Collection; |
| @@ -92,8 +92,22 @@ public interface BaseMapperX<T> extends BaseMapper<T> { | @@ -92,8 +92,22 @@ public interface BaseMapperX<T> extends BaseMapper<T> { | ||
| 92 | entities.forEach(this::insert); | 92 | entities.forEach(this::insert); |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | + /** | ||
| 96 | + * 批量插入,适合大量数据插入 | ||
| 97 | + * | ||
| 98 | + * @param entities 实体们 | ||
| 99 | + * @param size 插入数量 Db.saveBatch 默认为1000 | ||
| 100 | + */ | ||
| 101 | + default void insertBatch(Collection<T> entities, int size) { | ||
| 102 | + Db.saveBatch(entities, size); | ||
| 103 | + } | ||
| 104 | + | ||
| 95 | default void updateBatch(T update) { | 105 | default void updateBatch(T update) { |
| 96 | update(update, new QueryWrapper<>()); | 106 | update(update, new QueryWrapper<>()); |
| 97 | } | 107 | } |
| 98 | 108 | ||
| 109 | + default void updateBatch(Collection<T> entities, int size) { | ||
| 110 | + Db.updateBatchById(entities, size); | ||
| 111 | + } | ||
| 112 | + | ||
| 99 | } | 113 | } |
yudao-framework/yudao-spring-boot-starter-web/pom.xml
| @@ -67,6 +67,11 @@ | @@ -67,6 +67,11 @@ | ||
| 67 | <scope>provided</scope> <!-- 设置为 provided,主要是 GlobalExceptionHandler 使用 --> | 67 | <scope>provided</scope> <!-- 设置为 provided,主要是 GlobalExceptionHandler 使用 --> |
| 68 | </dependency> | 68 | </dependency> |
| 69 | 69 | ||
| 70 | + <!-- xss --> | ||
| 71 | + <dependency> | ||
| 72 | + <groupId>org.jsoup</groupId> | ||
| 73 | + <artifactId>jsoup</artifactId> | ||
| 74 | + </dependency> | ||
| 70 | </dependencies> | 75 | </dependencies> |
| 71 | 76 | ||
| 72 | </project> | 77 | </project> |
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/config/YudaoWebAutoConfiguration.java
| @@ -2,15 +2,22 @@ package cn.iocoder.yudao.framework.web.config; | @@ -2,15 +2,22 @@ package cn.iocoder.yudao.framework.web.config; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLogFrameworkService; | 3 | import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLogFrameworkService; |
| 4 | import cn.iocoder.yudao.framework.common.enums.WebFilterOrderEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.WebFilterOrderEnum; |
| 5 | +import cn.iocoder.yudao.framework.web.core.clean.JsoupXssCleaner; | ||
| 6 | +import cn.iocoder.yudao.framework.web.core.clean.XssCleaner; | ||
| 5 | import cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter; | 7 | import cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter; |
| 6 | import cn.iocoder.yudao.framework.web.core.filter.DemoFilter; | 8 | import cn.iocoder.yudao.framework.web.core.filter.DemoFilter; |
| 7 | import cn.iocoder.yudao.framework.web.core.filter.XssFilter; | 9 | import cn.iocoder.yudao.framework.web.core.filter.XssFilter; |
| 8 | import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler; | 10 | import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler; |
| 9 | import cn.iocoder.yudao.framework.web.core.handler.GlobalResponseBodyHandler; | 11 | import cn.iocoder.yudao.framework.web.core.handler.GlobalResponseBodyHandler; |
| 12 | +import cn.iocoder.yudao.framework.web.core.json.XssStringJsonDeserializer; | ||
| 10 | import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; | 13 | import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; |
| 14 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
| 11 | import org.springframework.beans.factory.annotation.Value; | 15 | import org.springframework.beans.factory.annotation.Value; |
| 12 | import org.springframework.boot.autoconfigure.AutoConfiguration; | 16 | import org.springframework.boot.autoconfigure.AutoConfiguration; |
| 17 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; | ||
| 18 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | ||
| 13 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | 19 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| 20 | +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; | ||
| 14 | import org.springframework.boot.context.properties.EnableConfigurationProperties; | 21 | import org.springframework.boot.context.properties.EnableConfigurationProperties; |
| 15 | import org.springframework.boot.web.servlet.FilterRegistrationBean; | 22 | import org.springframework.boot.web.servlet.FilterRegistrationBean; |
| 16 | import org.springframework.context.annotation.Bean; | 23 | import org.springframework.context.annotation.Bean; |
| @@ -48,7 +55,7 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer { | @@ -48,7 +55,7 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer { | ||
| 48 | * 设置 API 前缀,仅仅匹配 controller 包下的 | 55 | * 设置 API 前缀,仅仅匹配 controller 包下的 |
| 49 | * | 56 | * |
| 50 | * @param configurer 配置 | 57 | * @param configurer 配置 |
| 51 | - * @param api API 配置 | 58 | + * @param api API 配置 |
| 52 | */ | 59 | */ |
| 53 | private void configurePathMatch(PathMatchConfigurer configurer, WebProperties.Api api) { | 60 | private void configurePathMatch(PathMatchConfigurer configurer, WebProperties.Api api) { |
| 54 | AntPathMatcher antPathMatcher = new AntPathMatcher("."); | 61 | AntPathMatcher antPathMatcher = new AntPathMatcher("."); |
| @@ -104,8 +111,9 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer { | @@ -104,8 +111,9 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer { | ||
| 104 | * 创建 XssFilter Bean,解决 Xss 安全问题 | 111 | * 创建 XssFilter Bean,解决 Xss 安全问题 |
| 105 | */ | 112 | */ |
| 106 | @Bean | 113 | @Bean |
| 107 | - public FilterRegistrationBean<XssFilter> xssFilter(XssProperties properties, PathMatcher pathMatcher) { | ||
| 108 | - return createFilterBean(new XssFilter(properties, pathMatcher), WebFilterOrderEnum.XSS_FILTER); | 114 | + @ConditionalOnBean(XssCleaner.class) |
| 115 | + public FilterRegistrationBean<XssFilter> xssFilter(XssProperties properties, PathMatcher pathMatcher, XssCleaner xssCleaner) { | ||
| 116 | + return createFilterBean(new XssFilter(properties, pathMatcher, xssCleaner), WebFilterOrderEnum.XSS_FILTER); | ||
| 109 | } | 117 | } |
| 110 | 118 | ||
| 111 | /** | 119 | /** |
| @@ -117,6 +125,32 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer { | @@ -117,6 +125,32 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer { | ||
| 117 | return createFilterBean(new DemoFilter(), WebFilterOrderEnum.DEMO_FILTER); | 125 | return createFilterBean(new DemoFilter(), WebFilterOrderEnum.DEMO_FILTER); |
| 118 | } | 126 | } |
| 119 | 127 | ||
| 128 | + | ||
| 129 | + /** | ||
| 130 | + * Xss 清理者 | ||
| 131 | + * | ||
| 132 | + * @return XssCleaner | ||
| 133 | + */ | ||
| 134 | + @Bean | ||
| 135 | + @ConditionalOnMissingBean(XssCleaner.class) | ||
| 136 | + public XssCleaner xssCleaner() { | ||
| 137 | + return new JsoupXssCleaner(); | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + /** | ||
| 141 | + * 注册 Jackson 的序列化器,用于处理 json 类型参数的 xss 过滤 | ||
| 142 | + * | ||
| 143 | + * @return Jackson2ObjectMapperBuilderCustomizer | ||
| 144 | + */ | ||
| 145 | + @Bean | ||
| 146 | + @ConditionalOnMissingBean(name = "xssJacksonCustomizer") | ||
| 147 | + @ConditionalOnBean(ObjectMapper.class) | ||
| 148 | + @ConditionalOnProperty(value = "yudao.xss.enable", havingValue = "true") | ||
| 149 | + public Jackson2ObjectMapperBuilderCustomizer xssJacksonCustomizer(XssCleaner xssCleaner) { | ||
| 150 | + // 在反序列化时进行 xss 过滤,可以替换使用 XssStringJsonSerializer,在序列化时进行处理 | ||
| 151 | + return builder -> builder.deserializerByType(String.class, new XssStringJsonDeserializer(xssCleaner)); | ||
| 152 | + } | ||
| 153 | + | ||
| 120 | private static <T extends Filter> FilterRegistrationBean<T> createFilterBean(T filter, Integer order) { | 154 | private static <T extends Filter> FilterRegistrationBean<T> createFilterBean(T filter, Integer order) { |
| 121 | FilterRegistrationBean<T> bean = new FilterRegistrationBean<>(filter); | 155 | FilterRegistrationBean<T> bean = new FilterRegistrationBean<>(filter); |
| 122 | bean.setOrder(order); | 156 | bean.setOrder(order); |
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/clean/JsoupXssCleaner.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.web.core.clean; | ||
| 2 | + | ||
| 3 | +import org.jsoup.Jsoup; | ||
| 4 | +import org.jsoup.nodes.Document; | ||
| 5 | +import org.jsoup.safety.Safelist; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * jsonp 过滤字符串 | ||
| 9 | + */ | ||
| 10 | +public class JsoupXssCleaner implements XssCleaner { | ||
| 11 | + | ||
| 12 | + private final Safelist safelist; | ||
| 13 | + | ||
| 14 | + /** | ||
| 15 | + * 用于在 src 属性使用相对路径时,强制转换为绝对路径。 为空时不处理,值应为绝对路径的前缀(包含协议部分) | ||
| 16 | + */ | ||
| 17 | + private final String baseUri; | ||
| 18 | + | ||
| 19 | + /** | ||
| 20 | + * 无参构造,默认使用 {@link JsoupXssCleaner#buildSafelist} 方法构建一个安全列表 | ||
| 21 | + */ | ||
| 22 | + public JsoupXssCleaner() { | ||
| 23 | + this.safelist = buildSafelist(); | ||
| 24 | + this.baseUri = ""; | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + public JsoupXssCleaner(Safelist safelist) { | ||
| 28 | + this.safelist = safelist; | ||
| 29 | + this.baseUri = ""; | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + public JsoupXssCleaner(String baseUri) { | ||
| 33 | + this.safelist = buildSafelist(); | ||
| 34 | + this.baseUri = baseUri; | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + public JsoupXssCleaner(Safelist safelist, String baseUri) { | ||
| 38 | + this.safelist = safelist; | ||
| 39 | + this.baseUri = baseUri; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * 构建一个 Xss 清理的 Safelist 规则。 | ||
| 44 | + * 基于 Safelist#relaxed() 的基础上: | ||
| 45 | + * 1. 扩展支持了 style 和 class 属性 | ||
| 46 | + * 2. a 标签额外支持了 target 属性 | ||
| 47 | + * 3. img 标签额外支持了 data 协议,便于支持 base64 | ||
| 48 | + * | ||
| 49 | + * @return Safelist | ||
| 50 | + */ | ||
| 51 | + private Safelist buildSafelist() { | ||
| 52 | + // 使用 jsoup 提供的默认的 | ||
| 53 | + Safelist relaxedSafelist = Safelist.relaxed(); | ||
| 54 | + // 富文本编辑时一些样式是使用 style 来进行实现的 | ||
| 55 | + // 比如红色字体 style="color:red;", 所以需要给所有标签添加 style 属性 | ||
| 56 | + // 注意:style 属性会有注入风险 <img STYLE="background-image:url(javascript:alert('XSS'))"> | ||
| 57 | + relaxedSafelist.addAttributes(":all", "style", "class"); | ||
| 58 | + // 保留 a 标签的 target 属性 | ||
| 59 | + relaxedSafelist.addAttributes("a", "target"); | ||
| 60 | + // 支持img 为base64 | ||
| 61 | + relaxedSafelist.addProtocols("img", "src", "data"); | ||
| 62 | + | ||
| 63 | + // 保留相对路径, 保留相对路径时,必须提供对应的 baseUri 属性,否则依然会被删除 | ||
| 64 | + // WHITELIST.preserveRelativeLinks(false); | ||
| 65 | + | ||
| 66 | + // 移除 a 标签和 img 标签的一些协议限制,这会导致 xss 防注入失效,如 <img src=javascript:alert("xss")> | ||
| 67 | + // 虽然可以重写 WhiteList#isSafeAttribute 来处理,但是有隐患,所以暂时不支持相对路径 | ||
| 68 | + // WHITELIST.removeProtocols("a", "href", "ftp", "http", "https", "mailto"); | ||
| 69 | + // WHITELIST.removeProtocols("img", "src", "http", "https"); | ||
| 70 | + | ||
| 71 | + return relaxedSafelist; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + @Override | ||
| 75 | + public String clean(String html) { | ||
| 76 | + return Jsoup.clean(html, baseUri, safelist, new Document.OutputSettings().prettyPrint(false)); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | +} | ||
| 80 | + |
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/clean/XssCleaner.java
0 → 100644
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter/XssFilter.java
| 1 | package cn.iocoder.yudao.framework.web.core.filter; | 1 | package cn.iocoder.yudao.framework.web.core.filter; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.web.config.XssProperties; | 3 | import cn.iocoder.yudao.framework.web.config.XssProperties; |
| 4 | +import cn.iocoder.yudao.framework.web.core.clean.XssCleaner; | ||
| 4 | import lombok.AllArgsConstructor; | 5 | import lombok.AllArgsConstructor; |
| 5 | import org.springframework.util.PathMatcher; | 6 | import org.springframework.util.PathMatcher; |
| 6 | import org.springframework.web.filter.OncePerRequestFilter; | 7 | import org.springframework.web.filter.OncePerRequestFilter; |
| @@ -13,7 +14,7 @@ import java.io.IOException; | @@ -13,7 +14,7 @@ import java.io.IOException; | ||
| 13 | 14 | ||
| 14 | /** | 15 | /** |
| 15 | * Xss 过滤器 | 16 | * Xss 过滤器 |
| 16 | - * | 17 | + * <p> |
| 17 | * 对 Xss 不了解的胖友,可以看看 http://www.iocoder.cn/Fight/The-new-girl-asked-me-why-AJAX-requests-are-not-secure-I-did-not-answer/ | 18 | * 对 Xss 不了解的胖友,可以看看 http://www.iocoder.cn/Fight/The-new-girl-asked-me-why-AJAX-requests-are-not-secure-I-did-not-answer/ |
| 18 | * | 19 | * |
| 19 | * @author 芋道源码 | 20 | * @author 芋道源码 |
| @@ -30,10 +31,12 @@ public class XssFilter extends OncePerRequestFilter { | @@ -30,10 +31,12 @@ public class XssFilter extends OncePerRequestFilter { | ||
| 30 | */ | 31 | */ |
| 31 | private final PathMatcher pathMatcher; | 32 | private final PathMatcher pathMatcher; |
| 32 | 33 | ||
| 34 | + private final XssCleaner xssCleaner; | ||
| 35 | + | ||
| 33 | @Override | 36 | @Override |
| 34 | protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) | 37 | protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) |
| 35 | throws IOException, ServletException { | 38 | throws IOException, ServletException { |
| 36 | - filterChain.doFilter(new XssRequestWrapper(request), response); | 39 | + filterChain.doFilter(new XssRequestWrapper(request, xssCleaner), response); |
| 37 | } | 40 | } |
| 38 | 41 | ||
| 39 | @Override | 42 | @Override |
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter/XssRequestWrapper.java
| 1 | package cn.iocoder.yudao.framework.web.core.filter; | 1 | package cn.iocoder.yudao.framework.web.core.filter; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.collection.CollUtil; | ||
| 4 | -import cn.hutool.core.io.IoUtil; | ||
| 5 | -import cn.hutool.core.util.ArrayUtil; | ||
| 6 | -import cn.hutool.core.util.ReflectUtil; | ||
| 7 | -import cn.hutool.core.util.StrUtil; | ||
| 8 | -import cn.hutool.http.HTMLFilter; | ||
| 9 | -import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; | 3 | +import cn.iocoder.yudao.framework.web.core.clean.XssCleaner; |
| 10 | 4 | ||
| 11 | -import javax.servlet.ReadListener; | ||
| 12 | -import javax.servlet.ServletInputStream; | ||
| 13 | import javax.servlet.http.HttpServletRequest; | 5 | import javax.servlet.http.HttpServletRequest; |
| 14 | import javax.servlet.http.HttpServletRequestWrapper; | 6 | import javax.servlet.http.HttpServletRequestWrapper; |
| 15 | -import java.io.BufferedReader; | ||
| 16 | -import java.io.ByteArrayInputStream; | ||
| 17 | -import java.io.IOException; | ||
| 18 | -import java.io.InputStreamReader; | 7 | +import java.util.LinkedHashMap; |
| 19 | import java.util.Map; | 8 | import java.util.Map; |
| 20 | 9 | ||
| 21 | /** | 10 | /** |
| @@ -24,113 +13,79 @@ import java.util.Map; | @@ -24,113 +13,79 @@ import java.util.Map; | ||
| 24 | * @author 芋道源码 | 13 | * @author 芋道源码 |
| 25 | */ | 14 | */ |
| 26 | public class XssRequestWrapper extends HttpServletRequestWrapper { | 15 | public class XssRequestWrapper extends HttpServletRequestWrapper { |
| 16 | + private final XssCleaner xssCleaner; | ||
| 27 | 17 | ||
| 28 | - /** | ||
| 29 | - * 基于线程级别的 HTMLFilter 对象,因为它线程非安全 | ||
| 30 | - */ | ||
| 31 | - private static final ThreadLocal<HTMLFilter> HTML_FILTER = ThreadLocal.withInitial(() -> { | ||
| 32 | - HTMLFilter htmlFilter = new HTMLFilter(); | ||
| 33 | - // 反射修改 encodeQuotes 属性为 false,避免 " 被转移成 " 字符 | ||
| 34 | - ReflectUtil.setFieldValue(htmlFilter, "encodeQuotes", false); | ||
| 35 | - return htmlFilter; | ||
| 36 | - }); | ||
| 37 | - | ||
| 38 | - public XssRequestWrapper(HttpServletRequest request) { | 18 | + public XssRequestWrapper(HttpServletRequest request, XssCleaner xssCleaner) { |
| 39 | super(request); | 19 | super(request); |
| 20 | + this.xssCleaner = xssCleaner; | ||
| 40 | } | 21 | } |
| 41 | 22 | ||
| 42 | - private static String filterXss(String content) { | ||
| 43 | - if (StrUtil.isEmpty(content)) { | ||
| 44 | - return content; | ||
| 45 | - } | ||
| 46 | - return HTML_FILTER.get().filter(content); | ||
| 47 | - } | ||
| 48 | - | ||
| 49 | - // ========== IO 流相关 ========== | ||
| 50 | - | 23 | + // ============================ parameter ============================ |
| 51 | @Override | 24 | @Override |
| 52 | - public BufferedReader getReader() throws IOException { | ||
| 53 | - return new BufferedReader(new InputStreamReader(this.getInputStream())); | 25 | + public Map<String, String[]> getParameterMap() { |
| 26 | + Map<String, String[]> map = new LinkedHashMap<>(); | ||
| 27 | + Map<String, String[]> parameters = super.getParameterMap(); | ||
| 28 | + for (Map.Entry<String, String[]> entry : parameters.entrySet()) { | ||
| 29 | + String[] values = entry.getValue(); | ||
| 30 | + for (int i = 0; i < values.length; i++) { | ||
| 31 | + values[i] = xssCleaner.clean(values[i]); | ||
| 32 | + } | ||
| 33 | + map.put(entry.getKey(), values); | ||
| 34 | + } | ||
| 35 | + return map; | ||
| 54 | } | 36 | } |
| 55 | 37 | ||
| 56 | @Override | 38 | @Override |
| 57 | - public ServletInputStream getInputStream() throws IOException { | ||
| 58 | - // 如果非 json 请求,不进行 Xss 处理 | ||
| 59 | - if (!ServletUtils.isJsonRequest(this)) { | ||
| 60 | - return super.getInputStream(); | 39 | + public String[] getParameterValues(String name) { |
| 40 | + String[] values = super.getParameterValues(name); | ||
| 41 | + if (values == null) { | ||
| 42 | + return null; | ||
| 61 | } | 43 | } |
| 62 | - | ||
| 63 | - // 读取内容,并过滤 | ||
| 64 | - String content = IoUtil.readUtf8(super.getInputStream()); | ||
| 65 | - content = filterXss(content); | ||
| 66 | - final ByteArrayInputStream newInputStream = new ByteArrayInputStream(content.getBytes()); | ||
| 67 | - // 返回 ServletInputStream | ||
| 68 | - return new ServletInputStream() { | ||
| 69 | - | ||
| 70 | - @Override | ||
| 71 | - public int read() { | ||
| 72 | - return newInputStream.read(); | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | - @Override | ||
| 76 | - public boolean isFinished() { | ||
| 77 | - return true; | ||
| 78 | - } | ||
| 79 | - | ||
| 80 | - @Override | ||
| 81 | - public boolean isReady() { | ||
| 82 | - return true; | ||
| 83 | - } | ||
| 84 | - | ||
| 85 | - @Override | ||
| 86 | - public void setReadListener(ReadListener readListener) {} | ||
| 87 | - | ||
| 88 | - }; | 44 | + int count = values.length; |
| 45 | + String[] encodedValues = new String[count]; | ||
| 46 | + for (int i = 0; i < count; i++) { | ||
| 47 | + encodedValues[i] = xssCleaner.clean(values[i]); | ||
| 48 | + } | ||
| 49 | + return encodedValues; | ||
| 89 | } | 50 | } |
| 90 | 51 | ||
| 91 | - // ========== Param 相关 ========== | ||
| 92 | - | ||
| 93 | @Override | 52 | @Override |
| 94 | public String getParameter(String name) { | 53 | public String getParameter(String name) { |
| 95 | String value = super.getParameter(name); | 54 | String value = super.getParameter(name); |
| 96 | - return filterXss(value); | 55 | + if (value == null) { |
| 56 | + return null; | ||
| 57 | + } | ||
| 58 | + return xssCleaner.clean(value); | ||
| 97 | } | 59 | } |
| 98 | 60 | ||
| 61 | + // ============================ attribute ============================ | ||
| 99 | @Override | 62 | @Override |
| 100 | - public String[] getParameterValues(String name) { | ||
| 101 | - String[] values = super.getParameterValues(name); | ||
| 102 | - if (ArrayUtil.isEmpty(values)) { | ||
| 103 | - return values; | ||
| 104 | - } | ||
| 105 | - // 过滤处理 | ||
| 106 | - for (int i = 0; i < values.length; i++) { | ||
| 107 | - values[i] = filterXss(values[i]); | 63 | + public Object getAttribute(String name) { |
| 64 | + Object value = super.getAttribute(name); | ||
| 65 | + if (value instanceof String) { | ||
| 66 | + xssCleaner.clean((String) value); | ||
| 108 | } | 67 | } |
| 109 | - return values; | 68 | + return value; |
| 110 | } | 69 | } |
| 111 | 70 | ||
| 71 | + // ============================ header ============================ | ||
| 112 | @Override | 72 | @Override |
| 113 | - public Map<String, String[]> getParameterMap() { | ||
| 114 | - Map<String, String[]> valueMap = super.getParameterMap(); | ||
| 115 | - if (CollUtil.isEmpty(valueMap)) { | ||
| 116 | - return valueMap; | ||
| 117 | - } | ||
| 118 | - // 过滤处理 | ||
| 119 | - for (Map.Entry<String, String[]> entry : valueMap.entrySet()) { | ||
| 120 | - String[] values = entry.getValue(); | ||
| 121 | - for (int i = 0; i < values.length; i++) { | ||
| 122 | - values[i] = filterXss(values[i]); | ||
| 123 | - } | 73 | + public String getHeader(String name) { |
| 74 | + String value = super.getHeader(name); | ||
| 75 | + if (value == null) { | ||
| 76 | + return null; | ||
| 124 | } | 77 | } |
| 125 | - return valueMap; | 78 | + return xssCleaner.clean(value); |
| 126 | } | 79 | } |
| 127 | 80 | ||
| 128 | - // ========== Header 相关 ========== | ||
| 129 | - | 81 | + // ============================ queryString ============================ |
| 130 | @Override | 82 | @Override |
| 131 | - public String getHeader(String name) { | ||
| 132 | - String value = super.getHeader(name); | ||
| 133 | - return filterXss(value); | 83 | + public String getQueryString() { |
| 84 | + String value = super.getQueryString(); | ||
| 85 | + if (value == null) { | ||
| 86 | + return null; | ||
| 87 | + } | ||
| 88 | + return xssCleaner.clean(value); | ||
| 134 | } | 89 | } |
| 135 | 90 | ||
| 136 | } | 91 | } |
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/json/XssStringJsonDeserializer.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.web.core.json; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.web.core.clean.XssCleaner; | ||
| 4 | +import com.fasterxml.jackson.core.JsonParser; | ||
| 5 | +import com.fasterxml.jackson.core.JsonToken; | ||
| 6 | +import com.fasterxml.jackson.databind.DeserializationContext; | ||
| 7 | +import com.fasterxml.jackson.databind.deser.std.StringDeserializer; | ||
| 8 | +import lombok.AllArgsConstructor; | ||
| 9 | +import lombok.extern.slf4j.Slf4j; | ||
| 10 | + | ||
| 11 | +import java.io.IOException; | ||
| 12 | + | ||
| 13 | +/** | ||
| 14 | + * XSS 过滤 jackson 反序列化器。 | ||
| 15 | + * 在反序列化的过程中,会对字符串进行 XSS 过滤。 | ||
| 16 | + * | ||
| 17 | + * @author Hccake | ||
| 18 | + */ | ||
| 19 | +@Slf4j | ||
| 20 | +@AllArgsConstructor | ||
| 21 | +public class XssStringJsonDeserializer extends StringDeserializer { | ||
| 22 | + | ||
| 23 | + private final XssCleaner xssCleaner; | ||
| 24 | + | ||
| 25 | + @Override | ||
| 26 | + public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { | ||
| 27 | + if (p.hasToken(JsonToken.VALUE_STRING)) { | ||
| 28 | + return xssCleaner.clean(p.getText()); | ||
| 29 | + } | ||
| 30 | + JsonToken t = p.currentToken(); | ||
| 31 | + // [databind#381] | ||
| 32 | + if (t == JsonToken.START_ARRAY) { | ||
| 33 | + return _deserializeFromArray(p, ctxt); | ||
| 34 | + } | ||
| 35 | + // need to gracefully handle byte[] data, as base64 | ||
| 36 | + if (t == JsonToken.VALUE_EMBEDDED_OBJECT) { | ||
| 37 | + Object ob = p.getEmbeddedObject(); | ||
| 38 | + if (ob == null) { | ||
| 39 | + return null; | ||
| 40 | + } | ||
| 41 | + if (ob instanceof byte[]) { | ||
| 42 | + return ctxt.getBase64Variant().encode((byte[]) ob, false); | ||
| 43 | + } | ||
| 44 | + // otherwise, try conversion using toString()... | ||
| 45 | + return ob.toString(); | ||
| 46 | + } | ||
| 47 | + // 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML) | ||
| 48 | + if (t == JsonToken.START_OBJECT) { | ||
| 49 | + return ctxt.extractScalarFromObject(p, this, _valueClass); | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + if (t.isScalarValue()) { | ||
| 53 | + String text = p.getValueAsString(); | ||
| 54 | + return xssCleaner.clean(text); | ||
| 55 | + } | ||
| 56 | + return (String) ctxt.handleUnexpectedToken(_valueClass, p); | ||
| 57 | + } | ||
| 58 | +} | ||
| 59 | + |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/codegen/CodegenConvert.java
| @@ -11,9 +11,11 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.codegen.CodegenColumnDO; | @@ -11,9 +11,11 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.codegen.CodegenColumnDO; | ||
| 11 | import cn.iocoder.yudao.module.infra.dal.dataobject.codegen.CodegenTableDO; | 11 | import cn.iocoder.yudao.module.infra.dal.dataobject.codegen.CodegenTableDO; |
| 12 | import com.baomidou.mybatisplus.generator.config.po.TableField; | 12 | import com.baomidou.mybatisplus.generator.config.po.TableField; |
| 13 | import com.baomidou.mybatisplus.generator.config.po.TableInfo; | 13 | import com.baomidou.mybatisplus.generator.config.po.TableInfo; |
| 14 | +import com.baomidou.mybatisplus.generator.config.rules.IColumnType; | ||
| 14 | import org.mapstruct.Mapper; | 15 | import org.mapstruct.Mapper; |
| 15 | import org.mapstruct.Mapping; | 16 | import org.mapstruct.Mapping; |
| 16 | import org.mapstruct.Mappings; | 17 | import org.mapstruct.Mappings; |
| 18 | +import org.mapstruct.Named; | ||
| 17 | import org.mapstruct.factory.Mappers; | 19 | import org.mapstruct.factory.Mappers; |
| 18 | 20 | ||
| 19 | import java.util.List; | 21 | import java.util.List; |
| @@ -37,7 +39,7 @@ public interface CodegenConvert { | @@ -37,7 +39,7 @@ public interface CodegenConvert { | ||
| 37 | 39 | ||
| 38 | @Mappings({ | 40 | @Mappings({ |
| 39 | @Mapping(source = "name", target = "columnName"), | 41 | @Mapping(source = "name", target = "columnName"), |
| 40 | - @Mapping(source = "type", target = "dataType"), | 42 | + @Mapping(source = "columnType", target = "dataType", qualifiedByName = "getType"), |
| 41 | @Mapping(source = "comment", target = "columnComment"), | 43 | @Mapping(source = "comment", target = "columnComment"), |
| 42 | @Mapping(source = "metaInfo.nullable", target = "nullable"), | 44 | @Mapping(source = "metaInfo.nullable", target = "nullable"), |
| 43 | @Mapping(source = "keyFlag", target = "primaryKey"), | 45 | @Mapping(source = "keyFlag", target = "primaryKey"), |
| @@ -47,6 +49,11 @@ public interface CodegenConvert { | @@ -47,6 +49,11 @@ public interface CodegenConvert { | ||
| 47 | }) | 49 | }) |
| 48 | CodegenColumnDO convert(TableField bean); | 50 | CodegenColumnDO convert(TableField bean); |
| 49 | 51 | ||
| 52 | + @Named("getType") | ||
| 53 | + default String getType(IColumnType jdbcType) { | ||
| 54 | + return jdbcType.getType(); | ||
| 55 | + } | ||
| 56 | + | ||
| 50 | // ========== CodegenTableDO 相关 ========== | 57 | // ========== CodegenTableDO 相关 ========== |
| 51 | 58 | ||
| 52 | // List<CodegenTableRespVO> convertList02(List<CodegenTableDO> list); | 59 | // List<CodegenTableRespVO> convertList02(List<CodegenTableDO> list); |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/codegen/CodegenColumnDO.java
| @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.codegen.CodegenColumnListConditionEnu | @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.codegen.CodegenColumnListConditionEnu | ||
| 6 | import com.baomidou.mybatisplus.annotation.KeySequence; | 6 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 7 | import com.baomidou.mybatisplus.annotation.TableId; | 7 | import com.baomidou.mybatisplus.annotation.TableId; |
| 8 | import com.baomidou.mybatisplus.annotation.TableName; | 8 | import com.baomidou.mybatisplus.annotation.TableName; |
| 9 | +import com.baomidou.mybatisplus.generator.config.po.TableField; | ||
| 9 | import lombok.Data; | 10 | import lombok.Data; |
| 10 | import lombok.EqualsAndHashCode; | 11 | import lombok.EqualsAndHashCode; |
| 11 | import lombok.experimental.Accessors; | 12 | import lombok.experimental.Accessors; |
| @@ -42,6 +43,7 @@ public class CodegenColumnDO extends BaseDO { | @@ -42,6 +43,7 @@ public class CodegenColumnDO extends BaseDO { | ||
| 42 | private String columnName; | 43 | private String columnName; |
| 43 | /** | 44 | /** |
| 44 | * 字段类型 | 45 | * 字段类型 |
| 46 | + * 关联 {@link TableField#getColumnType()}} | ||
| 45 | */ | 47 | */ |
| 46 | private String dataType; | 48 | private String dataType; |
| 47 | /** | 49 | /** |
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/DefaultDatabaseQueryTest.java
| 1 | package cn.iocoder.yudao.module.infra.service; | 1 | package cn.iocoder.yudao.module.infra.service; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | -import com.baomidou.mybatisplus.generator.IDatabaseQuery.DefaultDatabaseQuery; | 4 | +import com.baomidou.mybatisplus.generator.query.DefaultQuery; |
| 5 | import com.baomidou.mybatisplus.generator.config.DataSourceConfig; | 5 | import com.baomidou.mybatisplus.generator.config.DataSourceConfig; |
| 6 | import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; | 6 | import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; |
| 7 | import com.baomidou.mybatisplus.generator.config.po.TableInfo; | 7 | import com.baomidou.mybatisplus.generator.config.po.TableInfo; |
| @@ -19,7 +19,7 @@ public class DefaultDatabaseQueryTest { | @@ -19,7 +19,7 @@ public class DefaultDatabaseQueryTest { | ||
| 19 | 19 | ||
| 20 | ConfigBuilder builder = new ConfigBuilder(null, dataSourceConfig, null, null, null, null); | 20 | ConfigBuilder builder = new ConfigBuilder(null, dataSourceConfig, null, null, null, null); |
| 21 | 21 | ||
| 22 | - DefaultDatabaseQuery query = new DefaultDatabaseQuery(builder); | 22 | + DefaultQuery query = new DefaultQuery(builder); |
| 23 | 23 | ||
| 24 | long time = System.currentTimeMillis(); | 24 | long time = System.currentTimeMillis(); |
| 25 | List<TableInfo> tableInfos = query.queryTables(); | 25 | List<TableInfo> tableInfos = query.queryTables(); |
yudao-module-visualization/yudao-module-visualization-biz/src/main/java/cn/iocoder/yudao/module/visualization/framework/jmreport/config/JmReportConfiguration.java
| 1 | package cn.iocoder.yudao.module.visualization.framework.jmreport.config; | 1 | package cn.iocoder.yudao.module.visualization.framework.jmreport.config; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.security.config.SecurityProperties; | ||
| 3 | import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; | 4 | import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; |
| 4 | import cn.iocoder.yudao.module.visualization.framework.jmreport.core.service.JmReportTokenServiceImpl; | 5 | import cn.iocoder.yudao.module.visualization.framework.jmreport.core.service.JmReportTokenServiceImpl; |
| 5 | import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; | 6 | import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; |
| @@ -18,8 +19,8 @@ public class JmReportConfiguration { | @@ -18,8 +19,8 @@ public class JmReportConfiguration { | ||
| 18 | 19 | ||
| 19 | @Bean | 20 | @Bean |
| 20 | @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") | 21 | @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") |
| 21 | - public JmReportTokenServiceI jmReportTokenService(OAuth2TokenApi oAuth2TokenApi) { | ||
| 22 | - return new JmReportTokenServiceImpl(oAuth2TokenApi); | 22 | + public JmReportTokenServiceI jmReportTokenService(OAuth2TokenApi oAuth2TokenApi, SecurityProperties securityProperties) { |
| 23 | + return new JmReportTokenServiceImpl(oAuth2TokenApi, securityProperties); | ||
| 23 | } | 24 | } |
| 24 | 25 | ||
| 25 | } | 26 | } |
yudao-module-visualization/yudao-module-visualization-biz/src/main/java/cn/iocoder/yudao/module/visualization/framework/jmreport/core/service/JmReportTokenServiceImpl.java
| 1 | package cn.iocoder.yudao.module.visualization.framework.jmreport.core.service; | 1 | package cn.iocoder.yudao.module.visualization.framework.jmreport.core.service; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.ObjectUtil; | ||
| 3 | import cn.hutool.core.util.StrUtil; | 4 | import cn.hutool.core.util.StrUtil; |
| 4 | import cn.iocoder.yudao.framework.common.exception.ServiceException; | 5 | import cn.iocoder.yudao.framework.common.exception.ServiceException; |
| 6 | +import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; | ||
| 7 | +import cn.iocoder.yudao.framework.security.config.SecurityProperties; | ||
| 5 | import cn.iocoder.yudao.framework.security.core.LoginUser; | 8 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| 6 | import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; | 9 | import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; |
| 7 | import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; | 10 | import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; |
| @@ -10,6 +13,10 @@ import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; | @@ -10,6 +13,10 @@ import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; | ||
| 10 | import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO; | 13 | import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO; |
| 11 | import lombok.RequiredArgsConstructor; | 14 | import lombok.RequiredArgsConstructor; |
| 12 | import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; | 15 | import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; |
| 16 | +import org.springframework.http.HttpHeaders; | ||
| 17 | + | ||
| 18 | +import javax.servlet.http.HttpServletRequest; | ||
| 19 | +import java.util.Objects; | ||
| 13 | 20 | ||
| 14 | /** | 21 | /** |
| 15 | * {@link JmReportTokenServiceI} 实现类,提供积木报表的 Token 校验、用户信息的查询等功能 | 22 | * {@link JmReportTokenServiceI} 实现类,提供积木报表的 Token 校验、用户信息的查询等功能 |
| @@ -19,8 +26,37 @@ import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; | @@ -19,8 +26,37 @@ import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; | ||
| 19 | @RequiredArgsConstructor | 26 | @RequiredArgsConstructor |
| 20 | public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | 27 | public class JmReportTokenServiceImpl implements JmReportTokenServiceI { |
| 21 | 28 | ||
| 29 | + /** | ||
| 30 | + * 积木 token head 头 | ||
| 31 | + */ | ||
| 32 | + private static final String JM_TOKEN_HEADER = "X-Access-Token"; | ||
| 33 | + /** | ||
| 34 | + * auth 相关格式 | ||
| 35 | + */ | ||
| 36 | + private static final String AUTHORIZATION_FORMAT = SecurityFrameworkUtils.AUTHORIZATION_BEARER + " %s"; | ||
| 37 | + | ||
| 22 | private final OAuth2TokenApi oauth2TokenApi; | 38 | private final OAuth2TokenApi oauth2TokenApi; |
| 23 | 39 | ||
| 40 | + private final SecurityProperties securityProperties; | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * 自定义 API 数据集appian自定义 Header,解决 Token 传递。 | ||
| 44 | + * 参考 <a href="http://report.jeecg.com/2222224">api数据集token机制详解</a> 文档 | ||
| 45 | + * | ||
| 46 | + * @return 新 head | ||
| 47 | + */ | ||
| 48 | + @Override | ||
| 49 | + public HttpHeaders customApiHeader() { | ||
| 50 | + // 读取积木标标系统的 token | ||
| 51 | + HttpServletRequest request = ServletUtils.getRequest(); | ||
| 52 | + String token = request.getHeader(JM_TOKEN_HEADER); | ||
| 53 | + | ||
| 54 | + // 设置到 yudao 系统的 token | ||
| 55 | + HttpHeaders headers = new HttpHeaders(); | ||
| 56 | + headers.add(securityProperties.getTokenHeader(), String.format(AUTHORIZATION_FORMAT, token)); | ||
| 57 | + return headers; | ||
| 58 | + } | ||
| 59 | + | ||
| 24 | /** | 60 | /** |
| 25 | * 校验 Token 是否有效,即验证通过 | 61 | * 校验 Token 是否有效,即验证通过 |
| 26 | * | 62 | * |
| @@ -29,8 +65,40 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | @@ -29,8 +65,40 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | ||
| 29 | */ | 65 | */ |
| 30 | @Override | 66 | @Override |
| 31 | public Boolean verifyToken(String token) { | 67 | public Boolean verifyToken(String token) { |
| 68 | + Long userId = SecurityFrameworkUtils.getLoginUserId(); | ||
| 69 | + if (!Objects.isNull(userId)) { | ||
| 70 | + return true; | ||
| 71 | + } | ||
| 72 | + return buildLoginUserByToken(token) != null; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + /** | ||
| 76 | + * 获得用户编号 | ||
| 77 | + * <p> | ||
| 78 | + * 虽然方法名获得的是 username,实际对应到项目中是用户编号 | ||
| 79 | + * | ||
| 80 | + * @param token JmReport 前端传递的 token | ||
| 81 | + * @return 用户编号 | ||
| 82 | + */ | ||
| 83 | + @Override | ||
| 84 | + public String getUsername(String token) { | ||
| 85 | + Long userId = SecurityFrameworkUtils.getLoginUserId(); | ||
| 86 | + if (ObjectUtil.isNotNull(userId)) { | ||
| 87 | + return String.valueOf(userId); | ||
| 88 | + } | ||
| 89 | + LoginUser user = buildLoginUserByToken(token); | ||
| 90 | + return user == null ? null : String.valueOf(user.getId()); | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + /** | ||
| 94 | + * 基于 token 构建登录用户 | ||
| 95 | + * | ||
| 96 | + * @param token token | ||
| 97 | + * @return 返回 token 对应的用户信息 | ||
| 98 | + */ | ||
| 99 | + private LoginUser buildLoginUserByToken(String token) { | ||
| 32 | if (StrUtil.isEmpty(token)) { | 100 | if (StrUtil.isEmpty(token)) { |
| 33 | - return false; | 101 | + return null; |
| 34 | } | 102 | } |
| 35 | // TODO 如下的实现不算特别优雅,主要咱是不想搞的太复杂,所以参考对应的 Filter 先实现了 | 103 | // TODO 如下的实现不算特别优雅,主要咱是不想搞的太复杂,所以参考对应的 Filter 先实现了 |
| 36 | 104 | ||
| @@ -41,7 +109,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | @@ -41,7 +109,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | ||
| 41 | try { | 109 | try { |
| 42 | OAuth2AccessTokenCheckRespDTO accessToken = oauth2TokenApi.checkAccessToken(token); | 110 | OAuth2AccessTokenCheckRespDTO accessToken = oauth2TokenApi.checkAccessToken(token); |
| 43 | if (accessToken == null) { | 111 | if (accessToken == null) { |
| 44 | - return false; | 112 | + return null; |
| 45 | } | 113 | } |
| 46 | user = new LoginUser().setId(accessToken.getUserId()).setUserType(accessToken.getUserType()) | 114 | user = new LoginUser().setId(accessToken.getUserId()).setUserType(accessToken.getUserType()) |
| 47 | .setTenantId(accessToken.getTenantId()).setScopes(accessToken.getScopes()); | 115 | .setTenantId(accessToken.getTenantId()).setScopes(accessToken.getScopes()); |
| @@ -49,7 +117,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | @@ -49,7 +117,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | ||
| 49 | // do nothing:如果报错,说明认证失败,则返回 false 即可 | 117 | // do nothing:如果报错,说明认证失败,则返回 false 即可 |
| 50 | } | 118 | } |
| 51 | if (user == null) { | 119 | if (user == null) { |
| 52 | - return false; | 120 | + return null; |
| 53 | } | 121 | } |
| 54 | SecurityFrameworkUtils.setLoginUser(user, WebFrameworkUtils.getRequest()); | 122 | SecurityFrameworkUtils.setLoginUser(user, WebFrameworkUtils.getRequest()); |
| 55 | 123 | ||
| @@ -57,21 +125,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | @@ -57,21 +125,7 @@ public class JmReportTokenServiceImpl implements JmReportTokenServiceI { | ||
| 57 | // 目的:基于 LoginUser 获得到的租户编号,设置到 Tenant 上下文,避免查询数据库时的报错 | 125 | // 目的:基于 LoginUser 获得到的租户编号,设置到 Tenant 上下文,避免查询数据库时的报错 |
| 58 | TenantContextHolder.setIgnore(false); | 126 | TenantContextHolder.setIgnore(false); |
| 59 | TenantContextHolder.setTenantId(user.getTenantId()); | 127 | TenantContextHolder.setTenantId(user.getTenantId()); |
| 60 | - return true; | ||
| 61 | - } | ||
| 62 | - | ||
| 63 | - /** | ||
| 64 | - * 获得用户编号 | ||
| 65 | - * | ||
| 66 | - * 虽然方法名获得的是 username,实际对应到项目中是用户编号 | ||
| 67 | - * | ||
| 68 | - * @param token JmReport 前端传递的 token | ||
| 69 | - * @return 用户编号 | ||
| 70 | - */ | ||
| 71 | - @Override | ||
| 72 | - public String getUsername(String token) { | ||
| 73 | - Long userId = SecurityFrameworkUtils.getLoginUserId(); | ||
| 74 | - return userId != null ? String.valueOf(userId) : null; | 128 | + return user; |
| 75 | } | 129 | } |
| 76 | 130 | ||
| 77 | } | 131 | } |
yudao-ui-admin-vue3/README.md
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | | [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 4.9.4 | | 34 | | [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 4.9.4 | |
| 35 | | [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.0.28 | | 35 | | [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.0.28 | |
| 36 | | [vueuse](https://vueuse.org/) | 常用工具集 | 9.10.0 | | 36 | | [vueuse](https://vueuse.org/) | 常用工具集 | 9.10.0 | |
| 37 | -| [vxe-table](https://vxetable.cn/) | vue 最强表单 | 4.3.7 | | 37 | +| [vxe-table](https://vxetable.cn/) | vue 最强表单 | 4.3.9 | |
| 38 | | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | | 38 | | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | |
| 39 | | [vue-router](https://router.vuejs.org/) | vue 路由 | 4.1.6 | | 39 | | [vue-router](https://router.vuejs.org/) | vue 路由 | 4.1.6 | |
| 40 | | [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | | 40 | | [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | |
yudao-ui-admin-vue3/package.json
| 1 | { | 1 | { |
| 2 | "name": "yudao-ui-admin-vue3", | 2 | "name": "yudao-ui-admin-vue3", |
| 3 | - "version": "1.6.6-snapshot.1901", | 3 | + "version": "1.6.6-snapshot.1911", |
| 4 | "description": "基于vue3、vite4、element-plus、typesScript", | 4 | "description": "基于vue3、vite4、element-plus、typesScript", |
| 5 | "author": "xingyu", | 5 | "author": "xingyu", |
| 6 | "private": false, | 6 | "private": false, |
| @@ -50,14 +50,14 @@ | @@ -50,14 +50,14 @@ | ||
| 50 | "vue-i18n": "9.2.2", | 50 | "vue-i18n": "9.2.2", |
| 51 | "vue-router": "^4.1.6", | 51 | "vue-router": "^4.1.6", |
| 52 | "vue-types": "^5.0.2", | 52 | "vue-types": "^5.0.2", |
| 53 | - "vxe-table": "^4.3.7", | 53 | + "vxe-table": "^4.3.9", |
| 54 | "web-storage-cache": "^1.1.1", | 54 | "web-storage-cache": "^1.1.1", |
| 55 | "xe-utils": "^3.5.7" | 55 | "xe-utils": "^3.5.7" |
| 56 | }, | 56 | }, |
| 57 | "devDependencies": { | 57 | "devDependencies": { |
| 58 | - "@commitlint/cli": "^17.4.0", | 58 | + "@commitlint/cli": "^17.4.1", |
| 59 | "@commitlint/config-conventional": "^17.4.0", | 59 | "@commitlint/config-conventional": "^17.4.0", |
| 60 | - "@iconify/json": "^2.2.2", | 60 | + "@iconify/json": "^2.2.5", |
| 61 | "@intlify/unplugin-vue-i18n": "^0.8.1", | 61 | "@intlify/unplugin-vue-i18n": "^0.8.1", |
| 62 | "@purge-icons/generated": "^0.9.0", | 62 | "@purge-icons/generated": "^0.9.0", |
| 63 | "@types/intro.js": "^5.1.0", | 63 | "@types/intro.js": "^5.1.0", |
| @@ -66,8 +66,8 @@ | @@ -66,8 +66,8 @@ | ||
| 66 | "@types/nprogress": "^0.2.0", | 66 | "@types/nprogress": "^0.2.0", |
| 67 | "@types/qrcode": "^1.5.0", | 67 | "@types/qrcode": "^1.5.0", |
| 68 | "@types/qs": "^6.9.7", | 68 | "@types/qs": "^6.9.7", |
| 69 | - "@typescript-eslint/eslint-plugin": "^5.48.0", | ||
| 70 | - "@typescript-eslint/parser": "^5.48.0", | 69 | + "@typescript-eslint/eslint-plugin": "^5.48.1", |
| 70 | + "@typescript-eslint/parser": "^5.48.1", | ||
| 71 | "@vitejs/plugin-legacy": "^3.0.1", | 71 | "@vitejs/plugin-legacy": "^3.0.1", |
| 72 | "@vitejs/plugin-vue": "^4.0.0", | 72 | "@vitejs/plugin-vue": "^4.0.0", |
| 73 | "@vitejs/plugin-vue-jsx": "^3.0.0", | 73 | "@vitejs/plugin-vue-jsx": "^3.0.0", |
| @@ -75,14 +75,14 @@ | @@ -75,14 +75,14 @@ | ||
| 75 | "consola": "^2.15.3", | 75 | "consola": "^2.15.3", |
| 76 | "eslint": "^8.31.0", | 76 | "eslint": "^8.31.0", |
| 77 | "eslint-config-prettier": "^8.6.0", | 77 | "eslint-config-prettier": "^8.6.0", |
| 78 | - "eslint-define-config": "^1.13.0", | 78 | + "eslint-define-config": "^1.14.0", |
| 79 | "eslint-plugin-prettier": "^4.2.1", | 79 | "eslint-plugin-prettier": "^4.2.1", |
| 80 | "eslint-plugin-vue": "^9.8.0", | 80 | "eslint-plugin-vue": "^9.8.0", |
| 81 | "lint-staged": "^13.1.0", | 81 | "lint-staged": "^13.1.0", |
| 82 | - "postcss": "^8.4.20", | 82 | + "postcss": "^8.4.21", |
| 83 | "postcss-html": "^1.5.0", | 83 | "postcss-html": "^1.5.0", |
| 84 | "postcss-scss": "^4.0.6", | 84 | "postcss-scss": "^4.0.6", |
| 85 | - "prettier": "^2.8.1", | 85 | + "prettier": "^2.8.2", |
| 86 | "rimraf": "^3.0.2", | 86 | "rimraf": "^3.0.2", |
| 87 | "rollup": "^3.9.1", | 87 | "rollup": "^3.9.1", |
| 88 | "sass": "^1.57.1", | 88 | "sass": "^1.57.1", |
| @@ -91,7 +91,7 @@ | @@ -91,7 +91,7 @@ | ||
| 91 | "stylelint-config-prettier": "^9.0.4", | 91 | "stylelint-config-prettier": "^9.0.4", |
| 92 | "stylelint-config-recommended": "^9.0.0", | 92 | "stylelint-config-recommended": "^9.0.0", |
| 93 | "stylelint-config-standard": "^29.0.0", | 93 | "stylelint-config-standard": "^29.0.0", |
| 94 | - "stylelint-order": "^5.0.0", | 94 | + "stylelint-order": "^6.0.1", |
| 95 | "terser": "^5.16.1", | 95 | "terser": "^5.16.1", |
| 96 | "typescript": "4.9.4", | 96 | "typescript": "4.9.4", |
| 97 | "vite": "4.0.4", | 97 | "vite": "4.0.4", |
| @@ -104,7 +104,7 @@ | @@ -104,7 +104,7 @@ | ||
| 104 | "vite-plugin-svg-icons": "^2.0.1", | 104 | "vite-plugin-svg-icons": "^2.0.1", |
| 105 | "vite-plugin-vue-setup-extend": "^0.4.0", | 105 | "vite-plugin-vue-setup-extend": "^0.4.0", |
| 106 | "vite-plugin-windicss": "^1.8.10", | 106 | "vite-plugin-windicss": "^1.8.10", |
| 107 | - "vue-tsc": "^1.0.22", | 107 | + "vue-tsc": "^1.0.24", |
| 108 | "windicss": "^3.5.6" | 108 | "windicss": "^3.5.6" |
| 109 | }, | 109 | }, |
| 110 | "engines": { | 110 | "engines": { |
yudao-ui-admin-vue3/pnpm-lock.yaml
| 1 | lockfileVersion: 5.4 | 1 | lockfileVersion: 5.4 |
| 2 | 2 | ||
| 3 | specifiers: | 3 | specifiers: |
| 4 | - '@commitlint/cli': ^17.4.0 | 4 | + '@commitlint/cli': ^17.4.1 |
| 5 | '@commitlint/config-conventional': ^17.4.0 | 5 | '@commitlint/config-conventional': ^17.4.0 |
| 6 | '@iconify/iconify': ^3.0.1 | 6 | '@iconify/iconify': ^3.0.1 |
| 7 | - '@iconify/json': ^2.2.2 | 7 | + '@iconify/json': ^2.2.5 |
| 8 | '@intlify/unplugin-vue-i18n': ^0.8.1 | 8 | '@intlify/unplugin-vue-i18n': ^0.8.1 |
| 9 | '@purge-icons/generated': ^0.9.0 | 9 | '@purge-icons/generated': ^0.9.0 |
| 10 | '@types/intro.js': ^5.1.0 | 10 | '@types/intro.js': ^5.1.0 |
| @@ -13,8 +13,8 @@ specifiers: | @@ -13,8 +13,8 @@ specifiers: | ||
| 13 | '@types/nprogress': ^0.2.0 | 13 | '@types/nprogress': ^0.2.0 |
| 14 | '@types/qrcode': ^1.5.0 | 14 | '@types/qrcode': ^1.5.0 |
| 15 | '@types/qs': ^6.9.7 | 15 | '@types/qs': ^6.9.7 |
| 16 | - '@typescript-eslint/eslint-plugin': ^5.48.0 | ||
| 17 | - '@typescript-eslint/parser': ^5.48.0 | 16 | + '@typescript-eslint/eslint-plugin': ^5.48.1 |
| 17 | + '@typescript-eslint/parser': ^5.48.1 | ||
| 18 | '@vitejs/plugin-legacy': ^3.0.1 | 18 | '@vitejs/plugin-legacy': ^3.0.1 |
| 19 | '@vitejs/plugin-vue': ^4.0.0 | 19 | '@vitejs/plugin-vue': ^4.0.0 |
| 20 | '@vitejs/plugin-vue-jsx': ^3.0.0 | 20 | '@vitejs/plugin-vue-jsx': ^3.0.0 |
| @@ -34,7 +34,7 @@ specifiers: | @@ -34,7 +34,7 @@ specifiers: | ||
| 34 | element-plus: 2.2.28 | 34 | element-plus: 2.2.28 |
| 35 | eslint: ^8.31.0 | 35 | eslint: ^8.31.0 |
| 36 | eslint-config-prettier: ^8.6.0 | 36 | eslint-config-prettier: ^8.6.0 |
| 37 | - eslint-define-config: ^1.13.0 | 37 | + eslint-define-config: ^1.14.0 |
| 38 | eslint-plugin-prettier: ^4.2.1 | 38 | eslint-plugin-prettier: ^4.2.1 |
| 39 | eslint-plugin-vue: ^9.8.0 | 39 | eslint-plugin-vue: ^9.8.0 |
| 40 | intro.js: ^6.0.0 | 40 | intro.js: ^6.0.0 |
| @@ -44,10 +44,10 @@ specifiers: | @@ -44,10 +44,10 @@ specifiers: | ||
| 44 | mitt: ^3.0.0 | 44 | mitt: ^3.0.0 |
| 45 | nprogress: ^0.2.0 | 45 | nprogress: ^0.2.0 |
| 46 | pinia: ^2.0.28 | 46 | pinia: ^2.0.28 |
| 47 | - postcss: ^8.4.20 | 47 | + postcss: ^8.4.21 |
| 48 | postcss-html: ^1.5.0 | 48 | postcss-html: ^1.5.0 |
| 49 | postcss-scss: ^4.0.6 | 49 | postcss-scss: ^4.0.6 |
| 50 | - prettier: ^2.8.1 | 50 | + prettier: ^2.8.2 |
| 51 | qrcode: ^1.5.1 | 51 | qrcode: ^1.5.1 |
| 52 | qs: ^6.11.0 | 52 | qs: ^6.11.0 |
| 53 | rimraf: ^3.0.2 | 53 | rimraf: ^3.0.2 |
| @@ -58,7 +58,7 @@ specifiers: | @@ -58,7 +58,7 @@ specifiers: | ||
| 58 | stylelint-config-prettier: ^9.0.4 | 58 | stylelint-config-prettier: ^9.0.4 |
| 59 | stylelint-config-recommended: ^9.0.0 | 59 | stylelint-config-recommended: ^9.0.0 |
| 60 | stylelint-config-standard: ^29.0.0 | 60 | stylelint-config-standard: ^29.0.0 |
| 61 | - stylelint-order: ^5.0.0 | 61 | + stylelint-order: ^6.0.1 |
| 62 | terser: ^5.16.1 | 62 | terser: ^5.16.1 |
| 63 | typescript: 4.9.4 | 63 | typescript: 4.9.4 |
| 64 | url: ^0.11.0 | 64 | url: ^0.11.0 |
| @@ -75,9 +75,9 @@ specifiers: | @@ -75,9 +75,9 @@ specifiers: | ||
| 75 | vue: 3.2.45 | 75 | vue: 3.2.45 |
| 76 | vue-i18n: 9.2.2 | 76 | vue-i18n: 9.2.2 |
| 77 | vue-router: ^4.1.6 | 77 | vue-router: ^4.1.6 |
| 78 | - vue-tsc: ^1.0.22 | 78 | + vue-tsc: ^1.0.24 |
| 79 | vue-types: ^5.0.2 | 79 | vue-types: ^5.0.2 |
| 80 | - vxe-table: ^4.3.7 | 80 | + vxe-table: ^4.3.9 |
| 81 | web-storage-cache: ^1.1.1 | 81 | web-storage-cache: ^1.1.1 |
| 82 | windicss: ^3.5.6 | 82 | windicss: ^3.5.6 |
| 83 | xe-utils: ^3.5.7 | 83 | xe-utils: ^3.5.7 |
| @@ -109,14 +109,14 @@ dependencies: | @@ -109,14 +109,14 @@ dependencies: | ||
| 109 | vue-i18n: 9.2.2_vue@3.2.45 | 109 | vue-i18n: 9.2.2_vue@3.2.45 |
| 110 | vue-router: 4.1.6_vue@3.2.45 | 110 | vue-router: 4.1.6_vue@3.2.45 |
| 111 | vue-types: 5.0.2_vue@3.2.45 | 111 | vue-types: 5.0.2_vue@3.2.45 |
| 112 | - vxe-table: 4.3.7_vue@3.2.45+xe-utils@3.5.7 | 112 | + vxe-table: 4.3.9_vue@3.2.45+xe-utils@3.5.7 |
| 113 | web-storage-cache: 1.1.1 | 113 | web-storage-cache: 1.1.1 |
| 114 | xe-utils: 3.5.7 | 114 | xe-utils: 3.5.7 |
| 115 | 115 | ||
| 116 | devDependencies: | 116 | devDependencies: |
| 117 | - '@commitlint/cli': 17.4.0_@types+node@18.11.18 | 117 | + '@commitlint/cli': 17.4.1 |
| 118 | '@commitlint/config-conventional': 17.4.0 | 118 | '@commitlint/config-conventional': 17.4.0 |
| 119 | - '@iconify/json': 2.2.2 | 119 | + '@iconify/json': 2.2.5 |
| 120 | '@intlify/unplugin-vue-i18n': 0.8.1_vue-i18n@9.2.2 | 120 | '@intlify/unplugin-vue-i18n': 0.8.1_vue-i18n@9.2.2 |
| 121 | '@purge-icons/generated': 0.9.0 | 121 | '@purge-icons/generated': 0.9.0 |
| 122 | '@types/intro.js': 5.1.0 | 122 | '@types/intro.js': 5.1.0 |
| @@ -125,23 +125,23 @@ devDependencies: | @@ -125,23 +125,23 @@ devDependencies: | ||
| 125 | '@types/nprogress': 0.2.0 | 125 | '@types/nprogress': 0.2.0 |
| 126 | '@types/qrcode': 1.5.0 | 126 | '@types/qrcode': 1.5.0 |
| 127 | '@types/qs': 6.9.7 | 127 | '@types/qs': 6.9.7 |
| 128 | - '@typescript-eslint/eslint-plugin': 5.48.0_k73wpmdolxikpyqun3p36akaaq | ||
| 129 | - '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe | 128 | + '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse |
| 129 | + '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe | ||
| 130 | '@vitejs/plugin-legacy': 3.0.1_terser@5.16.1+vite@4.0.4 | 130 | '@vitejs/plugin-legacy': 3.0.1_terser@5.16.1+vite@4.0.4 |
| 131 | '@vitejs/plugin-vue': 4.0.0_vite@4.0.4+vue@3.2.45 | 131 | '@vitejs/plugin-vue': 4.0.0_vite@4.0.4+vue@3.2.45 |
| 132 | '@vitejs/plugin-vue-jsx': 3.0.0_vite@4.0.4+vue@3.2.45 | 132 | '@vitejs/plugin-vue-jsx': 3.0.0_vite@4.0.4+vue@3.2.45 |
| 133 | - autoprefixer: 10.4.13_postcss@8.4.20 | 133 | + autoprefixer: 10.4.13_postcss@8.4.21 |
| 134 | consola: 2.15.3 | 134 | consola: 2.15.3 |
| 135 | eslint: 8.31.0 | 135 | eslint: 8.31.0 |
| 136 | eslint-config-prettier: 8.6.0_eslint@8.31.0 | 136 | eslint-config-prettier: 8.6.0_eslint@8.31.0 |
| 137 | - eslint-define-config: 1.13.0 | ||
| 138 | - eslint-plugin-prettier: 4.2.1_32m5uc2milwdw3tnkcq5del26y | 137 | + eslint-define-config: 1.14.0 |
| 138 | + eslint-plugin-prettier: 4.2.1_iu5s7nk6dw7o3tajefwfiqfmge | ||
| 139 | eslint-plugin-vue: 9.8.0_eslint@8.31.0 | 139 | eslint-plugin-vue: 9.8.0_eslint@8.31.0 |
| 140 | lint-staged: 13.1.0 | 140 | lint-staged: 13.1.0 |
| 141 | - postcss: 8.4.20 | 141 | + postcss: 8.4.21 |
| 142 | postcss-html: 1.5.0 | 142 | postcss-html: 1.5.0 |
| 143 | - postcss-scss: 4.0.6_postcss@8.4.20 | ||
| 144 | - prettier: 2.8.1 | 143 | + postcss-scss: 4.0.6_postcss@8.4.21 |
| 144 | + prettier: 2.8.2 | ||
| 145 | rimraf: 3.0.2 | 145 | rimraf: 3.0.2 |
| 146 | rollup: 3.9.1 | 146 | rollup: 3.9.1 |
| 147 | sass: 1.57.1 | 147 | sass: 1.57.1 |
| @@ -150,7 +150,7 @@ devDependencies: | @@ -150,7 +150,7 @@ devDependencies: | ||
| 150 | stylelint-config-prettier: 9.0.4_stylelint@14.16.1 | 150 | stylelint-config-prettier: 9.0.4_stylelint@14.16.1 |
| 151 | stylelint-config-recommended: 9.0.0_stylelint@14.16.1 | 151 | stylelint-config-recommended: 9.0.0_stylelint@14.16.1 |
| 152 | stylelint-config-standard: 29.0.0_stylelint@14.16.1 | 152 | stylelint-config-standard: 29.0.0_stylelint@14.16.1 |
| 153 | - stylelint-order: 5.0.0_stylelint@14.16.1 | 153 | + stylelint-order: 6.0.1_stylelint@14.16.1 |
| 154 | terser: 5.16.1 | 154 | terser: 5.16.1 |
| 155 | typescript: 4.9.4 | 155 | typescript: 4.9.4 |
| 156 | vite: 4.0.4_zxbrnrc4iyldik6mikh3pswz4i | 156 | vite: 4.0.4_zxbrnrc4iyldik6mikh3pswz4i |
| @@ -163,7 +163,7 @@ devDependencies: | @@ -163,7 +163,7 @@ devDependencies: | ||
| 163 | vite-plugin-svg-icons: 2.0.1_vite@4.0.4 | 163 | vite-plugin-svg-icons: 2.0.1_vite@4.0.4 |
| 164 | vite-plugin-vue-setup-extend: 0.4.0_vite@4.0.4 | 164 | vite-plugin-vue-setup-extend: 0.4.0_vite@4.0.4 |
| 165 | vite-plugin-windicss: 1.8.10_vite@4.0.4 | 165 | vite-plugin-windicss: 1.8.10_vite@4.0.4 |
| 166 | - vue-tsc: 1.0.22_typescript@4.9.4 | 166 | + vue-tsc: 1.0.24_typescript@4.9.4 |
| 167 | windicss: 3.5.6 | 167 | windicss: 3.5.6 |
| 168 | 168 | ||
| 169 | packages: | 169 | packages: |
| @@ -506,14 +506,14 @@ packages: | @@ -506,14 +506,14 @@ packages: | ||
| 506 | '@babel/helper-validator-identifier': 7.19.1 | 506 | '@babel/helper-validator-identifier': 7.19.1 |
| 507 | to-fast-properties: 2.0.0 | 507 | to-fast-properties: 2.0.0 |
| 508 | 508 | ||
| 509 | - /@commitlint/cli/17.4.0_@types+node@18.11.18: | ||
| 510 | - resolution: {integrity: sha512-SEY4sYe8yVlgxPP7X0wJb96DBAGBPsCsy6QbqJt/UECbIAjDeDV5xXBV4jnS7T/qMC10sk6Ub9kDhEX0VWvblw==} | 509 | + /@commitlint/cli/17.4.1: |
| 510 | + resolution: {integrity: sha512-W8OJwz+izY+fVwyUt1HveCDmABMZNRVZHSVPw/Bh9Y62tp11SmmQaycgbsYLMiMy7JGn4mAJqEGlSHS9Uti9ZQ==} | ||
| 511 | engines: {node: '>=v14'} | 511 | engines: {node: '>=v14'} |
| 512 | hasBin: true | 512 | hasBin: true |
| 513 | dependencies: | 513 | dependencies: |
| 514 | '@commitlint/format': 17.4.0 | 514 | '@commitlint/format': 17.4.0 |
| 515 | '@commitlint/lint': 17.4.0 | 515 | '@commitlint/lint': 17.4.0 |
| 516 | - '@commitlint/load': 17.4.0_@types+node@18.11.18 | 516 | + '@commitlint/load': 17.4.1 |
| 517 | '@commitlint/read': 17.4.0 | 517 | '@commitlint/read': 17.4.0 |
| 518 | '@commitlint/types': 17.4.0 | 518 | '@commitlint/types': 17.4.0 |
| 519 | execa: 5.1.1 | 519 | execa: 5.1.1 |
| @@ -524,7 +524,6 @@ packages: | @@ -524,7 +524,6 @@ packages: | ||
| 524 | transitivePeerDependencies: | 524 | transitivePeerDependencies: |
| 525 | - '@swc/core' | 525 | - '@swc/core' |
| 526 | - '@swc/wasm' | 526 | - '@swc/wasm' |
| 527 | - - '@types/node' | ||
| 528 | dev: true | 527 | dev: true |
| 529 | 528 | ||
| 530 | /@commitlint/config-conventional/17.4.0: | 529 | /@commitlint/config-conventional/17.4.0: |
| @@ -585,14 +584,15 @@ packages: | @@ -585,14 +584,15 @@ packages: | ||
| 585 | '@commitlint/types': 17.4.0 | 584 | '@commitlint/types': 17.4.0 |
| 586 | dev: true | 585 | dev: true |
| 587 | 586 | ||
| 588 | - /@commitlint/load/17.4.0_@types+node@18.11.18: | ||
| 589 | - resolution: {integrity: sha512-wDKNvAJqukqZqKmhRlf3KNo/12QGo1AQcd80EbV01SxtGvyHOsJ/g+/IbrZpopZv8rvzmEVktcpfDYH6ITepFA==} | 587 | + /@commitlint/load/17.4.1: |
| 588 | + resolution: {integrity: sha512-6A7/LhIaQpL4ieciIDcVvK2d5z/UI1GBrtDaHm6sQSCL0265clB2/F7XKQNTJHXv9yG4LByT2r+QCpM4GugIfw==} | ||
| 590 | engines: {node: '>=v14'} | 589 | engines: {node: '>=v14'} |
| 591 | dependencies: | 590 | dependencies: |
| 592 | '@commitlint/config-validator': 17.4.0 | 591 | '@commitlint/config-validator': 17.4.0 |
| 593 | '@commitlint/execute-rule': 17.4.0 | 592 | '@commitlint/execute-rule': 17.4.0 |
| 594 | '@commitlint/resolve-extends': 17.4.0 | 593 | '@commitlint/resolve-extends': 17.4.0 |
| 595 | '@commitlint/types': 17.4.0 | 594 | '@commitlint/types': 17.4.0 |
| 595 | + '@types/node': 18.11.18 | ||
| 596 | chalk: 4.1.2 | 596 | chalk: 4.1.2 |
| 597 | cosmiconfig: 8.0.0 | 597 | cosmiconfig: 8.0.0 |
| 598 | cosmiconfig-typescript-loader: 4.2.0_bxtyj3et3xbsdyxhh3oblnfbj4 | 598 | cosmiconfig-typescript-loader: 4.2.0_bxtyj3et3xbsdyxhh3oblnfbj4 |
| @@ -605,7 +605,6 @@ packages: | @@ -605,7 +605,6 @@ packages: | ||
| 605 | transitivePeerDependencies: | 605 | transitivePeerDependencies: |
| 606 | - '@swc/core' | 606 | - '@swc/core' |
| 607 | - '@swc/wasm' | 607 | - '@swc/wasm' |
| 608 | - - '@types/node' | ||
| 609 | dev: true | 608 | dev: true |
| 610 | 609 | ||
| 611 | /@commitlint/message/17.4.0: | 610 | /@commitlint/message/17.4.0: |
| @@ -682,14 +681,14 @@ packages: | @@ -682,14 +681,14 @@ packages: | ||
| 682 | '@jridgewell/trace-mapping': 0.3.9 | 681 | '@jridgewell/trace-mapping': 0.3.9 |
| 683 | dev: true | 682 | dev: true |
| 684 | 683 | ||
| 685 | - /@csstools/selector-specificity/2.0.2_2xshye3abirqjlplmebvmaxyna: | 684 | + /@csstools/selector-specificity/2.0.2_wajs5nedgkikc5pcuwett7legi: |
| 686 | resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} | 685 | resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} |
| 687 | engines: {node: ^12 || ^14 || >=16} | 686 | engines: {node: ^12 || ^14 || >=16} |
| 688 | peerDependencies: | 687 | peerDependencies: |
| 689 | postcss: ^8.2 | 688 | postcss: ^8.2 |
| 690 | postcss-selector-parser: ^6.0.10 | 689 | postcss-selector-parser: ^6.0.10 |
| 691 | dependencies: | 690 | dependencies: |
| 692 | - postcss: 8.4.20 | 691 | + postcss: 8.4.21 |
| 693 | postcss-selector-parser: 6.0.11 | 692 | postcss-selector-parser: 6.0.11 |
| 694 | dev: true | 693 | dev: true |
| 695 | 694 | ||
| @@ -964,8 +963,8 @@ packages: | @@ -964,8 +963,8 @@ packages: | ||
| 964 | dependencies: | 963 | dependencies: |
| 965 | '@iconify/types': 2.0.0 | 964 | '@iconify/types': 2.0.0 |
| 966 | 965 | ||
| 967 | - /@iconify/json/2.2.2: | ||
| 968 | - resolution: {integrity: sha512-G9HVJz3uvQGNEirk9oI7xYnWb7ygEfTUZ+PVp81qgNp8bu5UOtXaxjTGw78NyNAC2OlryH5tSEp95Dqbt4LLQQ==} | 966 | + /@iconify/json/2.2.5: |
| 967 | + resolution: {integrity: sha512-AIbJTRF9HJz7FJ8t7058huwDXHaFEY4a4f6uuPtctEQ8/I3ybrX66iZMgoLD1kLaamU4tzZPlZ6tSpA3pM8LZg==} | ||
| 969 | dependencies: | 968 | dependencies: |
| 970 | '@iconify/types': 2.0.0 | 969 | '@iconify/types': 2.0.0 |
| 971 | pathe: 1.0.0 | 970 | pathe: 1.0.0 |
| @@ -986,8 +985,8 @@ packages: | @@ -986,8 +985,8 @@ packages: | ||
| 986 | vue-i18n: | 985 | vue-i18n: |
| 987 | optional: true | 986 | optional: true |
| 988 | dependencies: | 987 | dependencies: |
| 989 | - '@intlify/message-compiler': 9.3.0-beta.12 | ||
| 990 | - '@intlify/shared': 9.3.0-beta.12 | 988 | + '@intlify/message-compiler': 9.3.0-beta.14 |
| 989 | + '@intlify/shared': 9.3.0-beta.14 | ||
| 991 | jsonc-eslint-parser: 1.4.1 | 990 | jsonc-eslint-parser: 1.4.1 |
| 992 | source-map: 0.6.1 | 991 | source-map: 0.6.1 |
| 993 | vue-i18n: 9.2.2_vue@3.2.45 | 992 | vue-i18n: 9.2.2_vue@3.2.45 |
| @@ -1016,11 +1015,11 @@ packages: | @@ -1016,11 +1015,11 @@ packages: | ||
| 1016 | '@intlify/shared': 9.2.2 | 1015 | '@intlify/shared': 9.2.2 |
| 1017 | source-map: 0.6.1 | 1016 | source-map: 0.6.1 |
| 1018 | 1017 | ||
| 1019 | - /@intlify/message-compiler/9.3.0-beta.12: | ||
| 1020 | - resolution: {integrity: sha512-A8/s7pb3v8nf6HG77qFPJntxgQKI9GXxGnkn7aO+b03/X/GkF/4WceDSAIk3i+yLeIgszeBn9GZ23tSg4sTEHA==} | 1018 | + /@intlify/message-compiler/9.3.0-beta.14: |
| 1019 | + resolution: {integrity: sha512-PlZ3pl+YYuql54Nq+26wv6ohIa8Ig6ALrvQI+f2zZKUtkupb49M4wyVN3bDQbFlgYVE7/u3n19BJSY8lEuX5Eg==} | ||
| 1021 | engines: {node: '>= 14'} | 1020 | engines: {node: '>= 14'} |
| 1022 | dependencies: | 1021 | dependencies: |
| 1023 | - '@intlify/shared': 9.3.0-beta.11 | 1022 | + '@intlify/shared': 9.3.0-beta.14 |
| 1024 | source-map: 0.6.1 | 1023 | source-map: 0.6.1 |
| 1025 | dev: true | 1024 | dev: true |
| 1026 | 1025 | ||
| @@ -1028,13 +1027,8 @@ packages: | @@ -1028,13 +1027,8 @@ packages: | ||
| 1028 | resolution: {integrity: sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==} | 1027 | resolution: {integrity: sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==} |
| 1029 | engines: {node: '>= 14'} | 1028 | engines: {node: '>= 14'} |
| 1030 | 1029 | ||
| 1031 | - /@intlify/shared/9.3.0-beta.11: | ||
| 1032 | - resolution: {integrity: sha512-CtbotesxTRiC3bRyXyv1NG39fkqJ790f8z8xFaeIXSZpOdiyxoh5BIyypCzSFQZDGLwz0Q9gyWbW1XpxQJm68Q==} | ||
| 1033 | - engines: {node: '>= 14'} | ||
| 1034 | - dev: true | ||
| 1035 | - | ||
| 1036 | - /@intlify/shared/9.3.0-beta.12: | ||
| 1037 | - resolution: {integrity: sha512-WsmaS54sA8xuwezPKpa/OMoaX1v2VF2fCgAmYS6prDr2ir0CkUFWPm9A8ilmxzv4nkS61/v8+vf4lGGkn5uBdA==} | 1030 | + /@intlify/shared/9.3.0-beta.14: |
| 1031 | + resolution: {integrity: sha512-mJ/rFan+4uVsBAQSCAJnpQaPvSjQ49mJMNmGelTUbTDAmgf0oexYxwqtKOlFFyY3hmQ8lUDYaGQKuYrFgRuHnA==} | ||
| 1038 | engines: {node: '>= 14'} | 1032 | engines: {node: '>= 14'} |
| 1039 | dev: true | 1033 | dev: true |
| 1040 | 1034 | ||
| @@ -1054,7 +1048,7 @@ packages: | @@ -1054,7 +1048,7 @@ packages: | ||
| 1054 | optional: true | 1048 | optional: true |
| 1055 | dependencies: | 1049 | dependencies: |
| 1056 | '@intlify/bundle-utils': 3.4.0_vue-i18n@9.2.2 | 1050 | '@intlify/bundle-utils': 3.4.0_vue-i18n@9.2.2 |
| 1057 | - '@intlify/shared': 9.3.0-beta.12 | 1051 | + '@intlify/shared': 9.3.0-beta.14 |
| 1058 | '@rollup/pluginutils': 4.2.1 | 1052 | '@rollup/pluginutils': 4.2.1 |
| 1059 | '@vue/compiler-sfc': 3.2.45 | 1053 | '@vue/compiler-sfc': 3.2.45 |
| 1060 | debug: 4.3.4 | 1054 | debug: 4.3.4 |
| @@ -1285,8 +1279,8 @@ packages: | @@ -1285,8 +1279,8 @@ packages: | ||
| 1285 | resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} | 1279 | resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} |
| 1286 | dev: false | 1280 | dev: false |
| 1287 | 1281 | ||
| 1288 | - /@typescript-eslint/eslint-plugin/5.48.0_k73wpmdolxikpyqun3p36akaaq: | ||
| 1289 | - resolution: {integrity: sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==} | 1282 | + /@typescript-eslint/eslint-plugin/5.48.1_3jon24igvnqaqexgwtxk6nkpse: |
| 1283 | + resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==} | ||
| 1290 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1284 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1291 | peerDependencies: | 1285 | peerDependencies: |
| 1292 | '@typescript-eslint/parser': ^5.0.0 | 1286 | '@typescript-eslint/parser': ^5.0.0 |
| @@ -1296,10 +1290,10 @@ packages: | @@ -1296,10 +1290,10 @@ packages: | ||
| 1296 | typescript: | 1290 | typescript: |
| 1297 | optional: true | 1291 | optional: true |
| 1298 | dependencies: | 1292 | dependencies: |
| 1299 | - '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe | ||
| 1300 | - '@typescript-eslint/scope-manager': 5.48.0 | ||
| 1301 | - '@typescript-eslint/type-utils': 5.48.0_iukboom6ndih5an6iafl45j2fe | ||
| 1302 | - '@typescript-eslint/utils': 5.48.0_iukboom6ndih5an6iafl45j2fe | 1293 | + '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe |
| 1294 | + '@typescript-eslint/scope-manager': 5.48.1 | ||
| 1295 | + '@typescript-eslint/type-utils': 5.48.1_iukboom6ndih5an6iafl45j2fe | ||
| 1296 | + '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe | ||
| 1303 | debug: 4.3.4 | 1297 | debug: 4.3.4 |
| 1304 | eslint: 8.31.0 | 1298 | eslint: 8.31.0 |
| 1305 | ignore: 5.2.1 | 1299 | ignore: 5.2.1 |
| @@ -1312,8 +1306,8 @@ packages: | @@ -1312,8 +1306,8 @@ packages: | ||
| 1312 | - supports-color | 1306 | - supports-color |
| 1313 | dev: true | 1307 | dev: true |
| 1314 | 1308 | ||
| 1315 | - /@typescript-eslint/parser/5.48.0_iukboom6ndih5an6iafl45j2fe: | ||
| 1316 | - resolution: {integrity: sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==} | 1309 | + /@typescript-eslint/parser/5.48.1_iukboom6ndih5an6iafl45j2fe: |
| 1310 | + resolution: {integrity: sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==} | ||
| 1317 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1311 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1318 | peerDependencies: | 1312 | peerDependencies: |
| 1319 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 | 1313 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 |
| @@ -1322,9 +1316,9 @@ packages: | @@ -1322,9 +1316,9 @@ packages: | ||
| 1322 | typescript: | 1316 | typescript: |
| 1323 | optional: true | 1317 | optional: true |
| 1324 | dependencies: | 1318 | dependencies: |
| 1325 | - '@typescript-eslint/scope-manager': 5.48.0 | ||
| 1326 | - '@typescript-eslint/types': 5.48.0 | ||
| 1327 | - '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 | 1319 | + '@typescript-eslint/scope-manager': 5.48.1 |
| 1320 | + '@typescript-eslint/types': 5.48.1 | ||
| 1321 | + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 | ||
| 1328 | debug: 4.3.4 | 1322 | debug: 4.3.4 |
| 1329 | eslint: 8.31.0 | 1323 | eslint: 8.31.0 |
| 1330 | typescript: 4.9.4 | 1324 | typescript: 4.9.4 |
| @@ -1332,16 +1326,16 @@ packages: | @@ -1332,16 +1326,16 @@ packages: | ||
| 1332 | - supports-color | 1326 | - supports-color |
| 1333 | dev: true | 1327 | dev: true |
| 1334 | 1328 | ||
| 1335 | - /@typescript-eslint/scope-manager/5.48.0: | ||
| 1336 | - resolution: {integrity: sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==} | 1329 | + /@typescript-eslint/scope-manager/5.48.1: |
| 1330 | + resolution: {integrity: sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==} | ||
| 1337 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1331 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1338 | dependencies: | 1332 | dependencies: |
| 1339 | - '@typescript-eslint/types': 5.48.0 | ||
| 1340 | - '@typescript-eslint/visitor-keys': 5.48.0 | 1333 | + '@typescript-eslint/types': 5.48.1 |
| 1334 | + '@typescript-eslint/visitor-keys': 5.48.1 | ||
| 1341 | dev: true | 1335 | dev: true |
| 1342 | 1336 | ||
| 1343 | - /@typescript-eslint/type-utils/5.48.0_iukboom6ndih5an6iafl45j2fe: | ||
| 1344 | - resolution: {integrity: sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==} | 1337 | + /@typescript-eslint/type-utils/5.48.1_iukboom6ndih5an6iafl45j2fe: |
| 1338 | + resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==} | ||
| 1345 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1339 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1346 | peerDependencies: | 1340 | peerDependencies: |
| 1347 | eslint: '*' | 1341 | eslint: '*' |
| @@ -1350,8 +1344,8 @@ packages: | @@ -1350,8 +1344,8 @@ packages: | ||
| 1350 | typescript: | 1344 | typescript: |
| 1351 | optional: true | 1345 | optional: true |
| 1352 | dependencies: | 1346 | dependencies: |
| 1353 | - '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 | ||
| 1354 | - '@typescript-eslint/utils': 5.48.0_iukboom6ndih5an6iafl45j2fe | 1347 | + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 |
| 1348 | + '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe | ||
| 1355 | debug: 4.3.4 | 1349 | debug: 4.3.4 |
| 1356 | eslint: 8.31.0 | 1350 | eslint: 8.31.0 |
| 1357 | tsutils: 3.21.0_typescript@4.9.4 | 1351 | tsutils: 3.21.0_typescript@4.9.4 |
| @@ -1360,13 +1354,13 @@ packages: | @@ -1360,13 +1354,13 @@ packages: | ||
| 1360 | - supports-color | 1354 | - supports-color |
| 1361 | dev: true | 1355 | dev: true |
| 1362 | 1356 | ||
| 1363 | - /@typescript-eslint/types/5.48.0: | ||
| 1364 | - resolution: {integrity: sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==} | 1357 | + /@typescript-eslint/types/5.48.1: |
| 1358 | + resolution: {integrity: sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==} | ||
| 1365 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1359 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1366 | dev: true | 1360 | dev: true |
| 1367 | 1361 | ||
| 1368 | - /@typescript-eslint/typescript-estree/5.48.0_typescript@4.9.4: | ||
| 1369 | - resolution: {integrity: sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==} | 1362 | + /@typescript-eslint/typescript-estree/5.48.1_typescript@4.9.4: |
| 1363 | + resolution: {integrity: sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==} | ||
| 1370 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1364 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1371 | peerDependencies: | 1365 | peerDependencies: |
| 1372 | typescript: '*' | 1366 | typescript: '*' |
| @@ -1374,8 +1368,8 @@ packages: | @@ -1374,8 +1368,8 @@ packages: | ||
| 1374 | typescript: | 1368 | typescript: |
| 1375 | optional: true | 1369 | optional: true |
| 1376 | dependencies: | 1370 | dependencies: |
| 1377 | - '@typescript-eslint/types': 5.48.0 | ||
| 1378 | - '@typescript-eslint/visitor-keys': 5.48.0 | 1371 | + '@typescript-eslint/types': 5.48.1 |
| 1372 | + '@typescript-eslint/visitor-keys': 5.48.1 | ||
| 1379 | debug: 4.3.4 | 1373 | debug: 4.3.4 |
| 1380 | globby: 11.1.0 | 1374 | globby: 11.1.0 |
| 1381 | is-glob: 4.0.3 | 1375 | is-glob: 4.0.3 |
| @@ -1386,17 +1380,17 @@ packages: | @@ -1386,17 +1380,17 @@ packages: | ||
| 1386 | - supports-color | 1380 | - supports-color |
| 1387 | dev: true | 1381 | dev: true |
| 1388 | 1382 | ||
| 1389 | - /@typescript-eslint/utils/5.48.0_iukboom6ndih5an6iafl45j2fe: | ||
| 1390 | - resolution: {integrity: sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==} | 1383 | + /@typescript-eslint/utils/5.48.1_iukboom6ndih5an6iafl45j2fe: |
| 1384 | + resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==} | ||
| 1391 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1385 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1392 | peerDependencies: | 1386 | peerDependencies: |
| 1393 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 | 1387 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 |
| 1394 | dependencies: | 1388 | dependencies: |
| 1395 | '@types/json-schema': 7.0.11 | 1389 | '@types/json-schema': 7.0.11 |
| 1396 | '@types/semver': 7.3.13 | 1390 | '@types/semver': 7.3.13 |
| 1397 | - '@typescript-eslint/scope-manager': 5.48.0 | ||
| 1398 | - '@typescript-eslint/types': 5.48.0 | ||
| 1399 | - '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 | 1391 | + '@typescript-eslint/scope-manager': 5.48.1 |
| 1392 | + '@typescript-eslint/types': 5.48.1 | ||
| 1393 | + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 | ||
| 1400 | eslint: 8.31.0 | 1394 | eslint: 8.31.0 |
| 1401 | eslint-scope: 5.1.1 | 1395 | eslint-scope: 5.1.1 |
| 1402 | eslint-utils: 3.0.0_eslint@8.31.0 | 1396 | eslint-utils: 3.0.0_eslint@8.31.0 |
| @@ -1406,11 +1400,11 @@ packages: | @@ -1406,11 +1400,11 @@ packages: | ||
| 1406 | - typescript | 1400 | - typescript |
| 1407 | dev: true | 1401 | dev: true |
| 1408 | 1402 | ||
| 1409 | - /@typescript-eslint/visitor-keys/5.48.0: | ||
| 1410 | - resolution: {integrity: sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==} | 1403 | + /@typescript-eslint/visitor-keys/5.48.1: |
| 1404 | + resolution: {integrity: sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==} | ||
| 1411 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1405 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1412 | dependencies: | 1406 | dependencies: |
| 1413 | - '@typescript-eslint/types': 5.48.0 | 1407 | + '@typescript-eslint/types': 5.48.1 |
| 1414 | eslint-visitor-keys: 3.3.0 | 1408 | eslint-visitor-keys: 3.3.0 |
| 1415 | dev: true | 1409 | dev: true |
| 1416 | 1410 | ||
| @@ -1498,30 +1492,30 @@ packages: | @@ -1498,30 +1492,30 @@ packages: | ||
| 1498 | vue: 3.2.45 | 1492 | vue: 3.2.45 |
| 1499 | dev: true | 1493 | dev: true |
| 1500 | 1494 | ||
| 1501 | - /@volar/language-core/1.0.22: | ||
| 1502 | - resolution: {integrity: sha512-hiJeCOqxNdtG/04FRGLGI9H9DVz2l6cTqPDBzwqplHXAWfMxjzUaGUrn9sfTG7YMFNZUgK4EYxJnRfhqdtbSFQ==} | 1495 | + /@volar/language-core/1.0.24: |
| 1496 | + resolution: {integrity: sha512-vTN+alJiWwK0Pax6POqrmevbtFW2dXhjwWiW/MW4f48eDYPLdyURWcr8TixO7EN/nHsUBj2udT7igFKPtjyAKg==} | ||
| 1503 | dependencies: | 1497 | dependencies: |
| 1504 | - '@volar/source-map': 1.0.22 | 1498 | + '@volar/source-map': 1.0.24 |
| 1505 | muggle-string: 0.1.0 | 1499 | muggle-string: 0.1.0 |
| 1506 | dev: true | 1500 | dev: true |
| 1507 | 1501 | ||
| 1508 | - /@volar/source-map/1.0.22: | ||
| 1509 | - resolution: {integrity: sha512-cv4gypHSP4MWVR82ed/+1IpI6794qAl0Q0+KJ+VGMVF8rVugsiF9QbyMCgjel9wNRsssQsazzsf6txOR9vHQiw==} | 1502 | + /@volar/source-map/1.0.24: |
| 1503 | + resolution: {integrity: sha512-Qsv/tkplx18pgBr8lKAbM1vcDqgkGKQzbChg6NW+v0CZc3G7FLmK+WrqEPzKlN7Cwdc6XVL559Nod8WKAfKr4A==} | ||
| 1510 | dependencies: | 1504 | dependencies: |
| 1511 | muggle-string: 0.1.0 | 1505 | muggle-string: 0.1.0 |
| 1512 | dev: true | 1506 | dev: true |
| 1513 | 1507 | ||
| 1514 | - /@volar/typescript/1.0.22: | ||
| 1515 | - resolution: {integrity: sha512-VPyEicealSD4gqlE5/UQ1j3ietsO6Hfat40KtUEh/K+XEZ7h02b1KgFV64YEuBkBOaZ5hgvRW/WXKtQgXCl7Iw==} | 1508 | + /@volar/typescript/1.0.24: |
| 1509 | + resolution: {integrity: sha512-f8hCSk+PfKR1/RQHxZ79V1NpDImHoivqoizK+mstphm25tn/YJ/JnKNjZHB+o21fuW0yKlI26NV3jkVb2Cc/7A==} | ||
| 1516 | dependencies: | 1510 | dependencies: |
| 1517 | - '@volar/language-core': 1.0.22 | 1511 | + '@volar/language-core': 1.0.24 |
| 1518 | dev: true | 1512 | dev: true |
| 1519 | 1513 | ||
| 1520 | - /@volar/vue-language-core/1.0.22: | ||
| 1521 | - resolution: {integrity: sha512-Ki0G/ZdBj2/GLw+/VVH3n9XR/JL6krMIth02EekFn6JV4PGN3mNxbvoh6lOPSDZLR6biOU5nJPnnjpKy8nuXhw==} | 1514 | + /@volar/vue-language-core/1.0.24: |
| 1515 | + resolution: {integrity: sha512-2NTJzSgrwKu6uYwPqLiTMuAzi7fAY3yFy5PJ255bGJc82If0Xr+cW8pC80vpjG0D/aVLmlwAdO4+Ya2BI8GdDg==} | ||
| 1522 | dependencies: | 1516 | dependencies: |
| 1523 | - '@volar/language-core': 1.0.22 | ||
| 1524 | - '@volar/source-map': 1.0.22 | 1517 | + '@volar/language-core': 1.0.24 |
| 1518 | + '@volar/source-map': 1.0.24 | ||
| 1525 | '@vue/compiler-dom': 3.2.45 | 1519 | '@vue/compiler-dom': 3.2.45 |
| 1526 | '@vue/compiler-sfc': 3.2.45 | 1520 | '@vue/compiler-sfc': 3.2.45 |
| 1527 | '@vue/reactivity': 3.2.45 | 1521 | '@vue/reactivity': 3.2.45 |
| @@ -1530,11 +1524,11 @@ packages: | @@ -1530,11 +1524,11 @@ packages: | ||
| 1530 | vue-template-compiler: 2.7.14 | 1524 | vue-template-compiler: 2.7.14 |
| 1531 | dev: true | 1525 | dev: true |
| 1532 | 1526 | ||
| 1533 | - /@volar/vue-typescript/1.0.22: | ||
| 1534 | - resolution: {integrity: sha512-2T1o5z86PAev31OMtVOv/qp4P3ZVl9ln/2KTmykQE8Fh4A5F+868MW4nf5J7XQ6RNyx7RH9LhzgjvbqJpAfiYw==} | 1527 | + /@volar/vue-typescript/1.0.24: |
| 1528 | + resolution: {integrity: sha512-9a25oHDvGaNC0okRS47uqJI6FxY4hUQZUsxeOUFHcqVxZEv8s17LPuP/pMMXyz7jPygrZubB/qXqHY5jEu/akA==} | ||
| 1535 | dependencies: | 1529 | dependencies: |
| 1536 | - '@volar/typescript': 1.0.22 | ||
| 1537 | - '@volar/vue-language-core': 1.0.22 | 1530 | + '@volar/typescript': 1.0.24 |
| 1531 | + '@volar/vue-language-core': 1.0.24 | ||
| 1538 | dev: true | 1532 | dev: true |
| 1539 | 1533 | ||
| 1540 | /@vue/babel-helper-vue-transform-on/1.0.2: | 1534 | /@vue/babel-helper-vue-transform-on/1.0.2: |
| @@ -1583,7 +1577,7 @@ packages: | @@ -1583,7 +1577,7 @@ packages: | ||
| 1583 | '@vue/shared': 3.2.45 | 1577 | '@vue/shared': 3.2.45 |
| 1584 | estree-walker: 2.0.2 | 1578 | estree-walker: 2.0.2 |
| 1585 | magic-string: 0.25.9 | 1579 | magic-string: 0.25.9 |
| 1586 | - postcss: 8.4.20 | 1580 | + postcss: 8.4.21 |
| 1587 | source-map: 0.6.1 | 1581 | source-map: 0.6.1 |
| 1588 | 1582 | ||
| 1589 | /@vue/compiler-ssr/3.2.45: | 1583 | /@vue/compiler-ssr/3.2.45: |
| @@ -2066,7 +2060,7 @@ packages: | @@ -2066,7 +2060,7 @@ packages: | ||
| 2066 | hasBin: true | 2060 | hasBin: true |
| 2067 | dev: true | 2061 | dev: true |
| 2068 | 2062 | ||
| 2069 | - /autoprefixer/10.4.13_postcss@8.4.20: | 2063 | + /autoprefixer/10.4.13_postcss@8.4.21: |
| 2070 | resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} | 2064 | resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} |
| 2071 | engines: {node: ^10 || ^12 || >=14} | 2065 | engines: {node: ^10 || ^12 || >=14} |
| 2072 | hasBin: true | 2066 | hasBin: true |
| @@ -2078,7 +2072,7 @@ packages: | @@ -2078,7 +2072,7 @@ packages: | ||
| 2078 | fraction.js: 4.2.0 | 2072 | fraction.js: 4.2.0 |
| 2079 | normalize-range: 0.1.2 | 2073 | normalize-range: 0.1.2 |
| 2080 | picocolors: 1.0.0 | 2074 | picocolors: 1.0.0 |
| 2081 | - postcss: 8.4.20 | 2075 | + postcss: 8.4.21 |
| 2082 | postcss-value-parser: 4.2.0 | 2076 | postcss-value-parser: 4.2.0 |
| 2083 | dev: true | 2077 | dev: true |
| 2084 | 2078 | ||
| @@ -3013,12 +3007,12 @@ packages: | @@ -3013,12 +3007,12 @@ packages: | ||
| 3013 | eslint: 8.31.0 | 3007 | eslint: 8.31.0 |
| 3014 | dev: true | 3008 | dev: true |
| 3015 | 3009 | ||
| 3016 | - /eslint-define-config/1.13.0: | ||
| 3017 | - resolution: {integrity: sha512-d0BfmPGBcMusfiz6QY/piAhWaEyJriJtvk9SHfuJzI7am9k4ce07SfmPkpcR0ckXNyu4FBons10akOO2Tx+X+Q==} | 3010 | + /eslint-define-config/1.14.0: |
| 3011 | + resolution: {integrity: sha512-NREt5SzMwKmLAY28YdaqIiTSJxfPpuZ+1ZLJxY2Wbj02dYF4QX81z0q9MPMjZB8C+SlCu66qAhcPpFJyhXOiuA==} | ||
| 3018 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} | 3012 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} |
| 3019 | dev: true | 3013 | dev: true |
| 3020 | 3014 | ||
| 3021 | - /eslint-plugin-prettier/4.2.1_32m5uc2milwdw3tnkcq5del26y: | 3015 | + /eslint-plugin-prettier/4.2.1_iu5s7nk6dw7o3tajefwfiqfmge: |
| 3022 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} | 3016 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} |
| 3023 | engines: {node: '>=12.0.0'} | 3017 | engines: {node: '>=12.0.0'} |
| 3024 | peerDependencies: | 3018 | peerDependencies: |
| @@ -3031,7 +3025,7 @@ packages: | @@ -3031,7 +3025,7 @@ packages: | ||
| 3031 | dependencies: | 3025 | dependencies: |
| 3032 | eslint: 8.31.0 | 3026 | eslint: 8.31.0 |
| 3033 | eslint-config-prettier: 8.6.0_eslint@8.31.0 | 3027 | eslint-config-prettier: 8.6.0_eslint@8.31.0 |
| 3034 | - prettier: 2.8.1 | 3028 | + prettier: 2.8.2 |
| 3035 | prettier-linter-helpers: 1.0.0 | 3029 | prettier-linter-helpers: 1.0.0 |
| 3036 | dev: true | 3030 | dev: true |
| 3037 | 3031 | ||
| @@ -4506,7 +4500,7 @@ packages: | @@ -4506,7 +4500,7 @@ packages: | ||
| 4506 | dev: false | 4500 | dev: false |
| 4507 | 4501 | ||
| 4508 | /nanoid/3.3.4: | 4502 | /nanoid/3.3.4: |
| 4509 | - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/nanoid/-/nanoid-3.3.4.tgz} | 4503 | + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} |
| 4510 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} | 4504 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} |
| 4511 | hasBin: true | 4505 | hasBin: true |
| 4512 | 4506 | ||
| @@ -4848,8 +4842,8 @@ packages: | @@ -4848,8 +4842,8 @@ packages: | ||
| 4848 | dependencies: | 4842 | dependencies: |
| 4849 | htmlparser2: 8.0.1 | 4843 | htmlparser2: 8.0.1 |
| 4850 | js-tokens: 8.0.0 | 4844 | js-tokens: 8.0.0 |
| 4851 | - postcss: 8.4.20 | ||
| 4852 | - postcss-safe-parser: 6.0.0_postcss@8.4.20 | 4845 | + postcss: 8.4.21 |
| 4846 | + postcss-safe-parser: 6.0.0_postcss@8.4.21 | ||
| 4853 | dev: true | 4847 | dev: true |
| 4854 | 4848 | ||
| 4855 | /postcss-media-query-parser/0.2.3: | 4849 | /postcss-media-query-parser/0.2.3: |
| @@ -4868,22 +4862,22 @@ packages: | @@ -4868,22 +4862,22 @@ packages: | ||
| 4868 | resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} | 4862 | resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} |
| 4869 | dev: true | 4863 | dev: true |
| 4870 | 4864 | ||
| 4871 | - /postcss-safe-parser/6.0.0_postcss@8.4.20: | 4865 | + /postcss-safe-parser/6.0.0_postcss@8.4.21: |
| 4872 | resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} | 4866 | resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} |
| 4873 | engines: {node: '>=12.0'} | 4867 | engines: {node: '>=12.0'} |
| 4874 | peerDependencies: | 4868 | peerDependencies: |
| 4875 | postcss: ^8.3.3 | 4869 | postcss: ^8.3.3 |
| 4876 | dependencies: | 4870 | dependencies: |
| 4877 | - postcss: 8.4.20 | 4871 | + postcss: 8.4.21 |
| 4878 | dev: true | 4872 | dev: true |
| 4879 | 4873 | ||
| 4880 | - /postcss-scss/4.0.6_postcss@8.4.20: | 4874 | + /postcss-scss/4.0.6_postcss@8.4.21: |
| 4881 | resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} | 4875 | resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} |
| 4882 | engines: {node: '>=12.0'} | 4876 | engines: {node: '>=12.0'} |
| 4883 | peerDependencies: | 4877 | peerDependencies: |
| 4884 | postcss: ^8.4.19 | 4878 | postcss: ^8.4.19 |
| 4885 | dependencies: | 4879 | dependencies: |
| 4886 | - postcss: 8.4.20 | 4880 | + postcss: 8.4.21 |
| 4887 | dev: true | 4881 | dev: true |
| 4888 | 4882 | ||
| 4889 | /postcss-selector-parser/6.0.10: | 4883 | /postcss-selector-parser/6.0.10: |
| @@ -4902,12 +4896,12 @@ packages: | @@ -4902,12 +4896,12 @@ packages: | ||
| 4902 | util-deprecate: 1.0.2 | 4896 | util-deprecate: 1.0.2 |
| 4903 | dev: true | 4897 | dev: true |
| 4904 | 4898 | ||
| 4905 | - /postcss-sorting/7.0.1_postcss@8.4.20: | ||
| 4906 | - resolution: {integrity: sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==} | 4899 | + /postcss-sorting/8.0.1_postcss@8.4.21: |
| 4900 | + resolution: {integrity: sha512-go9Zoxx7KQH+uLrJ9xa5wRErFeXu01ydA6O8m7koPXkmAN7Ts//eRcIqjo0stBR4+Nir2gMYDOWAOx7O5EPUZA==} | ||
| 4907 | peerDependencies: | 4901 | peerDependencies: |
| 4908 | - postcss: ^8.3.9 | 4902 | + postcss: ^8.4.20 |
| 4909 | dependencies: | 4903 | dependencies: |
| 4910 | - postcss: 8.4.20 | 4904 | + postcss: 8.4.21 |
| 4911 | dev: true | 4905 | dev: true |
| 4912 | 4906 | ||
| 4913 | /postcss-value-parser/4.2.0: | 4907 | /postcss-value-parser/4.2.0: |
| @@ -4924,8 +4918,8 @@ packages: | @@ -4924,8 +4918,8 @@ packages: | ||
| 4924 | supports-color: 3.2.3 | 4918 | supports-color: 3.2.3 |
| 4925 | dev: true | 4919 | dev: true |
| 4926 | 4920 | ||
| 4927 | - /postcss/8.4.20: | ||
| 4928 | - resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/postcss/-/postcss-8.4.20.tgz} | 4921 | + /postcss/8.4.21: |
| 4922 | + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} | ||
| 4929 | engines: {node: ^10 || ^12 || >=14} | 4923 | engines: {node: ^10 || ^12 || >=14} |
| 4930 | dependencies: | 4924 | dependencies: |
| 4931 | nanoid: 3.3.4 | 4925 | nanoid: 3.3.4 |
| @@ -4983,8 +4977,8 @@ packages: | @@ -4983,8 +4977,8 @@ packages: | ||
| 4983 | fast-diff: 1.2.0 | 4977 | fast-diff: 1.2.0 |
| 4984 | dev: true | 4978 | dev: true |
| 4985 | 4979 | ||
| 4986 | - /prettier/2.8.1: | ||
| 4987 | - resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} | 4980 | + /prettier/2.8.2: |
| 4981 | + resolution: {integrity: sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==} | ||
| 4988 | engines: {node: '>=10.13.0'} | 4982 | engines: {node: '>=10.13.0'} |
| 4989 | hasBin: true | 4983 | hasBin: true |
| 4990 | dev: true | 4984 | dev: true |
| @@ -5428,7 +5422,7 @@ packages: | @@ -5428,7 +5422,7 @@ packages: | ||
| 5428 | dev: true | 5422 | dev: true |
| 5429 | 5423 | ||
| 5430 | /source-map-js/1.0.2: | 5424 | /source-map-js/1.0.2: |
| 5431 | - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/source-map-js/-/source-map-js-1.0.2.tgz} | 5425 | + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} |
| 5432 | engines: {node: '>=0.10.0'} | 5426 | engines: {node: '>=0.10.0'} |
| 5433 | 5427 | ||
| 5434 | /source-map-resolve/0.5.3: | 5428 | /source-map-resolve/0.5.3: |
| @@ -5636,13 +5630,13 @@ packages: | @@ -5636,13 +5630,13 @@ packages: | ||
| 5636 | stylelint-config-recommended: 9.0.0_stylelint@14.16.1 | 5630 | stylelint-config-recommended: 9.0.0_stylelint@14.16.1 |
| 5637 | dev: true | 5631 | dev: true |
| 5638 | 5632 | ||
| 5639 | - /stylelint-order/5.0.0_stylelint@14.16.1: | ||
| 5640 | - resolution: {integrity: sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==} | 5633 | + /stylelint-order/6.0.1_stylelint@14.16.1: |
| 5634 | + resolution: {integrity: sha512-C9gJDZArRBZvn+4MPgggwYTp7dK49WPnYa5+6tBEkZnW/YWj4xBVNJdQjIik14w5orlF9RqFpYDHN0FPWIFOSQ==} | ||
| 5641 | peerDependencies: | 5635 | peerDependencies: |
| 5642 | stylelint: ^14.0.0 | 5636 | stylelint: ^14.0.0 |
| 5643 | dependencies: | 5637 | dependencies: |
| 5644 | - postcss: 8.4.20 | ||
| 5645 | - postcss-sorting: 7.0.1_postcss@8.4.20 | 5638 | + postcss: 8.4.21 |
| 5639 | + postcss-sorting: 8.0.1_postcss@8.4.21 | ||
| 5646 | stylelint: 14.16.1 | 5640 | stylelint: 14.16.1 |
| 5647 | dev: true | 5641 | dev: true |
| 5648 | 5642 | ||
| @@ -5651,7 +5645,7 @@ packages: | @@ -5651,7 +5645,7 @@ packages: | ||
| 5651 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} | 5645 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} |
| 5652 | hasBin: true | 5646 | hasBin: true |
| 5653 | dependencies: | 5647 | dependencies: |
| 5654 | - '@csstools/selector-specificity': 2.0.2_2xshye3abirqjlplmebvmaxyna | 5648 | + '@csstools/selector-specificity': 2.0.2_wajs5nedgkikc5pcuwett7legi |
| 5655 | balanced-match: 2.0.0 | 5649 | balanced-match: 2.0.0 |
| 5656 | colord: 2.9.3 | 5650 | colord: 2.9.3 |
| 5657 | cosmiconfig: 7.1.0 | 5651 | cosmiconfig: 7.1.0 |
| @@ -5674,10 +5668,10 @@ packages: | @@ -5674,10 +5668,10 @@ packages: | ||
| 5674 | micromatch: 4.0.5 | 5668 | micromatch: 4.0.5 |
| 5675 | normalize-path: 3.0.0 | 5669 | normalize-path: 3.0.0 |
| 5676 | picocolors: 1.0.0 | 5670 | picocolors: 1.0.0 |
| 5677 | - postcss: 8.4.20 | 5671 | + postcss: 8.4.21 |
| 5678 | postcss-media-query-parser: 0.2.3 | 5672 | postcss-media-query-parser: 0.2.3 |
| 5679 | postcss-resolve-nested-selector: 0.1.1 | 5673 | postcss-resolve-nested-selector: 0.1.1 |
| 5680 | - postcss-safe-parser: 6.0.0_postcss@8.4.20 | 5674 | + postcss-safe-parser: 6.0.0_postcss@8.4.21 |
| 5681 | postcss-selector-parser: 6.0.11 | 5675 | postcss-selector-parser: 6.0.11 |
| 5682 | postcss-value-parser: 4.2.0 | 5676 | postcss-value-parser: 4.2.0 |
| 5683 | resolve-from: 5.0.0 | 5677 | resolve-from: 5.0.0 |
| @@ -6211,7 +6205,7 @@ packages: | @@ -6211,7 +6205,7 @@ packages: | ||
| 6211 | dependencies: | 6205 | dependencies: |
| 6212 | '@types/node': 18.11.18 | 6206 | '@types/node': 18.11.18 |
| 6213 | esbuild: 0.16.5 | 6207 | esbuild: 0.16.5 |
| 6214 | - postcss: 8.4.20 | 6208 | + postcss: 8.4.21 |
| 6215 | resolve: 1.22.1 | 6209 | resolve: 1.22.1 |
| 6216 | rollup: 3.9.1 | 6210 | rollup: 3.9.1 |
| 6217 | sass: 1.57.1 | 6211 | sass: 1.57.1 |
| @@ -6281,14 +6275,14 @@ packages: | @@ -6281,14 +6275,14 @@ packages: | ||
| 6281 | he: 1.2.0 | 6275 | he: 1.2.0 |
| 6282 | dev: true | 6276 | dev: true |
| 6283 | 6277 | ||
| 6284 | - /vue-tsc/1.0.22_typescript@4.9.4: | ||
| 6285 | - resolution: {integrity: sha512-xSxwgWR3czhv7sLKHWu6lzj9Xq6AtsCURVL45AY4TLGFszv2L2YlMgygXvqslyCM5bz9cyoIKSaZnzHqHTHjzA==} | 6278 | + /vue-tsc/1.0.24_typescript@4.9.4: |
| 6279 | + resolution: {integrity: sha512-mmU1s5SAqE1nByQAiQnao9oU4vX+mSdsgI8H57SfKH6UVzq/jP9+Dbi2GaV+0b4Cn361d2ln8m6xeU60ApiEXg==} | ||
| 6286 | hasBin: true | 6280 | hasBin: true |
| 6287 | peerDependencies: | 6281 | peerDependencies: |
| 6288 | typescript: '*' | 6282 | typescript: '*' |
| 6289 | dependencies: | 6283 | dependencies: |
| 6290 | - '@volar/vue-language-core': 1.0.22 | ||
| 6291 | - '@volar/vue-typescript': 1.0.22 | 6284 | + '@volar/vue-language-core': 1.0.24 |
| 6285 | + '@volar/vue-typescript': 1.0.24 | ||
| 6292 | typescript: 4.9.4 | 6286 | typescript: 4.9.4 |
| 6293 | dev: true | 6287 | dev: true |
| 6294 | 6288 | ||
| @@ -6314,8 +6308,8 @@ packages: | @@ -6314,8 +6308,8 @@ packages: | ||
| 6314 | '@vue/server-renderer': 3.2.45_vue@3.2.45 | 6308 | '@vue/server-renderer': 3.2.45_vue@3.2.45 |
| 6315 | '@vue/shared': 3.2.45 | 6309 | '@vue/shared': 3.2.45 |
| 6316 | 6310 | ||
| 6317 | - /vxe-table/4.3.7_vue@3.2.45+xe-utils@3.5.7: | ||
| 6318 | - resolution: {integrity: sha512-v+d7eEQ5uqtVTQCts4xkW0S15LZcIuEukYHGXI53SdoUj2gLFggPYAxQr1y659CM/ESRWPz9LNVHpd97KkjGHw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/vxe-table/-/vxe-table-4.3.7.tgz} | 6311 | + /vxe-table/4.3.9_vue@3.2.45+xe-utils@3.5.7: |
| 6312 | + resolution: {integrity: sha512-Ns7Ooa7lOHBpks90i0k0BMNyxfMpUo39ryxTgKE41X3xVnI9tGQs2U6+klfDlsuqYfmG3ibyzHN3OCrWbbKo4Q==} | ||
| 6319 | peerDependencies: | 6313 | peerDependencies: |
| 6320 | vue: ^3.2.28 | 6314 | vue: ^3.2.28 |
| 6321 | xe-utils: ^3.5.0 | 6315 | xe-utils: ^3.5.0 |
yudao-ui-admin/src/styles/index.scss
yudao-ui-admin/src/views/infra/redis/index.vue
| @@ -136,8 +136,8 @@ | @@ -136,8 +136,8 @@ | ||
| 136 | 136 | ||
| 137 | <script> | 137 | <script> |
| 138 | import {getCache, getKeyDefineList, getKeyList, getKeyValue, deleteKey, deleteKeys} from "@/api/infra/redis"; | 138 | import {getCache, getKeyDefineList, getKeyList, getKeyValue, deleteKey, deleteKeys} from "@/api/infra/redis"; |
| 139 | -import echarts from "echarts"; | ||
| 140 | - | 139 | +import * as echarts from 'echarts' |
| 140 | +require('echarts/theme/macarons') // echarts theme | ||
| 141 | export default { | 141 | export default { |
| 142 | name: "Server", | 142 | name: "Server", |
| 143 | data () { | 143 | data () { |
yudao-ui-app/api/auth.js
| @@ -10,6 +10,6 @@ export const smsLogin = data => http.post('/member/auth/sms-login', data) | @@ -10,6 +10,6 @@ export const smsLogin = data => http.post('/member/auth/sms-login', data) | ||
| 10 | //微信小程序的一键登录 | 10 | //微信小程序的一键登录 |
| 11 | export const weixinMiniAppLogin = data => http.post('/member/auth/weixin-mini-app-login', data) | 11 | export const weixinMiniAppLogin = data => http.post('/member/auth/weixin-mini-app-login', data) |
| 12 | //刷新令牌 | 12 | //刷新令牌 |
| 13 | -export const refreshToken = data => http.post('/member/auth/refresh-token', data) | 13 | +export const refreshToken = data => http.post('/member/auth/refresh-token', {data}) |
| 14 | //退出登录 | 14 | //退出登录 |
| 15 | export const logout = data => http.post('/member/auth/logout', data) | 15 | export const logout = data => http.post('/member/auth/logout', data) |
yudao-ui-app/store/getters.js
| 1 | const getters = { | 1 | const getters = { |
| 2 | accessToken: state => state.user.accessToken, | 2 | accessToken: state => state.user.accessToken, |
| 3 | + refreshToken: state => state.user.refreshToken, | ||
| 3 | userInfo: state => state.user.userInfo, | 4 | userInfo: state => state.user.userInfo, |
| 4 | hasLogin: state => !!state.user.accessToken | 5 | hasLogin: state => !!state.user.accessToken |
| 5 | } | 6 | } |
yudao-ui-app/utils/request/responseInterceptors.js
| @@ -30,13 +30,16 @@ module.exports = vm => { | @@ -30,13 +30,16 @@ module.exports = vm => { | ||
| 30 | if (!isRefreshToken) { | 30 | if (!isRefreshToken) { |
| 31 | isRefreshToken = true | 31 | isRefreshToken = true |
| 32 | // 1. 如果获取不到刷新令牌,则只能执行登出操作 | 32 | // 1. 如果获取不到刷新令牌,则只能执行登出操作 |
| 33 | - if (!vm.$store.getters.refreshToken()) { | 33 | + if (!vm.$store.getters.refreshToken) { |
| 34 | vm.$store.commit('CLEAR_LOGIN_INFO') | 34 | vm.$store.commit('CLEAR_LOGIN_INFO') |
| 35 | return Promise.reject(res) | 35 | return Promise.reject(res) |
| 36 | } | 36 | } |
| 37 | // 2. 进行刷新访问令牌 | 37 | // 2. 进行刷新访问令牌 |
| 38 | try { | 38 | try { |
| 39 | - const refreshTokenRes = await refreshToken() | 39 | + let param = {} |
| 40 | + let refreshToken = uni.getStorageSync('REFRESH_TOKEN'); | ||
| 41 | + param.refreshToken = refreshToken; | ||
| 42 | + const refreshTokenRes = await refreshToken(param) | ||
| 40 | // 2.1 刷新成功,则回放队列的请求 + 当前请求 | 43 | // 2.1 刷新成功,则回放队列的请求 + 当前请求 |
| 41 | vm.$store.commit('SET_TOKEN', refreshTokenRes.data) | 44 | vm.$store.commit('SET_TOKEN', refreshTokenRes.data) |
| 42 | requestList.forEach(cb => cb()) | 45 | requestList.forEach(cb => cb()) |