From 0f1bc2258a9a10653f86a234f4c30acf94b7ecb8 Mon Sep 17 00:00:00 2001 From: BarnacleBoy Date: Mon, 18 May 2026 12:43:04 +0000 Subject: [PATCH 1/8] =?UTF-8?q?fix:=20useRouteMeta=20=E2=80=94=20fix=20Rou?= =?UTF-8?q?teMeta=20import=20and=20callable=20type=20narrowing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/vdn-static/src/composables/useRouteMeta.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/vdn-static/src/composables/useRouteMeta.ts b/apps/vdn-static/src/composables/useRouteMeta.ts index 2b7e3ec..d530137 100644 --- a/apps/vdn-static/src/composables/useRouteMeta.ts +++ b/apps/vdn-static/src/composables/useRouteMeta.ts @@ -1,7 +1,8 @@ import { watch, onMounted, onUnmounted, type Ref, computed, unref } from 'vue' import { useRoute } from 'vue-router' import { useMeta } from './useMeta' -import type { RouteMeta, RouteMetaValue, isMetaFunction } from '../types/route-meta.d' +import type { RouteMeta } from 'vue-router' +import type { RouteMetaValue } from '../types/route-meta' /** * Composable for automatic meta tag management based on route configuration @@ -45,7 +46,7 @@ export function useRouteMeta() { routeValue: typeof route ): T | undefined => { if (value === undefined) return undefined - return typeof value === 'function' ? value(routeValue) : value + return typeof value === 'function' ? (value as Function)(routeValue) as T : value } /** From 8971d0ddf2e43e5f77f112392d561e2a60a5aa77 Mon Sep 17 00:00:00 2001 From: BarnacleBoy Date: Mon, 18 May 2026 12:43:58 +0000 Subject: [PATCH 2/8] fix: useMeta callable type + remove invalid function body from route-meta.d.ts --- apps/vdn-static/src/composables/useMeta.ts | 2 +- apps/vdn-static/src/types/route-meta.d.ts | 27 +--------------------- 2 files changed, 2 insertions(+), 27 deletions(-) diff --git a/apps/vdn-static/src/composables/useMeta.ts b/apps/vdn-static/src/composables/useMeta.ts index 4d5766c..3f874ce 100644 --- a/apps/vdn-static/src/composables/useMeta.ts +++ b/apps/vdn-static/src/composables/useMeta.ts @@ -235,7 +235,7 @@ export function useMeta( routeValue: RouteLocationNormalizedLoaded ): T | undefined => { if (value === undefined) return undefined - return typeof value === 'function' ? value(routeValue) : value + return typeof value === 'function' ? (value as Function)(routeValue) as T : value } /** diff --git a/apps/vdn-static/src/types/route-meta.d.ts b/apps/vdn-static/src/types/route-meta.d.ts index ab58a94..06e20c5 100644 --- a/apps/vdn-static/src/types/route-meta.d.ts +++ b/apps/vdn-static/src/types/route-meta.d.ts @@ -116,29 +116,4 @@ export type RouteMetaValue = T | ((route: RouteLocationNormalizedLoaded) => T /** * Helper function type for dynamic meta values */ -export type MetaValueFunction = (route: RouteLocationNormalizedLoaded) => T - -/** - * Type guard for checking if a meta value is a function - */ -export function isMetaFunction( - value: RouteMetaValue -): value is MetaValueFunction { - return typeof value === 'function' -} - -/** - * Type for route with extended meta - */ -export interface RouteWithMeta { - meta: RouteMeta - name?: string | symbol - path: string -} - -/** - * Type for pages that support meta configuration - */ -export interface PageMetaConfig { - meta?: RouteMeta -} \ No newline at end of file +export type MetaValueFunction = (route: RouteLocationNormalizedLoaded) => T \ No newline at end of file From 75d5cf24adefab47af274985cc648dd5e28ca422 Mon Sep 17 00:00:00 2001 From: BarnacleBoy Date: Mon, 18 May 2026 12:49:19 +0000 Subject: [PATCH 3/8] =?UTF-8?q?fix:=20useI18nMeta=20=E2=80=94=20remove=20R?= =?UTF-8?q?outeMeta=20import,=20fix=20callable=20narrowing,=20fix=20resolv?= =?UTF-8?q?eI18nCustomTags=20return=20type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/vdn-static/src/composables/useI18nMeta.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/vdn-static/src/composables/useI18nMeta.ts b/apps/vdn-static/src/composables/useI18nMeta.ts index 1b17e40..c63dd30 100644 --- a/apps/vdn-static/src/composables/useI18nMeta.ts +++ b/apps/vdn-static/src/composables/useI18nMeta.ts @@ -2,7 +2,7 @@ import { computed, type ComputedRef, type Ref, unref, watch } from 'vue' import { useRoute } from 'vue-router' import { useMeta, type MetaConfig, type LocaleAwareMeta } from './useMeta' import { useLocale, type LocaleId } from '../i18n' -import type { RouteMeta, RouteMetaValue } from '../types/route-meta.d' +import type { RouteMetaValue } from '../types/route-meta.d' /** * Composable for i18n-aware meta tag management @@ -49,7 +49,7 @@ export function useI18nMeta( routeValue: typeof route ): T | undefined => { if (value === undefined) return undefined - return typeof value === 'function' ? value(routeValue) : value + return typeof value === 'function' ? (value as Function)(routeValue) as T : value } /** @@ -158,10 +158,10 @@ function resolveI18nCustomTags( return customTags.map(tag => ({ ...tag, - content: typeof tag.content === 'string' && typeof tag.content === 'object' - ? resolveI18nContent(tag.content as any, currentLocale) || '' - : typeof tag.content === 'function' - ? tag.content + content: typeof tag.content === 'function' + ? '' + : typeof tag.content === 'object' + ? resolveI18nContent(tag.content as any, currentLocale) || '' : tag.content })) } From 1724a838e2c0c5d381e84b59ff4b30a881209562 Mon Sep 17 00:00:00 2001 From: BarnacleBoy Date: Mon, 18 May 2026 13:06:15 +0000 Subject: [PATCH 4/8] =?UTF-8?q?fix:=20locale-aware=20OG=20types=20?= =?UTF-8?q?=E2=80=94=20I18nOpenGraphConfig/I18nTwitterCardConfig=20with=20?= =?UTF-8?q?resolveI18nOgTwitter=20helper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add I18nOpenGraphConfig and I18nTwitterCardConfig types that allow string | LocaleAwareMeta for title/description fields - Add resolveI18nOgTwitter() to resolve locale-aware og/twitter at runtime - Fix meta-examples.ts import: MetaConfig from useMeta, I18nMetaConfig from useI18nMeta --- .../vdn-static/src/composables/useI18nMeta.ts | 48 ++++++++++++++++--- apps/vdn-static/src/config/meta-examples.ts | 3 +- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/apps/vdn-static/src/composables/useI18nMeta.ts b/apps/vdn-static/src/composables/useI18nMeta.ts index c63dd30..6e305ee 100644 --- a/apps/vdn-static/src/composables/useI18nMeta.ts +++ b/apps/vdn-static/src/composables/useI18nMeta.ts @@ -1,6 +1,6 @@ import { computed, type ComputedRef, type Ref, unref, watch } from 'vue' import { useRoute } from 'vue-router' -import { useMeta, type MetaConfig, type LocaleAwareMeta } from './useMeta' +import { useMeta, type MetaConfig, type LocaleAwareMeta, type OpenGraphConfig, type TwitterCardConfig } from './useMeta' import { useLocale, type LocaleId } from '../i18n' import type { RouteMetaValue } from '../types/route-meta.d' @@ -66,8 +66,8 @@ export function useI18nMeta( keywords: resolveMetaValue(configValue.keywords, routeValue), author: resolveMetaValue(configValue.author, routeValue), canonical: resolveMetaValue(configValue.canonical, routeValue), - og: resolveMetaValue(configValue.og, routeValue), - twitter: resolveMetaValue(configValue.twitter, routeValue), + og: resolveI18nOgTwitter(resolveMetaValue(configValue.og, routeValue), currentLocale), + twitter: resolveI18nOgTwitter(resolveMetaValue(configValue.twitter, routeValue), currentLocale), custom: resolveI18nCustomTags(resolveMetaValue(configValue.custom, routeValue), currentLocale), } }) @@ -135,6 +135,28 @@ function resolveI18nContent( return content['en-US'] || Object.values(content)[0] } +/** + * Resolves locale-aware title/description fields in og/twitter config objects. + * After resolution, title/description are plain strings — compatible with MetaConfig. + */ +function resolveI18nOgTwitter( + config: I18nOpenGraphConfig | I18nTwitterCardConfig | undefined, + locale: LocaleId +): OpenGraphConfig | TwitterCardConfig | undefined { + if (!config) return config + const title = config.title + ? typeof config.title === 'object' + ? resolveI18nContent(config.title as LocaleAwareMeta, locale) + : config.title + : config.title + const description = config.description + ? typeof config.description === 'object' + ? resolveI18nContent(config.description as LocaleAwareMeta, locale) + : config.description + : config.description + return { ...config, title, description } as OpenGraphConfig | TwitterCardConfig +} + /** * Resolves custom meta tags with i18n support */ @@ -166,6 +188,18 @@ function resolveI18nCustomTags( })) } +/** OpenGraph config with locale-aware title/description */ +type I18nOpenGraphConfig = Omit & { + title?: string | LocaleAwareMeta + description?: string | LocaleAwareMeta +} + +/** Twitter Card config with locale-aware title/description */ +type I18nTwitterCardConfig = Omit & { + title?: string | LocaleAwareMeta + description?: string | LocaleAwareMeta +} + /** * i18n-aware meta configuration interface */ @@ -180,10 +214,10 @@ export interface I18nMetaConfig { author?: string | ((route: any) => string) /** Canonical URL */ canonical?: string | ((route: any) => string) - /** OpenGraph configuration */ - og?: MetaConfig['og'] - /** Twitter Card configuration */ - twitter?: MetaConfig['twitter'] + /** OpenGraph configuration (locale-aware title/description) */ + og?: I18nOpenGraphConfig | ((route: any) => I18nOpenGraphConfig) + /** Twitter Card configuration (locale-aware title/description) */ + twitter?: I18nTwitterCardConfig | ((route: any) => I18nTwitterCardConfig) /** Custom meta tags */ custom?: MetaConfig['custom'] /** Hreflang configuration for international SEO */ diff --git a/apps/vdn-static/src/config/meta-examples.ts b/apps/vdn-static/src/config/meta-examples.ts index 713fd4d..9ccd319 100644 --- a/apps/vdn-static/src/config/meta-examples.ts +++ b/apps/vdn-static/src/config/meta-examples.ts @@ -5,7 +5,8 @@ * in the Viossa application. */ -import type { MetaConfig, I18nMetaConfig } from '../composables/useI18nMeta' +import type { MetaConfig } from '../composables/useMeta' +import type { I18nMetaConfig } from '../composables/useI18nMeta' import { createRouteMeta } from '../composables/useMeta' /** From 0dc2a0a570807829d5ce71014ab125f8040c4dd2 Mon Sep 17 00:00:00 2001 From: BarnacleBoy Date: Mon, 18 May 2026 13:08:55 +0000 Subject: [PATCH 5/8] =?UTF-8?q?fix:=20drupal-meta=20=E2=80=94=20Array.isAr?= =?UTF-8?q?ray=20narrowing=20for=20custom=20tags=20union=20type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/vdn-static/src/utils/drupal-meta.ts | 30 +++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/apps/vdn-static/src/utils/drupal-meta.ts b/apps/vdn-static/src/utils/drupal-meta.ts index 9078f38..1475417 100644 --- a/apps/vdn-static/src/utils/drupal-meta.ts +++ b/apps/vdn-static/src/utils/drupal-meta.ts @@ -60,19 +60,21 @@ export function generateDrupalNodeMeta( } // Add sticky/promote as robots meta - if (attributes.sticky || attributes.promote) { - meta.custom?.push({ - name: 'robots', - content: 'index, follow', - }) - } + if (meta.custom && Array.isArray(meta.custom)) { + if (attributes.sticky || attributes.promote) { + meta.custom.push({ + name: 'robots', + content: 'index, follow', + }) + } - // Add status-based robots meta - if (!attributes.status) { - meta.custom?.push({ - name: 'robots', - content: 'noindex, nofollow', - }) + // Add status-based robots meta + if (!attributes.status) { + meta.custom.push({ + name: 'robots', + content: 'noindex, nofollow', + }) + } } return meta @@ -98,7 +100,7 @@ export function generateArticleContentMeta( type: 'article', }, custom: [ - ...(baseMeta.custom || []), + ...(Array.isArray(baseMeta.custom) ? baseMeta.custom : []), // Article-specific meta tags { property: 'article:section', @@ -151,7 +153,7 @@ export function generateLearningResourceMeta( type: 'article', }, custom: [ - ...(baseMeta.custom || []), + ...(Array.isArray(baseMeta.custom) ? baseMeta.custom : []), // Learning resource-specific meta tags { name: 'resource-type', From 9279ae063ec6c903931f74756d9407a2f947c9f0 Mon Sep 17 00:00:00 2001 From: BarnacleBoy Date: Mon, 18 May 2026 13:12:15 +0000 Subject: [PATCH 6/8] fix: add robots field to MetaConfig and I18nMetaConfig --- apps/vdn-static/src/composables/useI18nMeta.ts | 2 ++ apps/vdn-static/src/composables/useMeta.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/apps/vdn-static/src/composables/useI18nMeta.ts b/apps/vdn-static/src/composables/useI18nMeta.ts index 6e305ee..00f7d1d 100644 --- a/apps/vdn-static/src/composables/useI18nMeta.ts +++ b/apps/vdn-static/src/composables/useI18nMeta.ts @@ -220,6 +220,8 @@ export interface I18nMetaConfig { twitter?: I18nTwitterCardConfig | ((route: any) => I18nTwitterCardConfig) /** Custom meta tags */ custom?: MetaConfig['custom'] + /** Robots meta directive (e.g. 'index, follow') */ + robots?: string | ((route: any) => string) /** Hreflang configuration for international SEO */ hreflang?: { [locale: string]: string diff --git a/apps/vdn-static/src/composables/useMeta.ts b/apps/vdn-static/src/composables/useMeta.ts index 3f874ce..89cfff9 100644 --- a/apps/vdn-static/src/composables/useMeta.ts +++ b/apps/vdn-static/src/composables/useMeta.ts @@ -33,6 +33,8 @@ export interface MetaConfig { appendLocale?: boolean /** Title template for formatting */ titleTemplate?: (title: string) => string + /** Robots meta directive (e.g. 'index, follow') */ + robots?: string | ((route: RouteLocationNormalizedLoaded) => string) } /** From cfc70acb265ac91d4b3f271be313df1765775f9b Mon Sep 17 00:00:00 2001 From: BarnacleBoy Date: Mon, 18 May 2026 13:14:11 +0000 Subject: [PATCH 7/8] fix: add pinia dependency for stores/user --- apps/vdn-static/package.json | 1 + pnpm-lock.yaml | 109 ++++++++++++++++++++++++++++++++--- 2 files changed, 102 insertions(+), 8 deletions(-) diff --git a/apps/vdn-static/package.json b/apps/vdn-static/package.json index 5d35406..456b0af 100644 --- a/apps/vdn-static/package.json +++ b/apps/vdn-static/package.json @@ -17,6 +17,7 @@ "arktype": "^2.1.29", "axios": "^1.11.0", "bulma": "^1.0.4", + "pinia": "^3.0.4", "tailwindcss": "^4.1.6", "vue-i18n": "^11.1.3", "vue-router": "^5.0.4" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0dcf1eb..64b1919 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,6 +96,9 @@ importers: bulma: specifier: ^1.0.4 version: 1.0.4 + pinia: + specifier: ^3.0.4 + version: 3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)) tailwindcss: specifier: ^4.1.6 version: 4.1.10 @@ -104,7 +107,7 @@ importers: version: 11.1.5(vue@3.5.32(typescript@5.8.3)) vue-router: specifier: ^5.0.4 - version: 5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.32(typescript@5.8.3)) + version: 5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)) devDependencies: '@eslint/js': specifier: ^9.39.2 @@ -141,7 +144,7 @@ importers: version: 8.55.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.8.3) unplugin-vue-router: specifier: ^0.19.2 - version: 0.19.2(@vue/compiler-sfc@3.5.32)(vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)) + version: 0.19.2(@vue/compiler-sfc@3.5.32)(vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)) vite: specifier: ^6.3.5 version: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(tsx@4.20.2)(yaml@2.8.3) @@ -940,12 +943,21 @@ packages: '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + '@vue/devtools-api@7.7.9': + resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} + '@vue/devtools-api@8.1.1': resolution: {integrity: sha512-bsDMJ07b3GN1puVwJb/fyFnj/U2imyswK5UQVLZwVl7O05jDrt6BHxeG5XffmOOdasOj/bOmIjxJvGPxU7pcqw==} + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + '@vue/devtools-kit@8.1.1': resolution: {integrity: sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg==} + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + '@vue/devtools-shared@8.1.1': resolution: {integrity: sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==} @@ -1260,6 +1272,10 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1654,16 +1670,18 @@ packages: glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + 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 hasBin: true glob@11.0.2: resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} engines: {node: 20 || >=22} + 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 hasBin: true 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 globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} @@ -1837,6 +1855,10 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -2087,6 +2109,9 @@ packages: resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -2243,6 +2268,9 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + perfect-debounce@2.1.0: resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} @@ -2261,6 +2289,15 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pinia@3.0.4: + resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + peerDependencies: + typescript: '>=4.5.0' + vue: ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -2373,6 +2410,9 @@ packages: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -2495,6 +2535,10 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + sql-highlight@6.1.0: resolution: {integrity: sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==} engines: {node: '>=14'} @@ -2541,6 +2585,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2562,12 +2610,12 @@ packages: tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - deprecated: Old versions of tar 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 exhorbitant rates) by contacting i@izs.me + deprecated: Old versions of tar 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 tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} - deprecated: Old versions of tar 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 exhorbitant rates) by contacting i@izs.me + deprecated: Old versions of tar 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 tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} @@ -2776,6 +2824,7 @@ packages: uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true vary@1.1.2: @@ -3635,10 +3684,24 @@ snapshots: '@vue/devtools-api@6.6.4': {} + '@vue/devtools-api@7.7.9': + dependencies: + '@vue/devtools-kit': 7.7.9 + '@vue/devtools-api@8.1.1': dependencies: '@vue/devtools-kit': 8.1.1 + '@vue/devtools-kit@7.7.9': + dependencies: + '@vue/devtools-shared': 7.7.9 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + '@vue/devtools-kit@8.1.1': dependencies: '@vue/devtools-shared': 8.1.1 @@ -3646,6 +3709,10 @@ snapshots: hookable: 5.5.3 perfect-debounce: 2.1.0 + '@vue/devtools-shared@7.7.9': + dependencies: + rfdc: 1.4.1 + '@vue/devtools-shared@8.1.1': {} '@vue/language-core@3.2.6': @@ -3989,6 +4056,10 @@ snapshots: cookie@0.7.2: {} + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -4622,6 +4693,8 @@ snapshots: dependencies: which-typed-array: 1.1.19 + is-what@5.5.0: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -4867,6 +4940,8 @@ snapshots: dependencies: minipass: 7.1.2 + mitt@3.0.1: {} + mkdirp-classic@0.5.3: {} mkdirp@1.0.4: {} @@ -5017,6 +5092,8 @@ snapshots: pathe@2.0.3: {} + perfect-debounce@1.0.0: {} + perfect-debounce@2.1.0: {} picocolors@1.1.1: {} @@ -5028,6 +5105,13 @@ snapshots: picomatch@4.0.3: {} + pinia@3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)): + dependencies: + '@vue/devtools-api': 7.7.9 + vue: 3.5.32(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -5144,6 +5228,8 @@ snapshots: retry@0.12.0: optional: true + rfdc@1.4.1: {} + rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -5322,6 +5408,8 @@ snapshots: source-map-js@1.2.1: {} + speakingurl@14.0.1: {} + sql-highlight@6.1.0: {} sqlite3@5.1.7: @@ -5373,6 +5461,10 @@ snapshots: strip-json-comments@3.1.1: {} + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -5557,7 +5649,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.3 - unplugin-vue-router@0.19.2(@vue/compiler-sfc@3.5.32)(vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)): + unplugin-vue-router@0.19.2(@vue/compiler-sfc@3.5.32)(vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)): dependencies: '@babel/generator': 7.29.1 '@vue-macros/common': 3.1.2(vue@3.5.32(typescript@5.8.3)) @@ -5578,7 +5670,7 @@ snapshots: unplugin-utils: 0.3.1 yaml: 2.8.3 optionalDependencies: - vue-router: 5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.32(typescript@5.8.3)) + vue-router: 5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)) transitivePeerDependencies: - vue @@ -5647,7 +5739,7 @@ snapshots: '@vue/devtools-api': 6.6.4 vue: 3.5.32(typescript@5.8.3) - vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.32(typescript@5.8.3)): + vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)): dependencies: '@babel/generator': 7.29.1 '@vue-macros/common': 3.1.2(vue@3.5.32(typescript@5.8.3)) @@ -5669,6 +5761,7 @@ snapshots: yaml: 2.8.3 optionalDependencies: '@vue/compiler-sfc': 3.5.32 + pinia: 3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)) vue-tsc@3.2.6(typescript@5.8.3): dependencies: From f6b5266b462f59f16c055403d7605d6422385a10 Mon Sep 17 00:00:00 2001 From: BarnacleBoy Date: Mon, 18 May 2026 13:16:26 +0000 Subject: [PATCH 8/8] =?UTF-8?q?fix:=20definePage=20import=20=E2=80=94=20us?= =?UTF-8?q?e=20unplugin-vue-router/runtime=20not=20vue-router/auto-routes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/vdn-static/src/pages/admin/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/vdn-static/src/pages/admin/index.vue b/apps/vdn-static/src/pages/admin/index.vue index 0323773..183703e 100644 --- a/apps/vdn-static/src/pages/admin/index.vue +++ b/apps/vdn-static/src/pages/admin/index.vue @@ -1,5 +1,5 @@