diff --git a/Dockerfile b/Dockerfile index 13b29e86b..8e89b96de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,14 @@ ARG MODULE_PATH=mate-auth RUN mvn clean package -pl ${MODULE_PATH} -am -DskipTests -B --no-transfer-progress +# Normalize the runnable jar to a fixed name. Dual-role modules (auth/system/notice) +# emit a thin .jar (library) plus a fat -exec.jar (runnable) — prefer the +# exec jar; single-jar modules (gateway/ai) fall back to the plain *.jar. +RUN set -e; \ + JAR="$(ls ${MODULE_PATH}/target/*-exec.jar 2>/dev/null | head -n1)"; \ + [ -z "$JAR" ] && JAR="$(ls ${MODULE_PATH}/target/*.jar | head -n1)"; \ + cp "$JAR" /build/app.jar + # ============================================================ # Stage 2: Runtime # ============================================================ @@ -32,7 +40,7 @@ WORKDIR /app ARG MODULE_PATH=mate-auth -COPY --from=builder /build/${MODULE_PATH}/target/*.jar app.jar +COPY --from=builder /build/app.jar app.jar # 非 root 用户跑, 需可写 HOME 供 npx/npm 缓存 (~/.npm) RUN mkdir -p /home/mate/.npm && chown -R mate:mate /app /home/mate ENV HOME=/home/mate diff --git a/Makefile b/Makefile index 97f21d39f..df2fa697b 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # MateCloud Makefile # Convenience targets for common dev / ops operations. -.PHONY: help build build-module up down restart logs clean test docs monolith run-monolith +.PHONY: help build build-module up down restart logs clean test docs monolith run-monolith monolith-up monolith-down help: @echo "MateCloud Makefile" @@ -23,6 +23,11 @@ help: @echo "" @echo " docker-build Build all service docker images" @echo " docker-push Push all service images to registry (REGISTRY=...)" + @echo "" + @echo " monolith Build the single-JVM monolith JAR (-Pmonolith)" + @echo " run-monolith Run the monolith JAR locally (needs MySQL + Redis)" + @echo " monolith-up Build + run the monolith in docker (infra + :8080)" + @echo " monolith-down Stop the monolith container" build: mvn clean install -DskipTests -B @@ -72,8 +77,14 @@ docker-push: docs: ## Generate API documentation (Smart-Doc) mvn smart-doc:html -pl mate-biz/mate-system -q -monolith: ## Build monolith JAR - mvn clean package -pl mate-monolith -am -DskipTests -Pmonolith +monolith: ## Build monolith JAR (mvn -Pmonolith) + mvn -Pmonolith clean package -pl mate-monolith -am -DskipTests -B + +run-monolith: ## Run monolith locally (mode/Nacos come from mate-infra-local.yml) + java -jar $$(ls mate-monolith/target/mate-monolith-*.jar | grep -v -- '-exec' | head -n1) + +monolith-up: ## Build + run monolith in docker (infra + single JVM on :8080) + docker-compose --profile monolith up -d --build mysql redis mate-monolith -run-monolith: ## Run monolith mode (single JAR, no Dubbo) - MATE_RPC_MODE=local java -jar mate-monolith/target/mate-monolith-1.0.0.jar +monolith-down: ## Stop the monolith container + docker-compose --profile monolith stop mate-monolith diff --git a/docker-compose.yml b/docker-compose.yml index d274b638c..e0876743a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -267,6 +267,33 @@ services: networks: - mate-net + # ---- Monolith mode (opt-in alternative to the microservice stack above) ---- + # auth + system + notice in ONE JVM on port 8080; no Nacos, no Dubbo, no broker. + # Start with: docker-compose --profile monolith up -d mysql redis mate-monolith + # It coexists with the microservice DB: Flyway adopts the existing schema instead + # of re-running migrations (see DataSourceAutoConfiguration#autoSeedPerServiceHistory). + mate-monolith: + profiles: ["monolith"] + build: + context: . + dockerfile: mate-monolith/Dockerfile + container_name: mate-monolith + restart: unless-stopped + depends_on: + - mysql + - redis + environment: + SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod} + # Infra hosts = compose service names (placeholders default to 127.0.0.1, + # which inside a container would be the container itself). + MYSQL_HOST: mysql + REDIS_HOST: redis + MINIO_ENDPOINT: http://minio:9000 + ports: + - "${MATE_MONOLITH_PORT:-8080}:8080" + networks: + - mate-net + # ---- Frontend (Vue 3 admin, served by nginx; proxies /api → mate-gateway) ---- mate-ui: build: diff --git a/docs/rfcs/045-monolith-microservice-dual-mode.md b/docs/rfcs/045-monolith-microservice-dual-mode.md index 335bcced5..b381035cb 100644 --- a/docs/rfcs/045-monolith-microservice-dual-mode.md +++ b/docs/rfcs/045-monolith-microservice-dual-mode.md @@ -1,11 +1,15 @@ # RFC-045: 微服务 + 单体双模架构 — 一套代码,两种部署 -- **Status**: Draft +- **Status**: Implemented (2026-06-28) — 见文末「实施记录」 - **Created**: 2026-04-12 - **Author**: MateCloud Team - **Wave**: 10 - **Dependencies**: RFC-038, RFC-039 +> ⚠️ 本文 Part 1–3 是最初设计草案,部分已过时(端口为 `8080` 非 `9000`;`mate-admin` 已并入 +> `mate-system`;本地适配器为 4 个非 2 个)。**落地的真实方案与若干草案未预见的坑,见文末 +> [实施记录](#实施记录-2026-06-28)。** + > "同一个代码库,`mate.rpc.mode=local` 启动一个 JAR 就是单体,`dubbo` 启动五个进程就是微服务。" ## 背景 @@ -567,3 +571,50 @@ File: `pom.xml`(root) - **只有 2 个 Local 适配器**:当前只有 auth→system 有 RPC 调用。如果未来新增跨服务 RPC,只需加对应的 Local 适配器 - **前端零改动**:API 路径完全一致,只改 base URL - **这不是"微服务降级"**:单体模式是一种正式的部署形态,适合中小团队、开发环境、快速验证,不是临时方案 + +## 实施记录 (2026-06-28) + +落地时发现草案漏掉了几个让单体「根本无法启动」的关键问题。最终方案如下,**全部不影响微服务模式**(共享 starter 的改动都用 `matchIfMissing=true` 保留 dubbo 默认行为,或仅在目标历史表为空时触发)。 + +### 1. 致命前提:业务模块必须能被当作「库」依赖(classifier) +`mate-auth/system/notice` 原本被 `spring-boot-maven-plugin` 打成可执行胖 JAR(类在 `BOOT-INF/classes/`),**无法作为 Maven 编译依赖** → 单体连编译都过不了。 +- 方案:三个模块的 `spring-boot-maven-plugin` 加 `exec`。主 JAR 退回瘦库(单体可依赖),`*-exec.jar` 才是可运行胖包(微服务部署用)。 +- 配套:根 `Dockerfile` 与三个服务 `Dockerfile` 改为优先取 `*-exec.jar`。 + +### 2. 配置优先级陷阱(`spring.config.import`) +被 `import` 进来的文件**优先级高于** importer 本身(这正是微服务里 Nacos `mate-infra` 能覆盖 `mate-defaults` 的机制)。所以单体写在 `application.yml` 顶层的覆盖项(`mate.rpc.mode=local`、关 Nacos)**全部被 `mate-defaults` 盖掉**,导致单体竟以 dubbo 模式启动、注册 Nacos、自调 Dubbo。 +- 方案:把所有「覆盖 mate-defaults」的项放进**最后 import** 的 `mate-monolith/src/main/resources/mate-infra-local.yml`(它即单体版的「classpath mate-infra」),`application.yml` 只留入口与不冲突项。 + +### 3. 组合根:排除嵌套的 `@SpringBootApplication` +`scanBasePackages="vip.mate"` 会把三个服务的 `@SpringBootApplication` 当作 `@Configuration` 扫进来,重新激活它们的 `@EnableDiscoveryClient`/`@EnableAsync`。 +- 方案:`MateMonolithApplication` 用显式 `@ComponentScan` + `excludeFilters` 排除这三个类(并保留 Boot 默认的两个 TypeExclude/AutoConfigurationExclude 过滤器)。 + +### 4. 单体专有的两处 Bean 冲突(多模块合一才暴露) +- **Mapper Bean 名冲突**:auth 与 system 各有一个 `LoginLogDao`,简单类名都叫 `loginLogDao` → 冲突。`DataSourceAutoConfiguration` 的 `@MapperScan` 改用 `FullyQualifiedAnnotationBeanNameGenerator`(按类型注入,对微服务透明)。 +- **MyBatis TypeAlias 冲突**:两个 `LoginLogPO` 简单名相同 → 别名重复抛错。项目无任何 XML mapper,`setTypeAliasesPackage(...)` 是死配置 → 直接移除。 + +### 5. 消除重复:`RolePermissionResolverPort` +草案的「Local 适配器」会让 `LocalTokenIssuer` 与 `SaTokenIssuer` 90% 重复。改为抽出唯一随模式变化的「按用户查角色/权限」为端口: +- `SaTokenIssuer` 变为**两模式共用**的唯一 `TokenIssuerPort` 实现,只依赖该端口; +- `DubboRolePermissionResolver`(auth,dubbo)走 RPC + Redis 兜底;`LocalRolePermissionResolver`(monolith,local)直调 `IPermissionDomainService`。 +- 本地适配器现共 4 个:`UserQuery` / `UserRegistration` / `NoticeDispatcher` / `RolePermissionResolver`。 + +### 6. 单体无需消息中间件(域事件走进程内) +真实域事件流本就是 Spring `ApplicationEventPublisher` + `@TransactionalEventListener`,RabbitMQ 那套(`DomainEventAutoConfiguration` 等)是零消费者的跨服务脚手架。 +- 方案:`RabbitMqAutoConfiguration` / `DomainEventAutoConfiguration` 加 `@ConditionalOnProperty(mate.rpc.mode=dubbo, matchIfMissing=true)`;单体再 `spring.autoconfigure.exclude` 掉 Boot 的 `RabbitAutoConfiguration` → 不连 broker、`health: UP`。 + +### 7. 单体彻底关闭 Dubbo +`mate-defaults` 的 `dubbo.scan.base-packages` 会让 dubbo-spring-boot-autoconfigure 在无 `@EnableDubbo` 时仍扫描并导出 `@DubboService`。 +- 方案:单体 `spring.autoconfigure.exclude` 掉 `DubboAutoConfiguration` / `DubboRelaxedBindingAutoConfiguration` / `DubboListenerAutoConfiguration`。 + +### 8. Flyway:一张历史表 + 「领养」既有 schema +单体所有迁移进单表 `flyway_history_monolith`(`mate.module.code=monolith`,各版本号全局唯一)。难点是**与微服务共用同一个库**时不能重复建表。 +- 修复潜在 bug:`repairThenMigrate` 策略的 `@ConditionalOnClass(name="Flyway")` 用了非全限定名 → 条件永远 false、自愈逻辑从未生效。改为 `@ConditionalOnClass(Flyway.class)`。 +- 扩展 `autoSeedPerServiceHistory`:除遗留单表外,还从**兄弟 `flyway_history_*` 表**把已应用记录播种进目标表(重排 `installed_rank`、跳过 baseline 伪记录、清理 `success=0` 残留)。于是单体首启会「领养」微服务已迁移的 schema → `No migration necessary`;全新库则照常跑全部迁移;二次启动幂等。 + +### 9. 构建 / 运行 +- `mate-monolith/Dockerfile`(多阶段,`-Pmonolith` 构建);`docker-compose.yml` 增加 `mate-monolith` 服务并置于 compose `profiles: [monolith]`(默认不随微服务栈启动)。 +- `make monolith` / `run-monolith` / `monolith-up` / `monolith-down`。 + +### 部署注意 +单体与微服务可共用同一个库(Flyway 自动领养),但**不要同时运行**两套写同一份数据。全新部署直接起单体即可;从微服务库切单体时,首启自动领养,无需手工 SQL。 diff --git a/mate-auth/Dockerfile b/mate-auth/Dockerfile index f6c8baab3..9770c7e44 100644 --- a/mate-auth/Dockerfile +++ b/mate-auth/Dockerfile @@ -2,7 +2,8 @@ FROM eclipse-temurin:21-jre-alpine LABEL maintainer="MateCloud Team" WORKDIR /app -COPY target/*.jar app.jar +# Runnable fat jar carries the 'exec' classifier (the plain jar is the thin library). +COPY target/*-exec.jar app.jar ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseZGC" ENV SPRING_PROFILES_ACTIVE=prod diff --git a/mate-auth/pom.xml b/mate-auth/pom.xml index e0c1cbd88..e63057d7d 100644 --- a/mate-auth/pom.xml +++ b/mate-auth/pom.xml @@ -104,6 +104,12 @@ org.springframework.boot spring-boot-maven-plugin + + + exec + diff --git a/mate-auth/src/main/java/vip/mate/auth/domain/adapter/port/RolePermissionResolverPort.java b/mate-auth/src/main/java/vip/mate/auth/domain/adapter/port/RolePermissionResolverPort.java new file mode 100644 index 000000000..d156291e2 --- /dev/null +++ b/mate-auth/src/main/java/vip/mate/auth/domain/adapter/port/RolePermissionResolverPort.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2024-2026 Beijing Daotiandi Technology Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package vip.mate.auth.domain.adapter.port; + +import vip.mate.auth.domain.model.aggregate.AuthUser; + +import java.util.List; + +/** + * Outbound port: resolve a user's RBAC role keys and permission codes. + *

+ * This is the ONLY part of token issuance that differs between deployment modes: + * in microservice mode it goes to mate-system over Dubbo + * ({@code DubboRolePermissionResolver}); in monolith mode it calls + * mate-system's permission domain service in-process + * ({@code LocalRolePermissionResolver}). {@code SaTokenIssuer} stays mode-agnostic + * and depends only on this port. + * + * @author mateaix + */ +public interface RolePermissionResolverPort { + + /** + * Role keys for the user. Implementations should prefer roles already carried + * on the {@link AuthUser} and only look them up when absent. Never returns + * {@code null} — an empty list means "no roles resolved". + */ + List resolveRoleKeys(AuthUser user); + + /** + * Permission codes for the user, with the same contract as + * {@link #resolveRoleKeys(AuthUser)}. + */ + List resolvePermissions(AuthUser user); +} diff --git a/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/DubboRolePermissionResolver.java b/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/DubboRolePermissionResolver.java new file mode 100644 index 000000000..867f46f52 --- /dev/null +++ b/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/DubboRolePermissionResolver.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2024-2026 Beijing Daotiandi Technology Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package vip.mate.auth.infrastructure.adapter.token; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; +import org.apache.dubbo.config.annotation.DubboReference; +import vip.mate.api.admin.service.IRpcPermissionService; +import vip.mate.api.rpc.RpcConstants; +import vip.mate.auth.domain.adapter.port.RolePermissionResolverPort; +import vip.mate.auth.domain.model.aggregate.AuthUser; +import vip.mate.base.result.Result; + +import java.util.List; + +/** + * Microservice-mode {@link RolePermissionResolverPort}: fetches roles/permissions + * from mate-system over Dubbo. + * + *

Fail-closed: on RPC failure it falls back to the Redis set that + * {@code SaTokenIssuer} cached on the user's previous successful login, so a + * transient mate-system outage does not silently strip a user's authority. + * + * @author mateaix + */ +@Slf4j +@Component +@ConditionalOnProperty(name = "mate.rpc.mode", havingValue = "dubbo", matchIfMissing = true) +public class DubboRolePermissionResolver implements RolePermissionResolverPort { + + private final StringRedisTemplate stringRedisTemplate; + + @DubboReference(check = false, timeout = 5000, retries = 1, + version = RpcConstants.VERSION, group = RpcConstants.GROUP_SYSTEM) + private IRpcPermissionService rpcPermissionService; + + public DubboRolePermissionResolver(StringRedisTemplate stringRedisTemplate) { + this.stringRedisTemplate = stringRedisTemplate; + } + + @Override + public List resolveRoleKeys(AuthUser user) { + List roles = user.getRoleCodes(); + if (roles != null && !roles.isEmpty()) { + return roles; + } + try { + Result> result = rpcPermissionService.getRoleKeysByUsername(user.getUsername()); + if (result != null && Boolean.TRUE.equals(result.getSuccess()) + && result.getData() != null && !result.getData().isEmpty()) { + log.debug("[auth] Fetched roles from mate-system for username={}: {}", user.getUsername(), result.getData()); + return result.getData(); + } + } catch (Exception e) { + log.warn("[auth] Failed to fetch roles from mate-system for username={}: {}", user.getUsername(), e.getMessage()); + return fallbackFromCache(SessionCacheKeys.ROLE_KEY_PREFIX + user.getUserId(), + "roles", user.getUsername()); + } + return List.of(); + } + + @Override + public List resolvePermissions(AuthUser user) { + List upstream = user.getPermissions(); + if (upstream != null && !upstream.isEmpty()) { + return upstream; + } + try { + Result> result = rpcPermissionService.getPermissionsByUsername(user.getUsername()); + if (result != null && Boolean.TRUE.equals(result.getSuccess()) + && result.getData() != null && !result.getData().isEmpty()) { + log.debug("[auth] Fetched permissions from mate-system for username={}: {}", user.getUsername(), result.getData()); + return result.getData(); + } + } catch (Exception e) { + log.warn("[auth] Failed to fetch permissions from mate-system for username={}: {}", user.getUsername(), e.getMessage()); + return fallbackFromCache(SessionCacheKeys.PERM_KEY_PREFIX + user.getUserId(), + "permissions", user.getUsername()); + } + return List.of(); + } + + /** + * Attempt to read a previously-cached role/permission set from Redis. If the + * cache is also empty, log the degraded state and return empty rather than + * throwing — the user can still log in but will have no authorised actions + * until mate-system recovers. + */ + private List fallbackFromCache(String redisKey, String label, String username) { + try { + var cached = stringRedisTemplate.opsForSet().members(redisKey); + if (cached != null && !cached.isEmpty()) { + log.info("[auth] Using cached {} for username={} (mate-system unavailable)", label, username); + return List.copyOf(cached); + } + } catch (Exception ex) { + log.error("[auth] Redis fallback also failed for {} of username={}: {}", label, username, ex.getMessage()); + } + log.error("[auth] No {} available for username={} — mate-system RPC failed and no Redis cache exists. " + + "User will have zero {}.", label, username, label); + return List.of(); + } +} diff --git a/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/SaTokenIssuer.java b/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/SaTokenIssuer.java index cf2dfaadb..bc8d31a55 100644 --- a/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/SaTokenIssuer.java +++ b/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/SaTokenIssuer.java @@ -18,46 +18,37 @@ import cn.dev33.satoken.stp.StpUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.dubbo.config.annotation.DubboReference; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; -import vip.mate.api.admin.service.IRpcPermissionService; -import vip.mate.api.rpc.RpcConstants; +import vip.mate.auth.domain.adapter.port.RolePermissionResolverPort; import vip.mate.auth.domain.adapter.port.TokenIssuerPort; import vip.mate.auth.domain.model.aggregate.AuthUser; import vip.mate.auth.domain.model.valobj.LoginResult; -import vip.mate.base.result.Result; import java.util.List; import java.util.concurrent.TimeUnit; /** - * Sa-Token implementation of the {@link TokenIssuerPort}. Also pushes the - * user's role + permission set into Redis so the WebFlux gateway can read - * them from its own {@code StpInterface}. + * Sa-Token implementation of {@link TokenIssuerPort}. Also pushes the user's + * role + permission set into Redis so the WebFlux gateway can read them from its + * own {@code StpInterface}. + *

+ * Mode-agnostic: the only deployment-specific concern — resolving roles and + * permissions — is delegated to {@link RolePermissionResolverPort} (Dubbo in + * microservice mode, in-process in monolith mode), so this issuer is the single + * implementation for both. * * @author mateaix */ @Slf4j @Component -@ConditionalOnProperty(name = "mate.rpc.mode", havingValue = "dubbo", matchIfMissing = true) +@RequiredArgsConstructor public class SaTokenIssuer implements TokenIssuerPort { - private static final String ROLE_KEY_PREFIX = "mate:user:role:"; - private static final String PERM_KEY_PREFIX = "mate:user:perm:"; - private static final long CACHE_TTL_SECONDS = 86400L; private static final String DEFAULT_TENANT_ID = "1"; private final StringRedisTemplate stringRedisTemplate; - - @DubboReference(check = false, timeout = 5000, retries = 1, - version = RpcConstants.VERSION, group = RpcConstants.GROUP_SYSTEM) - private IRpcPermissionService rpcPermissionService; - - public SaTokenIssuer(StringRedisTemplate stringRedisTemplate) { - this.stringRedisTemplate = stringRedisTemplate; - } + private final RolePermissionResolverPort rolePermissionResolver; @Override public LoginResult issue(AuthUser user) { @@ -98,8 +89,8 @@ public LoginResult issue(AuthUser user) { public void revokeCurrentSession() { Object loginId = StpUtil.getLoginIdDefaultNull(); if (loginId != null) { - stringRedisTemplate.delete(ROLE_KEY_PREFIX + loginId); - stringRedisTemplate.delete(PERM_KEY_PREFIX + loginId); + stringRedisTemplate.delete(SessionCacheKeys.ROLE_KEY_PREFIX + loginId); + stringRedisTemplate.delete(SessionCacheKeys.PERM_KEY_PREFIX + loginId); StpUtil.logout(); log.info("[auth] Session revoked: loginId={}", loginId); } @@ -111,106 +102,27 @@ public String currentUserId() { return loginId == null ? null : loginId.toString(); } - /** 解析并缓存角色/权限; 返回解析出的角色集 (供 session 写入复用, 避免二次 RPC)。 */ + /** Resolve (via the port) and cache roles/permissions; returns the role set for session reuse. */ private List cacheRolesAndPermissions(AuthUser user) { String userId = user.getUserId(); - List roles = resolveRoles(user); - if (!roles.isEmpty()) { - String roleKey = ROLE_KEY_PREFIX + userId; + List roles = rolePermissionResolver.resolveRoleKeys(user); + if (roles != null && !roles.isEmpty()) { + String roleKey = SessionCacheKeys.ROLE_KEY_PREFIX + userId; stringRedisTemplate.delete(roleKey); stringRedisTemplate.opsForSet().add(roleKey, roles.toArray(new String[0])); - stringRedisTemplate.expire(roleKey, CACHE_TTL_SECONDS, TimeUnit.SECONDS); + stringRedisTemplate.expire(roleKey, SessionCacheKeys.CACHE_TTL_SECONDS, TimeUnit.SECONDS); + } else { + roles = List.of(); } - List permissions = resolvePermissions(user); - if (!permissions.isEmpty()) { - String permKey = PERM_KEY_PREFIX + userId; + List permissions = rolePermissionResolver.resolvePermissions(user); + if (permissions != null && !permissions.isEmpty()) { + String permKey = SessionCacheKeys.PERM_KEY_PREFIX + userId; stringRedisTemplate.delete(permKey); stringRedisTemplate.opsForSet().add(permKey, permissions.toArray(new String[0])); - stringRedisTemplate.expire(permKey, CACHE_TTL_SECONDS, TimeUnit.SECONDS); + stringRedisTemplate.expire(permKey, SessionCacheKeys.CACHE_TTL_SECONDS, TimeUnit.SECONDS); } return roles; } - - /** - * Resolve roles for the user. First checks if the user already carries roles - * (from mate-system). If not, queries mate-admin via Dubbo RPC by username. - * - *

Fail-closed: if the RPC call fails, we check Redis for a - * previously cached value. Only if both RPC and cache miss do we return - * empty — this prevents a transient mate-admin outage from silently - * stripping all roles from a logged-in user. - */ - private List resolveRoles(AuthUser user) { - List roles = user.getRoleCodes(); - if (roles != null && !roles.isEmpty()) { - return roles; - } - // Query mate-admin for role keys by username - try { - Result> result = rpcPermissionService.getRoleKeysByUsername(user.getUsername()); - if (result != null && Boolean.TRUE.equals(result.getSuccess()) - && result.getData() != null && !result.getData().isEmpty()) { - log.debug("[auth] Fetched roles from mate-admin for username={}: {}", user.getUsername(), result.getData()); - return result.getData(); - } - } catch (Exception e) { - log.warn("[auth] Failed to fetch roles from mate-admin for username={}: {}", user.getUsername(), e.getMessage()); - // Fail-closed: try to use previously cached roles from Redis - return fallbackFromCache(ROLE_KEY_PREFIX + user.getUserId(), - "roles", user.getUsername()); - } - return List.of(); - } - - /** - * Resolve permissions for the user. First checks upstream, then queries - * mate-admin via Dubbo RPC by username. - * - *

Fail-closed: same strategy as {@link #resolveRoles} — on RPC - * failure, fall back to the Redis cache from a previous successful login. - */ - private List resolvePermissions(AuthUser user) { - List upstream = user.getPermissions(); - if (upstream != null && !upstream.isEmpty()) { - return upstream; - } - // Query mate-admin for permissions by username - try { - Result> result = rpcPermissionService.getPermissionsByUsername(user.getUsername()); - if (result != null && Boolean.TRUE.equals(result.getSuccess()) - && result.getData() != null && !result.getData().isEmpty()) { - log.debug("[auth] Fetched permissions from mate-admin for username={}: {}", user.getUsername(), result.getData()); - return result.getData(); - } - } catch (Exception e) { - log.warn("[auth] Failed to fetch permissions from mate-admin for username={}: {}", user.getUsername(), e.getMessage()); - // Fail-closed: try to use previously cached permissions from Redis - return fallbackFromCache(PERM_KEY_PREFIX + user.getUserId(), - "permissions", user.getUsername()); - } - return List.of(); - } - - /** - * Attempt to read a previously-cached role/permission set from Redis. - * If the cache is also empty, log an error (this is a degraded state) - * and return an empty list rather than throwing — the user can still log - * in but will have no authorised actions until mate-admin recovers. - */ - private List fallbackFromCache(String redisKey, String label, String username) { - try { - var cached = stringRedisTemplate.opsForSet().members(redisKey); - if (cached != null && !cached.isEmpty()) { - log.info("[auth] Using cached {} for username={} (mate-admin unavailable)", label, username); - return List.copyOf(cached); - } - } catch (Exception ex) { - log.error("[auth] Redis fallback also failed for {} of username={}: {}", label, username, ex.getMessage()); - } - log.error("[auth] No {} available for username={} — mate-admin RPC failed and no Redis cache exists. " - + "User will have zero {}.", label, username, label); - return List.of(); - } } diff --git a/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/SessionCacheKeys.java b/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/SessionCacheKeys.java new file mode 100644 index 000000000..761e63927 --- /dev/null +++ b/mate-auth/src/main/java/vip/mate/auth/infrastructure/adapter/token/SessionCacheKeys.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024-2026 Beijing Daotiandi Technology Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package vip.mate.auth.infrastructure.adapter.token; + +/** + * Redis keys for the per-user role/permission cache. {@code SaTokenIssuer} writes + * them on login (so the WebFlux gateway's {@code StpInterface} can read roles + * without an RPC); {@code DubboRolePermissionResolver} reads them as a fail-closed + * fallback when mate-system is briefly unreachable. Shared here so the two never + * drift apart. + * + * @author mateaix + */ +final class SessionCacheKeys { + + static final String ROLE_KEY_PREFIX = "mate:user:role:"; + static final String PERM_KEY_PREFIX = "mate:user:perm:"; + static final long CACHE_TTL_SECONDS = 86400L; + + private SessionCacheKeys() { + } +} diff --git a/mate-biz/mate-notice/Dockerfile b/mate-biz/mate-notice/Dockerfile index 2ccbc71a0..9222249f5 100644 --- a/mate-biz/mate-notice/Dockerfile +++ b/mate-biz/mate-notice/Dockerfile @@ -2,7 +2,8 @@ FROM eclipse-temurin:21-jre-alpine LABEL maintainer="MateCloud Team" WORKDIR /app -COPY target/*.jar app.jar +# Runnable fat jar carries the 'exec' classifier (the plain jar is the thin library). +COPY target/*-exec.jar app.jar ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseZGC" ENV SPRING_PROFILES_ACTIVE=prod diff --git a/mate-biz/mate-notice/pom.xml b/mate-biz/mate-notice/pom.xml index 221733eae..b2ed34190 100644 --- a/mate-biz/mate-notice/pom.xml +++ b/mate-biz/mate-notice/pom.xml @@ -92,6 +92,12 @@ org.springframework.boot spring-boot-maven-plugin + + + exec + diff --git a/mate-biz/mate-system/Dockerfile b/mate-biz/mate-system/Dockerfile index 8de2ca064..67b8d59df 100644 --- a/mate-biz/mate-system/Dockerfile +++ b/mate-biz/mate-system/Dockerfile @@ -2,7 +2,8 @@ FROM eclipse-temurin:21-jre-alpine LABEL maintainer="MateCloud Team" WORKDIR /app -COPY target/*.jar app.jar +# Runnable fat jar carries the 'exec' classifier (the plain jar is the thin library). +COPY target/*-exec.jar app.jar ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseZGC" ENV SPRING_PROFILES_ACTIVE=prod diff --git a/mate-biz/mate-system/pom.xml b/mate-biz/mate-system/pom.xml index 7accf8b9f..1873de0a9 100644 --- a/mate-biz/mate-system/pom.xml +++ b/mate-biz/mate-system/pom.xml @@ -127,6 +127,12 @@ org.springframework.boot spring-boot-maven-plugin + + + exec + diff --git a/mate-monolith/Dockerfile b/mate-monolith/Dockerfile new file mode 100644 index 000000000..50e4cc562 --- /dev/null +++ b/mate-monolith/Dockerfile @@ -0,0 +1,48 @@ +# ============================================================ +# MateCloud Monolith image — all business modules in one JVM. +# Build from the REPO ROOT: docker-compose --profile monolith build +# (the monolith module only exists under the `-Pmonolith` Maven profile). +# ============================================================ + +# ------------------------------------------------------------ +# Stage 1: Maven build +# ------------------------------------------------------------ +FROM maven:3.9-eclipse-temurin-21-alpine AS builder + +WORKDIR /build +COPY . . + +# -Pmonolith activates the mate-monolith module; -am pulls in its dependencies. +RUN mvn -Pmonolith clean package -pl mate-monolith -am -DskipTests -B --no-transfer-progress + +# The monolith jar has no classifier (it IS the runnable app, not a library). +RUN cp "$(ls mate-monolith/target/mate-monolith-*.jar | grep -v -- '-exec' | head -n1)" /build/app.jar + +# ------------------------------------------------------------ +# Stage 2: Runtime +# ------------------------------------------------------------ +FROM eclipse-temurin:21-jre-alpine AS runtime + +LABEL maintainer="MateCloud Team" + +RUN addgroup -S mate && adduser -S mate -G mate +RUN sed -i 's#dl-cdn.alpinelinux.org#mirrors.aliyun.com#g' /etc/apk/repositories \ + && apk add --no-cache curl tzdata \ + && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ + && echo "Asia/Shanghai" > /etc/timezone + +WORKDIR /app +COPY --from=builder /build/app.jar app.jar +RUN mkdir -p /home/mate/.npm && chown -R mate:mate /app /home/mate +ENV HOME=/home/mate + +USER mate + +ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Djava.security.egd=file:/dev/./urandom" +ENV SPRING_PROFILES_ACTIVE=prod + +EXPOSE 8080 + +# Mode switches (mate.rpc.mode=local, Nacos off) come from mate-infra-local.yml +# on the classpath — no extra env needed. Infra endpoints are overridable below. +ENTRYPOINT ["sh", "-c", "exec java ${JAVA_OPTS} -jar app.jar"] diff --git a/mate-monolith/src/main/java/vip/mate/monolith/MateMonolithApplication.java b/mate-monolith/src/main/java/vip/mate/monolith/MateMonolithApplication.java index 494907e0d..0b85566c1 100644 --- a/mate-monolith/src/main/java/vip/mate/monolith/MateMonolithApplication.java +++ b/mate-monolith/src/main/java/vip/mate/monolith/MateMonolithApplication.java @@ -16,15 +16,41 @@ package vip.mate.monolith; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.TypeExcludeFilter; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.FilterType; +import vip.mate.auth.MateAuthApplication; +import vip.mate.notice.MateNoticeApplication; +import vip.mate.system.MateSystemApplication; /** - * Monolith mode entry point — runs all services in a single JVM. - * Activate with: MATE_RPC_MODE=local java -jar mate-monolith.jar + * Monolith mode entry point — runs auth + system + notice in a single JVM. + * Activate with: MATE_RPC_MODE=local java -jar mate-monolith-exec.jar + *

+ * The explicit {@link ComponentScan} pulls every module's beans (base package + * {@code vip.mate}) into one context. The three per-service + * {@code @SpringBootApplication} classes are themselves {@code @Configuration} + + * {@code @ComponentScan} + {@code @EnableDiscoveryClient} (mate-system adds + * {@code @EnableAsync}); left in the scan they would re-trigger service discovery + * and duplicate component scanning, so they are excluded — this class is the + * single composition root. The first two filters re-declare the exclusions that + * {@code @SpringBootApplication}'s built-in {@code @ComponentScan} applies by + * default (kept here because an explicit {@code @ComponentScan} replaces them). * * @author mateaix */ -@SpringBootApplication(scanBasePackages = "vip.mate") +@SpringBootApplication +@ComponentScan(basePackages = "vip.mate", excludeFilters = { + @ComponentScan.Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), + @ComponentScan.Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class), + @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = { + MateAuthApplication.class, + MateSystemApplication.class, + MateNoticeApplication.class + }) +}) public class MateMonolithApplication { public static void main(String[] args) { SpringApplication.run(MateMonolithApplication.class, args); diff --git a/mate-monolith/src/main/java/vip/mate/monolith/adapter/LocalRolePermissionResolver.java b/mate-monolith/src/main/java/vip/mate/monolith/adapter/LocalRolePermissionResolver.java new file mode 100644 index 000000000..294bb9e9c --- /dev/null +++ b/mate-monolith/src/main/java/vip/mate/monolith/adapter/LocalRolePermissionResolver.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2024-2026 Beijing Daotiandi Technology Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package vip.mate.monolith.adapter; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; +import vip.mate.auth.domain.adapter.port.RolePermissionResolverPort; +import vip.mate.auth.domain.model.aggregate.AuthUser; +import vip.mate.starter.tenant.core.TenantHelper; +import vip.mate.system.admin.domain.permission.service.IPermissionDomainService; + +import java.util.List; + +/** + * In-process {@link RolePermissionResolverPort} for monolith mode: resolves + * roles/permissions by calling mate-system's {@link IPermissionDomainService} + * directly instead of over Dubbo. The RBAC tables are global, so lookups run + * under {@link TenantHelper#withoutTenant} (matching {@code RpcPermissionServiceImpl}). + *

+ * No Redis fail-closed fallback is needed: an in-process call has no transient + * RPC outage to guard against. {@code SaTokenIssuer} stays unchanged and uses + * this resolver transparently. + * + * @author mateaix + */ +@Slf4j +@Component +@RequiredArgsConstructor +@ConditionalOnProperty(name = "mate.rpc.mode", havingValue = "local") +public class LocalRolePermissionResolver implements RolePermissionResolverPort { + + private final IPermissionDomainService permissionDomainService; + + @Override + public List resolveRoleKeys(AuthUser user) { + List roles = user.getRoleCodes(); + if (roles != null && !roles.isEmpty()) { + return roles; + } + try { + List resolved = TenantHelper.withoutTenant( + () -> permissionDomainService.findRoleKeysByUsername(user.getUsername())); + return resolved != null ? resolved : List.of(); + } catch (Exception e) { + log.warn("[monolith] resolveRoleKeys failed for username={}: {}", user.getUsername(), e.getMessage()); + return List.of(); + } + } + + @Override + public List resolvePermissions(AuthUser user) { + List upstream = user.getPermissions(); + if (upstream != null && !upstream.isEmpty()) { + return upstream; + } + try { + List resolved = TenantHelper.withoutTenant( + () -> permissionDomainService.findPermissionsByUsername(user.getUsername())); + return resolved != null ? resolved : List.of(); + } catch (Exception e) { + log.warn("[monolith] resolvePermissions failed for username={}: {}", user.getUsername(), e.getMessage()); + return List.of(); + } + } +} diff --git a/mate-monolith/src/main/java/vip/mate/monolith/config/MonolithSecurityConfig.java b/mate-monolith/src/main/java/vip/mate/monolith/config/MonolithSecurityConfig.java index d95fb9e16..249d09573 100644 --- a/mate-monolith/src/main/java/vip/mate/monolith/config/MonolithSecurityConfig.java +++ b/mate-monolith/src/main/java/vip/mate/monolith/config/MonolithSecurityConfig.java @@ -17,6 +17,7 @@ import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.stp.StpUtil; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -33,6 +34,7 @@ * @author mateaix */ @Configuration +@ConditionalOnProperty(name = "mate.rpc.mode", havingValue = "local") public class MonolithSecurityConfig implements WebMvcConfigurer { @Override diff --git a/mate-monolith/src/main/resources/application.yml b/mate-monolith/src/main/resources/application.yml index 9150a6a01..1755ae561 100644 --- a/mate-monolith/src/main/resources/application.yml +++ b/mate-monolith/src/main/resources/application.yml @@ -1,29 +1,36 @@ server: - port: 8080 + port: ${SERVER_PORT:8080} spring: application: name: mate-monolith profiles: active: ${SPRING_PROFILES_ACTIVE:dev} + # Entry point only. Framework constants come from mate-defaults.yml; everything + # the monolith needs to OVERRIDE (rpc mode, Nacos off, autoconfig excludes, + # infra endpoints) lives in mate-infra-local.yml. + # + # Order matters: files imported via spring.config.import take precedence over + # this file AND over earlier imports — so mate-infra-local.yml (imported LAST) + # wins over mate-defaults.yml. This is the same mechanism by which a real + # service's Nacos `mate-infra` overrides mate-defaults. config: import: - classpath:mate-defaults.yml - - optional:nacos:mate-infra-${spring.profiles.active:dev}.yml - - optional:nacos:${spring.application.name}-${spring.profiles.active:dev}.yml + - classpath:mate-infra-local.yml -# Force local mode — Dubbo is disabled, ports are wired in-process. -mate: - rpc: - mode: local - -# CORS for the admin UI when running standalone. +# CORS for the admin UI when running standalone (no gateway in front). mate-cors: - allowed-origins: http://localhost:3000,http://127.0.0.1:3000 + allowed-origins: ${MATE_CORS_ORIGINS:http://localhost:3000,http://127.0.0.1:3000} allowed-headers: "*" allowed-methods: "*" -logging: - level: - vip.mate: info - org.apache.dubbo: warn +# Behaviour captcha (carried over from mate-auth standalone config). +aj: + captcha: + cache-type: redis + type: blockPuzzle + water-mark: MateCloud + req-frequency-limit-enable: false + history-data-clear-enable: true + check-repeat: 5 diff --git a/mate-monolith/src/main/resources/mate-infra-local.yml b/mate-monolith/src/main/resources/mate-infra-local.yml new file mode 100644 index 000000000..b505ea43b --- /dev/null +++ b/mate-monolith/src/main/resources/mate-infra-local.yml @@ -0,0 +1,120 @@ +# ============================================================ +# MateCloud Monolith — Local Infrastructure + Mode Overrides +# ============================================================ +# This is the classpath counterpart of the Nacos `mate-infra-*.yml` that every +# microservice reads. It is imported LAST by application.yml, so it overrides +# mate-defaults.yml — the same way a service's Nacos `mate-infra` does. +# +# It carries BOTH: +# 1. the deployment-mode switches that make this a monolith (no Dubbo/Nacos), +# 2. the infra endpoints (DB/Redis/...) normally served by Nacos. +# Every endpoint falls back to a localhost default and is env-overridable — point +# it at `make infra-up` out of the box, or override via MYSQL_HOST / REDIS_HOST. +# ============================================================ + +spring: + # ---- Deployment mode: monolith ---- + autoconfigure: + exclude: + # The first two mirror mate-defaults.yml (this list REPLACES it, so they + # must be repeated): Druid/Redisson Boot-3 auto-configs reference classes + # moved in Boot 4 — the ds-/cache-starters wire those beans manually. + - com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure + - org.redisson.spring.starter.RedissonAutoConfigurationV2 + # mate-auth self-configures the behaviour captcha; avoid double-registration. + - com.xingyuv.captcha.config.AjCaptchaAutoConfiguration + # No message broker in monolith mode — domain events dispatch in-process via + # Spring events. Excluding Boot's RabbitMQ auto-config means no + # ConnectionFactory is created, so nothing reaches for a broker and the + # health endpoint stays UP without RabbitMQ running. + - org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration + # No Dubbo in monolith mode. mate-defaults sets dubbo.scan.base-packages, + # which dubbo-spring-boot-autoconfigure honours independently of our + # @EnableDubbo (RpcAutoConfiguration) — without these excludes it would + # still scan @DubboService beans and export a tri protocol on a random + # port. @DubboService providers are simply absent in local mode; in-process + # callers use the Local*Adapter beans + IPermissionDomainService directly. + - org.apache.dubbo.spring.boot.autoconfigure.DubboAutoConfiguration + - org.apache.dubbo.spring.boot.autoconfigure.DubboRelaxedBindingAutoConfiguration + - org.apache.dubbo.spring.boot.autoconfigure.DubboListenerAutoConfiguration + cloud: + nacos: + # No registry / config server in monolith mode. + discovery: + enabled: false + config: + enabled: false + import-check: + enabled: false + flyway: + # system migrations mix DDL + DML in a single script. + mixed: true + + # ---- MySQL / Druid ---- + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:matecloud}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&useSSL=false&rewriteBatchedStatements=true + username: ${MYSQL_USER:root} + password: ${MYSQL_PASSWORD:matecloud123} + type: com.alibaba.druid.pool.DruidDataSource + druid: + initial-size: 5 + min-idle: 5 + max-active: 20 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + validation-query: SELECT 1 + test-while-idle: true + test-on-borrow: false + test-on-return: false + filters: stat,wall,slf4j + + # ---- Redis / Lettuce ---- + data: + redis: + host: ${REDIS_HOST:127.0.0.1} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:matecloud123} + database: ${REDIS_DB:0} + timeout: 5000 + lettuce: + pool: + max-active: 16 + max-idle: 8 + min-idle: 2 + max-wait: 2000 + +mate: + # In-process wiring — Dubbo is disabled; cross-service calls go through the + # Local*Adapter beans in vip.mate.monolith.adapter. + rpc: + mode: local + # All three modules' Flyway migrations share one history table in the single + # schema. Versions are globally unique (system 1.0.x, notice 1.2.1, auth 1.3.1) + # so they apply in order under flyway_history_monolith. + module: + code: monolith + +# ---- Sa-Token dedicated Redis (separate logical DB from the cache) ---- +sa-token: + active-timeout: -1 + alone-redis: + host: ${SA_TOKEN_REDIS_HOST:${REDIS_HOST:127.0.0.1}} + port: ${SA_TOKEN_REDIS_PORT:${REDIS_PORT:6379}} + password: ${SA_TOKEN_REDIS_PASSWORD:${REDIS_PASSWORD:matecloud123}} + database: ${SA_TOKEN_REDIS_DB:1} + timeout: 5000 + +# ---- MinIO (mate-file-starter) ---- +minio: + endpoint: ${MINIO_ENDPOINT:http://127.0.0.1:9000} + access-key: ${MINIO_ACCESS_KEY:matecloud} + secret-key: ${MINIO_SECRET_KEY:matecloud123} + bucket-name: ${MINIO_BUCKET:matecloud} + +logging: + level: + vip.mate: info + org.apache.dubbo: warn + com.alibaba.nacos: warn diff --git a/mate-starters/mate-ds-starter/src/main/java/vip/mate/starter/ds/config/DataSourceAutoConfiguration.java b/mate-starters/mate-ds-starter/src/main/java/vip/mate/starter/ds/config/DataSourceAutoConfiguration.java index 25ebcdca8..b6d5b74f7 100644 --- a/mate-starters/mate-ds-starter/src/main/java/vip/mate/starter/ds/config/DataSourceAutoConfiguration.java +++ b/mate-starters/mate-ds-starter/src/main/java/vip/mate/starter/ds/config/DataSourceAutoConfiguration.java @@ -41,6 +41,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.flyway.autoconfigure.FlywayMigrationStrategy; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.FullyQualifiedAnnotationBeanNameGenerator; import org.springframework.core.env.Environment; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; @@ -50,9 +51,12 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.sql.Types; import java.util.ArrayList; import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; /** * Auto-configuration for DataSource and MyBatis Plus. @@ -71,7 +75,12 @@ @Slf4j @AutoConfiguration @ConditionalOnClass({SqlSessionFactory.class, MybatisSqlSessionFactoryBean.class}) -@MapperScan({"vip.mate.**.infrastructure.dao", "vip.mate.**.dao"}) +// Fully-qualified bean names so mappers with the same simple name in different +// modules (e.g. auth + system both ship a LoginLogDao) don't collide when every +// module is scanned into one context (monolith mode). Mappers are injected by +// type, so FQN names are transparent in single-service mode. +@MapperScan(value = {"vip.mate.**.infrastructure.dao", "vip.mate.**.dao"}, + nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class) public class DataSourceAutoConfiguration { /** The legacy single shared Flyway history table (pre per-service split). */ @@ -123,7 +132,10 @@ public SqlSessionFactory sqlSessionFactory(DataSource dataSource, factory.setConfiguration(configuration); factory.setPlugins(mybatisPlusInterceptor); - factory.setTypeAliasesPackage("vip.mate.**.infrastructure.dao.po"); + // No typeAliasesPackage: MyBatis-Plus resolves entities by their Class via + // BaseMapper, and the project ships no XML mappers (so no short resultType + // aliases are consumed). Registering aliases by simple name would also throw on + // duplicates across modules in monolith mode (e.g. auth + system LoginLogPO). // GlobalConfig — mirrors mybatis-plus.global-config in mate-defaults.yml GlobalConfig globalConfig = new GlobalConfig(); @@ -206,7 +218,7 @@ public MetaObjectHandler myMetaObjectHandler() { */ @Bean @ConditionalOnMissingBean(FlywayMigrationStrategy.class) - @ConditionalOnClass(name = "Flyway") + @ConditionalOnClass(Flyway.class) @ConditionalOnProperty( prefix = "spring.flyway", name = "repair-on-migrate", havingValue = "true", matchIfMissing = true) @@ -240,58 +252,168 @@ private void autoSeedPerServiceHistory(Flyway flyway) { try (Connection conn = flyway.getConfiguration().getDataSource().getConnection()) { String product = conn.getMetaData().getDatabaseProductName(); if (product == null || !product.toLowerCase().contains("mysql")) { - return; // only persistent MySQL carries legacy history; H2 is fresh - } - if (!tableExists(conn, LEGACY_FLYWAY_TABLE)) { - return; // nothing to migrate from (fresh DB) - } - boolean newExists = tableExists(conn, table); - if (newExists && rowCount(conn, table) > 0) { - return; // already seeded / migrated — no-op + return; // only persistent MySQL carries history to adopt; H2 is fresh } + // This app's versioned migration scripts, in version order. Skip the + // "<< Flyway Baseline >>" pseudo-entry — the target keeps its own baseline. List scripts = new ArrayList<>(); for (MigrationInfo mi : flyway.info().all()) { - if (mi.getScript() != null && !mi.getScript().isBlank()) { - scripts.add(mi.getScript()); + String script = mi.getScript(); + if (script != null && !script.isBlank() && !script.startsWith("<<")) { + scripts.add(script); } } if (scripts.isEmpty()) { return; } - if (!newExists) { + boolean targetExists = tableExists(conn, table); + if (targetExists && appliedScriptCount(conn, table, scripts) >= scripts.size()) { + return; // already fully seeded / migrated — no-op + } + // Pull already-applied rows for our scripts from every OTHER Flyway history + // table in this schema: the legacy single `flyway_schema_history` AND sibling + // per-service tables (flyway_history_auth/system/notice/...). This is what lets + // the monolith adopt a database the microservices already migrated (and the + // reverse), instead of re-running CREATE TABLE and colliding. + List sources = discoverHistoryTables(conn, table); + Map applied = collectAppliedRows(conn, sources, scripts); + if (applied.isEmpty()) { + return; // fresh schema — let migrate() create everything + } + if (!targetExists) { + try (Statement st = conn.createStatement()) { + st.execute("CREATE TABLE `" + table + "` LIKE `" + sources.get(0) + "`"); + } + } else { + // Drop half-failed rows so they neither fail validation nor collide with seeds. try (Statement st = conn.createStatement()) { - st.execute("CREATE TABLE `" + table + "` LIKE `" + LEGACY_FLYWAY_TABLE + "`"); + st.executeUpdate("DELETE FROM `" + table + "` WHERE success = 0"); } } - String placeholders = String.join(",", Collections.nCopies(scripts.size(), "?")); - String sql = "INSERT IGNORE INTO `" + table + "` SELECT * FROM `" + LEGACY_FLYWAY_TABLE - + "` WHERE script IN (" + placeholders + ")"; - try (PreparedStatement ps = conn.prepareStatement(sql)) { - for (int i = 0; i < scripts.size(); i++) { - ps.setString(i + 1, scripts.get(i)); + int rank = (int) maxInstalledRank(conn, table); + int seeded = 0; + String insert = "INSERT IGNORE INTO `" + table + "` (installed_rank, version, description, " + + "type, script, checksum, installed_by, installed_on, execution_time, success) " + + "VALUES (?,?,?,?,?,?,?,NOW(),?,1)"; + try (PreparedStatement ps = conn.prepareStatement(insert)) { + for (String script : scripts) { // version order + AppliedRow row = applied.get(script); + if (row == null) { + continue; + } + rank++; + ps.setInt(1, rank); + ps.setString(2, row.version); + ps.setString(3, row.description); + ps.setString(4, row.type); + ps.setString(5, row.script); + if (row.checksum == null) { + ps.setNull(6, Types.INTEGER); + } else { + ps.setInt(6, row.checksum); + } + ps.setString(7, row.installedBy); + ps.setInt(8, row.executionTime); + ps.addBatch(); + seeded++; } - int n = ps.executeUpdate(); - log.info("[flyway] per-service history transition: seeded {} applied row(s) into `{}` " - + "from `{}` (this service's scripts)", n, table, LEGACY_FLYWAY_TABLE); + ps.executeBatch(); } + log.info("[flyway] history adoption: seeded {} applied row(s) into `{}` from {} " + + "— schema already migrated by another deployment topology", seeded, table, sources); } catch (Exception e) { // Never block boot on the seed itself; repair+migrate still run. If the seed // could not complete, migrate may fail loudly (same as before this fix). - log.warn("[flyway] per-service history auto-seed skipped for `{}`: {}", table, e.toString()); + log.warn("[flyway] history auto-seed skipped for `{}`: {}", table, e.toString()); } } - private static boolean tableExists(Connection conn, String name) throws SQLException { + /** A successfully-applied migration row copied from another history table. */ + private record AppliedRow(String version, String description, String type, String script, + Integer checksum, String installedBy, int executionTime) { + } + + /** Count of this app's scripts already recorded as successful in {@code table}. */ + private static int appliedScriptCount(Connection conn, String table, List scripts) + throws SQLException { + String placeholders = String.join(",", Collections.nCopies(scripts.size(), "?")); + String sql = "SELECT COUNT(*) FROM `" + table + "` WHERE success = 1 AND script IN (" + + placeholders + ")"; + try (PreparedStatement ps = conn.prepareStatement(sql)) { + for (int i = 0; i < scripts.size(); i++) { + ps.setString(i + 1, scripts.get(i)); + } + try (ResultSet rs = ps.executeQuery()) { + return rs.next() ? rs.getInt(1) : 0; + } + } + } + + /** Legacy {@code flyway_schema_history} + sibling {@code flyway_history_*} tables (excluding target). */ + private static List discoverHistoryTables(Connection conn, String target) throws SQLException { + List tables = new ArrayList<>(); try (ResultSet rs = conn.getMetaData() - .getTables(conn.getCatalog(), null, name, new String[]{"TABLE"})) { - return rs.next(); + .getTables(conn.getCatalog(), null, "flyway%", new String[]{"TABLE"})) { + while (rs.next()) { + String name = rs.getString("TABLE_NAME"); + if (name == null || name.equalsIgnoreCase(target)) { + continue; + } + if (name.equalsIgnoreCase(LEGACY_FLYWAY_TABLE) || name.startsWith("flyway_history_")) { + tables.add(name); + } + } + } + return tables; + } + + /** Map of script -> applied row, gathered from the source tables (first hit wins). */ + private static Map collectAppliedRows( + Connection conn, List sources, List scripts) throws SQLException { + Map applied = new LinkedHashMap<>(); + if (sources.isEmpty()) { + return applied; + } + String placeholders = String.join(",", Collections.nCopies(scripts.size(), "?")); + for (String src : sources) { + String sql = "SELECT version, description, type, script, checksum, installed_by, " + + "execution_time FROM `" + src + "` WHERE success = 1 AND script IN (" + + placeholders + ")"; + try (PreparedStatement ps = conn.prepareStatement(sql)) { + for (int i = 0; i < scripts.size(); i++) { + ps.setString(i + 1, scripts.get(i)); + } + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + String script = rs.getString("script"); + int checksum = rs.getInt("checksum"); + applied.putIfAbsent(script, new AppliedRow( + rs.getString("version"), + rs.getString("description"), + rs.getString("type"), + script, + rs.wasNull() ? null : checksum, + rs.getString("installed_by"), + rs.getInt("execution_time"))); + } + } + } } + return applied; } - private static long rowCount(Connection conn, String table) throws SQLException { + private static long maxInstalledRank(Connection conn, String table) throws SQLException { try (Statement st = conn.createStatement(); - ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM `" + table + "`")) { + ResultSet rs = st.executeQuery("SELECT COALESCE(MAX(installed_rank),0) FROM `" + table + "`")) { return rs.next() ? rs.getLong(1) : 0L; } } + + private static boolean tableExists(Connection conn, String name) throws SQLException { + try (ResultSet rs = conn.getMetaData() + .getTables(conn.getCatalog(), null, name, new String[]{"TABLE"})) { + return rs.next(); + } + } + } diff --git a/mate-starters/mate-mq-starter/src/main/java/vip/mate/starter/mq/RabbitMqAutoConfiguration.java b/mate-starters/mate-mq-starter/src/main/java/vip/mate/starter/mq/RabbitMqAutoConfiguration.java index b08ff70b2..959bedb6d 100644 --- a/mate-starters/mate-mq-starter/src/main/java/vip/mate/starter/mq/RabbitMqAutoConfiguration.java +++ b/mate-starters/mate-mq-starter/src/main/java/vip/mate/starter/mq/RabbitMqAutoConfiguration.java @@ -22,15 +22,23 @@ import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.amqp.autoconfigure.RabbitTemplateCustomizer; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; /** * Auto-configuration for RabbitMQ event publishing. + *

+ * The broker is only used for cross-service domain-event fan-out, which only + * exists in microservice mode. In monolith mode ({@code mate.rpc.mode=local}) + * domain events are dispatched in-process via Spring's + * {@code ApplicationEventPublisher}, so this is disabled and no broker is needed + * (mirrors {@code RpcAutoConfiguration}). * * @author mateaix */ @AutoConfiguration @ConditionalOnClass(RabbitTemplate.class) +@ConditionalOnProperty(name = "mate.rpc.mode", havingValue = "dubbo", matchIfMissing = true) public class RabbitMqAutoConfiguration { @Bean diff --git a/mate-starters/mate-mq-starter/src/main/java/vip/mate/starter/mq/event/DomainEventAutoConfiguration.java b/mate-starters/mate-mq-starter/src/main/java/vip/mate/starter/mq/event/DomainEventAutoConfiguration.java index 866f9b5db..357b8ccec 100644 --- a/mate-starters/mate-mq-starter/src/main/java/vip/mate/starter/mq/event/DomainEventAutoConfiguration.java +++ b/mate-starters/mate-mq-starter/src/main/java/vip/mate/starter/mq/event/DomainEventAutoConfiguration.java @@ -25,6 +25,7 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import java.util.Map; @@ -35,11 +36,18 @@ * Declares the shared topic exchange ({@code mate.domain.events}), a dead-letter * exchange + queue, and registers the {@link DomainEventListenerRegistrar} * {@link org.springframework.beans.factory.config.BeanPostProcessor}. + *

+ * This is the cross-service ({@code @DomainEventHandler}) broker fan-out and only + * applies in microservice mode. In monolith mode ({@code mate.rpc.mode=local}) + * domain events stay in-process via Spring's {@code ApplicationEventPublisher} + + * {@code @TransactionalEventListener}, so this — and its eager + * {@code BeanPostProcessor} — is switched off entirely (no broker required). * * @author mateaix */ @AutoConfiguration @ConditionalOnClass(ConnectionFactory.class) +@ConditionalOnProperty(name = "mate.rpc.mode", havingValue = "dubbo", matchIfMissing = true) public class DomainEventAutoConfiguration { /** diff --git a/mate-ui/apps/admin/package.json b/mate-ui/apps/admin/package.json index 584d082f5..d9b2a5093 100644 --- a/mate-ui/apps/admin/package.json +++ b/mate-ui/apps/admin/package.json @@ -40,7 +40,7 @@ "unocss": "^66.6.8", "unplugin-auto-import": "^19.0.0", "unplugin-vue-components": "^28.0.0", - "vite": "^8.0.8", + "vite": "^8.0.16", "vue-tsc": "^2.2.0" } } diff --git a/mate-ui/pnpm-lock.yaml b/mate-ui/pnpm-lock.yaml index 30be0af52..5b7231ab8 100644 --- a/mate-ui/pnpm-lock.yaml +++ b/mate-ui/pnpm-lock.yaml @@ -10,16 +10,16 @@ importers: devDependencies: turbo: specifier: ^2.9.6 - version: 2.9.6 + version: 2.10.0 typescript: specifier: ^6.0.2 - version: 6.0.2 + version: 6.0.3 apps/admin: dependencies: '@element-plus/icons-vue': specifier: ^2.3.0 - version: 2.3.2(vue@3.5.32(typescript@6.0.2)) + version: 2.3.2(vue@3.5.39(typescript@6.0.3)) '@matecloud/core': specifier: workspace:* version: link:../../packages/core @@ -34,49 +34,49 @@ importers: version: link:../../packages/utils '@vue-flow/background': specifier: ^1.3.2 - version: 1.3.2(@vue-flow/core@1.48.2(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) + version: 1.3.2(@vue-flow/core@1.48.2(vue@3.5.39(typescript@6.0.3)))(vue@3.5.39(typescript@6.0.3)) '@vue-flow/controls': specifier: ^1.1.3 - version: 1.1.3(@vue-flow/core@1.48.2(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) + version: 1.1.3(@vue-flow/core@1.48.2(vue@3.5.39(typescript@6.0.3)))(vue@3.5.39(typescript@6.0.3)) '@vue-flow/core': specifier: ^1.48.2 - version: 1.48.2(vue@3.5.32(typescript@6.0.2)) + version: 1.48.2(vue@3.5.39(typescript@6.0.3)) '@vue-flow/minimap': specifier: ^1.5.4 - version: 1.5.4(@vue-flow/core@1.48.2(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) + version: 1.5.4(@vue-flow/core@1.48.2(vue@3.5.39(typescript@6.0.3)))(vue@3.5.39(typescript@6.0.3)) '@vueuse/core': specifier: ^12.0.0 - version: 12.8.2(typescript@6.0.2) + version: 12.8.2(typescript@6.0.3) axios: specifier: ^1.7.0 - version: 1.15.0 + version: 1.18.1 echarts: specifier: ^5.5.1 version: 5.6.0 element-plus: specifier: ^2.13.7 - version: 2.13.7(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)) + version: 2.14.2(vue@3.5.39(typescript@6.0.3)) lucide-vue-next: specifier: ^0.468.0 - version: 0.468.0(vue@3.5.32(typescript@6.0.2)) + version: 0.468.0(vue@3.5.39(typescript@6.0.3)) pdfjs-dist: specifier: ^4.7.76 version: 4.10.38 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)) + version: 3.0.4(typescript@6.0.3)(vue@3.5.39(typescript@6.0.3)) pinia-plugin-persistedstate: specifier: ^4.0.0 - version: 4.7.1(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2))) + version: 4.7.1(pinia@3.0.4(typescript@6.0.3)(vue@3.5.39(typescript@6.0.3))) vue: specifier: ^3.5.32 - version: 3.5.32(typescript@6.0.2) + version: 3.5.39(typescript@6.0.3) vue-i18n: specifier: 11.3.2 - version: 11.3.2(vue@3.5.32(typescript@6.0.2)) + version: 11.3.2(vue@3.5.39(typescript@6.0.3)) vue-router: specifier: 4.6.4 - version: 4.6.4(vue@3.5.32(typescript@6.0.2)) + version: 4.6.4(vue@3.5.39(typescript@6.0.3)) devDependencies: '@matecloud/eslint-config': specifier: workspace:* @@ -86,25 +86,25 @@ importers: version: link:../../tooling/tsconfig '@vitejs/plugin-vue': specifier: ^6.0.5 - version: 6.0.7(vite@8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@6.0.2)) + version: 6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@6.0.3)) typescript: specifier: ^6.0.2 - version: 6.0.2 + version: 6.0.3 unocss: specifier: ^66.6.8 - version: 66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vite@8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) + version: 66.7.3(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) unplugin-auto-import: specifier: ^19.0.0 - version: 19.3.0(@vueuse/core@12.8.2(typescript@6.0.2)) + version: 19.3.0(@vueuse/core@12.8.2(typescript@6.0.3)) unplugin-vue-components: specifier: ^28.0.0 - version: 28.8.0(@babel/parser@7.29.2)(vue@3.5.32(typescript@6.0.2)) + version: 28.8.0(@babel/parser@7.29.7)(vue@3.5.39(typescript@6.0.3)) vite: - specifier: ^8.0.8 - version: 8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.16 + version: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vue-tsc: specifier: ^2.2.0 - version: 2.2.12(typescript@6.0.2) + version: 2.2.12(typescript@6.0.3) apps/desktop: dependencies: @@ -119,38 +119,38 @@ importers: version: link:../../packages/utils '@tauri-apps/api': specifier: ^2.1.1 - version: 2.10.1 + version: 2.11.1 '@tauri-apps/plugin-dialog': specifier: ^2.0.1 - version: 2.7.0 + version: 2.7.1 '@tauri-apps/plugin-shell': specifier: ^2.0.1 version: 2.3.5 element-plus: specifier: ^2.9.0 - version: 2.13.7(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)) + version: 2.14.2(vue@3.5.39(typescript@5.9.3)) pinia: specifier: ^2.3.0 - version: 2.3.1(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)) + version: 2.3.1(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)) vue: specifier: ^3.5.13 - version: 3.5.32(typescript@5.9.3) + version: 3.5.39(typescript@5.9.3) vue-router: specifier: ^4.5.0 - version: 4.6.4(vue@3.5.32(typescript@5.9.3)) + version: 4.6.4(vue@3.5.39(typescript@5.9.3)) devDependencies: '@tauri-apps/cli': specifier: ^2.1.0 - version: 2.10.1 + version: 2.11.3 '@vitejs/plugin-vue': specifier: ^5.2.0 - version: 5.2.4(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + version: 5.2.4(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@5.9.3)) typescript: specifier: ^5.7.0 version: 5.9.3 vite: specifier: ^6.0.0 - version: 6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + version: 6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vue-tsc: specifier: ^2.2.0 version: 2.2.12(typescript@5.9.3) @@ -159,22 +159,22 @@ importers: devDependencies: vitepress: specifier: ^1.6.3 - version: 1.6.4(@algolia/client-search@5.55.1)(@types/node@25.9.1)(async-validator@4.2.5)(axios@1.15.0)(lightningcss@1.32.0)(postcss@8.5.9)(search-insights@2.17.3)(terser@5.46.2)(typescript@6.0.2) + version: 1.6.4(@algolia/client-search@5.55.1)(@types/node@25.9.1)(async-validator@4.2.5)(axios@1.18.1)(lightningcss@1.32.0)(postcss@8.5.15)(search-insights@2.17.3)(terser@5.46.2)(typescript@6.0.3) vue: specifier: ^3.5.17 - version: 3.5.32(typescript@6.0.2) + version: 3.5.39(typescript@6.0.3) apps/mobile: dependencies: '@dcloudio/uni-app': specifier: 3.0.0-4030620241128001 - version: 3.0.0-4030620241128001(@dcloudio/types@3.4.31)(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + version: 3.0.0-4030620241128001(@dcloudio/types@3.4.31)(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-h5': specifier: 3.0.0-4030620241128001 - version: 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + version: 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-mp-weixin': specifier: 3.0.0-4030620241128001 - version: 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + version: 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@matecloud/core': specifier: workspace:* version: link:../../packages/core @@ -183,26 +183,26 @@ importers: version: link:../../packages/utils pinia: specifier: ^2.3.0 - version: 2.3.1(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)) + version: 2.3.1(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)) vue: specifier: ^3.5.13 - version: 3.5.32(typescript@5.9.3) + version: 3.5.39(typescript@5.9.3) devDependencies: '@dcloudio/types': specifier: ^3.4.18 version: 3.4.31 '@dcloudio/uni-cli-shared': specifier: 3.0.0-4030620241128001 - version: 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + version: 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/vite-plugin-uni': specifier: 3.0.0-4030620241128001 - version: 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + version: 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@5.9.3)) typescript: specifier: ^5.7.0 version: 5.9.3 vite: specifier: ^6.0.0 - version: 6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + version: 6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vue-tsc: specifier: ^2.2.0 version: 2.2.12(typescript@5.9.3) @@ -211,16 +211,16 @@ importers: dependencies: axios: specifier: ^1.7.0 - version: 1.15.0 + version: 1.18.1 crypto-js: specifier: ^4.2.0 version: 4.2.0 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)) + version: 3.0.4(typescript@6.0.3)(vue@3.5.39(typescript@6.0.3)) vue: specifier: ^3.5.32 - version: 3.5.32(typescript@6.0.2) + version: 3.5.39(typescript@6.0.3) devDependencies: '@types/crypto-js': specifier: ^4.2.2 @@ -230,10 +230,10 @@ importers: dependencies: '@vueuse/core': specifier: ^12.0.0 - version: 12.8.2(typescript@6.0.2) + version: 12.8.2(typescript@6.0.3) vue: specifier: ^3.5.32 - version: 3.5.32(typescript@6.0.2) + version: 3.5.39(typescript@6.0.3) packages/ui: dependencies: @@ -245,7 +245,7 @@ importers: version: 0.7.1 element-plus: specifier: ^2.13.7 - version: 2.13.7(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)) + version: 2.14.2(vue@3.5.39(typescript@6.0.3)) highlight.js: specifier: ^11.10.0 version: 11.11.1 @@ -257,7 +257,7 @@ importers: version: 14.2.0 vue: specifier: ^3.5.32 - version: 3.5.32(typescript@6.0.2) + version: 3.5.39(typescript@6.0.3) devDependencies: '@types/katex': specifier: ^0.16.7 @@ -272,10 +272,10 @@ importers: dependencies: '@typescript-eslint/eslint-plugin': specifier: ^7.18.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@6.0.2))(eslint@8.57.1)(typescript@6.0.2) + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@6.0.3))(eslint@8.57.1)(typescript@6.0.3) '@typescript-eslint/parser': specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.1)(typescript@6.0.2) + version: 7.18.0(eslint@8.57.1)(typescript@6.0.3) eslint: specifier: ^8.57.0 version: 8.57.1 @@ -466,10 +466,18 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -487,6 +495,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} engines: {node: '>=6.9.0'} @@ -897,6 +910,10 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} + '@ctrl/tinycolor@4.2.0': resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} engines: {node: '>=14'} @@ -987,11 +1004,11 @@ packages: peerDependencies: vue: ^3.2.0 - '@emnapi/core@1.9.2': - resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/runtime@1.9.2': - resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -1630,8 +1647,8 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@3.1.0': - resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@iconify/utils@3.1.3': + resolution: {integrity: sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==} '@intlify/core-base@11.3.2': resolution: {integrity: sha512-cgsUaV/dyD6aS49UPgerIblrWeXAZHNaDWqm4LujOGC7IafSyhghGXEiSVvuDYaDPiQTP+tSFSTM1HIu7Yp1nA==} @@ -1890,35 +1907,30 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@napi-rs/canvas-linux-arm64-musl@0.1.100': resolution: {integrity: sha512-K3mDW66N+xT2/V439u1alFANiBUjdEx2gLiNYnCmUsva5jZMxWTjafBYwTzYK+EMFMHrUoabuU+T1BIP5CgbYQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@napi-rs/canvas-linux-riscv64-gnu@0.1.100': resolution: {integrity: sha512-mooqUBTIsccZpnoQC4NgrC1v6C1vof39etLNMnBwCY+p0gajWJvAHLGQ6g/gGyS5YrpDW+GefSN4+Cvcr08UWw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - libc: [glibc] '@napi-rs/canvas-linux-x64-gnu@0.1.100': resolution: {integrity: sha512-1eCvkDCazm7FFhsT7DfGOdSaHgZVK3bt/dSBl5EWHOWmnz+I7j8tPseJqqD81NF+MH21jKUK4wQSDjN0mdhnTg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@napi-rs/canvas-linux-x64-musl@0.1.100': resolution: {integrity: sha512-20arT6lnI19S68qNlii73TSEDbECNgzMz2EpldC1V3mZFuRkeujXkcebRk0LRJe9SEUAooYiLokfMViY8IX7yA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@napi-rs/canvas-win32-arm64-msvc@0.1.100': resolution: {integrity: sha512-DZFFT1wIAg37LJw37yhMRFfjATd3vTQzjZ1Yki8u2vhO6Hi5VE6BVaGQ1aaDu7xb4iMErz+9EOwjpS7xcxFeBw==} @@ -1936,8 +1948,8 @@ packages: resolution: {integrity: sha512-xglYA6q3XO5P3BNJYxVZ1IV7DLVjp1Py6nwag88YntrS+3vKHyYcMqXVS4ZztJmwz2uGvz1FWhI/4LgbR5uQDA==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.1.3': - resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==} + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 @@ -1954,135 +1966,130 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-parser/binding-android-arm-eabi@0.124.0': - resolution: {integrity: sha512-+R9zCafSL8ovjokdPtorUp3sXrh8zQ2AC2L0ivXNvlLR0WS+5WdPkNVrnENq5UvzagM4Xgl0NPsJKz3Hv9+y8g==} + '@oxc-parser/binding-android-arm-eabi@0.131.0': + resolution: {integrity: sha512-t2xicr9pfzkSRYx5aPqZqlLaayIwJTqgQ81Jor31Xep2nGyL2Aq3d0K5wOfeR7VevaSdxaS9dzSQP9xDwn8fDg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxc-parser/binding-android-arm64@0.124.0': - resolution: {integrity: sha512-ULHC/gVZ+nP4pd3kNNQTYaQ/e066BW/KuY5qUsvwkVWwOUQGDg+WpfyVOmQ4xfxoue6cMlkKkJ+ntdzfDXpNlg==} + '@oxc-parser/binding-android-arm64@0.131.0': + resolution: {integrity: sha512-nlGIod6gw75x1aEDgLS+srj+JRGY0HHm9MI9YgzE/B64l6d6+H3MSP9NOgp0+HTg8tp4vV9rVfgQGgd+TfVZcA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-parser/binding-darwin-arm64@0.124.0': - resolution: {integrity: sha512-fGJ2hw7bnbUYn6UvTjp0m4WJ9zXz3cohgcwcgeo7gUZehpPNpvcVEVeIVHNmHnAuAw/ysf4YJR8DA1E+xCA4Lw==} + '@oxc-parser/binding-darwin-arm64@0.131.0': + resolution: {integrity: sha512-jukuV6xe5RbQKFo7QD34NDCLDZp4PSOm8rmckhNdH/60ymG5zXbDzGBEyc+nTkuLQNama2aSGCt+CPfpjNTqyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.124.0': - resolution: {integrity: sha512-j0+re9pgps5BH2Tk3fm59Hi3QuLP3C4KhqXi6A+wRHHHJWDFR8mc/KI9mBrfk2JRT+15doGo+zv1eN75/9DuOw==} + '@oxc-parser/binding-darwin-x64@0.131.0': + resolution: {integrity: sha512-g3JOo4khe9rslHm5WYaVDWb0HS/M1MLR3I9S8560MkKIcC96VQY00QjOlsuRyfSj/JDXj8i9T7ryPO2RidiXVg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-parser/binding-freebsd-x64@0.124.0': - resolution: {integrity: sha512-0k5mS0npnrhKy72UfF51lpOZ2ESoPWn6gdFw+RdeRWcokraDW1O2kSx3laQ+yk7cCEavQdJSpWCYS/GvBbUCXQ==} + '@oxc-parser/binding-freebsd-x64@0.131.0': + resolution: {integrity: sha512-1hziITDTxjMePnX+dR9ocVT+EuZkQ8wm4FPAbmbEiKG+Phbo73J1ZnPAA6Y/aGsWF3McOFnQuZIktAFwalkfJQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': - resolution: {integrity: sha512-P/i4eguRWvAUfGdfhQYg1jpwYkyUV6D3gefIH7HhmRl1Ph6P4IqTIEVcyJr1i/3vr1V5OHU4wonH6/ue/Qzvrw==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.131.0': + resolution: {integrity: sha512-9uRxfXwyKG9+MwmGQBo2ncPNwZH5HTmCETFM2WiuDBNDCW4NC5ttSQkwCAMrTAWgwMzVBH1CP8pM0v7nebCWXQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': - resolution: {integrity: sha512-/ameqFQH5fFP+66Atr8Ynv/2rYe4utcU7L4MoWS5JtrFLVO78g4qDLavyIlJxa6caSwYOvG/eO3c/DXqY5/6Rw==} + '@oxc-parser/binding-linux-arm-musleabihf@0.131.0': + resolution: {integrity: sha512-mgbLvzRShXOLBdWGInf08Af4q+pfj1xD8hSgLClDZ9of/BXkB6+LIhTH7fihiDUipqB3yoSkKBWaZ3Ejlf5Yag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.124.0': - resolution: {integrity: sha512-gNeyEcXTtfrRCbj2EfxWU85Fs0wIX3p44Y3twnvuMfkWlLrb9M1Z25AYNSKjJM+fdAjeeQCjw0on47zFuBYwQw==} + '@oxc-parser/binding-linux-arm64-gnu@0.131.0': + resolution: {integrity: sha512-OPT8++4aN6j2GJ8+3IZHS/byXoZP4aSBn+FoG6rgBJ2fKwPKXWF3MqrFMNW7NKHM28FLY579xYLxJSfgobEqPA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] - '@oxc-parser/binding-linux-arm64-musl@0.124.0': - resolution: {integrity: sha512-uvG7v4Tz9S8/PVqY0SP0DLHxo4hZGe+Pv2tGVnwcsjKCCUPjplbrFVvDzXq+kOaEoUkiCY0Kt1hlZ6FDJ1LKNQ==} + '@oxc-parser/binding-linux-arm64-musl@0.131.0': + resolution: {integrity: sha512-vtPiwmfVTAXzaxDKsOXG+LwgRAA7WEnaeHzhS5z0GE89gAK18KSXnly7Z6saXXq6L3dVMyK44uoTI03zKxrpmw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] - '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': - resolution: {integrity: sha512-t7KZaaUhfp2au0MRpoENEFqwLKYDdptEry6V7pTAVdPEcFG4P6ii8yeGU9m6p5vb+b8WEKmdpGMNXBEYy7iJdw==} + '@oxc-parser/binding-linux-ppc64-gnu@0.131.0': + resolution: {integrity: sha512-8AW8L7w5cGHSdZPcyZX2yR0+GUODsT15rbRjfdD54rv6DMbtuEB19ysLOpKJlRGfH6UNYNpCHaU1uJWgTWf1/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': - resolution: {integrity: sha512-eurGGaxHZiIQ+fBSageS8TAkRqZgdOiBeqNrWAqAPup9hXBTmQ0WcBjwsLElf+3jvDL9NhnX0dOgOqPfsjSjdg==} + '@oxc-parser/binding-linux-riscv64-gnu@0.131.0': + resolution: {integrity: sha512-vvpjkjEOUsPcsYf8evE4MO3aGx9+3wodXEBOicGNnOwTuAik8eBONNkgSdhkGsAblQmfVHJyanRnpxglddTXIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - libc: [glibc] - '@oxc-parser/binding-linux-riscv64-musl@0.124.0': - resolution: {integrity: sha512-d1V7/ll1i/LhqE/gZy6Wbz6evlk0egh2XKkwMI3epiojtbtUwQSLIER0Y3yDBBocPuWOjJdvmjtEmPTTLXje/w==} + '@oxc-parser/binding-linux-riscv64-musl@0.131.0': + resolution: {integrity: sha512-AqmcNC3fClXX+fxQ6VGEN1667xVFiRBkY0CZmDMSiaeFUsv1+UkBPYYi48IUKcA9/ivvoKNRzQl2I4//kT9F/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - libc: [musl] - '@oxc-parser/binding-linux-s390x-gnu@0.124.0': - resolution: {integrity: sha512-w1+cBvriUteOpox6ATqCFVkpGL47PFdcfCPGmgUZbd78Fw44U0gQkc+kVGvAOTvGrptMYgwomD1c6OTVvkrpGg==} + '@oxc-parser/binding-linux-s390x-gnu@0.131.0': + resolution: {integrity: sha512-7d3jOMKy7RSQCcDLIci+ySll2FgsOMl/GiRux4q2JNv0zg4EdhFISa9idvrdN/HEUIQQJNg6dmveUeJl2YErGA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.124.0': - resolution: {integrity: sha512-RRB1evQiXRtMCsQQiAh9U0H3HzguLpE0ytfStuhRgmOj7tqUCOVxkHsvM9geZjAax6NqVRj7VXx32qjjkZPsBw==} + '@oxc-parser/binding-linux-x64-gnu@0.131.0': + resolution: {integrity: sha512-JHK/h95qVqVQ+ITER837kcTdwBDFpFaNnOTYGCP0zdUSX/mLKC7tXOoyrTb6vG7iRPwGlcgBil3v2IjYw1FqJA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] - '@oxc-parser/binding-linux-x64-musl@0.124.0': - resolution: {integrity: sha512-asVYN0qmSHlCU8H9Q47SmeJ/Z5EG4IWCC+QGxkfFboI5qh15aLlJnHmnrV61MwQRPXGnVC/sC3qKhrUyqGxUqw==} + '@oxc-parser/binding-linux-x64-musl@0.131.0': + resolution: {integrity: sha512-b2BO82O8azXAyf7EUgOPKu145nWypbNyk07HbU09fkzhm9lEA5oPvaN/M8Nlo7tOErVTa2WOgS4QbOnxAPXdDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] - '@oxc-parser/binding-openharmony-arm64@0.124.0': - resolution: {integrity: sha512-nhwuxm6B8pn9lzAzMUfa571L5hCXYwQo8C8cx5aGOuHWCzruR8gPJnRRXGBci+uGaIIQEZDyU/U6HDgrSp/JlQ==} + '@oxc-parser/binding-openharmony-arm64@0.131.0': + resolution: {integrity: sha512-GHO9glZaX7LkX/OGfluEPf1yjg+ehiFbUdowbX6uNWOQhmwKWU4m4+nZ9FJkrHNKuxyI1KKertMdGjVKCApKWA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxc-parser/binding-wasm32-wasi@0.124.0': - resolution: {integrity: sha512-LWuq4Dl9tff7n+HjJcqoBjDlVCtruc0shgtdtGM+rTUIE9aFxHA/P+wCYR+aWMjN8m9vNaRME/sKXErmhmeKrA==} - engines: {node: '>=14.0.0'} + '@oxc-parser/binding-wasm32-wasi@0.131.0': + resolution: {integrity: sha512-3SkikPaEFoih1N83qLVEDLRLeY4nYsf6JT9SnWiMCQ5lGQdKup6bEuKCqkRiG9dD1IIaFeYz9RjlciPmYoFIWA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@oxc-parser/binding-win32-arm64-msvc@0.124.0': - resolution: {integrity: sha512-aOh3Lf3AeH0dgzT4yBXcArFZ8VhqNXwZ/xlN0GqBtgVaGoHOOqL2YHlcVIgT+ghsXPVR2PTtYgBiQ1CNK7jp5A==} + '@oxc-parser/binding-win32-arm64-msvc@0.131.0': + resolution: {integrity: sha512-Os5bEhryeA2jkH+ZrnZyAC1EP5gs+X4YB1Fjqml7UPD5kU7ecsK1MPEVMfCrdt/GDNpDbavYXiOXOdyJ5b3OPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-ia32-msvc@0.124.0': - resolution: {integrity: sha512-sib5xC0nz/+SCpaETBuHBz4SXS02KuG5HtyOcHsO/SK5ZvLRGhOZx0elDKawjb6adFkD7dQCqpXUS25wY6ELKQ==} + '@oxc-parser/binding-win32-ia32-msvc@0.131.0': + resolution: {integrity: sha512-m+jNz9EuF0NXoiptc6B9h5yompZQVW/a5MJeOu5zojfH5yWk82tvF2ccrHkfhgtrS9h9DD5l1Qv8dWlfY7Nz8g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.124.0': - resolution: {integrity: sha512-UgojtjGUgZgAZQYt7SC6VO65OVdxEkRe2q+2vbHJO//18qw3Hrk6UvHGQKldsQKgbVcIBT/YBrt85YberiYIPQ==} + '@oxc-parser/binding-win32-x64-msvc@0.131.0': + resolution: {integrity: sha512-o14Hk8dAyiEUMFEWEgmAwFZvBt1RzAYLM3xeQ+5315JXgVYhoemivgYcbYVRbsFkS71ShMGlAFE0kPnr460rww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxc-project/types@0.124.0': - resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} + '@oxc-project/types@0.131.0': + resolution: {integrity: sha512-PgnWDfV0h+b16XNKbXU7Daib/BFSt/J2mEzfYIBu6JB/wNdlU+kVYXCkGA1A9fWkTbOgbjh4e6NhPeQOYvFhEA==} + + '@oxc-project/types@0.133.0': + resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -2090,104 +2097,95 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@rolldown/binding-android-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} + '@rolldown/binding-android-arm64@1.0.3': + resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==} + '@rolldown/binding-darwin-arm64@1.0.3': + resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.15': - resolution: {integrity: sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==} + '@rolldown/binding-darwin-x64@1.0.3': + resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.15': - resolution: {integrity: sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==} + '@rolldown/binding-freebsd-x64@1.0.3': + resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': - resolution: {integrity: sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==} + '@rolldown/binding-linux-arm64-gnu@1.0.3': + resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': - resolution: {integrity: sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==} + '@rolldown/binding-linux-arm64-musl@1.0.3': + resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==} + '@rolldown/binding-linux-ppc64-gnu@1.0.3': + resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==} + '@rolldown/binding-linux-s390x-gnu@1.0.3': + resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==} + '@rolldown/binding-linux-x64-gnu@1.0.3': + resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': - resolution: {integrity: sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==} + '@rolldown/binding-linux-x64-musl@1.0.3': + resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==} + '@rolldown/binding-openharmony-arm64@1.0.3': + resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': - resolution: {integrity: sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==} - engines: {node: '>=14.0.0'} + '@rolldown/binding-wasm32-wasi@1.0.3': + resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': - resolution: {integrity: sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==} + '@rolldown/binding-win32-arm64-msvc@1.0.3': + resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': - resolution: {integrity: sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==} + '@rolldown/binding-win32-x64-msvc@1.0.3': + resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.15': - resolution: {integrity: sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==} - '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} @@ -2234,79 +2232,66 @@ packages: resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.60.2': resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.60.2': resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.60.2': resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.60.2': resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.60.2': resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==} cpu: [loong64] os: [linux] - libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.60.2': resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.60.2': resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==} cpu: [ppc64] os: [linux] - libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.60.2': resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.60.2': resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.60.2': resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.60.2': resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.60.2': resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-openbsd-x64@4.60.2': resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==} @@ -2365,123 +2350,118 @@ packages: '@sxzz/popperjs-es@2.11.8': resolution: {integrity: sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==} - '@tauri-apps/api@2.10.1': - resolution: {integrity: sha512-hKL/jWf293UDSUN09rR69hrToyIXBb8CjGaWC7gfinvnQrBVvnLr08FeFi38gxtugAVyVcTa5/FD/Xnkb1siBw==} + '@tauri-apps/api@2.11.1': + resolution: {integrity: sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==} - '@tauri-apps/cli-darwin-arm64@2.10.1': - resolution: {integrity: sha512-Z2OjCXiZ+fbYZy7PmP3WRnOpM9+Fy+oonKDEmUE6MwN4IGaYqgceTjwHucc/kEEYZos5GICve35f7ZiizgqEnQ==} + '@tauri-apps/cli-darwin-arm64@2.11.3': + resolution: {integrity: sha512-BxpaM8bsCoXs3wd4WKYhas/G1gs7+r7B+e4WnyRk2GEoVOouJB1hoL6E6YLXZDXbYci6VFdrNnobQwd2uVL4ew==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tauri-apps/cli-darwin-x64@2.10.1': - resolution: {integrity: sha512-V/irQVvjPMGOTQqNj55PnQPVuH4VJP8vZCN7ajnj+ZS8Kom1tEM2hR3qbbIRoS3dBKs5mbG8yg1WC+97dq17Pw==} + '@tauri-apps/cli-darwin-x64@2.11.3': + resolution: {integrity: sha512-DbZYuPB1ZEzcAHYeyCvo3ltzM27+aXwPloCrtexPnmgPgulYJm3TOq6aC4S+wPhSXteddg8zImtNkvx/gQzmwg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tauri-apps/cli-linux-arm-gnueabihf@2.10.1': - resolution: {integrity: sha512-Hyzwsb4VnCWKGfTw+wSt15Z2pLw2f0JdFBfq2vHBOBhvg7oi6uhKiF87hmbXOBXUZaGkyRDkCHsdzJcIfoJC2w==} + '@tauri-apps/cli-linux-arm-gnueabihf@2.11.3': + resolution: {integrity: sha512-741NduqBmz1XkdU8yz3OI/kBZtqHbvxo9F9ytIeWYU69/Ba9dcZEbqOU++Dp0G/XU8vAI0TfTywEl+p+BbLvaA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tauri-apps/cli-linux-arm64-gnu@2.10.1': - resolution: {integrity: sha512-OyOYs2t5GkBIvyWjA1+h4CZxTcdz1OZPCWAPz5DYEfB0cnWHERTnQ/SLayQzncrT0kwRoSfSz9KxenkyJoTelA==} + '@tauri-apps/cli-linux-arm64-gnu@2.11.3': + resolution: {integrity: sha512-RWAXT8pTqIczXcoic+LXlo6uEbAXGB0cgh6Pg7Y9xVnEbzryQ1JHtRGj9SxzrKSemBIDBH6Qc24kK2G69i8ofA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] - '@tauri-apps/cli-linux-arm64-musl@2.10.1': - resolution: {integrity: sha512-MIj78PDDGjkg3NqGptDOGgfXks7SYJwhiMh8SBoZS+vfdz7yP5jN18bNaLnDhsVIPARcAhE1TlsZe/8Yxo2zqg==} + '@tauri-apps/cli-linux-arm64-musl@2.11.3': + resolution: {integrity: sha512-qomqYS+yAkd0gXMRmhguWXc7RfVN+XKKXaEwbf5QmKURwydLFOTldd6F8/WoZDSsBMrV8dpNxz0YneGLmobiSA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] - '@tauri-apps/cli-linux-riscv64-gnu@2.10.1': - resolution: {integrity: sha512-X0lvOVUg8PCVaoEtEAnpxmnkwlE1gcMDTqfhbefICKDnOTJ5Est3qL0SrWxizDackIOKBcvtpejrSiVpuJI1kw==} + '@tauri-apps/cli-linux-riscv64-gnu@2.11.3': + resolution: {integrity: sha512-jOCXbDqeDj5XcclsOBAaXjtTgwZCVg8zEZ+dbPUCoADOgljFgL0rOkYTc96vUYgOrYEfuHYihWMxIDGaD6GwJw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - libc: [glibc] - '@tauri-apps/cli-linux-x64-gnu@2.10.1': - resolution: {integrity: sha512-2/12bEzsJS9fAKybxgicCDFxYD1WEI9kO+tlDwX5znWG2GwMBaiWcmhGlZ8fi+DMe9CXlcVarMTYc0L3REIRxw==} + '@tauri-apps/cli-linux-x64-gnu@2.11.3': + resolution: {integrity: sha512-+u3HO/F3gHwL48t9gWN/urqZvpaEJzBFmTaq5eSIhvy8TOvnhb+LgJr3Q3BG+5JxuBrCUjqtOEz6gMttdJFSBA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] - '@tauri-apps/cli-linux-x64-musl@2.10.1': - resolution: {integrity: sha512-Y8J0ZzswPz50UcGOFuXGEMrxbjwKSPgXftx5qnkuMs2rmwQB5ssvLb6tn54wDSYxe7S6vlLob9vt0VKuNOaCIQ==} + '@tauri-apps/cli-linux-x64-musl@2.11.3': + resolution: {integrity: sha512-spr5Jpr6KF/vehkLwJ0YmdGv8QwpWU+uw7J8bgijO0sox6ZCYsSNMbcsQjTqPi4xl+p0woIYpWXgChgHYpAc8g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] - '@tauri-apps/cli-win32-arm64-msvc@2.10.1': - resolution: {integrity: sha512-iSt5B86jHYAPJa/IlYw++SXtFPGnWtFJriHn7X0NFBVunF6zu9+/zOn8OgqIWSl8RgzhLGXQEEtGBdR4wzpVgg==} + '@tauri-apps/cli-win32-arm64-msvc@2.11.3': + resolution: {integrity: sha512-abkoRQih5xBa3vz2spWaex0kP/MzVzVPQHom2f8jnCq46R/luOD6Uy85EMU9/bfzf6ZzdorWJsgO+OMX90Fx2w==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tauri-apps/cli-win32-ia32-msvc@2.10.1': - resolution: {integrity: sha512-gXyxgEzsFegmnWywYU5pEBURkcFN/Oo45EAwvZrHMh+zUSEAvO5E8TXsgPADYm31d1u7OQU3O3HsYfVBf2moHw==} + '@tauri-apps/cli-win32-ia32-msvc@2.11.3': + resolution: {integrity: sha512-Vy6AvzFm1G40hg3r+OYDB3jkuu7R4wnMzbQBKuun9v6Cgg8IierpLL7toMzrZKs/8NlG8Sg4x1iLFR52oknyHg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@tauri-apps/cli-win32-x64-msvc@2.10.1': - resolution: {integrity: sha512-6Cn7YpPFwzChy0ERz6djKEmUehWrYlM+xTaNzGPgZocw3BD7OfwfWHKVWxXzdjEW2KfKkHddfdxK1XXTYqBRLg==} + '@tauri-apps/cli-win32-x64-msvc@2.11.3': + resolution: {integrity: sha512-GlciF75GdbseajOyib2aCHwE3BXIqZ1liGKWLFRvCdN5wm8h8hFssEVKQ/6E+2jsMLg9v7LCTb983YFnn0QSww==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tauri-apps/cli@2.10.1': - resolution: {integrity: sha512-jQNGF/5quwORdZSSLtTluyKQ+o6SMa/AUICfhf4egCGFdMHqWssApVgYSbg+jmrZoc8e1DscNvjTnXtlHLS11g==} + '@tauri-apps/cli@2.11.3': + resolution: {integrity: sha512-EElQe8z8uD7Pi5++tJ/UfEwWuK08rd3oCDYdeIbJAb6pZRrxlqmoF5gh5H5YvzmUPhS4IRCaLSsQhvWkrfK+GQ==} engines: {node: '>= 10'} hasBin: true - '@tauri-apps/plugin-dialog@2.7.0': - resolution: {integrity: sha512-4nS/hfGMGCXiAS3LtVjH9AgsSAPJeG/7R+q8agTFqytjnMa4Zq95Bq8WzVDkckpanX+yyRHXnRtrKXkANKDHvw==} + '@tauri-apps/plugin-dialog@2.7.1': + resolution: {integrity: sha512-OK1UBXYt+ojcmxMktzzuyonYIFta8CmAASpX+CA+DTGK24KlHjhYI6x2iOJ/TjZF4N7/ACK1oFmEOjIY9IhzOQ==} '@tauri-apps/plugin-shell@2.3.5': resolution: {integrity: sha512-jewtULhiQ7lI7+owCKAjc8tYLJr92U16bPOeAa472LHJdgaibLP83NcfAF2e+wkEcA53FxKQAZ7byDzs2eeizg==} - '@turbo/darwin-64@2.9.6': - resolution: {integrity: sha512-X/56SnVXIQZBLKwniGTwEQTGmtE5brSACnKMBWpY3YafuxVYefrC2acamfjgxP7BG5w3I+6jf0UrLoSzgPcSJg==} + '@turbo/darwin-64@2.10.0': + resolution: {integrity: sha512-EwvHThXzpY0KGd1/NAmuewI5D+aVa3Rl/OlxE36yfjUKb/+ySrfJrSlEFt8aD1OXwnnaHnQnPKHFndor0Zxlsg==} cpu: [x64] os: [darwin] - '@turbo/darwin-arm64@2.9.6': - resolution: {integrity: sha512-aalBeSl4agT/QtYGDyf/XLajedWzUC9Vg/pm/YO6QQ93vkQ91Vz5uK1ta5RbVRDozQSz4njxUNqRNmOXDzW+qw==} + '@turbo/darwin-arm64@2.10.0': + resolution: {integrity: sha512-9d2fTyyG0lf5Wq1bwJA9qUaeecViMkLcdctWaMMmCkxZ/JqypmqOwK3W6vmejeKVgkr06gSoiX8bD+xN5Jpxcg==} cpu: [arm64] os: [darwin] - '@turbo/linux-64@2.9.6': - resolution: {integrity: sha512-YKi05jnNHaD7vevgYwahpzGwbsNNTwzU2c7VZdmdFm7+cGDP4oREUWSsainiMfRqjRuolQxBwRn8wf1jmu+YZA==} + '@turbo/linux-64@2.10.0': + resolution: {integrity: sha512-sZBtjMuufitanjzi6UssoUpJMnnPlLMcdcJj3m3ptNsSq31Xh7MnjhwA5nWvLDTfEFg8GPcbYFXMo8vSdKRfqQ==} cpu: [x64] os: [linux] - '@turbo/linux-arm64@2.9.6': - resolution: {integrity: sha512-02o/ZS69cOYEDczXvOB2xmyrtzjQ2hVFtWZK1iqxXUfzMmTjZK4UumrfNnjckSg+gqeBfnPRHa0NstA173Ik3g==} + '@turbo/linux-arm64@2.10.0': + resolution: {integrity: sha512-vkq/Z8R+1DQ+kifWFa810IjRy2NNBVvha3cg9sWA3nFh6nnGrHSMnnJKrzH7c/No9kq4Jb55Ru44YKsCSBgrKg==} cpu: [arm64] os: [linux] - '@turbo/windows-64@2.9.6': - resolution: {integrity: sha512-wVdQjvnBI15wB6JrA+43CtUtagjIMmX6XYO758oZHAsCNSxqRlJtdyujih0D8OCnwCRWiGWGI63zAxR0hO6s9g==} + '@turbo/windows-64@2.10.0': + resolution: {integrity: sha512-CRUEguLWxFQHptYZS7HjPhNhAFawfea07iR+xAQ5e4klgLrPCMdexBkXwSCwOxqTFknJ7RZFN3gOaADsw+Gttg==} cpu: [x64] os: [win32] - '@turbo/windows-arm64@2.9.6': - resolution: {integrity: sha512-1XUUyWW0W6FTSqGEhU8RHVqb2wP1SPkr7hIvBlMEwH9jr+sJQK5kqeosLJ/QaUv4ecSAd1ZhIrLoW7qslAzT4A==} + '@turbo/windows-arm64@2.10.0': + resolution: {integrity: sha512-dVHGaf9F8twzgibcBqKoADT/LLqf9++jDb+hq/LPWWaOmRpp4M+/pVOm7vy4z9D++xg8eaxWLT0+wQxFwhYu9A==} cpu: [arm64] os: [win32] - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} '@types/crypto-js@4.2.2': resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} @@ -2587,74 +2567,71 @@ packages: resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} deprecated: Potential CWE-502 - Update to 1.3.1 or higher - '@unocss/cli@66.6.8': - resolution: {integrity: sha512-dJ4AmrhCtQwEDJtpFG7AgJ4Qi4GWnNgWWlLWq4DhKBOCcvldr9k98mscdhs3MOwph25DIxU5MdLRAg/OS1JryQ==} - engines: {node: '>=14'} + '@unocss/cli@66.7.3': + resolution: {integrity: sha512-GBKAFgCw6gFebGRlRyC7K/61eSksUdDozay2Zu35a63uTfQteJiu1luoIwFmK9aEOa4+Jzft1wdfZzjTASRIVw==} hasBin: true - '@unocss/config@66.6.8': - resolution: {integrity: sha512-f+a8OyhD7ZoK8Pa1b3Cbx1RQc3n5x+Qht/cHg3wh/g4DNQIjBI2EqwSLfBigWhdO96zIqFAdyTlO3onmrJwUOw==} - engines: {node: '>=14'} + '@unocss/config@66.7.3': + resolution: {integrity: sha512-r1a1Pggt0rvnUvrltA77feEEq6PtNodpOxVbhwJ/sYGR6dwstSBEVmNP/Oe4ApUDax5nxZchP+VQ+RctNMs0zg==} - '@unocss/core@66.6.8': - resolution: {integrity: sha512-P9IlQfgms+8/nka7fBhiiWU4SPwrTNKbTdK0z1SLnttXMHHjsB2zpG+Vi1JQDpICfY9Y1/2pWtguPE+zeOVu9Q==} + '@unocss/core@66.7.3': + resolution: {integrity: sha512-UBfEXpW8NKACeEeUddvPDRuuroDtByO3ZHocs/SqqOEybs5Qb9oWdMJMj1DSe960RvzucLPDtOeCFL2gilzRVA==} - '@unocss/extractor-arbitrary-variants@66.6.8': - resolution: {integrity: sha512-cOXstpPTOLt/HYcL0OsqFkNau0e8ktZ5Q8fgnXBZjmLGmi+VzdESNlwxZyCXLuamZGnbrZ8lDsKdsGG7P1pMKQ==} + '@unocss/extractor-arbitrary-variants@66.7.3': + resolution: {integrity: sha512-Ps3p/nvT2nNQ8NHwHAewG/q90PZcYzGvoZhikCMuIMWrvZ2lVZM+q6+EaKSX6ZyUGJRVGh5CyU3GV3Fojp7zqQ==} - '@unocss/inspector@66.6.8': - resolution: {integrity: sha512-g8uRzXDdmoNRjXX/mZP7m0rWXLtOimyOW7+VFK6FNxRWBmvIGYgTLHkutF6Wyh9lLPDYx3pkkEmfgL35BDT3Sg==} + '@unocss/inspector@66.7.3': + resolution: {integrity: sha512-IYjeaWmG7wIUIfJO4nD3RvRTA98ZIchnaKpc9NK3t1sON2kZjbKd/85nm3b2Tvw9ANkFJqdmATAbNkn84+LBZA==} - '@unocss/preset-attributify@66.6.8': - resolution: {integrity: sha512-YxyRSF5rq0WbY8kCG0gpj3DSXPL89QGxZeqABmceCzPJbXJBBHEJz/pgBPmzSa2Ziulgs0AEkHzWFPfpb2uGTA==} + '@unocss/preset-attributify@66.7.3': + resolution: {integrity: sha512-FVPrxpqpfwmRYhDg1aviINLPy5s5igHNl1vFnKlcie4EmoTvMgPVoFDt41gSSX2JZNQ63jiVcngAJbbu6Rwjug==} - '@unocss/preset-icons@66.6.8': - resolution: {integrity: sha512-+zD5TNGZIXvVOMcvDIYaTXinffpDMERGj6Ch8WTtJluA6qHHBvRuFexoU2bY8nF1r0HZkYzNT9C+RujFSP+6TA==} + '@unocss/preset-icons@66.7.3': + resolution: {integrity: sha512-56iGKDX0tF/r4+Z49T3QMvMF9OcX4vs4Egn43HDDuFohNLpmK/krZLqKhO3W5+gMbwaQSGDYXrNKxcan5/20zQ==} - '@unocss/preset-mini@66.6.8': - resolution: {integrity: sha512-vAechrReO7LtWzFAeF54P7CintG2m65SlVlBsi1x2Ru7IdgUNJEHII0MfXUvf9r1x8vsIlhATyaqqtBVT6ps/w==} + '@unocss/preset-mini@66.7.3': + resolution: {integrity: sha512-kF8pj8Ws+Wuxz3of2gbnfhrZo1MCSnvGjWLGORCBvObNvJyCq/lvI/yCqiuvuVhe9UHq9/2E6Jd5Q/aWRe6T2Q==} - '@unocss/preset-tagify@66.6.8': - resolution: {integrity: sha512-cG6zBYswtWTpeQe/Lb1Bh+IzU4Ck+VI8rpYvrnvSGl22rJjAsXd+buB1P0PjyDpoe924rq0bLTayZ8r6Ayyyvw==} + '@unocss/preset-tagify@66.7.3': + resolution: {integrity: sha512-ElSdA7y2GrKSbF44GbXGpesGcLVPz+Wlv1LLoOtS49Zm+N71CvTB7u5RsXK07g95SvkDv6LNPYLzr1sR4T0VMg==} - '@unocss/preset-typography@66.6.8': - resolution: {integrity: sha512-wOApJpE0QfeOTWN5RuQts8zS6PXhTZIfjpt6cBj8dmv7+GlIQlwopxL7wcDb2wVwdCByuMvUbWl7nC3kz/iFTA==} + '@unocss/preset-typography@66.7.3': + resolution: {integrity: sha512-9EWpiOTYai/W8ql/bEV7xeKTKD5auc1epTM+cXZ2nQrW758IZXee3YYPDdXRyX5JAZuQZxWa4JTfA07A/IP5gw==} - '@unocss/preset-uno@66.6.8': - resolution: {integrity: sha512-z01Rw/rBuahRulwQRnobUFnGqyU+UenOLz72KGn4p0Yh8gBC44fPlNHsOWA0TNediHRJg33HptX4kx16HCVWDg==} + '@unocss/preset-uno@66.7.3': + resolution: {integrity: sha512-ruBpSJxsqokMwkilg6ZQmZ+ySK0VycyQDayrRZPN2OiWw2Pw62SeA/qxBCtCePsX8C8SB+2aCwyLg94ydS9d9w==} - '@unocss/preset-web-fonts@66.6.8': - resolution: {integrity: sha512-AgEHO8h0AkeOT57AOE9PS7dJOa5Rfr0gIyz/FxA7vJ/FwgQL70uX+bRW8kmoH81zcjo5xBP2IX3Z6A8VAOo3Vw==} + '@unocss/preset-web-fonts@66.7.3': + resolution: {integrity: sha512-qJVB0NzYyweZsQJ9EHwEBEvTsdKUuNp8BQst6kSEkyl5kGfb2sw2YauPWalH+g0QPBJAmUXkL+iwK6zmEJLEeQ==} - '@unocss/preset-wind3@66.6.8': - resolution: {integrity: sha512-WNTeDAYCatmEFjBJ4itUmz0TElBvNFqjh5i2/ianDJO/vkd+IYUb03jEPLUppVlvMhy8bN8AunP0AtW3Xf2psA==} + '@unocss/preset-wind3@66.7.3': + resolution: {integrity: sha512-kzigcOkHw1BMhHOf5apW1wYijAh9ho86KF0zlg/NOEfAPm29WjyCnVH3M2w9QJajRbLlNm4PjsaIQ6EtbGTQlQ==} - '@unocss/preset-wind4@66.6.8': - resolution: {integrity: sha512-CheOm7KXOsTI5t4RXgeYz95CO5p589F6jsyYp+inOCk4N0/d+DWiDHrQ+V0x0HWs3JXWlD+/Va/yXjlc3o2sIw==} + '@unocss/preset-wind4@66.7.3': + resolution: {integrity: sha512-fTPwgOdQB7ckGYggFYSEQ/9j901i+R62c0yuV4WIf2imV9vkbHkFrCXnz75MDhLKU2RA8KXfVVYNQTg5veD+tw==} - '@unocss/preset-wind@66.6.8': - resolution: {integrity: sha512-F0mdmwK/HelYOgBRMHl+Yx/VyARCQJtPlcgPBejI3E9ZWOZlKS7hvPqPrgvS63WTGMHgM3/22cGuYYFjpi/ugA==} + '@unocss/preset-wind@66.7.3': + resolution: {integrity: sha512-Uwnni+FrYFlYhDIe6/8IwUUeTQMTwvOmqyxNIjz4mOknMALq5IeuS5WCmq3AI8NqME77xgYPeW9Qx4bGzCyjfQ==} - '@unocss/rule-utils@66.6.8': - resolution: {integrity: sha512-WR35L07mLP6PElD4hlUHo5KbQ48uz2HT/XCuJyAsHP+15Gv6539hPWA5SresPuva9r8rl+PeGIgMSIKf4A5Ihw==} - engines: {node: '>=14'} + '@unocss/rule-utils@66.7.3': + resolution: {integrity: sha512-DKg1Rr/pxc5owCbFTpF1hXGoSqZjX7EzgfOkgO9R0VDnsufXIf776xUw7I3PWKXMMdC3SLnY6jT9bhlnZ6aM7w==} - '@unocss/transformer-attributify-jsx@66.6.8': - resolution: {integrity: sha512-g+7lvm+8V1MnJ21ialTxFBonCTtenn/KcZQbm0JfvQjgG+KuuSnt3BGEcXAHQZu3eBDGuJuasTHiXWwzCYIRBQ==} + '@unocss/transformer-attributify-jsx@66.7.3': + resolution: {integrity: sha512-BvfmYqFZram1lzffnQdSUhSsufrCfJdAakkQqgdTkrrt7+ETHHyOq9rCxo0DvOEpEv5/BvvLCz3KIgksVsvoBw==} - '@unocss/transformer-compile-class@66.6.8': - resolution: {integrity: sha512-37dFuzgYo8ki033KmuvyZXugQRVH1c3+/z5kcWLPhcMR8UJscAtjgRx80S1UvWup2q6TPxPpmy/rMbqWvs3jfg==} + '@unocss/transformer-compile-class@66.7.3': + resolution: {integrity: sha512-l/0aG2fL4KLJHmeJedjod9qiJvomvgFAKaC5WPziZdCiVcBo0x29Ca7BgS/AbRj5cw4TEaqS2Tq4GszzqJH7WA==} - '@unocss/transformer-directives@66.6.8': - resolution: {integrity: sha512-9hC3mQ8eycliW/igI9le0LovTIMBKoL6crucTkr4MmWuNqICMvNxTmGj5Xh64olBPnascevFwam6xsy+J1lX4Q==} + '@unocss/transformer-directives@66.7.3': + resolution: {integrity: sha512-A4LriOvgWqb4quldiadFe6WOTSuNfHDpCXf9ym4piEKpVSHkZ/Dybm8NAJeC+GtCJXwzVnG4okCYS7r5igFWGg==} - '@unocss/transformer-variant-group@66.6.8': - resolution: {integrity: sha512-+t7gJDW3W3z3/f8zBf0DfV2UZyGyFOwG5CIsIj5ofu3VJ91mKD/5ZAH8fD3cryXCBSqslj4yv+8R+BLV07T5AA==} + '@unocss/transformer-variant-group@66.7.3': + resolution: {integrity: sha512-fCDQlx/lAxcLmJBMrxkJ9DrpZZizw2FOhbTPVQMvxPFj7lNTJaT8Byk+wG6Cp7NfeTn2uu+swCZeg0FIau+E4g==} - '@unocss/vite@66.6.8': - resolution: {integrity: sha512-bXfEnEHdW7zTGLIYU16MsfKSFy3Q47Pevhrt5f9fOGzC4UI1JGkkoQSfoFpXZGliDrhoSFK4Msz9Jt43Ta4j+w==} + '@unocss/vite@66.7.3': + resolution: {integrity: sha512-16EQ7j1kIQpapEP1jVt3TwSrLTmjToMzJvvpAfmm8cAaKB1YwSPDOuLb2z7FwrO8ddAEaDJUJG9SGcU9qCoB2Q==} peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 + vite: ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 '@vitejs/plugin-legacy@5.3.2': resolution: {integrity: sha512-8moCOrIMaZ/Rjln0Q6GsH6s8fAt1JOI3k8nmfX4tXUxE5KAExVctSyOBk+A25GClsdSWqIk2yaUthH3KJ2X4tg==} @@ -2748,23 +2725,29 @@ packages: '@vue/compiler-core@3.5.32': resolution: {integrity: sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==} + '@vue/compiler-core@3.5.39': + resolution: {integrity: sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw==} + '@vue/compiler-dom@3.4.21': resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} '@vue/compiler-dom@3.5.32': resolution: {integrity: sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==} + '@vue/compiler-dom@3.5.39': + resolution: {integrity: sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg==} + '@vue/compiler-sfc@3.4.21': resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} - '@vue/compiler-sfc@3.5.32': - resolution: {integrity: sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==} + '@vue/compiler-sfc@3.5.39': + resolution: {integrity: sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg==} '@vue/compiler-ssr@3.4.21': resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} - '@vue/compiler-ssr@3.5.32': - resolution: {integrity: sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==} + '@vue/compiler-ssr@3.5.39': + resolution: {integrity: sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -2789,24 +2772,24 @@ packages: typescript: optional: true - '@vue/reactivity@3.5.32': - resolution: {integrity: sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==} + '@vue/reactivity@3.5.39': + resolution: {integrity: sha512-TpsuBJ9gGlZa5d23XcM2y8EXanz9dZeVDQBXRwzy46ItgvM+rWpzs+UVM0wcRLxGvcav0HE5jz2gNL53xlRAog==} - '@vue/runtime-core@3.5.32': - resolution: {integrity: sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==} + '@vue/runtime-core@3.5.39': + resolution: {integrity: sha512-9GLtNyRvPAUMbX+7ono0RC2j0guo2LXVi8LvcmAooImACUKm0oFf0jjwbX8/H0AE/t1nxhAkn8RSl9PMCzzxZw==} - '@vue/runtime-dom@3.5.32': - resolution: {integrity: sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==} + '@vue/runtime-dom@3.5.39': + resolution: {integrity: sha512-7Y6aAGboKcXAZ3ECuUy7RrS5yy2r47dhTp2SKaJmYxjopImaVFaNa5Ne66NwGovsrxVAl5S5rwc7m22UG7Lmww==} '@vue/server-renderer@3.4.21': resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} peerDependencies: vue: 3.4.21 - '@vue/server-renderer@3.5.32': - resolution: {integrity: sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==} + '@vue/server-renderer@3.5.39': + resolution: {integrity: sha512-yZSakiAGw85rZfG7UM8akMnIF+FmeiNk47uvHf2nVBBSe+dIKUhZuZq9+XgJhbV3nS5Z4ALH23/MpXofW+mbcw==} peerDependencies: - vue: 3.5.32 + vue: 3.5.39 '@vue/shared@3.4.21': resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} @@ -2814,15 +2797,20 @@ packages: '@vue/shared@3.5.32': resolution: {integrity: sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==} + '@vue/shared@3.5.39': + resolution: {integrity: sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==} + '@vueuse/core@10.11.1': resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} - '@vueuse/core@12.0.0': - resolution: {integrity: sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==} - '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} + '@vueuse/core@14.3.0': + resolution: {integrity: sha512-aHfz47g0ZhMtTVHmIzMVpJy8ePhhOy68GY5bv110+5DVtZ+W7BsOx+m61UNQqfrWyPztIHIanWa3E2tib3NFIw==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/integrations@12.8.2': resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} peerDependencies: @@ -2867,21 +2855,23 @@ packages: '@vueuse/metadata@10.11.1': resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} - '@vueuse/metadata@12.0.0': - resolution: {integrity: sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==} - '@vueuse/metadata@12.8.2': resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} + '@vueuse/metadata@14.3.0': + resolution: {integrity: sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==} + '@vueuse/shared@10.11.1': resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} - '@vueuse/shared@12.0.0': - resolution: {integrity: sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==} - '@vueuse/shared@12.8.2': resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} + '@vueuse/shared@14.3.0': + resolution: {integrity: sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==} + peerDependencies: + vue: ^3.5.0 + accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -2900,6 +2890,10 @@ packages: resolution: {integrity: sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==} engines: {node: '>=12.0'} + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} @@ -2948,8 +2942,8 @@ packages: peerDependencies: postcss: ^8.1.0 - axios@1.15.0: - resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} + axios@1.18.1: + resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==} babel-plugin-polyfill-corejs2@0.4.17: resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} @@ -3295,10 +3289,10 @@ packages: electron-to-chromium@1.5.344: resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} - element-plus@2.13.7: - resolution: {integrity: sha512-XdHATFZOyzVFL1DaHQ90IOJQSg9UnSAV+bhDW+YB5UoZ0Hxs50mwqjqfwXkuwpSag+VXXizVcErBR6Movo5daw==} + element-plus@2.14.2: + resolution: {integrity: sha512-eNH9uP3wQoNqieEIHXiNvIVv+zO5sZDU0CAZq5b0zqSN06DD0/V9xIq1R/qm3rw5k3nBTM1JvpxhCfRbaFLzDQ==} peerDependencies: - vue: ^3.3.0 + vue: ^3.3.7 emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -3490,8 +3484,8 @@ packages: focus-trap@7.8.0: resolution: {integrity: sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -3544,8 +3538,8 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.7: - resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -3557,7 +3551,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global@4.4.0: resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} @@ -3627,6 +3621,10 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -3651,6 +3649,9 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3711,8 +3712,8 @@ packages: jimp@0.10.3: resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} - jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true jpeg-js@0.3.7: @@ -3806,28 +3807,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} @@ -4040,8 +4037,8 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.15: + resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -4096,8 +4093,8 @@ packages: resolution: {integrity: sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==} engines: {node: '>=10', yarn: ^1.22.4} - oxc-parser@0.124.0: - resolution: {integrity: sha512-h07SFj/tp2U3cf3+LFX6MmOguQiM9ahwpGs0ZK5CGhgL8p4kk24etrJKsEzhXAvo7mfvoKTZooZ5MLKAPRmJ1g==} + oxc-parser@0.131.0: + resolution: {integrity: sha512-SJ3/7ZPbgie8dr5Z9BI/M51zZbpXba+hRSG0MDzVwMW5CRQg2fjYE0jHGlLX4eeiibGgC/mzoDFKSDHwVZEHRQ==} engines: {node: ^20.19.0 || >=22.12.0} oxc-walker@0.7.0: @@ -4305,8 +4302,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.9: - resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} preact@10.29.3: @@ -4443,8 +4440,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-rc.15: - resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} + rolldown@1.0.3: + resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -4608,14 +4605,18 @@ packages: tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - tinyexec@1.1.1: - resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} tinyglobby@0.2.16: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4648,8 +4649,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - turbo@2.9.6: - resolution: {integrity: sha512-+v2QJey7ZUeUiuigkU+uFfklvNUyPI2VO2vBpMYJA+a1hKFLFiKtUYlRHdb3P9CrAvMzi0upbjI4WT+zKtqkBg==} + turbo@2.10.0: + resolution: {integrity: sha512-o016H9PPtuH2deb3mh3Vci3Avfi9UYgM/RONQisY7HnloupP0IFSbFS3gFYJgFJP8nwBrByHWFQIDa8T2zIXPw==} hasBin: true type-check@0.4.0: @@ -4672,8 +4673,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@6.0.2: - resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true @@ -4683,6 +4684,9 @@ packages: ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + unconfig-core@7.5.0: resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} @@ -4734,13 +4738,12 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unocss@66.6.8: - resolution: {integrity: sha512-stq9FbxedTDkoWrxnNQNnPQXOaM6L2Lobq8HzjXdR2tMc55gtfqDArqL7TESfnN7qeZsIocNYCHLNA4DXq50YQ==} - engines: {node: '>=14'} + unocss@66.7.3: + resolution: {integrity: sha512-fxqGxDIAxzWhc6ZI6czx/xW/z8Z4UMiPs/XcwzR7WczTQjeHsrzvuk7UZLzMHUQRdLMEBCw1b1omUv9BpEzKOg==} peerDependencies: - '@unocss/astro': 66.6.8 - '@unocss/postcss': 66.6.8 - '@unocss/webpack': 66.6.8 + '@unocss/astro': 66.7.3 + '@unocss/postcss': 66.7.3 + '@unocss/webpack': 66.7.3 peerDependenciesMeta: '@unocss/astro': optional: true @@ -4866,8 +4869,8 @@ packages: terser: optional: true - vite@6.4.2: - resolution: {integrity: sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==} + vite@6.4.3: + resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -4906,13 +4909,13 @@ packages: yaml: optional: true - vite@8.0.8: - resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} + vite@8.0.16: + resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.0 + '@vitejs/devtools': ^0.1.18 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -4964,8 +4967,8 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - vue-component-type-helpers@3.2.6: - resolution: {integrity: sha512-O02tnvIfOQVmnvoWwuSydwRoHjZVt8UEBR+2p4rT35p8GAy5VTlWP8o5qXfJR/GWCN0nVZoYWsVUvx2jwgdBmQ==} + vue-component-type-helpers@3.3.5: + resolution: {integrity: sha512-Fe1jyPJoUGpJOYKOri44jduR7My4yYINOMJISuMAbmrs+L5LbIDUc8NTWZYY3EJLK0yPLuCmcd5zoCsE4k2/KA==} vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} @@ -5001,8 +5004,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.32: - resolution: {integrity: sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==} + vue@3.5.39: + resolution: {integrity: sha512-xmZCYabFGcirU8r0fTuvl/LICc1OU620rnqepaJDL/a141ZigkG7AyaxQLdqJ02ZRYzWe6YPaDHeQx7MfknQfA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -5209,7 +5212,7 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 - tinyexec: 1.1.1 + tinyexec: 1.2.4 '@antfu/utils@0.7.10': {} @@ -5297,7 +5300,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.28.5': dependencies: '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color @@ -5319,7 +5322,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 '@babel/helper-plugin-utils@7.28.6': {} @@ -5350,15 +5353,19 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helper-wrap-function@7.28.6': dependencies: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color @@ -5371,6 +5378,10 @@ snapshots: dependencies: '@babel/types': 7.29.0 + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -5865,7 +5876,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 esutils: 2.0.3 '@babel/runtime@7.29.2': {} @@ -5893,19 +5904,24 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@ctrl/tinycolor@4.2.0': {} '@dcloudio/types@3.4.31': {} - '@dcloudio/uni-app@3.0.0-4030620241128001(@dcloudio/types@3.4.31)(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-app@3.0.0-4030620241128001(@dcloudio/types@3.4.31)(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: '@dcloudio/types': 3.4.31 - '@dcloudio/uni-cloud': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) - '@dcloudio/uni-components': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cloud': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) + '@dcloudio/uni-components': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-i18n': 3.0.0-4030620241128001 - '@dcloudio/uni-push': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-push': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-shared': 3.0.0-4030620241128001 - '@dcloudio/uni-stat': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-stat': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@vue/shared': 3.4.21 transitivePeerDependencies: - '@nuxt/kit' @@ -5916,7 +5932,7 @@ snapshots: - ts-node - vue - '@dcloudio/uni-cli-shared@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-cli-shared@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.29.0 @@ -5933,10 +5949,10 @@ snapshots: '@vue/compiler-dom': 3.4.21 '@vue/compiler-sfc': 3.4.21 '@vue/compiler-ssr': 3.4.21 - '@vue/server-renderer': 3.4.21(vue@3.5.32(typescript@5.9.3)) + '@vue/server-renderer': 3.4.21(vue@3.5.39(typescript@5.9.3)) '@vue/shared': 3.4.21 adm-zip: 0.5.17 - autoprefixer: 10.5.0(postcss@8.5.9) + autoprefixer: 10.5.0(postcss@8.5.15) base64url: 3.0.1 chokidar: 3.6.0 compare-versions: 3.6.0 @@ -5956,14 +5972,14 @@ snapshots: module-alias: 2.3.4 os-locale-s-fix: 1.0.8-fix-1 picocolors: 1.1.1 - postcss-import: 14.1.0(postcss@8.5.9) - postcss-load-config: 3.1.4(postcss@8.5.9) - postcss-modules: 4.3.1(postcss@8.5.9) + postcss-import: 14.1.0(postcss@8.5.15) + postcss-load-config: 3.1.4(postcss@8.5.15) + postcss-modules: 4.3.1(postcss@8.5.15) postcss-selector-parser: 6.1.2 resolve: 1.22.12 source-map-js: 1.2.1 tapable: 2.3.3 - unplugin-auto-import: 0.18.6(@vueuse/core@12.8.2(typescript@5.9.3))(rollup@4.60.2) + unplugin-auto-import: 0.18.6(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(rollup@4.60.2) xregexp: 3.1.0 transitivePeerDependencies: - '@nuxt/kit' @@ -5974,9 +5990,9 @@ snapshots: - ts-node - vue - '@dcloudio/uni-cloud@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-cloud@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: - '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-i18n': 3.0.0-4030620241128001 '@dcloudio/uni-shared': 3.0.0-4030620241128001 '@vue/shared': 3.4.21 @@ -5990,10 +6006,10 @@ snapshots: - ts-node - vue - '@dcloudio/uni-components@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-components@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: - '@dcloudio/uni-cloud': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) - '@dcloudio/uni-h5': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cloud': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) + '@dcloudio/uni-h5': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-i18n': 3.0.0-4030620241128001 transitivePeerDependencies: - '@nuxt/kit' @@ -6004,14 +6020,14 @@ snapshots: - ts-node - vue - '@dcloudio/uni-h5-vite@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-h5-vite@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: - '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-shared': 3.0.0-4030620241128001 '@rollup/pluginutils': 5.3.0(rollup@4.60.2) '@vue/compiler-dom': 3.4.21 '@vue/compiler-sfc': 3.4.21 - '@vue/server-renderer': 3.4.21(vue@3.5.32(typescript@5.9.3)) + '@vue/server-renderer': 3.4.21(vue@3.5.39(typescript@5.9.3)) '@vue/shared': 3.4.21 debug: 4.4.3 fs-extra: 10.1.0 @@ -6026,26 +6042,26 @@ snapshots: - ts-node - vue - '@dcloudio/uni-h5-vue@3.0.0-4030620241128001(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-h5-vue@3.0.0-4030620241128001(vue@3.5.39(typescript@5.9.3))': dependencies: '@dcloudio/uni-shared': 3.0.0-4030620241128001 - '@vue/server-renderer': 3.4.21(vue@3.5.32(typescript@5.9.3)) + '@vue/server-renderer': 3.4.21(vue@3.5.39(typescript@5.9.3)) transitivePeerDependencies: - vue - '@dcloudio/uni-h5@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-h5@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: - '@dcloudio/uni-h5-vite': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) - '@dcloudio/uni-h5-vue': 3.0.0-4030620241128001(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-h5-vite': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) + '@dcloudio/uni-h5-vue': 3.0.0-4030620241128001(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-i18n': 3.0.0-4030620241128001 '@dcloudio/uni-shared': 3.0.0-4030620241128001 - '@vue/server-renderer': 3.4.21(vue@3.5.32(typescript@5.9.3)) + '@vue/server-renderer': 3.4.21(vue@3.5.39(typescript@5.9.3)) '@vue/shared': 3.4.21 debug: 4.4.3 localstorage-polyfill: 1.0.1 postcss-selector-parser: 6.1.2 safe-area-insets: 1.4.1 - vue-router: 4.6.4(vue@3.5.32(typescript@5.9.3)) + vue-router: 4.6.4(vue@3.5.39(typescript@5.9.3)) xmlhttprequest: 1.8.0 transitivePeerDependencies: - '@nuxt/kit' @@ -6058,12 +6074,12 @@ snapshots: '@dcloudio/uni-i18n@3.0.0-4030620241128001': {} - '@dcloudio/uni-mp-compiler@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-mp-compiler@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: '@babel/generator': 7.29.1 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.7 '@babel/types': 7.29.0 - '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-shared': 3.0.0-4030620241128001 '@vue/compiler-core': 3.4.21 '@vue/compiler-dom': 3.4.21 @@ -6078,11 +6094,11 @@ snapshots: - ts-node - vue - '@dcloudio/uni-mp-vite@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-mp-vite@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: - '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-i18n': 3.0.0-4030620241128001 - '@dcloudio/uni-mp-compiler': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-mp-compiler': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-mp-vue': 3.0.0-4030620241128001 '@dcloudio/uni-shared': 3.0.0-4030620241128001 '@vue/compiler-dom': 3.4.21 @@ -6103,10 +6119,10 @@ snapshots: '@dcloudio/uni-shared': 3.0.0-4030620241128001 '@vue/shared': 3.4.21 - '@dcloudio/uni-mp-weixin@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-mp-weixin@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: - '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) - '@dcloudio/uni-mp-vite': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-mp-vue': 3.0.0-4030620241128001 '@dcloudio/uni-shared': 3.0.0-4030620241128001 '@vue/shared': 3.4.21 @@ -6127,9 +6143,9 @@ snapshots: - utf-8-validate - vue - '@dcloudio/uni-push@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-push@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: - '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) transitivePeerDependencies: - '@nuxt/kit' - '@vueuse/core' @@ -6143,9 +6159,9 @@ snapshots: dependencies: '@vue/shared': 3.4.21 - '@dcloudio/uni-stat@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/uni-stat@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3))': dependencies: - '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-shared': 3.0.0-4030620241128001 debug: 4.4.3 transitivePeerDependencies: @@ -6157,17 +6173,17 @@ snapshots: - ts-node - vue - '@dcloudio/vite-plugin-uni@3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': + '@dcloudio/vite-plugin-uni@3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@5.9.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) - '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@12.8.2(typescript@5.9.3))(postcss@8.5.9)(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)) + '@dcloudio/uni-cli-shared': 3.0.0-4030620241128001(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(postcss@8.5.15)(rollup@4.60.2)(vue@3.5.39(typescript@5.9.3)) '@dcloudio/uni-shared': 3.0.0-4030620241128001 '@rollup/pluginutils': 5.3.0(rollup@4.60.2) - '@vitejs/plugin-legacy': 5.3.2(terser@5.46.2)(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) - '@vitejs/plugin-vue': 5.1.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) - '@vitejs/plugin-vue-jsx': 3.1.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + '@vitejs/plugin-legacy': 5.3.2(terser@5.46.2)(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) + '@vitejs/plugin-vue': 5.1.0(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@5.9.3)) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@5.9.3)) '@vue/compiler-core': 3.4.21 '@vue/compiler-dom': 3.4.21 '@vue/compiler-sfc': 3.4.21 @@ -6183,8 +6199,8 @@ snapshots: magic-string: 0.30.21 picocolors: 1.1.1 terser: 5.46.2 - unplugin-auto-import: 0.18.6(@vueuse/core@12.8.2(typescript@5.9.3))(rollup@4.60.2) - vite: 6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + unplugin-auto-import: 0.18.6(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(rollup@4.60.2) + vite: 6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - '@nuxt/kit' - '@vueuse/core' @@ -6218,21 +6234,21 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@element-plus/icons-vue@2.3.2(vue@3.5.32(typescript@5.9.3))': + '@element-plus/icons-vue@2.3.2(vue@3.5.39(typescript@5.9.3))': dependencies: - vue: 3.5.32(typescript@5.9.3) + vue: 3.5.39(typescript@5.9.3) - '@element-plus/icons-vue@2.3.2(vue@3.5.32(typescript@6.0.2))': + '@element-plus/icons-vue@2.3.2(vue@3.5.39(typescript@6.0.3))': dependencies: - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) - '@emnapi/core@1.9.2': + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.9.2': + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 optional: true @@ -6588,11 +6604,11 @@ snapshots: '@iconify/types@2.0.0': {} - '@iconify/utils@3.1.0': + '@iconify/utils@3.1.3': dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/types': 2.0.0 - mlly: 1.8.2 + import-meta-resolve: 4.2.0 '@intlify/core-base@11.3.2': dependencies: @@ -6998,11 +7014,11 @@ snapshots: '@napi-rs/canvas-win32-x64-msvc': 0.1.100 optional: true - '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@tybys/wasm-util': 0.10.1 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.3 optional: true '@nodelib/fs.scandir@2.1.5': @@ -7017,72 +7033,73 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-parser/binding-android-arm-eabi@0.124.0': + '@oxc-parser/binding-android-arm-eabi@0.131.0': optional: true - '@oxc-parser/binding-android-arm64@0.124.0': + '@oxc-parser/binding-android-arm64@0.131.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.124.0': + '@oxc-parser/binding-darwin-arm64@0.131.0': optional: true - '@oxc-parser/binding-darwin-x64@0.124.0': + '@oxc-parser/binding-darwin-x64@0.131.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.124.0': + '@oxc-parser/binding-freebsd-x64@0.131.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.131.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.131.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.124.0': + '@oxc-parser/binding-linux-arm64-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.124.0': + '@oxc-parser/binding-linux-arm64-musl@0.131.0': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.124.0': + '@oxc-parser/binding-linux-riscv64-musl@0.131.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.124.0': + '@oxc-parser/binding-linux-s390x-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.124.0': + '@oxc-parser/binding-linux-x64-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.124.0': + '@oxc-parser/binding-linux-x64-musl@0.131.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.124.0': + '@oxc-parser/binding-openharmony-arm64@0.131.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@oxc-parser/binding-wasm32-wasi@0.131.0': dependencies: - '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.124.0': + '@oxc-parser/binding-win32-arm64-msvc@0.131.0': optional: true - '@oxc-parser/binding-win32-ia32-msvc@0.124.0': + '@oxc-parser/binding-win32-ia32-msvc@0.131.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.124.0': + '@oxc-parser/binding-win32-x64-msvc@0.131.0': optional: true - '@oxc-project/types@0.124.0': {} + '@oxc-project/types@0.131.0': {} + + '@oxc-project/types@0.133.0': {} '@polka/url@1.0.0-next.29': {} @@ -7090,57 +7107,55 @@ snapshots: dependencies: quansync: 1.0.0 - '@rolldown/binding-android-arm64@1.0.0-rc.15': + '@rolldown/binding-android-arm64@1.0.3': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.15': + '@rolldown/binding-darwin-arm64@1.0.3': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.15': + '@rolldown/binding-darwin-x64@1.0.3': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.15': + '@rolldown/binding-freebsd-x64@1.0.3': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-arm64-gnu@1.0.3': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': + '@rolldown/binding-linux-arm64-musl@1.0.3': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-ppc64-gnu@1.0.3': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-s390x-gnu@1.0.3': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': + '@rolldown/binding-linux-x64-gnu@1.0.3': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': + '@rolldown/binding-linux-x64-musl@1.0.3': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': + '@rolldown/binding-openharmony-arm64@1.0.3': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': + '@rolldown/binding-wasm32-wasi@1.0.3': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': + '@rolldown/binding-win32-arm64-msvc@1.0.3': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': + '@rolldown/binding-win32-x64-msvc@1.0.3': optional: true - '@rolldown/pluginutils@1.0.0-rc.15': {} - '@rolldown/pluginutils@1.0.1': {} '@rollup/pluginutils@5.3.0(rollup@4.60.2)': @@ -7268,82 +7283,82 @@ snapshots: '@sxzz/popperjs-es@2.11.8': {} - '@tauri-apps/api@2.10.1': {} + '@tauri-apps/api@2.11.1': {} - '@tauri-apps/cli-darwin-arm64@2.10.1': + '@tauri-apps/cli-darwin-arm64@2.11.3': optional: true - '@tauri-apps/cli-darwin-x64@2.10.1': + '@tauri-apps/cli-darwin-x64@2.11.3': optional: true - '@tauri-apps/cli-linux-arm-gnueabihf@2.10.1': + '@tauri-apps/cli-linux-arm-gnueabihf@2.11.3': optional: true - '@tauri-apps/cli-linux-arm64-gnu@2.10.1': + '@tauri-apps/cli-linux-arm64-gnu@2.11.3': optional: true - '@tauri-apps/cli-linux-arm64-musl@2.10.1': + '@tauri-apps/cli-linux-arm64-musl@2.11.3': optional: true - '@tauri-apps/cli-linux-riscv64-gnu@2.10.1': + '@tauri-apps/cli-linux-riscv64-gnu@2.11.3': optional: true - '@tauri-apps/cli-linux-x64-gnu@2.10.1': + '@tauri-apps/cli-linux-x64-gnu@2.11.3': optional: true - '@tauri-apps/cli-linux-x64-musl@2.10.1': + '@tauri-apps/cli-linux-x64-musl@2.11.3': optional: true - '@tauri-apps/cli-win32-arm64-msvc@2.10.1': + '@tauri-apps/cli-win32-arm64-msvc@2.11.3': optional: true - '@tauri-apps/cli-win32-ia32-msvc@2.10.1': + '@tauri-apps/cli-win32-ia32-msvc@2.11.3': optional: true - '@tauri-apps/cli-win32-x64-msvc@2.10.1': + '@tauri-apps/cli-win32-x64-msvc@2.11.3': optional: true - '@tauri-apps/cli@2.10.1': + '@tauri-apps/cli@2.11.3': optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 2.10.1 - '@tauri-apps/cli-darwin-x64': 2.10.1 - '@tauri-apps/cli-linux-arm-gnueabihf': 2.10.1 - '@tauri-apps/cli-linux-arm64-gnu': 2.10.1 - '@tauri-apps/cli-linux-arm64-musl': 2.10.1 - '@tauri-apps/cli-linux-riscv64-gnu': 2.10.1 - '@tauri-apps/cli-linux-x64-gnu': 2.10.1 - '@tauri-apps/cli-linux-x64-musl': 2.10.1 - '@tauri-apps/cli-win32-arm64-msvc': 2.10.1 - '@tauri-apps/cli-win32-ia32-msvc': 2.10.1 - '@tauri-apps/cli-win32-x64-msvc': 2.10.1 - - '@tauri-apps/plugin-dialog@2.7.0': - dependencies: - '@tauri-apps/api': 2.10.1 + '@tauri-apps/cli-darwin-arm64': 2.11.3 + '@tauri-apps/cli-darwin-x64': 2.11.3 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.11.3 + '@tauri-apps/cli-linux-arm64-gnu': 2.11.3 + '@tauri-apps/cli-linux-arm64-musl': 2.11.3 + '@tauri-apps/cli-linux-riscv64-gnu': 2.11.3 + '@tauri-apps/cli-linux-x64-gnu': 2.11.3 + '@tauri-apps/cli-linux-x64-musl': 2.11.3 + '@tauri-apps/cli-win32-arm64-msvc': 2.11.3 + '@tauri-apps/cli-win32-ia32-msvc': 2.11.3 + '@tauri-apps/cli-win32-x64-msvc': 2.11.3 + + '@tauri-apps/plugin-dialog@2.7.1': + dependencies: + '@tauri-apps/api': 2.11.1 '@tauri-apps/plugin-shell@2.3.5': dependencies: - '@tauri-apps/api': 2.10.1 + '@tauri-apps/api': 2.11.1 - '@turbo/darwin-64@2.9.6': + '@turbo/darwin-64@2.10.0': optional: true - '@turbo/darwin-arm64@2.9.6': + '@turbo/darwin-arm64@2.10.0': optional: true - '@turbo/linux-64@2.9.6': + '@turbo/linux-64@2.10.0': optional: true - '@turbo/linux-arm64@2.9.6': + '@turbo/linux-arm64@2.10.0': optional: true - '@turbo/windows-64@2.9.6': + '@turbo/windows-64@2.10.0': optional: true - '@turbo/windows-arm64@2.9.6': + '@turbo/windows-arm64@2.10.0': optional: true - '@tybys/wasm-util@0.10.1': + '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 optional: true @@ -7388,34 +7403,34 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@6.0.2))(eslint@8.57.1)(typescript@6.0.2)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@6.0.3))(eslint@8.57.1)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@6.0.2) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@6.0.3) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@6.0.2) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@6.0.2) + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@6.0.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 7.18.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@6.0.2) + ts-api-utils: 1.4.3(typescript@6.0.3) optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@6.0.2)': + '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@6.0.3) '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.4.3 eslint: 8.57.1 optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -7424,21 +7439,21 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@6.0.2)': + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@6.0.2) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@6.0.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@6.0.3) debug: 4.4.3 eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@6.0.2) + ts-api-utils: 1.4.3(typescript@6.0.3) optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@6.0.2)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 @@ -7447,18 +7462,18 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.9 semver: 7.7.4 - ts-api-utils: 1.4.3(typescript@6.0.2) + ts-api-utils: 1.4.3(typescript@6.0.3) optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@6.0.2)': + '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@6.0.3) eslint: 8.57.1 transitivePeerDependencies: - supports-color @@ -7471,14 +7486,14 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@unocss/cli@66.6.8': + '@unocss/cli@66.7.3': dependencies: '@jridgewell/remapping': 2.3.5 - '@unocss/config': 66.6.8 - '@unocss/core': 66.6.8 - '@unocss/preset-wind3': 66.6.8 - '@unocss/preset-wind4': 66.6.8 - '@unocss/transformer-directives': 66.6.8 + '@unocss/config': 66.7.3 + '@unocss/core': 66.7.3 + '@unocss/preset-wind3': 66.7.3 + '@unocss/preset-wind4': 66.7.3 + '@unocss/transformer-directives': 66.7.3 cac: 7.0.0 chokidar: 5.0.0 colorette: 2.0.20 @@ -7486,124 +7501,121 @@ snapshots: magic-string: 0.30.21 pathe: 2.0.3 perfect-debounce: 2.1.0 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 unplugin-utils: 0.3.1 - '@unocss/config@66.6.8': + '@unocss/config@66.7.3': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.3 colorette: 2.0.20 consola: 3.4.2 unconfig: 7.5.0 - '@unocss/core@66.6.8': {} + '@unocss/core@66.7.3': {} - '@unocss/extractor-arbitrary-variants@66.6.8': + '@unocss/extractor-arbitrary-variants@66.7.3': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.3 - '@unocss/inspector@66.6.8': + '@unocss/inspector@66.7.3': dependencies: - '@unocss/core': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.3 + '@unocss/rule-utils': 66.7.3 colorette: 2.0.20 gzip-size: 6.0.0 sirv: 3.0.2 - '@unocss/preset-attributify@66.6.8': + '@unocss/preset-attributify@66.7.3': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.3 - '@unocss/preset-icons@66.6.8': + '@unocss/preset-icons@66.7.3': dependencies: - '@iconify/utils': 3.1.0 - '@unocss/core': 66.6.8 + '@iconify/utils': 3.1.3 + '@unocss/core': 66.7.3 ofetch: 1.5.1 - '@unocss/preset-mini@66.6.8': + '@unocss/preset-mini@66.7.3': dependencies: - '@unocss/core': 66.6.8 - '@unocss/extractor-arbitrary-variants': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.3 + '@unocss/extractor-arbitrary-variants': 66.7.3 + '@unocss/rule-utils': 66.7.3 - '@unocss/preset-tagify@66.6.8': + '@unocss/preset-tagify@66.7.3': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.3 - '@unocss/preset-typography@66.6.8': + '@unocss/preset-typography@66.7.3': dependencies: - '@unocss/core': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.3 + '@unocss/rule-utils': 66.7.3 - '@unocss/preset-uno@66.6.8': + '@unocss/preset-uno@66.7.3': dependencies: - '@unocss/core': 66.6.8 - '@unocss/preset-wind3': 66.6.8 + '@unocss/core': 66.7.3 + '@unocss/preset-wind3': 66.7.3 - '@unocss/preset-web-fonts@66.6.8': + '@unocss/preset-web-fonts@66.7.3': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.3 ofetch: 1.5.1 - '@unocss/preset-wind3@66.6.8': + '@unocss/preset-wind3@66.7.3': dependencies: - '@unocss/core': 66.6.8 - '@unocss/preset-mini': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.3 + '@unocss/preset-mini': 66.7.3 + '@unocss/rule-utils': 66.7.3 - '@unocss/preset-wind4@66.6.8': + '@unocss/preset-wind4@66.7.3': dependencies: - '@unocss/core': 66.6.8 - '@unocss/extractor-arbitrary-variants': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.3 + '@unocss/extractor-arbitrary-variants': 66.7.3 + '@unocss/rule-utils': 66.7.3 - '@unocss/preset-wind@66.6.8': + '@unocss/preset-wind@66.7.3': dependencies: - '@unocss/core': 66.6.8 - '@unocss/preset-wind3': 66.6.8 + '@unocss/core': 66.7.3 + '@unocss/preset-wind3': 66.7.3 - '@unocss/rule-utils@66.6.8': + '@unocss/rule-utils@66.7.3': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.3 magic-string: 0.30.21 - '@unocss/transformer-attributify-jsx@66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@unocss/transformer-attributify-jsx@66.7.3': dependencies: - '@unocss/core': 66.6.8 - oxc-parser: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - oxc-walker: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@unocss/core': 66.7.3 + oxc-parser: 0.131.0 + oxc-walker: 0.7.0(oxc-parser@0.131.0) - '@unocss/transformer-compile-class@66.6.8': + '@unocss/transformer-compile-class@66.7.3': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.3 - '@unocss/transformer-directives@66.6.8': + '@unocss/transformer-directives@66.7.3': dependencies: - '@unocss/core': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.3 + '@unocss/rule-utils': 66.7.3 css-tree: 3.2.1 - '@unocss/transformer-variant-group@66.6.8': + '@unocss/transformer-variant-group@66.7.3': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.3 - '@unocss/vite@66.6.8(vite@8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': + '@unocss/vite@66.7.3(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@jridgewell/remapping': 2.3.5 - '@unocss/config': 66.6.8 - '@unocss/core': 66.6.8 - '@unocss/inspector': 66.6.8 + '@unocss/config': 66.7.3 + '@unocss/core': 66.7.3 + '@unocss/inspector': 66.7.3 chokidar: 5.0.0 magic-string: 0.30.21 pathe: 2.0.3 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 unplugin-utils: 0.3.1 - vite: 8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - '@vitejs/plugin-legacy@5.3.2(terser@5.46.2)(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-legacy@5.3.2(terser@5.46.2)(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/preset-env': 7.29.2(@babel/core@7.29.0) @@ -7614,40 +7626,40 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.2 - vite: 6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + vite: 6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@3.1.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': + '@vitejs/plugin-vue-jsx@3.1.0(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@5.9.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0) - vite: 6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - vue: 3.5.32(typescript@5.9.3) + vite: 6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + vue: 3.5.39(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': + '@vitejs/plugin-vue@5.1.0(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@5.9.3))': dependencies: - vite: 6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - vue: 3.5.32(typescript@5.9.3) + vite: 6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + vue: 3.5.39(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.46.2))(vue@3.5.32(typescript@6.0.2))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.46.2))(vue@3.5.39(typescript@6.0.3))': dependencies: vite: 5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.46.2) - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) - '@vitejs/plugin-vue@5.2.4(vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@5.9.3))': dependencies: - vite: 6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - vue: 3.5.32(typescript@5.9.3) + vite: 6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + vue: 3.5.39(typescript@5.9.3) - '@vitejs/plugin-vue@6.0.7(vite@8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@6.0.2))': + '@vitejs/plugin-vue@6.0.7(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.39(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - vue: 3.5.32(typescript@6.0.2) + vite: 8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + vue: 3.5.39(typescript@6.0.3) '@volar/language-core@2.4.15': dependencies: @@ -7665,33 +7677,33 @@ snapshots: dependencies: katex: 0.16.47 - '@vue-flow/background@1.3.2(@vue-flow/core@1.48.2(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2))': + '@vue-flow/background@1.3.2(@vue-flow/core@1.48.2(vue@3.5.39(typescript@6.0.3)))(vue@3.5.39(typescript@6.0.3))': dependencies: - '@vue-flow/core': 1.48.2(vue@3.5.32(typescript@6.0.2)) - vue: 3.5.32(typescript@6.0.2) + '@vue-flow/core': 1.48.2(vue@3.5.39(typescript@6.0.3)) + vue: 3.5.39(typescript@6.0.3) - '@vue-flow/controls@1.1.3(@vue-flow/core@1.48.2(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2))': + '@vue-flow/controls@1.1.3(@vue-flow/core@1.48.2(vue@3.5.39(typescript@6.0.3)))(vue@3.5.39(typescript@6.0.3))': dependencies: - '@vue-flow/core': 1.48.2(vue@3.5.32(typescript@6.0.2)) - vue: 3.5.32(typescript@6.0.2) + '@vue-flow/core': 1.48.2(vue@3.5.39(typescript@6.0.3)) + vue: 3.5.39(typescript@6.0.3) - '@vue-flow/core@1.48.2(vue@3.5.32(typescript@6.0.2))': + '@vue-flow/core@1.48.2(vue@3.5.39(typescript@6.0.3))': dependencies: - '@vueuse/core': 10.11.1(vue@3.5.32(typescript@6.0.2)) + '@vueuse/core': 10.11.1(vue@3.5.39(typescript@6.0.3)) d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 d3-zoom: 3.0.0 - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) transitivePeerDependencies: - '@vue/composition-api' - '@vue-flow/minimap@1.5.4(@vue-flow/core@1.48.2(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2))': + '@vue-flow/minimap@1.5.4(@vue-flow/core@1.48.2(vue@3.5.39(typescript@6.0.3)))(vue@3.5.39(typescript@6.0.3))': dependencies: - '@vue-flow/core': 1.48.2(vue@3.5.32(typescript@6.0.2)) + '@vue-flow/core': 1.48.2(vue@3.5.39(typescript@6.0.3)) d3-selection: 3.0.0 d3-zoom: 3.0.0 - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) '@vue/babel-helper-vue-transform-on@1.5.0': {} @@ -7705,7 +7717,7 @@ snapshots: '@babel/types': 7.29.0 '@vue/babel-helper-vue-transform-on': 1.5.0 '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.0) - '@vue/shared': 3.5.32 + '@vue/shared': 3.5.39 optionalDependencies: '@babel/core': 7.29.0 transitivePeerDependencies: @@ -7717,8 +7729,8 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/parser': 7.29.2 - '@vue/compiler-sfc': 3.5.32 + '@babel/parser': 7.29.7 + '@vue/compiler-sfc': 3.5.39 transitivePeerDependencies: - supports-color @@ -7732,12 +7744,20 @@ snapshots: '@vue/compiler-core@3.5.32': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.7 '@vue/shared': 3.5.32 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 + '@vue/compiler-core@3.5.39': + dependencies: + '@babel/parser': 7.29.7 + '@vue/shared': 3.5.39 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + '@vue/compiler-dom@3.4.21': dependencies: '@vue/compiler-core': 3.4.21 @@ -7748,6 +7768,11 @@ snapshots: '@vue/compiler-core': 3.5.32 '@vue/shared': 3.5.32 + '@vue/compiler-dom@3.5.39': + dependencies: + '@vue/compiler-core': 3.5.39 + '@vue/shared': 3.5.39 + '@vue/compiler-sfc@3.4.21': dependencies: '@babel/parser': 7.29.2 @@ -7757,19 +7782,19 @@ snapshots: '@vue/shared': 3.4.21 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.9 + postcss: 8.5.15 source-map-js: 1.2.1 - '@vue/compiler-sfc@3.5.32': + '@vue/compiler-sfc@3.5.39': dependencies: - '@babel/parser': 7.29.2 - '@vue/compiler-core': 3.5.32 - '@vue/compiler-dom': 3.5.32 - '@vue/compiler-ssr': 3.5.32 - '@vue/shared': 3.5.32 + '@babel/parser': 7.29.7 + '@vue/compiler-core': 3.5.39 + '@vue/compiler-dom': 3.5.39 + '@vue/compiler-ssr': 3.5.39 + '@vue/shared': 3.5.39 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.9 + postcss: 8.5.15 source-map-js: 1.2.1 '@vue/compiler-ssr@3.4.21': @@ -7777,10 +7802,10 @@ snapshots: '@vue/compiler-dom': 3.4.21 '@vue/shared': 3.4.21 - '@vue/compiler-ssr@3.5.32': + '@vue/compiler-ssr@3.5.39': dependencies: - '@vue/compiler-dom': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/compiler-dom': 3.5.39 + '@vue/shared': 3.5.39 '@vue/compiler-vue2@2.7.16': dependencies: @@ -7820,7 +7845,7 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@vue/language-core@2.2.12(typescript@6.0.2)': + '@vue/language-core@2.2.12(typescript@6.0.3)': dependencies: '@volar/language-core': 2.4.15 '@vue/compiler-dom': 3.5.32 @@ -7831,142 +7856,119 @@ snapshots: muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 - '@vue/reactivity@3.5.32': + '@vue/reactivity@3.5.39': dependencies: - '@vue/shared': 3.5.32 + '@vue/shared': 3.5.39 - '@vue/runtime-core@3.5.32': + '@vue/runtime-core@3.5.39': dependencies: - '@vue/reactivity': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/reactivity': 3.5.39 + '@vue/shared': 3.5.39 - '@vue/runtime-dom@3.5.32': + '@vue/runtime-dom@3.5.39': dependencies: - '@vue/reactivity': 3.5.32 - '@vue/runtime-core': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/reactivity': 3.5.39 + '@vue/runtime-core': 3.5.39 + '@vue/shared': 3.5.39 csstype: 3.2.3 - '@vue/server-renderer@3.4.21(vue@3.5.32(typescript@5.9.3))': + '@vue/server-renderer@3.4.21(vue@3.5.39(typescript@5.9.3))': dependencies: '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 - vue: 3.5.32(typescript@5.9.3) + vue: 3.5.39(typescript@5.9.3) - '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@5.9.3))': + '@vue/server-renderer@3.5.39(vue@3.5.39(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.32 - '@vue/shared': 3.5.32 - vue: 3.5.32(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.39 + '@vue/shared': 3.5.39 + vue: 3.5.39(typescript@5.9.3) - '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@6.0.2))': + '@vue/server-renderer@3.5.39(vue@3.5.39(typescript@6.0.3))': dependencies: - '@vue/compiler-ssr': 3.5.32 - '@vue/shared': 3.5.32 - vue: 3.5.32(typescript@6.0.2) + '@vue/compiler-ssr': 3.5.39 + '@vue/shared': 3.5.39 + vue: 3.5.39(typescript@6.0.3) '@vue/shared@3.4.21': {} '@vue/shared@3.5.32': {} - '@vueuse/core@10.11.1(vue@3.5.32(typescript@6.0.2))': + '@vue/shared@3.5.39': {} + + '@vueuse/core@10.11.1(vue@3.5.39(typescript@6.0.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.32(typescript@6.0.2)) - vue-demi: 0.14.10(vue@3.5.32(typescript@6.0.2)) + '@vueuse/shared': 10.11.1(vue@3.5.39(typescript@6.0.3)) + vue-demi: 0.14.10(vue@3.5.39(typescript@6.0.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/core@12.0.0(typescript@5.9.3)': + '@vueuse/core@12.8.2(typescript@6.0.3)': dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 12.0.0 - '@vueuse/shared': 12.0.0(typescript@5.9.3) - vue: 3.5.32(typescript@5.9.3) - transitivePeerDependencies: - - typescript - - '@vueuse/core@12.0.0(typescript@6.0.2)': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 12.0.0 - '@vueuse/shared': 12.0.0(typescript@6.0.2) - vue: 3.5.32(typescript@6.0.2) + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 12.8.2 + '@vueuse/shared': 12.8.2(typescript@6.0.3) + vue: 3.5.39(typescript@6.0.3) transitivePeerDependencies: - typescript - '@vueuse/core@12.8.2(typescript@5.9.3)': + '@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 12.8.2 - '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.32(typescript@5.9.3) - transitivePeerDependencies: - - typescript - optional: true + '@vueuse/metadata': 14.3.0 + '@vueuse/shared': 14.3.0(vue@3.5.39(typescript@5.9.3)) + vue: 3.5.39(typescript@5.9.3) - '@vueuse/core@12.8.2(typescript@6.0.2)': + '@vueuse/core@14.3.0(vue@3.5.39(typescript@6.0.3))': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 12.8.2 - '@vueuse/shared': 12.8.2(typescript@6.0.2) - vue: 3.5.32(typescript@6.0.2) - transitivePeerDependencies: - - typescript + '@vueuse/metadata': 14.3.0 + '@vueuse/shared': 14.3.0(vue@3.5.39(typescript@6.0.3)) + vue: 3.5.39(typescript@6.0.3) - '@vueuse/integrations@12.8.2(async-validator@4.2.5)(axios@1.15.0)(focus-trap@7.8.0)(typescript@6.0.2)': + '@vueuse/integrations@12.8.2(async-validator@4.2.5)(axios@1.18.1)(focus-trap@7.8.0)(typescript@6.0.3)': dependencies: - '@vueuse/core': 12.8.2(typescript@6.0.2) - '@vueuse/shared': 12.8.2(typescript@6.0.2) - vue: 3.5.32(typescript@6.0.2) + '@vueuse/core': 12.8.2(typescript@6.0.3) + '@vueuse/shared': 12.8.2(typescript@6.0.3) + vue: 3.5.39(typescript@6.0.3) optionalDependencies: async-validator: 4.2.5 - axios: 1.15.0 + axios: 1.18.1 focus-trap: 7.8.0 transitivePeerDependencies: - typescript '@vueuse/metadata@10.11.1': {} - '@vueuse/metadata@12.0.0': {} - '@vueuse/metadata@12.8.2': {} - '@vueuse/shared@10.11.1(vue@3.5.32(typescript@6.0.2))': + '@vueuse/metadata@14.3.0': {} + + '@vueuse/shared@10.11.1(vue@3.5.39(typescript@6.0.3))': dependencies: - vue-demi: 0.14.10(vue@3.5.32(typescript@6.0.2)) + vue-demi: 0.14.10(vue@3.5.39(typescript@6.0.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/shared@12.0.0(typescript@5.9.3)': + '@vueuse/shared@12.8.2(typescript@6.0.3)': dependencies: - vue: 3.5.32(typescript@5.9.3) + vue: 3.5.39(typescript@6.0.3) transitivePeerDependencies: - typescript - '@vueuse/shared@12.0.0(typescript@6.0.2)': + '@vueuse/shared@14.3.0(vue@3.5.39(typescript@5.9.3))': dependencies: - vue: 3.5.32(typescript@6.0.2) - transitivePeerDependencies: - - typescript - - '@vueuse/shared@12.8.2(typescript@5.9.3)': - dependencies: - vue: 3.5.32(typescript@5.9.3) - transitivePeerDependencies: - - typescript - optional: true + vue: 3.5.39(typescript@5.9.3) - '@vueuse/shared@12.8.2(typescript@6.0.2)': + '@vueuse/shared@14.3.0(vue@3.5.39(typescript@6.0.3))': dependencies: - vue: 3.5.32(typescript@6.0.2) - transitivePeerDependencies: - - typescript + vue: 3.5.39(typescript@6.0.3) accepts@1.3.8: dependencies: @@ -7981,6 +7983,12 @@ snapshots: adm-zip@0.5.17: {} + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 @@ -8030,22 +8038,24 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.5.0(postcss@8.5.9): + autoprefixer@10.5.0(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001790 fraction.js: 5.3.4 picocolors: 1.1.1 - postcss: 8.5.9 + postcss: 8.5.15 postcss-value-parser: 4.2.0 - axios@1.15.0: + axios@1.18.1: dependencies: - follow-redirects: 1.15.11 + follow-redirects: 1.16.0 form-data: 4.0.5 + https-proxy-agent: 5.0.1 proxy-from-env: 2.1.0 transitivePeerDependencies: - debug + - supports-color babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: @@ -8163,7 +8173,7 @@ snapshots: centra@2.7.0: dependencies: - follow-redirects: 1.15.11 + follow-redirects: 1.16.0 transitivePeerDependencies: - debug @@ -8360,15 +8370,15 @@ snapshots: electron-to-chromium@1.5.344: {} - element-plus@2.13.7(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)): + element-plus@2.14.2(vue@3.5.39(typescript@5.9.3)): dependencies: '@ctrl/tinycolor': 4.2.0 - '@element-plus/icons-vue': 2.3.2(vue@3.5.32(typescript@5.9.3)) + '@element-plus/icons-vue': 2.3.2(vue@3.5.39(typescript@5.9.3)) '@floating-ui/dom': 1.7.6 '@popperjs/core': '@sxzz/popperjs-es@2.11.8' '@types/lodash': 4.17.24 '@types/lodash-es': 4.17.12 - '@vueuse/core': 12.0.0(typescript@5.9.3) + '@vueuse/core': 14.3.0(vue@3.5.39(typescript@5.9.3)) async-validator: 4.2.5 dayjs: 1.11.20 lodash: 4.18.1 @@ -8376,20 +8386,18 @@ snapshots: lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.18.1)(lodash@4.18.1) memoize-one: 6.0.0 normalize-wheel-es: 1.2.0 - vue: 3.5.32(typescript@5.9.3) - vue-component-type-helpers: 3.2.6 - transitivePeerDependencies: - - typescript + vue: 3.5.39(typescript@5.9.3) + vue-component-type-helpers: 3.3.5 - element-plus@2.13.7(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)): + element-plus@2.14.2(vue@3.5.39(typescript@6.0.3)): dependencies: '@ctrl/tinycolor': 4.2.0 - '@element-plus/icons-vue': 2.3.2(vue@3.5.32(typescript@6.0.2)) + '@element-plus/icons-vue': 2.3.2(vue@3.5.39(typescript@6.0.3)) '@floating-ui/dom': 1.7.6 '@popperjs/core': '@sxzz/popperjs-es@2.11.8' '@types/lodash': 4.17.24 '@types/lodash-es': 4.17.12 - '@vueuse/core': 12.0.0(typescript@6.0.2) + '@vueuse/core': 14.3.0(vue@3.5.39(typescript@6.0.3)) async-validator: 4.2.5 dayjs: 1.11.20 lodash: 4.18.1 @@ -8397,10 +8405,8 @@ snapshots: lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.18.1)(lodash@4.18.1) memoize-one: 6.0.0 normalize-wheel-es: 1.2.0 - vue: 3.5.32(typescript@6.0.2) - vue-component-type-helpers: 3.2.6 - transitivePeerDependencies: - - typescript + vue: 3.5.39(typescript@6.0.3) + vue-component-type-helpers: 3.3.5 emoji-regex-xs@1.0.0: {} @@ -8741,7 +8747,7 @@ snapshots: dependencies: tabbable: 6.5.0 - follow-redirects@1.15.11: {} + follow-redirects@1.16.0: {} form-data@4.0.5: dependencies: @@ -8794,7 +8800,7 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-tsconfig@4.13.7: + get-tsconfig@4.14.0: dependencies: resolve-pkg-maps: 1.0.0 optional: true @@ -8892,15 +8898,22 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 icss-replace-symbols@1.1.0: {} - icss-utils@5.1.0(postcss@8.5.9): + icss-utils@5.1.0(postcss@8.5.15): dependencies: - postcss: 8.5.9 + postcss: 8.5.15 ieee754@1.2.1: {} @@ -8911,6 +8924,8 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} inflight@1.0.6: @@ -8961,7 +8976,7 @@ snapshots: transitivePeerDependencies: - debug - jiti@2.6.1: {} + jiti@2.7.0: {} jpeg-js@0.3.7: {} @@ -9119,9 +9134,9 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-vue-next@0.468.0(vue@3.5.32(typescript@6.0.2)): + lucide-vue-next@0.468.0(vue@3.5.39(typescript@6.0.3)): dependencies: - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) magic-regexp@0.10.0: dependencies: @@ -9130,7 +9145,7 @@ snapshots: mlly: 1.8.2 regexp-tree: 0.1.27 type-level-regexp: 0.1.17 - ufo: 1.6.3 + ufo: 1.6.4 unplugin: 2.3.11 magic-string@0.30.21: @@ -9251,7 +9266,7 @@ snapshots: muggle-string@0.4.1: {} - nanoid@3.3.11: {} + nanoid@3.3.15: {} natural-compare@1.4.0: {} @@ -9275,7 +9290,7 @@ snapshots: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 - ufo: 1.6.3 + ufo: 1.6.4 omggif@1.0.10: {} @@ -9306,38 +9321,35 @@ snapshots: dependencies: lcid: 3.1.1 - oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): + oxc-parser@0.131.0: dependencies: - '@oxc-project/types': 0.124.0 + '@oxc-project/types': 0.131.0 optionalDependencies: - '@oxc-parser/binding-android-arm-eabi': 0.124.0 - '@oxc-parser/binding-android-arm64': 0.124.0 - '@oxc-parser/binding-darwin-arm64': 0.124.0 - '@oxc-parser/binding-darwin-x64': 0.124.0 - '@oxc-parser/binding-freebsd-x64': 0.124.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.124.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.124.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.124.0 - '@oxc-parser/binding-linux-arm64-musl': 0.124.0 - '@oxc-parser/binding-linux-ppc64-gnu': 0.124.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.124.0 - '@oxc-parser/binding-linux-riscv64-musl': 0.124.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.124.0 - '@oxc-parser/binding-linux-x64-gnu': 0.124.0 - '@oxc-parser/binding-linux-x64-musl': 0.124.0 - '@oxc-parser/binding-openharmony-arm64': 0.124.0 - '@oxc-parser/binding-wasm32-wasi': 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - '@oxc-parser/binding-win32-arm64-msvc': 0.124.0 - '@oxc-parser/binding-win32-ia32-msvc': 0.124.0 - '@oxc-parser/binding-win32-x64-msvc': 0.124.0 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - oxc-walker@0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)): + '@oxc-parser/binding-android-arm-eabi': 0.131.0 + '@oxc-parser/binding-android-arm64': 0.131.0 + '@oxc-parser/binding-darwin-arm64': 0.131.0 + '@oxc-parser/binding-darwin-x64': 0.131.0 + '@oxc-parser/binding-freebsd-x64': 0.131.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.131.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.131.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.131.0 + '@oxc-parser/binding-linux-arm64-musl': 0.131.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.131.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.131.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.131.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.131.0 + '@oxc-parser/binding-linux-x64-gnu': 0.131.0 + '@oxc-parser/binding-linux-x64-musl': 0.131.0 + '@oxc-parser/binding-openharmony-arm64': 0.131.0 + '@oxc-parser/binding-wasm32-wasi': 0.131.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.131.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.131.0 + '@oxc-parser/binding-win32-x64-msvc': 0.131.0 + + oxc-walker@0.7.0(oxc-parser@0.131.0): dependencies: magic-regexp: 0.10.0 - oxc-parser: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + oxc-parser: 0.131.0 p-limit@3.1.0: dependencies: @@ -9408,28 +9420,28 @@ snapshots: pify@2.3.0: {} - pinia-plugin-persistedstate@4.7.1(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2))): + pinia-plugin-persistedstate@4.7.1(pinia@3.0.4(typescript@6.0.3)(vue@3.5.39(typescript@6.0.3))): dependencies: defu: 6.1.7 optionalDependencies: - pinia: 3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)) + pinia: 3.0.4(typescript@6.0.3)(vue@3.5.39(typescript@6.0.3)) - pinia@2.3.1(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)): + pinia@2.3.1(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.32(typescript@5.9.3) - vue-demi: 0.14.10(vue@3.5.32(typescript@5.9.3)) + vue: 3.5.39(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.39(typescript@5.9.3)) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - '@vue/composition-api' - pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)): + pinia@3.0.4(typescript@6.0.3)(vue@3.5.39(typescript@6.0.3)): dependencies: '@vue/devtools-api': 7.7.9 - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 pixelmatch@4.0.2: dependencies: @@ -9449,51 +9461,51 @@ snapshots: pngjs@3.4.0: {} - postcss-import@14.1.0(postcss@8.5.9): + postcss-import@14.1.0(postcss@8.5.15): dependencies: - postcss: 8.5.9 + postcss: 8.5.15 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.12 - postcss-load-config@3.1.4(postcss@8.5.9): + postcss-load-config@3.1.4(postcss@8.5.15): dependencies: lilconfig: 2.1.0 yaml: 1.10.3 optionalDependencies: - postcss: 8.5.9 + postcss: 8.5.15 - postcss-modules-extract-imports@3.1.0(postcss@8.5.9): + postcss-modules-extract-imports@3.1.0(postcss@8.5.15): dependencies: - postcss: 8.5.9 + postcss: 8.5.15 - postcss-modules-local-by-default@4.2.0(postcss@8.5.9): + postcss-modules-local-by-default@4.2.0(postcss@8.5.15): dependencies: - icss-utils: 5.1.0(postcss@8.5.9) - postcss: 8.5.9 + icss-utils: 5.1.0(postcss@8.5.15) + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.9): + postcss-modules-scope@3.2.1(postcss@8.5.15): dependencies: - postcss: 8.5.9 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 - postcss-modules-values@4.0.0(postcss@8.5.9): + postcss-modules-values@4.0.0(postcss@8.5.15): dependencies: - icss-utils: 5.1.0(postcss@8.5.9) - postcss: 8.5.9 + icss-utils: 5.1.0(postcss@8.5.15) + postcss: 8.5.15 - postcss-modules@4.3.1(postcss@8.5.9): + postcss-modules@4.3.1(postcss@8.5.15): dependencies: generic-names: 4.0.0 icss-replace-symbols: 1.1.0 lodash.camelcase: 4.3.0 - postcss: 8.5.9 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.9) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.9) - postcss-modules-scope: 3.2.1(postcss@8.5.9) - postcss-modules-values: 4.0.0(postcss@8.5.9) + postcss: 8.5.15 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.15) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.15) + postcss-modules-scope: 3.2.1(postcss@8.5.15) + postcss-modules-values: 4.0.0(postcss@8.5.15) string-hash: 1.1.3 postcss-selector-parser@6.1.2: @@ -9508,9 +9520,9 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.9: + postcss@8.5.15: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.15 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -9627,26 +9639,26 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.15: + rolldown@1.0.3: dependencies: - '@oxc-project/types': 0.124.0 - '@rolldown/pluginutils': 1.0.0-rc.15 + '@oxc-project/types': 0.133.0 + '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.15 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.15 - '@rolldown/binding-darwin-x64': 1.0.0-rc.15 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.15 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.15 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.15 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.15 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.15 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.15 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.15 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.15 + '@rolldown/binding-android-arm64': 1.0.3 + '@rolldown/binding-darwin-arm64': 1.0.3 + '@rolldown/binding-darwin-x64': 1.0.3 + '@rolldown/binding-freebsd-x64': 1.0.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.3 + '@rolldown/binding-linux-arm64-gnu': 1.0.3 + '@rolldown/binding-linux-arm64-musl': 1.0.3 + '@rolldown/binding-linux-ppc64-gnu': 1.0.3 + '@rolldown/binding-linux-s390x-gnu': 1.0.3 + '@rolldown/binding-linux-x64-gnu': 1.0.3 + '@rolldown/binding-linux-x64-musl': 1.0.3 + '@rolldown/binding-openharmony-arm64': 1.0.3 + '@rolldown/binding-wasm32-wasi': 1.0.3 + '@rolldown/binding-win32-arm64-msvc': 1.0.3 + '@rolldown/binding-win32-x64-msvc': 1.0.3 rollup@4.60.2: dependencies: @@ -9846,13 +9858,18 @@ snapshots: tinycolor2@1.6.0: {} - tinyexec@1.1.1: {} + tinyexec@1.2.4: {} tinyglobby@0.2.16: dependencies: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -9863,9 +9880,9 @@ snapshots: trim-lines@3.0.1: {} - ts-api-utils@1.4.3(typescript@6.0.2): + ts-api-utils@1.4.3(typescript@6.0.3): dependencies: - typescript: 6.0.2 + typescript: 6.0.3 tslib@2.3.0: {} @@ -9875,19 +9892,19 @@ snapshots: tsx@4.21.0: dependencies: esbuild: 0.27.7 - get-tsconfig: 4.13.7 + get-tsconfig: 4.14.0 optionalDependencies: fsevents: 2.3.3 optional: true - turbo@2.9.6: + turbo@2.10.0: optionalDependencies: - '@turbo/darwin-64': 2.9.6 - '@turbo/darwin-arm64': 2.9.6 - '@turbo/linux-64': 2.9.6 - '@turbo/linux-arm64': 2.9.6 - '@turbo/windows-64': 2.9.6 - '@turbo/windows-arm64': 2.9.6 + '@turbo/darwin-64': 2.10.0 + '@turbo/darwin-arm64': 2.10.0 + '@turbo/linux-64': 2.10.0 + '@turbo/linux-arm64': 2.10.0 + '@turbo/windows-64': 2.10.0 + '@turbo/windows-arm64': 2.10.0 type-check@0.4.0: dependencies: @@ -9904,12 +9921,14 @@ snapshots: typescript@5.9.3: {} - typescript@6.0.2: {} + typescript@6.0.3: {} uc.micro@2.1.0: {} ufo@1.6.3: {} + ufo@1.6.4: {} + unconfig-core@7.5.0: dependencies: '@quansync/fs': 1.0.0 @@ -9919,7 +9938,7 @@ snapshots: dependencies: '@quansync/fs': 1.0.0 defu: 6.1.7 - jiti: 2.6.1 + jiti: 2.7.0 quansync: 1.0.0 unconfig-core: 7.5.0 @@ -9969,7 +9988,7 @@ snapshots: pkg-types: 2.3.0 scule: 1.3.0 strip-literal: 3.1.0 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 unplugin: 2.3.11 unplugin-utils: 0.2.5 @@ -9998,33 +10017,31 @@ snapshots: universalify@2.0.1: {} - unocss@66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vite@8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - '@unocss/cli': 66.6.8 - '@unocss/core': 66.6.8 - '@unocss/preset-attributify': 66.6.8 - '@unocss/preset-icons': 66.6.8 - '@unocss/preset-mini': 66.6.8 - '@unocss/preset-tagify': 66.6.8 - '@unocss/preset-typography': 66.6.8 - '@unocss/preset-uno': 66.6.8 - '@unocss/preset-web-fonts': 66.6.8 - '@unocss/preset-wind': 66.6.8 - '@unocss/preset-wind3': 66.6.8 - '@unocss/preset-wind4': 66.6.8 - '@unocss/transformer-attributify-jsx': 66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - '@unocss/transformer-compile-class': 66.6.8 - '@unocss/transformer-directives': 66.6.8 - '@unocss/transformer-variant-group': 66.6.8 - '@unocss/vite': 66.6.8(vite@8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) + unocss@66.7.3(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): + dependencies: + '@unocss/cli': 66.7.3 + '@unocss/core': 66.7.3 + '@unocss/preset-attributify': 66.7.3 + '@unocss/preset-icons': 66.7.3 + '@unocss/preset-mini': 66.7.3 + '@unocss/preset-tagify': 66.7.3 + '@unocss/preset-typography': 66.7.3 + '@unocss/preset-uno': 66.7.3 + '@unocss/preset-web-fonts': 66.7.3 + '@unocss/preset-wind': 66.7.3 + '@unocss/preset-wind3': 66.7.3 + '@unocss/preset-wind4': 66.7.3 + '@unocss/transformer-attributify-jsx': 66.7.3 + '@unocss/transformer-compile-class': 66.7.3 + '@unocss/transformer-directives': 66.7.3 + '@unocss/transformer-variant-group': 66.7.3 + '@unocss/vite': 66.7.3(vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - vite unpipe@1.0.0: {} - unplugin-auto-import@0.18.6(@vueuse/core@12.8.2(typescript@5.9.3))(rollup@4.60.2): + unplugin-auto-import@0.18.6(@vueuse/core@14.3.0(vue@3.5.39(typescript@5.9.3)))(rollup@4.60.2): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.3.0(rollup@4.60.2) @@ -10035,11 +10052,11 @@ snapshots: unimport: 3.14.6(rollup@4.60.2) unplugin: 1.16.1 optionalDependencies: - '@vueuse/core': 12.8.2(typescript@5.9.3) + '@vueuse/core': 14.3.0(vue@3.5.39(typescript@5.9.3)) transitivePeerDependencies: - rollup - unplugin-auto-import@19.3.0(@vueuse/core@12.8.2(typescript@6.0.2)): + unplugin-auto-import@19.3.0(@vueuse/core@12.8.2(typescript@6.0.3)): dependencies: local-pkg: 1.1.2 magic-string: 0.30.21 @@ -10048,7 +10065,7 @@ snapshots: unplugin: 2.3.11 unplugin-utils: 0.2.5 optionalDependencies: - '@vueuse/core': 12.8.2(typescript@6.0.2) + '@vueuse/core': 12.8.2(typescript@6.0.3) unplugin-utils@0.2.5: dependencies: @@ -10060,7 +10077,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.4 - unplugin-vue-components@28.8.0(@babel/parser@7.29.2)(vue@3.5.32(typescript@6.0.2)): + unplugin-vue-components@28.8.0(@babel/parser@7.29.7)(vue@3.5.39(typescript@6.0.3)): dependencies: chokidar: 3.6.0 debug: 4.4.3 @@ -10070,9 +10087,9 @@ snapshots: tinyglobby: 0.2.16 unplugin: 2.3.11 unplugin-utils: 0.2.5 - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) optionalDependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.7 transitivePeerDependencies: - supports-color @@ -10121,7 +10138,7 @@ snapshots: vite@5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.46.2): dependencies: esbuild: 0.21.5 - postcss: 8.5.9 + postcss: 8.5.15 rollup: 4.60.2 optionalDependencies: '@types/node': 25.9.1 @@ -10129,40 +10146,40 @@ snapshots: lightningcss: 1.32.0 terser: 5.46.2 - vite@6.4.2(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3): + vite@6.4.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.9 + postcss: 8.5.15 rollup: 4.60.2 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.9.1 fsevents: 2.3.3 - jiti: 2.6.1 + jiti: 2.7.0 lightningcss: 1.32.0 terser: 5.46.2 tsx: 4.21.0 yaml: 2.8.3 - vite@8.0.8(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.16(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.9 - rolldown: 1.0.0-rc.15 - tinyglobby: 0.2.16 + postcss: 8.5.15 + rolldown: 1.0.3 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.9.1 esbuild: 0.27.7 fsevents: 2.3.3 - jiti: 2.6.1 + jiti: 2.7.0 terser: 5.46.2 tsx: 4.21.0 yaml: 2.8.3 - vitepress@1.6.4(@algolia/client-search@5.55.1)(@types/node@25.9.1)(async-validator@4.2.5)(axios@1.15.0)(lightningcss@1.32.0)(postcss@8.5.9)(search-insights@2.17.3)(terser@5.46.2)(typescript@6.0.2): + vitepress@1.6.4(@algolia/client-search@5.55.1)(@types/node@25.9.1)(async-validator@4.2.5)(axios@1.18.1)(lightningcss@1.32.0)(postcss@8.5.15)(search-insights@2.17.3)(terser@5.46.2)(typescript@6.0.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.55.1)(search-insights@2.17.3) @@ -10171,19 +10188,19 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.46.2))(vue@3.5.32(typescript@6.0.2)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.46.2))(vue@3.5.39(typescript@6.0.3)) '@vue/devtools-api': 7.7.9 '@vue/shared': 3.5.32 - '@vueuse/core': 12.8.2(typescript@6.0.2) - '@vueuse/integrations': 12.8.2(async-validator@4.2.5)(axios@1.15.0)(focus-trap@7.8.0)(typescript@6.0.2) + '@vueuse/core': 12.8.2(typescript@6.0.3) + '@vueuse/integrations': 12.8.2(async-validator@4.2.5)(axios@1.18.1)(focus-trap@7.8.0)(typescript@6.0.3) focus-trap: 7.8.0 mark.js: 8.11.1 minisearch: 7.2.0 shiki: 2.5.0 vite: 5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.46.2) - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) optionalDependencies: - postcss: 8.5.9 + postcss: 8.5.15 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -10213,15 +10230,15 @@ snapshots: vscode-uri@3.1.0: {} - vue-component-type-helpers@3.2.6: {} + vue-component-type-helpers@3.3.5: {} - vue-demi@0.14.10(vue@3.5.32(typescript@5.9.3)): + vue-demi@0.14.10(vue@3.5.39(typescript@5.9.3)): dependencies: - vue: 3.5.32(typescript@5.9.3) + vue: 3.5.39(typescript@5.9.3) - vue-demi@0.14.10(vue@3.5.32(typescript@6.0.2)): + vue-demi@0.14.10(vue@3.5.39(typescript@6.0.3)): dependencies: - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) vue-eslint-parser@9.4.3(eslint@8.57.1): dependencies: @@ -10236,23 +10253,23 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.3.2(vue@3.5.32(typescript@6.0.2)): + vue-i18n@11.3.2(vue@3.5.39(typescript@6.0.3)): dependencies: '@intlify/core-base': 11.3.2 '@intlify/devtools-types': 11.3.2 '@intlify/shared': 11.3.2 '@vue/devtools-api': 6.6.4 - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) - vue-router@4.6.4(vue@3.5.32(typescript@5.9.3)): + vue-router@4.6.4(vue@3.5.39(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.32(typescript@5.9.3) + vue: 3.5.39(typescript@5.9.3) - vue-router@4.6.4(vue@3.5.32(typescript@6.0.2)): + vue-router@4.6.4(vue@3.5.39(typescript@6.0.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.39(typescript@6.0.3) vue-tsc@2.2.12(typescript@5.9.3): dependencies: @@ -10260,31 +10277,31 @@ snapshots: '@vue/language-core': 2.2.12(typescript@5.9.3) typescript: 5.9.3 - vue-tsc@2.2.12(typescript@6.0.2): + vue-tsc@2.2.12(typescript@6.0.3): dependencies: '@volar/typescript': 2.4.15 - '@vue/language-core': 2.2.12(typescript@6.0.2) - typescript: 6.0.2 + '@vue/language-core': 2.2.12(typescript@6.0.3) + typescript: 6.0.3 - vue@3.5.32(typescript@5.9.3): + vue@3.5.39(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.32 - '@vue/compiler-sfc': 3.5.32 - '@vue/runtime-dom': 3.5.32 - '@vue/server-renderer': 3.5.32(vue@3.5.32(typescript@5.9.3)) - '@vue/shared': 3.5.32 + '@vue/compiler-dom': 3.5.39 + '@vue/compiler-sfc': 3.5.39 + '@vue/runtime-dom': 3.5.39 + '@vue/server-renderer': 3.5.39(vue@3.5.39(typescript@5.9.3)) + '@vue/shared': 3.5.39 optionalDependencies: typescript: 5.9.3 - vue@3.5.32(typescript@6.0.2): + vue@3.5.39(typescript@6.0.3): dependencies: - '@vue/compiler-dom': 3.5.32 - '@vue/compiler-sfc': 3.5.32 - '@vue/runtime-dom': 3.5.32 - '@vue/server-renderer': 3.5.32(vue@3.5.32(typescript@6.0.2)) - '@vue/shared': 3.5.32 + '@vue/compiler-dom': 3.5.39 + '@vue/compiler-sfc': 3.5.39 + '@vue/runtime-dom': 3.5.39 + '@vue/server-renderer': 3.5.39(vue@3.5.39(typescript@6.0.3)) + '@vue/shared': 3.5.39 optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 webpack-virtual-modules@0.6.2: {}