diff --git a/apps/designer/.eslintrc-auto-import.json b/apps/designer/.eslintrc-auto-import.json new file mode 100644 index 0000000..181d852 --- /dev/null +++ b/apps/designer/.eslintrc-auto-import.json @@ -0,0 +1,91 @@ +{ + "globals": { + "Component": true, + "ComponentPublicInstance": true, + "ComputedRef": true, + "DirectiveBinding": true, + "EffectScope": true, + "ExtractDefaultPropTypes": true, + "ExtractPropTypes": true, + "ExtractPublicPropTypes": true, + "InjectionKey": true, + "MaybeRef": true, + "MaybeRefOrGetter": true, + "PropType": true, + "Ref": true, + "VNode": true, + "WritableComputedRef": true, + "acceptHMRUpdate": true, + "computed": true, + "createApp": true, + "createPinia": true, + "customRef": true, + "defineAsyncComponent": true, + "defineComponent": true, + "defineStore": true, + "effectScope": true, + "getActivePinia": true, + "getCurrentInstance": true, + "getCurrentScope": true, + "h": true, + "inject": true, + "isProxy": true, + "isReactive": true, + "isReadonly": true, + "isRef": true, + "mapActions": true, + "mapGetters": true, + "mapState": true, + "mapStores": true, + "mapWritableState": true, + "markRaw": true, + "nextTick": true, + "onActivated": true, + "onBeforeMount": true, + "onBeforeRouteLeave": true, + "onBeforeRouteUpdate": true, + "onBeforeUnmount": true, + "onBeforeUpdate": true, + "onDeactivated": true, + "onErrorCaptured": true, + "onMounted": true, + "onRenderTracked": true, + "onRenderTriggered": true, + "onScopeDispose": true, + "onServerPrefetch": true, + "onUnmounted": true, + "onUpdated": true, + "onWatcherCleanup": true, + "provide": true, + "reactive": true, + "readonly": true, + "ref": true, + "resolveComponent": true, + "setActivePinia": true, + "setMapStoreSuffix": true, + "shallowReactive": true, + "shallowReadonly": true, + "shallowRef": true, + "storeToRefs": true, + "toRaw": true, + "toRef": true, + "toRefs": true, + "toValue": true, + "triggerRef": true, + "unref": true, + "useAttrs": true, + "useCssModule": true, + "useCssVars": true, + "useId": true, + "useLink": true, + "useModel": true, + "useRoute": true, + "useRouter": true, + "useSlots": true, + "useTemplateRef": true, + "watch": true, + "watchEffect": true, + "watchPostEffect": true, + "watchSyncEffect": true + } +} diff --git a/apps/designer/package.json b/apps/designer/package.json index bd7ecd5..8ba76aa 100644 --- a/apps/designer/package.json +++ b/apps/designer/package.json @@ -30,6 +30,9 @@ "axios": "^1.8.1", "element-plus": "^2.9.4", "licia-es": "^1.46.0", + "pinia": "^3.0.1", + "pinia-plugin-persistedstate": "^4.2.0", + "unplugin-auto-import": "^19.1.1", "vue": "~3.5.13", "vue-router": "~4.5.0" }, diff --git a/apps/designer/src/auto-imports.d.ts b/apps/designer/src/auto-imports.d.ts new file mode 100644 index 0000000..f6e2bab --- /dev/null +++ b/apps/designer/src/auto-imports.d.ts @@ -0,0 +1,88 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +// biome-ignore lint: disable +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const createPinia: typeof import('pinia')['createPinia'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const defineStore: typeof import('pinia')['defineStore'] + const effectScope: typeof import('vue')['effectScope'] + const getActivePinia: typeof import('pinia')['getActivePinia'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const mapActions: typeof import('pinia')['mapActions'] + const mapGetters: typeof import('pinia')['mapGetters'] + const mapState: typeof import('pinia')['mapState'] + const mapStores: typeof import('pinia')['mapStores'] + const mapWritableState: typeof import('pinia')['mapWritableState'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] + const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const setActivePinia: typeof import('pinia')['setActivePinia'] + const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const storeToRefs: typeof import('pinia')['storeToRefs'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useId: typeof import('vue')['useId'] + const useLink: typeof import('vue-router')['useLink'] + const useModel: typeof import('vue')['useModel'] + const useRoute: typeof import('vue-router')['useRoute'] + const useRouter: typeof import('vue-router')['useRouter'] + const useSlots: typeof import('vue')['useSlots'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/apps/designer/src/io/file.ts b/apps/designer/src/io/file.ts index c600ce8..daab59b 100644 --- a/apps/designer/src/io/file.ts +++ b/apps/designer/src/io/file.ts @@ -1,5 +1,6 @@ import { type BlockSchema } from '@vtj/core'; import instance from './instance'; +import { fi } from 'element-plus/es/locale/index.mjs'; export type LowCodeFileSchema = { project_id: number; @@ -7,6 +8,7 @@ export type LowCodeFileSchema = { active: boolean; dsl: BlockSchema; file_path?: string; + file_id?: string; }; function transformFile(file: LowCodeFileSchema): LowCodeFileSchema { @@ -16,7 +18,8 @@ function transformFile(file: LowCodeFileSchema): LowCodeFileSchema { active: file.active, // @ts-ignore dsl: JSON.stringify(file.dsl), - file_path: file.file_path + file_path: file.file_path, + file_id: file.file_id }; } @@ -27,10 +30,7 @@ export const getFileList = async () => { export const getFile = async (id: string) => { const response = await instance.get(`/api/v1/files/${id}`); - return { - ...response.data, - dsl: JSON.parse(response.data.dsl) - }; + return response.data; }; export const createFile = async (data: LowCodeFileSchema) => { @@ -39,7 +39,10 @@ export const createFile = async (data: LowCodeFileSchema) => { }; export const updateFile = async (id: string, data: LowCodeFileSchema) => { - const response = await instance.put(`/api/v1/files/${id}`, data); + const response = await instance.put( + `/api/v1/files/${id}`, + transformFile(data) + ); return response.data; }; diff --git a/apps/designer/src/main.ts b/apps/designer/src/main.ts index 0f50040..ee0e959 100644 --- a/apps/designer/src/main.ts +++ b/apps/designer/src/main.ts @@ -1,7 +1,20 @@ import { createApp } from 'vue'; +import { createPersistedState } from 'pinia-plugin-persistedstate'; + import router from './router'; import App from './App.vue'; import './style/index.scss'; +import { pinia } from './store'; + +// 添加持久化插件 +pinia.use( + createPersistedState({ + auto: true, // 自动持久化所有 store + storage: localStorage + }) +); + const app = createApp(App); app.use(router); +app.use(pinia); app.mount('#app'); diff --git a/apps/designer/src/service/index.ts b/apps/designer/src/service/index.ts index 625dfbb..a77f650 100644 --- a/apps/designer/src/service/index.ts +++ b/apps/designer/src/service/index.ts @@ -18,6 +18,7 @@ import { createFile, updateFile as updateLowCodeFile, getFile as getLowCodeFile, + deleteFile as deleteLowCodeFile, type LowCodeFileSchema } from '@/io'; import { isNumeric } from 'licia-es'; @@ -89,52 +90,34 @@ export class StorageService extends BaseService { } public async saveFile(file: BlockSchema): Promise { - // console.log('file', file); - // const ACTION = { - // CREATE: 'create', - // UPDATE: 'update' - // }; - // const action = isNumeric(file.id) ? ACTION.UPDATE : ACTION.CREATE; - // console.log('action', action); - // console.log('saveFile', file); - // if (action === ACTION.CREATE) { - // const newFile: LowCodeFileSchema = { - // project_id: 2, - // publish: false, - // active: true, - // dsl: file - // }; - // Reflect.deleteProperty(newFile, 'id'); - // const res = await createFile(newFile); - // console.log('saveFile-res', res); - // } + console.log('saveFile', file); if (file.id) { const existFile = await getLowCodeFile(file.id); console.log('existFile', existFile); - if (existFile) { + if (existFile.file_id) { + console.log('updateFile', file, existFile); await updateLowCodeFile(file.id, { ...existFile, dsl: file }); } else { + console.log('createFile', file); await createFile({ project_id: 2, publish: false, active: true, - dsl: file + dsl: file, + file_id: file.id }); } } - - // storage.save(`file_${file.id}`, file); return Promise.resolve(true); } public async getFile(id: string): Promise { const dsl = storage.get(`file_${id}`); - console.log('getFile', id, dsl); const lowCodeFile = await getLowCodeFile(id); - console.log('lowCodeFile', lowCodeFile); + console.log('getFile', lowCodeFile); if (lowCodeFile.dsl) { return Promise.resolve(lowCodeFile.dsl as BlockSchema); } else { @@ -142,10 +125,14 @@ export class StorageService extends BaseService { } } - public removeFile(id: string): Promise { + public async removeFile(id: string): Promise { storage.remove(`file_${id}`); console.log('removeFile', id); - return Promise.resolve(true); + // return Promise.resolve(true); + return deleteLowCodeFile(id).then((res) => { + console.log('removeFile-res', res); + return Promise.resolve(true); + }); } public saveHistory(history: HistorySchema): Promise { diff --git a/apps/designer/src/store/index.ts b/apps/designer/src/store/index.ts new file mode 100644 index 0000000..3b87201 --- /dev/null +++ b/apps/designer/src/store/index.ts @@ -0,0 +1,67 @@ +import { ref, computed } from 'vue'; +import axios from 'axios'; +import { createPinia, defineStore } from 'pinia'; + +// 创建 pinia 实例 +export const pinia = createPinia(); + +// 用户模块 store +export const useUserStore = defineStore('user', () => { + // 状态定义 + const token = ref(localStorage.getItem('token') || ''); + const userProfile = ref(null); + + // getter 计算属性 + const isLoggedIn = computed(() => !!token.value); + + // 同步 action + const setToken = (newToken: string) => { + token.value = newToken; + localStorage.setItem('token', newToken); + }; + + // 异步 action + const fetchProfile = async () => { + const { data } = await axios.get('/api/user/profile'); + userProfile.value = data; + }; + + // 清理方法 + const logout = () => { + token.value = ''; + userProfile.value = null; + localStorage.removeItem('token'); + }; + + return { + token, + userProfile, + isLoggedIn, + setToken, + fetchProfile, + logout + }; +}); + +// 应用配置 store +export const useAppStore = defineStore('app', () => { + const theme = ref<'light' | 'dark'>('light'); + const sidebarCollapsed = ref(false); + + // 持久化配置 + const persist = { + paths: ['theme', 'sidebarCollapsed'], + storage: localStorage + }; + + const toggleTheme = () => { + theme.value = theme.value === 'light' ? 'dark' : 'light'; + }; + + return { + theme, + sidebarCollapsed, + toggleTheme, + persist + }; +}); diff --git a/apps/designer/vite.config.ts b/apps/designer/vite.config.ts index 3d8fbfb..a0b9696 100644 --- a/apps/designer/vite.config.ts +++ b/apps/designer/vite.config.ts @@ -4,10 +4,31 @@ import { createDevTools } from '@vtj/local'; import http2Proxy from '@sy/vite-plugin-http2-proxy'; import proxy from './proxy.config'; import mkcert from 'vite-plugin-mkcert'; +import AutoImport from 'unplugin-auto-import/vite'; const config = createViteConfig({ proxy, - plugins: [createDevTools(), http2Proxy(), mkcert()] + plugins: [ + createDevTools(), + http2Proxy(), + mkcert(), + AutoImport({ + imports: [ + 'vue', + 'pinia', + 'vue-router', + { + from: 'pinia', + imports: ['storeToRefs', 'defineStore'], + type: true + } + ], + dts: 'src/auto-imports.d.ts', // 生成类型声明文件 + eslintrc: { + enabled: true // 生成 eslint 配置 + } + }) + ] }); export default defineConfig({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee3aace..1433296 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -137,6 +137,15 @@ importers: licia-es: specifier: ^1.46.0 version: 1.46.0 + pinia: + specifier: ^3.0.1 + version: 3.0.1(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) + pinia-plugin-persistedstate: + specifier: ^4.2.0 + version: 4.2.0(magicast@0.3.5)(pinia@3.0.1(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) + unplugin-auto-import: + specifier: ^19.1.1 + version: 19.1.1(@nuxt/kit@3.15.4(magicast@0.3.5))(@vueuse/core@12.5.0(typescript@5.7.3)) vue: specifier: ~3.5.13 version: 3.5.13(typescript@5.7.3) @@ -149,7 +158,7 @@ importers: version: link:../../packages/vite-plugin-http2-proxy '@vtj/cli': specifier: ^0.10.1 - version: 0.10.1(@types/less@3.0.8)(jiti@2.4.2)(less@4.2.2)(msw@2.7.3(@types/node@22.12.0)(typescript@5.7.3))(rollup@3.29.5)(vue@3.5.13(typescript@5.7.3))(yaml@2.6.1) + version: 0.10.1(@nuxt/kit@3.15.4(magicast@0.3.5))(@types/less@3.0.8)(jiti@2.4.2)(less@4.2.2)(msw@2.7.3(@types/node@22.12.0)(typescript@5.7.3))(rollup@3.29.5)(vue@3.5.13(typescript@5.7.3))(yaml@2.6.1) vite: specifier: ^6.2.0 version: 6.2.0(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1) @@ -3697,6 +3706,9 @@ packages: '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + '@vue/devtools-api@7.7.2': + resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==} + '@vue/devtools-core@7.7.2': resolution: {integrity: sha512-lexREWj1lKi91Tblr38ntSsy6CvI8ba7u+jmwh2yruib/ltLUcsIzEjCnrkh1yYGGIKXbAuYV2tOG10fGDB9OQ==} peerDependencies: @@ -6909,10 +6921,6 @@ packages: resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} - local-pkg@1.0.0: - resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==} - engines: {node: '>=14'} - local-pkg@1.1.0: resolution: {integrity: sha512-xbZBuX6gYIWrlLmZG43aAVer4ocntYO09vPy9lxd6Ns8DnR4U7N+IIeDkubinqFOHHzoMlPxTxwo0jhE7oYjAw==} engines: {node: '>=14'} @@ -7953,6 +7961,15 @@ packages: typescript: optional: true + pinia@3.0.1: + resolution: {integrity: sha512-WXglsDzztOTH6IfcJ99ltYZin2mY8XZCXujkYWVIJlBjqsP6ST7zw+Aarh63E1cDVYeyUcPCxPHzJpEOmzB6Wg==} + peerDependencies: + typescript: '>=4.4.4' + vue: ^2.7.0 || ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + pkg-conf@2.1.0: resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==} engines: {node: '>=4'} @@ -9538,6 +9555,18 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unplugin-auto-import@19.1.1: + resolution: {integrity: sha512-sCGZZrSR1Bc8RfN8Q0RUDxXtC20rdAt7UB4lDyq8MNtKVHiXXh+5af6Nz4JRp9Q+7HjnbgQfQox0TkEymjdUAQ==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + unplugin-element-plus@0.9.1: resolution: {integrity: sha512-TtQ7bj82gM1Hw5A+LmG/oFrvYb6L0BqhxVUl7djMiicvk7LjdUiP70QhTKaBY/tiFR9NJCIPYSmw4naCuhK7Hg==} engines: {node: '>=18.12.0'} @@ -12288,7 +12317,7 @@ snapshots: debug: 4.4.0 globals: 15.15.0 kolorist: 1.8.0 - local-pkg: 1.0.0 + local-pkg: 1.1.0 mlly: 1.7.4 transitivePeerDependencies: - supports-color @@ -13946,7 +13975,7 @@ snapshots: - typescript - vue - '@vtj/cli@0.10.1(@types/less@3.0.8)(jiti@2.4.2)(less@4.2.2)(msw@2.7.3(@types/node@22.12.0)(typescript@5.7.3))(rollup@3.29.5)(vue@3.5.13(typescript@5.7.3))(yaml@2.6.1)': + '@vtj/cli@0.10.1(@nuxt/kit@3.15.4(magicast@0.3.5))(@types/less@3.0.8)(jiti@2.4.2)(less@4.2.2)(msw@2.7.3(@types/node@22.12.0)(typescript@5.7.3))(rollup@3.29.5)(vue@3.5.13(typescript@5.7.3))(yaml@2.6.1)': dependencies: '@babel/core': 7.26.9 '@babel/preset-env': 7.26.9(@babel/core@7.26.9) @@ -13979,7 +14008,7 @@ snapshots: vite-plugin-cdn-import: 1.0.1(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)) vite-plugin-dts: 4.5.1(@types/node@22.12.0)(rollup@3.29.5)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)) vite-plugin-node-polyfills: 0.23.0(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)) - vite-plugin-vue-devtools: 7.7.2(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)) + vite-plugin-vue-devtools: 7.7.2(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)) vite-plugin-vue-style-bundler: 1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)))(less@4.2.2)(sass@1.83.4)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)) vitest: 3.0.7(@types/node@22.12.0)(jiti@2.4.2)(jsdom@26.0.0)(less@4.2.2)(msw@2.7.3(@types/node@22.12.0)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1) vue-tsc: 2.2.4(typescript@5.7.3) @@ -14205,6 +14234,10 @@ snapshots: '@vue/devtools-api@6.6.4': {} + '@vue/devtools-api@7.7.2': + dependencies: + '@vue/devtools-kit': 7.7.2 + '@vue/devtools-core@7.7.2(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))': dependencies: '@vue/devtools-kit': 7.7.2 @@ -18108,11 +18141,6 @@ snapshots: mlly: 1.7.4 pkg-types: 1.3.1 - local-pkg@1.0.0: - dependencies: - mlly: 1.7.4 - pkg-types: 1.3.1 - local-pkg@1.1.0: dependencies: mlly: 1.7.4 @@ -19108,6 +19136,18 @@ snapshots: - magicast - supports-color + pinia-plugin-persistedstate@4.2.0(magicast@0.3.5)(pinia@3.0.1(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))): + dependencies: + '@nuxt/kit': 3.15.4(magicast@0.3.5) + deep-pick-omit: 1.2.1 + defu: 6.1.4 + destr: 2.0.3 + optionalDependencies: + pinia: 3.0.1(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) + transitivePeerDependencies: + - magicast + - supports-color + pinia@2.2.8(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)): dependencies: '@vue/devtools-api': 6.6.4 @@ -19126,6 +19166,13 @@ snapshots: transitivePeerDependencies: - '@vue/composition-api' + pinia@3.0.1(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)): + dependencies: + '@vue/devtools-api': 7.7.2 + vue: 3.5.13(typescript@5.7.3) + optionalDependencies: + typescript: 5.7.3 + pkg-conf@2.1.0: dependencies: find-up: 2.1.0 @@ -20943,6 +20990,18 @@ snapshots: unpipe@1.0.0: {} + unplugin-auto-import@19.1.1(@nuxt/kit@3.15.4(magicast@0.3.5))(@vueuse/core@12.5.0(typescript@5.7.3)): + dependencies: + local-pkg: 1.1.0 + magic-string: 0.30.17 + picomatch: 4.0.2 + unimport: 4.1.2 + unplugin: 2.2.0 + unplugin-utils: 0.2.4 + optionalDependencies: + '@nuxt/kit': 3.15.4(magicast@0.3.5) + '@vueuse/core': 12.5.0(typescript@5.7.3) + unplugin-element-plus@0.9.1: dependencies: es-module-lexer: 1.6.0 @@ -21156,7 +21215,7 @@ snapshots: magic-string: 0.25.9 vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1) - vite-plugin-inspect@0.8.9(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)): + vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.4(rollup@3.29.5) @@ -21168,6 +21227,8 @@ snapshots: picocolors: 1.1.1 sirv: 3.0.1 vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1) + optionalDependencies: + '@nuxt/kit': 3.15.4(magicast@0.3.5) transitivePeerDependencies: - rollup - supports-color @@ -21243,7 +21304,7 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.7.2(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)): + vite-plugin-vue-devtools@7.7.2(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)): dependencies: '@vue/devtools-core': 7.7.2(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)) '@vue/devtools-kit': 7.7.2 @@ -21251,7 +21312,7 @@ snapshots: execa: 9.5.2 sirv: 3.0.1 vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1) - vite-plugin-inspect: 0.8.9(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)) + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@3.29.5)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)) vite-plugin-vue-inspector: 5.3.1(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)) transitivePeerDependencies: - '@nuxt/kit'