From 16fa303a0cc27117a5c25fe01754a1a8872fc0b0 Mon Sep 17 00:00:00 2001 From: Zyy <39424122+zyycn@users.noreply.github.com> Date: Tue, 22 Sep 2026 15:57:28 +0800 Subject: [PATCH] chore(deps): upgrade VueUse to 15 (#220) Co-authored-by: Zyy --- frontend/package.json | 4 +- frontend/pnpm-lock.yaml | 46 ++++++++++--------- frontend/src/composables/useUiClock.ts | 6 ++- .../AccountQuotaForecastModal/index.vue | 7 ++- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index ec8d30eda..20183be92 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -20,8 +20,8 @@ "@fontsource-variable/inter": "^5.3.0", "@fontsource-variable/jetbrains-mono": "^5.3.0", "@lucide/vue": "^1.47.0", - "@vueuse/core": "^14.4.0", - "@vueuse/integrations": "^14.4.0", + "@vueuse/core": "^15.0.0", + "@vueuse/integrations": "^15.0.0", "axios": "^1.20.0", "dayjs": "^1.11.23", "dompurify": "^3.4.15", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index c5b58e683..418bbf863 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -27,11 +27,11 @@ importers: specifier: ^1.47.0 version: 1.47.0(vue@3.5.43(typescript@6.0.3)) '@vueuse/core': - specifier: ^14.4.0 - version: 14.4.0(vue@3.5.43(typescript@6.0.3)) + specifier: ^15.0.0 + version: 15.0.0(vue@3.5.43(typescript@6.0.3)) '@vueuse/integrations': - specifier: ^14.4.0 - version: 14.4.0(axios@1.20.0)(change-case@5.4.4)(sortablejs@1.15.7)(vue@3.5.43(typescript@6.0.3)) + specifier: ^15.0.0 + version: 15.0.0(axios@1.20.0)(change-case@5.4.4)(sortablejs@1.15.7)(vue@3.5.43(typescript@6.0.3)) axios: specifier: ^1.20.0 version: 1.20.0 @@ -902,18 +902,20 @@ packages: vue: optional: true - '@vueuse/core@14.4.0': - resolution: {integrity: sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==} + '@vueuse/core@15.0.0': + resolution: {integrity: sha512-Zv67h5mrk7YHDJsRObx+DXaCBz6RKBUpxqLesJ+3xZNPG6yuQs7ja7kg3veFrrouYLWAqydQ7CwGEbLVxB43Ng==} + engines: {node: '>=22'} peerDependencies: vue: ^3.5.0 - '@vueuse/integrations@14.4.0': - resolution: {integrity: sha512-oJz9qTgczvA7L1nXQFRU7h8tQbOCoiceqvMMhT9XYMyOGTqLJ2rEa09PON+nD2t48sZUfeOmg4eaWJXV4sZb/w==} + '@vueuse/integrations@15.0.0': + resolution: {integrity: sha512-uWC1608pEocJPeRk1IqrEA3uYHhAGTJNibcMAdxgdK2Sy2Hypc6b+VdNO9KekCxyPc4VXK8SKDp8vsXefR/ZFg==} + engines: {node: '>=22'} peerDependencies: async-validator: ^4 axios: ^1 change-case: ^5 - drauu: ^0.4 + drauu: ^1 || ^0.4 focus-trap: ^7 || ^8 fuse.js: ^7 idb-keyval: ^6 @@ -949,11 +951,13 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@14.4.0': - resolution: {integrity: sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==} + '@vueuse/metadata@15.0.0': + resolution: {integrity: sha512-sfWE5LADAKJ0KnjtGliMdSN8Ij/L7uP6rXIZlgPloAI4zvvefbw6H5Lt7KJA6RqQOYgVqWF5Guj50HHMIzygBg==} + engines: {node: '>=22'} - '@vueuse/shared@14.4.0': - resolution: {integrity: sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==} + '@vueuse/shared@15.0.0': + resolution: {integrity: sha512-vbNXhGrbV53xPOMSyOzMHQRvhMgZf7oNDw2RChUetVxwTIEkInQ1joZ9JbT0G3z2n2AJNjvmCWeM9ySYrnvogA==} + engines: {node: '>=22'} peerDependencies: vue: ^3.5.0 @@ -3197,26 +3201,26 @@ snapshots: typescript: 6.0.3 vue: 3.5.43(typescript@6.0.3) - '@vueuse/core@14.4.0(vue@3.5.43(typescript@6.0.3))': + '@vueuse/core@15.0.0(vue@3.5.43(typescript@6.0.3))': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.4.0 - '@vueuse/shared': 14.4.0(vue@3.5.43(typescript@6.0.3)) + '@vueuse/metadata': 15.0.0 + '@vueuse/shared': 15.0.0(vue@3.5.43(typescript@6.0.3)) vue: 3.5.43(typescript@6.0.3) - '@vueuse/integrations@14.4.0(axios@1.20.0)(change-case@5.4.4)(sortablejs@1.15.7)(vue@3.5.43(typescript@6.0.3))': + '@vueuse/integrations@15.0.0(axios@1.20.0)(change-case@5.4.4)(sortablejs@1.15.7)(vue@3.5.43(typescript@6.0.3))': dependencies: - '@vueuse/core': 14.4.0(vue@3.5.43(typescript@6.0.3)) - '@vueuse/shared': 14.4.0(vue@3.5.43(typescript@6.0.3)) + '@vueuse/core': 15.0.0(vue@3.5.43(typescript@6.0.3)) + '@vueuse/shared': 15.0.0(vue@3.5.43(typescript@6.0.3)) vue: 3.5.43(typescript@6.0.3) optionalDependencies: axios: 1.20.0 change-case: 5.4.4 sortablejs: 1.15.7 - '@vueuse/metadata@14.4.0': {} + '@vueuse/metadata@15.0.0': {} - '@vueuse/shared@14.4.0(vue@3.5.43(typescript@6.0.3))': + '@vueuse/shared@15.0.0(vue@3.5.43(typescript@6.0.3))': dependencies: vue: 3.5.43(typescript@6.0.3) diff --git a/frontend/src/composables/useUiClock.ts b/frontend/src/composables/useUiClock.ts index c92aaa636..11e9b5c42 100644 --- a/frontend/src/composables/useUiClock.ts +++ b/frontend/src/composables/useUiClock.ts @@ -1,5 +1,7 @@ -import { createSharedComposable, useNow } from '@vueuse/core' +import { createSharedComposable, useIntervalFn, useNow } from '@vueuse/core' export const useUiClock = createSharedComposable(() => - useNow({ interval: 30_000 }), + useNow({ + scheduler: callback => useIntervalFn(callback, 30_000), + }), ) diff --git a/frontend/src/views/accounts/components/AccountQuotaForecastModal/index.vue b/frontend/src/views/accounts/components/AccountQuotaForecastModal/index.vue index 8d3391cea..27639e20f 100644 --- a/frontend/src/views/accounts/components/AccountQuotaForecastModal/index.vue +++ b/frontend/src/views/accounts/components/AccountQuotaForecastModal/index.vue @@ -2,7 +2,7 @@ import type { AccountRow } from '../../constants' import type { Account } from '@/api' import { ChartNoAxesCombined, CircleAlert, RefreshCw } from '@lucide/vue' -import { useNow } from '@vueuse/core' +import { useIntervalFn, useNow } from '@vueuse/core' import { computed, ref, toRef, useId, watch } from 'vue' import BaseButton from '@/components/base/BaseButton.vue' import BaseEmpty from '@/components/base/BaseEmpty.vue' @@ -27,7 +27,10 @@ const { report, loading, refreshing, error, load, refresh } = useAccountQuotaFor open, account => emit('accountUpdated', account), ) -const { now, pause, resume } = useNow({ interval: 30_000, controls: true }) +const { now, pause, resume } = useNow({ + controls: true, + scheduler: callback => useIntervalFn(callback, 30_000), +}) const options = computed(() => report.value?.forecasts.map(item => ({ label: item.extrapolated ? `${item.targetDays}天折算` : item.source?.label ?? (item.period === 'weekly' ? '周额度' : '月额度'), value: item.period,