Compare commits
8 commits
517c33adde
...
f6b5266b46
| Author | SHA1 | Date | |
|---|---|---|---|
| f6b5266b46 | |||
| cfc70acb26 | |||
| 9279ae063e | |||
| 0dc2a0a570 | |||
| 1724a838e2 | |||
| 75d5cf24ad | |||
| 8971d0ddf2 | |||
| 0f1bc2258a |
9 changed files with 177 additions and 66 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
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 { 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
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -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
|
||||
*/
|
||||
|
|
@ -158,14 +180,26 @@ 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
|
||||
}))
|
||||
}
|
||||
|
||||
/** OpenGraph config with locale-aware title/description */
|
||||
type I18nOpenGraphConfig = Omit<OpenGraphConfig, 'title' | 'description'> & {
|
||||
title?: string | LocaleAwareMeta
|
||||
description?: string | LocaleAwareMeta
|
||||
}
|
||||
|
||||
/** Twitter Card config with locale-aware title/description */
|
||||
type I18nTwitterCardConfig = Omit<TwitterCardConfig, 'title' | 'description'> & {
|
||||
title?: string | LocaleAwareMeta
|
||||
description?: string | LocaleAwareMeta
|
||||
}
|
||||
|
||||
/**
|
||||
* i18n-aware meta configuration interface
|
||||
*/
|
||||
|
|
@ -180,12 +214,14 @@ 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']
|
||||
/** Robots meta directive (e.g. 'index, follow') */
|
||||
robots?: string | ((route: any) => string)
|
||||
/** Hreflang configuration for international SEO */
|
||||
hreflang?: {
|
||||
[locale: string]: string
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -235,7 +237,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
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
import { definePage } from 'vue-router/auto-routes'
|
||||
import { definePage } from 'unplugin-vue-router/runtime'
|
||||
import { useAuth } from '../../composables/useAuth'
|
||||
import { usePreviewMode } from '../../composables/usePreviewMode'
|
||||
import PreviewModeToggle from '@/components/molecules/PreviewModeToggle.vue'
|
||||
|
|
|
|||
27
apps/vdn-static/src/types/route-meta.d.ts
vendored
27
apps/vdn-static/src/types/route-meta.d.ts
vendored
|
|
@ -116,29 +116,4 @@ export type RouteMetaValue<T> = T | ((route: RouteLocationNormalizedLoaded) => T
|
|||
/**
|
||||
* Helper function type for dynamic meta values
|
||||
*/
|
||||
export type MetaValueFunction<T> = (route: RouteLocationNormalizedLoaded) => T
|
||||
|
||||
/**
|
||||
* Type guard for checking if a meta value is a function
|
||||
*/
|
||||
export function isMetaFunction<T>(
|
||||
value: RouteMetaValue<T>
|
||||
): value is MetaValueFunction<T> {
|
||||
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
|
||||
}
|
||||
export type MetaValueFunction<T> = (route: RouteLocationNormalizedLoaded) => T
|
||||
|
|
@ -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',
|
||||
|
|
|
|||
109
pnpm-lock.yaml
generated
109
pnpm-lock.yaml
generated
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue