chore(ui): use vitest-browser-vue for UI tests, remove auto loading, typecheck UI (#8752)

This commit is contained in:
Vladimir 2025-10-22 16:04:28 +02:00 committed by GitHub
parent a821833117
commit 624032ed6f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
51 changed files with 331 additions and 696 deletions

View File

@ -47,6 +47,9 @@ jobs:
- name: Typecheck
run: pnpm run typecheck
- name: Typecheck UI
run: pnpm run -C packages/ui typecheck:client
# From https://github.com/rhysd/actionlint/blob/main/docs/usage.md#use-actionlint-on-github-actions
- name: Check workflow files
run: |

View File

@ -571,6 +571,7 @@ body {
},
{
name: 'vitest:browser:support-testing-library',
enforce: 'pre',
config() {
const rolldownPlugin = {
name: 'vue-test-utils-rewrite',
@ -586,7 +587,6 @@ body {
},
},
}
const esbuildPlugin = {
name: 'test-utils-rewrite',
// "any" because vite doesn't expose any types for this

View File

@ -1,374 +0,0 @@
/* 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 activeFileId: typeof import('./composables/params')['activeFileId']
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
const calcExternalLabels: typeof import('./composables/module-graph')['calcExternalLabels']
const clickOnTask: typeof import('./composables/navigation')['clickOnTask']
const codemirrorRef: typeof import('./composables/codemirror')['codemirrorRef']
const columnNumber: typeof import('./composables/params')['columnNumber']
const computed: typeof import('vue')['computed']
const computedAsync: typeof import('@vueuse/core')['computedAsync']
const computedEager: typeof import('@vueuse/core')['computedEager']
const computedInject: typeof import('@vueuse/core')['computedInject']
const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
const controlledRef: typeof import('@vueuse/core')['controlledRef']
const coverage: typeof import('./composables/navigation')['coverage']
const coverageConfigured: typeof import('./composables/navigation')['coverageConfigured']
const coverageEnabled: typeof import('./composables/navigation')['coverageEnabled']
const coverageUrl: typeof import('./composables/navigation')['coverageUrl']
const coverageVisible: typeof import('./composables/navigation')['coverageVisible']
const createAnsiToHtmlFilter: typeof import('./composables/error')['createAnsiToHtmlFilter']
const createApp: typeof import('vue')['createApp']
const createEventHook: typeof import('@vueuse/core')['createEventHook']
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
const createModuleLabelItem: typeof import('./composables/module-graph')['createModuleLabelItem']
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
const createRef: typeof import('@vueuse/core')['createRef']
const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
const currentModule: typeof import('./composables/navigation')['currentModule']
const customRef: typeof import('vue')['customRef']
const customViewport: typeof import('./composables/browser')['customViewport']
const dashboardVisible: typeof import('./composables/navigation')['dashboardVisible']
const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const detailSizes: typeof import('./composables/navigation')['detailSizes']
const disableCoverage: typeof import('./composables/navigation')['disableCoverage']
const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
const effectScope: typeof import('vue')['effectScope']
const extendRef: typeof import('@vueuse/core')['extendRef']
const getAttachmentUrl: typeof import('./composables/attachments')['getAttachmentUrl']
const getCurrentBrowserIframe: typeof import('./composables/api')['getCurrentBrowserIframe']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const getModuleGraph: typeof import('./composables/module-graph')['getModuleGraph']
const h: typeof import('vue')['h']
const hideRightPanel: typeof import('./composables/navigation')['hideRightPanel']
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
const initializeNavigation: typeof import('./composables/navigation')['initializeNavigation']
const inject: typeof import('vue')['inject']
const injectLocal: typeof import('@vueuse/core')['injectLocal']
const isDark: typeof import('./composables/dark')['isDark']
const isDefined: typeof import('@vueuse/core')['isDefined']
const isExternalAttachment: typeof import('./composables/attachments')['isExternalAttachment']
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 isTestFile: typeof import('./composables/error')['isTestFile']
const lineNumber: typeof import('./composables/params')['lineNumber']
const mainSizes: typeof import('./composables/navigation')['mainSizes']
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
const mapLeveledTaskStacks: typeof import('./composables/error')['mapLeveledTaskStacks']
const markRaw: typeof import('vue')['markRaw']
const navigateTo: typeof import('./composables/navigation')['navigateTo']
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 onBrowserPanelResizing: typeof import('./composables/browser')['onBrowserPanelResizing']
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
const onDeactivated: typeof import('vue')['onDeactivated']
const onElementRemoval: typeof import('@vueuse/core')['onElementRemoval']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
const onLongPress: typeof import('@vueuse/core')['onLongPress']
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 onStartTyping: typeof import('@vueuse/core')['onStartTyping']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
const openInEditor: typeof import('./composables/error')['openInEditor']
const openScreenshot: typeof import('./composables/screenshot')['openScreenshot']
const openedTreeItems: typeof import('./composables/navigation')['openedTreeItems']
const panels: typeof import('./composables/navigation')['panels']
const params: typeof import('./composables/params')['params']
const parseError: typeof import('./composables/error')['parseError']
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
const provide: typeof import('vue')['provide']
const provideLocal: typeof import('@vueuse/core')['provideLocal']
const provideResizing: typeof import("./composables/browser")["provideResizing"]
const reactify: typeof import('@vueuse/core')['reactify']
const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
const reactive: typeof import('vue')['reactive']
const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
const reactivePick: typeof import('@vueuse/core')['reactivePick']
const readonly: typeof import('vue')['readonly']
const recalculateDetailPanels: typeof import("./composables/browser")["recalculateDetailPanels"]
const ref: typeof import('vue')['ref']
const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
const refDebounced: typeof import('@vueuse/core')['refDebounced']
const refDefault: typeof import('@vueuse/core')['refDefault']
const refThrottled: typeof import('@vueuse/core')['refThrottled']
const refWithControl: typeof import('@vueuse/core')['refWithControl']
const registerResizingListener: typeof import("./composables/browser")["registerResizingListener"]
const resolveComponent: typeof import('vue')['resolveComponent']
const resolveRef: typeof import('@vueuse/core')['resolveRef']
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
const sanitizeFilePath: typeof import('./composables/attachments')['sanitizeFilePath']
const selectedTest: typeof import('./composables/params')['selectedTest']
const setIframeViewport: typeof import('./composables/api')['setIframeViewport']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const shouldOpenInEditor: typeof import('./composables/error')['shouldOpenInEditor']
const showAnnotationSource: typeof import('./composables/codemirror')['showAnnotationSource']
const showCoverage: typeof import('./composables/navigation')['showCoverage']
const showDashboard: typeof import('./composables/navigation')['showDashboard']
const showLine: typeof import('./composables/codemirror')['showLine']
const showLocationSource: typeof import('./composables/codemirror')['showLocationSource']
const showNavigationPanel: typeof import('./composables/navigation')['showNavigationPanel']
const showReport: typeof import('./composables/navigation')['showReport']
const showRightPanel: typeof import('./composables/navigation')['showRightPanel']
const showSource: typeof import('./composables/codemirror')['showSource']
const showTaskSource: typeof import('./composables/codemirror')['showTaskSource']
const syncRef: typeof import('@vueuse/core')['syncRef']
const syncRefs: typeof import('@vueuse/core')['syncRefs']
const templateRef: typeof import('@vueuse/core')['templateRef']
const throttledRef: typeof import('@vueuse/core')['throttledRef']
const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
const toRaw: typeof import('vue')['toRaw']
const toReactive: typeof import('@vueuse/core')['toReactive']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const toValue: typeof import('vue')['toValue']
const toggleDark: typeof import('./composables/dark')['toggleDark']
const triggerRef: typeof import('vue')['triggerRef']
const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
const ui: typeof import('./composables/api')['ui']
const unifiedDiff: typeof import("./composables/diff")["unifiedDiff"]
const unref: typeof import('vue')['unref']
const unrefElement: typeof import('@vueuse/core')['unrefElement']
const until: typeof import('@vueuse/core')['until']
const updateBrowserPanel: typeof import('./composables/navigation')['updateBrowserPanel']
const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
const useAnimate: typeof import('@vueuse/core')['useAnimate']
const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference']
const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes']
const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
const useArraySome: typeof import('@vueuse/core')['useArraySome']
const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
const useAttrs: typeof import('vue')['useAttrs']
const useBase64: typeof import('@vueuse/core')['useBase64']
const useBattery: typeof import('@vueuse/core')['useBattery']
const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
const useCached: typeof import('@vueuse/core')['useCached']
const useClipboard: typeof import('@vueuse/core')['useClipboard']
const useClipboardItems: typeof import('@vueuse/core')['useClipboardItems']
const useCloned: typeof import('@vueuse/core')['useCloned']
const useCodeMirror: typeof import('./composables/codemirror')['useCodeMirror']
const useColorMode: typeof import('@vueuse/core')['useColorMode']
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
const useCountdown: typeof import('@vueuse/core')['useCountdown']
const useCounter: typeof import('@vueuse/core')['useCounter']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVar: typeof import('@vueuse/core')['useCssVar']
const useCssVars: typeof import('vue')['useCssVars']
const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
const useCycleList: typeof import('@vueuse/core')['useCycleList']
const useDark: typeof import('@vueuse/core')['useDark']
const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
const useDebounce: typeof import('@vueuse/core')['useDebounce']
const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
const useDraggable: typeof import('@vueuse/core')['useDraggable']
const useDropZone: typeof import('@vueuse/core')['useDropZone']
const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
const useElementHover: typeof import('@vueuse/core')['useElementHover']
const useElementSize: typeof import('@vueuse/core')['useElementSize']
const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
const useEventBus: typeof import('@vueuse/core')['useEventBus']
const useEventListener: typeof import('@vueuse/core')['useEventListener']
const useEventSource: typeof import('@vueuse/core')['useEventSource']
const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
const useFavicon: typeof import('@vueuse/core')['useFavicon']
const useFetch: typeof import('@vueuse/core')['useFetch']
const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
const useFocus: typeof import('@vueuse/core')['useFocus']
const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
const useFps: typeof import('@vueuse/core')['useFps']
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
const useGamepad: typeof import('@vueuse/core')['useGamepad']
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
const useId: typeof import('vue')['useId']
const useIdle: typeof import('@vueuse/core')['useIdle']
const useImage: typeof import('@vueuse/core')['useImage']
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
const useInterval: typeof import('@vueuse/core')['useInterval']
const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
const useLink: typeof import('vue-router')['useLink']
const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
const useMemoize: typeof import('@vueuse/core')['useMemoize']
const useMemory: typeof import('@vueuse/core')['useMemory']
const useModel: typeof import('vue')['useModel']
const useMounted: typeof import('@vueuse/core')['useMounted']
const useMouse: typeof import('@vueuse/core')['useMouse']
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
const useNetwork: typeof import('@vueuse/core')['useNetwork']
const useNotifyResizing: typeof import("./composables/browser")["useNotifyResizing"]
const useNow: typeof import('@vueuse/core')['useNow']
const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
const useOnline: typeof import('@vueuse/core')['useOnline']
const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
const useParallax: typeof import('@vueuse/core')['useParallax']
const useParentElement: typeof import('@vueuse/core')['useParentElement']
const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver']
const usePermission: typeof import('@vueuse/core')['usePermission']
const usePointer: typeof import('@vueuse/core')['usePointer']
const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
const usePreferredReducedTransparency: typeof import('@vueuse/core')['usePreferredReducedTransparency']
const usePrevious: typeof import('@vueuse/core')['usePrevious']
const useRafFn: typeof import('@vueuse/core')['useRafFn']
const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
const useResizing: typeof import("./composables/browser")["useResizing"]
const useRoute: typeof import('vue-router')['useRoute']
const useRouter: typeof import('vue-router')['useRouter']
const useSSRWidth: typeof import('@vueuse/core')['useSSRWidth']
const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
const useScreenshot: typeof import('./composables/screenshot')['useScreenshot']
const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
const useScroll: typeof import('@vueuse/core')['useScroll']
const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
const useShare: typeof import('@vueuse/core')['useShare']
const useSlots: typeof import('vue')['useSlots']
const useSorted: typeof import('@vueuse/core')['useSorted']
const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
const useStepper: typeof import('@vueuse/core')['useStepper']
const useStorage: typeof import('@vueuse/core')['useStorage']
const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
const useSupported: typeof import('@vueuse/core')['useSupported']
const useSwipe: typeof import('@vueuse/core')['useSwipe']
const useTemplateRef: typeof import('vue')['useTemplateRef']
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
const useThrottle: typeof import('@vueuse/core')['useThrottle']
const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
const useTimeout: typeof import('@vueuse/core')['useTimeout']
const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
const useTitle: typeof import('@vueuse/core')['useTitle']
const useToNumber: typeof import('@vueuse/core')['useToNumber']
const useToString: typeof import('@vueuse/core')['useToString']
const useToggle: typeof import('@vueuse/core')['useToggle']
const useTransition: typeof import('@vueuse/core')['useTransition']
const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
const useVModel: typeof import('@vueuse/core')['useVModel']
const useVModels: typeof import('@vueuse/core')['useVModels']
const useVibrate: typeof import('@vueuse/core')['useVibrate']
const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
const viewMode: typeof import('./composables/params')['viewMode']
const viewport: typeof import('./composables/browser')['viewport']
const watch: typeof import('vue')['watch']
const watchArray: typeof import('@vueuse/core')['watchArray']
const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
const watchDeep: typeof import('@vueuse/core')['watchDeep']
const watchEffect: typeof import('vue')['watchEffect']
const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
const watchImmediate: typeof import('@vueuse/core')['watchImmediate']
const watchOnce: typeof import('@vueuse/core')['watchOnce']
const watchPausable: typeof import('@vueuse/core')['watchPausable']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
const whenever: typeof import('@vueuse/core')['whenever']
}
// 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')
// @ts-ignore
export type { ViewportSize } from './composables/browser'
import('./composables/browser')
// @ts-ignore
export type { ModuleType, ModuleNode, ModuleLink, ModuleGraph, ModuleGraphController, ModuleGraphConfig, ModuleLabelItem } from './composables/module-graph'
import('./composables/module-graph')
// @ts-ignore
export type { Params } from './composables/params'
import('./composables/params')
}

View File

@ -1,44 +0,0 @@
/* eslint-disable */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
AnnotationAttachmentImage: typeof import('./components/AnnotationAttachmentImage.vue')['default']
BrowserIframe: typeof import('./components/BrowserIframe.vue')['default']
CodeMirrorContainer: typeof import('./components/CodeMirrorContainer.vue')['default']
ConnectionOverlay: typeof import('./components/ConnectionOverlay.vue')['default']
Coverage: typeof import('./components/Coverage.vue')['default']
Dashboard: typeof import('./components/Dashboard.vue')['default']
DashboardEntry: typeof import('./components/dashboard/DashboardEntry.vue')['default']
DetailsPanel: typeof import('./components/DetailsPanel.vue')['default']
ErrorEntry: typeof import('./components/dashboard/ErrorEntry.vue')['default']
Explorer: typeof import('./components/explorer/Explorer.vue')['default']
ExplorerItem: typeof import('./components/explorer/ExplorerItem.vue')['default']
FileDetails: typeof import('./components/FileDetails.vue')['default']
FilterStatus: typeof import('./components/FilterStatus.vue')['default']
IconAction: typeof import('./components/IconAction.vue')['default']
IconButton: typeof import('./components/IconButton.vue')['default']
Modal: typeof import('./components/Modal.vue')['default']
ModuleTransformResultView: typeof import('./components/ModuleTransformResultView.vue')['default']
Navigation: typeof import('./components/Navigation.vue')['default']
ProgressBar: typeof import('./components/ProgressBar.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
ScreenshotError: typeof import('./components/views/ScreenshotError.vue')['default']
StatusIcon: typeof import('./components/StatusIcon.vue')['default']
TestFilesEntry: typeof import('./components/dashboard/TestFilesEntry.vue')['default']
TestsEntry: typeof import('./components/dashboard/TestsEntry.vue')['default']
TestsFilesContainer: typeof import('./components/dashboard/TestsFilesContainer.vue')['default']
ViewConsoleOutput: typeof import('./components/views/ViewConsoleOutput.vue')['default']
ViewConsoleOutputEntry: typeof import('./components/views/ViewConsoleOutputEntry.vue')['default']
ViewEditor: typeof import('./components/views/ViewEditor.vue')['default']
ViewModuleGraph: typeof import('./components/views/ViewModuleGraph.vue')['default']
ViewReport: typeof import('./components/views/ViewReport.vue')['default']
ViewReportError: typeof import('./components/views/ViewReportError.vue')['default']
ViewTestReport: typeof import('./components/views/ViewTestReport.vue')['default']
}
}

View File

@ -1,5 +1,6 @@
<script setup lang="ts">
import type { TestAnnotation } from 'vitest'
import { computed } from 'vue'
import { getAttachmentUrl, isExternalAttachment } from '~/composables/attachments'
const props = defineProps<{

View File

@ -1,5 +1,7 @@
<script setup lang="ts">
import type { ViewportSize } from '~/composables/browser'
import { useWindowSize } from '@vueuse/core'
import { computed } from 'vue'
import { viewport } from '~/composables/browser'
import { browserState } from '~/composables/client'
import {
@ -9,6 +11,7 @@ import {
showRightPanel,
updateBrowserPanel,
} from '~/composables/navigation'
import IconButton from './IconButton.vue'
const sizes: Record<ViewportSize, [width: number, height: number]> = {
'small-mobile': [320, 568],

View File

@ -1,5 +1,7 @@
<script setup lang="ts">
import { codemirrorRef } from '~/composables/codemirror'
import type { Ref } from 'vue'
import { onMounted, ref, useAttrs } from 'vue'
import { codemirrorRef, useCodeMirror } from '~/composables/codemirror'
const { mode, readOnly } = defineProps<{
mode?: string

View File

@ -1,3 +1,7 @@
<script setup lang="ts">
import TestsFilesContainer from './dashboard/TestsFilesContainer.vue'
</script>
<template>
<div h="full" flex="~ col">
<div p="3" h-10 flex="~ gap-2" items-center bg-header border="b base">

View File

@ -1,4 +1,6 @@
<script setup lang="ts">
import { ref } from 'vue'
defineProps<{
color?: string
}>()

View File

@ -2,7 +2,9 @@
import type { RunnerTask, RunnerTestCase } from 'vitest'
import type { ModuleGraph } from '~/composables/module-graph'
import type { Params } from '~/composables/params'
import { debouncedWatch } from '@vueuse/core'
import { toJSON } from 'flatted'
import { computed, nextTick, ref } from 'vue'
import {
browserState,
client,
@ -13,8 +15,15 @@ import {
import { explorerTree } from '~/composables/explorer'
import { hasFailedSnapshot } from '~/composables/explorer/collector'
import { getModuleGraph } from '~/composables/module-graph'
import { viewMode } from '~/composables/params'
import { selectedTest, viewMode } from '~/composables/params'
import { getProjectNameColor, getProjectTextColor } from '~/utils/task'
import IconButton from './IconButton.vue'
import StatusIcon from './StatusIcon.vue'
import ViewConsoleOutput from './views/ViewConsoleOutput.vue'
import ViewEditor from './views/ViewEditor.vue'
import ViewModuleGraph from './views/ViewModuleGraph.vue'
import ViewReport from './views/ViewReport.vue'
import ViewTestReport from './views/ViewTestReport.vue'
const graph = ref<ModuleGraph>({ nodes: [], links: [] })
const draft = ref(false)

View File

@ -1,7 +1,7 @@
<script setup type="ts">
defineProps({
icon: String,
})
<script setup lang="ts">
defineProps<{
icon?: string
}>()
</script>
<template>

View File

@ -1,4 +1,6 @@
<script setup lang="ts">
import { computed } from 'vue'
const { direction = 'bottom' } = defineProps<{
direction?: string
}>()

View File

@ -1,5 +1,9 @@
<script setup lang="ts">
import { asyncComputed, onKeyStroke } from '@vueuse/core'
import { computed } from 'vue'
import { browserState, client } from '~/composables/client'
import CodeMirrorContainer from './CodeMirrorContainer.vue'
import IconButton from './IconButton.vue'
const props = defineProps<{ id: string; projectName: string }>()
const emit = defineEmits<{ (e: 'close'): void }>()

View File

@ -1,6 +1,7 @@
<script setup lang="ts">
import type { RunnerTestFile } from 'vitest'
import { Tooltip as VueTooltip } from 'floating-vue'
import { computed, nextTick } from 'vue'
import { isDark, toggleDark } from '~/composables'
import { client, isReport, runAll, runFiles } from '~/composables/client'
import { explorerTree } from '~/composables/explorer'
@ -15,6 +16,8 @@ import {
showCoverage,
showDashboard,
} from '~/composables/navigation'
import Explorer from './explorer/Explorer.vue'
import IconButton from './IconButton.vue'
function updateSnapshot() {
return client.rpc.updateSnapshot()

View File

@ -1,4 +1,6 @@
<script setup lang="ts">
import { useWindowSize } from '@vueuse/core'
import { computed } from 'vue'
import { finished } from '~/composables/client/state'
import { explorerTree } from '~/composables/explorer'

View File

@ -1,7 +1,7 @@
import { faker } from '@faker-js/faker'
import { describe, expect, it } from 'vitest'
import { h } from 'vue'
import { render, screen } from '~/test'
import { page, render } from '~/test'
import DashboardEntry from './DashboardEntry.vue'
const bodyTestId = 'body-content'
@ -12,7 +12,7 @@ function div(o: { testId: string; body: string }) {
}
describe('DashboardEntry', () => {
it('renders the body and header slots', () => {
it('renders the body and header slots', async () => {
render(DashboardEntry, {
slots: {
body: div({ testId: bodyTestId, body: faker.lorem.words(2) }),
@ -20,7 +20,7 @@ describe('DashboardEntry', () => {
},
})
expect(screen.getByTestId(bodyTestId)).toBeTruthy()
expect(screen.getByTestId(headerTestId)).toBeTruthy()
await expect.element(page.getByTestId(bodyTestId)).toBeInTheDocument()
await expect.element(page.getByTestId(headerTestId)).toBeInTheDocument()
})
})

View File

@ -1,6 +1,7 @@
<script setup lang="ts">
import { unhandledErrors } from '~/composables/client/state'
import { explorerTree } from '~/composables/explorer'
import ErrorEntry from './ErrorEntry.vue'
</script>
<template>

View File

@ -1,6 +1,7 @@
<script setup lang="ts">
import { explorerTree } from '~/composables/explorer'
import { filter } from '~/composables/explorer/state'
import DashboardEntry from './DashboardEntry.vue'
function toggleFilter(type: 'success' | 'failed' | 'skipped' | 'total') {
// Reset all filters first

View File

@ -1,6 +1,8 @@
<script setup lang="ts">
import { finished } from '~/composables/client/state'
import { explorerTree } from '~/composables/explorer'
import TestFilesEntry from './TestFilesEntry.vue'
import TestsEntry from './TestsEntry.vue'
</script>
<template>

View File

@ -1,15 +1,21 @@
<script setup lang="ts">
import type { File, Task } from '@vitest/runner'
import { useResizeObserver } from '@vueuse/core'
import { hideAllPoppers } from 'floating-vue'
import { computed, ref } from 'vue'
// @ts-expect-error missing types
import { RecycleScroller } from 'vue-virtual-scroller'
import { config } from '~/composables/client'
import { useSearch } from '~/composables/explorer/search'
import { activeFileId } from '~/composables/params'
import DetailsPanel from '../DetailsPanel.vue'
import FilterStatus from '../FilterStatus.vue'
import IconButton from '../IconButton.vue'
import ExplorerItem from './ExplorerItem.vue'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
defineOptions({ inheritAttrs: false })

View File

@ -2,14 +2,17 @@
import type { Task, TaskState } from '@vitest/runner'
import type { TaskTreeNodeType } from '~/composables/explorer/types'
import { Tooltip as VueTooltip } from 'floating-vue'
import { nextTick } from 'vue'
import { computed, nextTick } from 'vue'
import { client, isReport, runFiles, runTask } from '~/composables/client'
import { showTaskSource } from '~/composables/codemirror'
import { explorerTree } from '~/composables/explorer'
import { hasFailedSnapshot } from '~/composables/explorer/collector'
import { escapeHtml, highlightRegex } from '~/composables/explorer/state'
import { coverageEnabled } from '~/composables/navigation'
import { coverageEnabled, disableCoverage } from '~/composables/navigation'
import { getProjectTextColor } from '~/utils/task'
import IconAction from '../IconAction.vue'
import IconButton from '../IconButton.vue'
import StatusIcon from '../StatusIcon.vue'
// TODO: better handling of "opened" - it means to forcefully open the tree item and set in TasksList right now
const {

View File

@ -1,4 +1,7 @@
<script setup lang="ts">
import { onKeyStroke } from '@vueuse/core'
import IconButton from '../IconButton.vue'
defineProps<{
file: string
name: string

View File

@ -1,9 +1,11 @@
<script setup lang="ts">
import { getNames } from '@vitest/ws-client'
import { computed } from 'vue'
import { client, currentLogs as logs } from '~/composables/client'
import { isDark } from '~/composables/dark'
import { createAnsiToHtmlFilter } from '~/composables/error'
import { escapeHtml } from '~/utils/escape'
import ViewConsoleOutputEntry from './ViewConsoleOutputEntry.vue'
const formattedLogs = computed(() => {
const data = logs.value

View File

@ -2,13 +2,16 @@
import type { Task } from '@vitest/runner'
import type CodeMirror from 'codemirror'
import type { RunnerTestFile, TestAnnotation, TestError } from 'vitest'
import { until, useResizeObserver, watchDebounced } from '@vueuse/core'
import { createTooltip, destroyTooltip } from 'floating-vue'
import { computed, nextTick, onBeforeUnmount, ref, shallowRef, watch } from 'vue'
import { getAttachmentUrl, sanitizeFilePath } from '~/composables/attachments'
import { client, isReport } from '~/composables/client'
import { finished } from '~/composables/client/state'
import { codemirrorRef } from '~/composables/codemirror'
import { openInEditor } from '~/composables/error'
import { columnNumber, lineNumber } from '~/composables/params'
import CodeMirrorContainer from '../CodeMirrorContainer.vue'
const props = defineProps<{
file?: RunnerTestFile

View File

@ -14,7 +14,11 @@ import {
Markers,
PositionInitializers,
} from 'd3-graph-controller'
import { onMounted, onUnmounted, ref, toRefs, watch, watchEffect } from 'vue'
import { isReport } from '~/composables/client'
import IconButton from '../IconButton.vue'
import Modal from '../Modal.vue'
import ModuleTransformResultView from '../ModuleTransformResultView.vue'
const props = defineProps<{
graph: ModuleGraph

View File

@ -2,7 +2,7 @@ import type { RunnerTestFile } from 'vitest'
import { faker } from '@faker-js/faker'
import { beforeEach, describe, expect, it } from 'vitest'
import { config } from '~/composables/client'
import { render, screen, within } from '~/test'
import { page, render } from '~/test'
import ViewReport from './ViewReport.vue'
config.value.root = ''
@ -74,20 +74,20 @@ describe('ViewReport', () => {
it('renders all of the stacks', () => {
const stacks = error.stacks
const stacksElements = screen.queryAllByTestId(stackRowTestId)
const stacksElements = page.getByTestId(stackRowTestId)
expect(stacksElements).toHaveLength(stacks.length)
stacksElements.forEach((stack, idx) => {
for (let idx = 0; idx < stacks.length; idx++) {
const { column, line, file: fileName } = stacks[idx]
expect(stack.textContent).toContain(`${line}:${column}`)
expect(stack.textContent).toContain(`- ${fileName}`)
})
expect(stacksElements.nth(idx)).toHaveTextContent(`${line}:${column}`)
expect(stacksElements.nth(idx)).toHaveTextContent(`- ${fileName}`)
}
})
it('renders the error message', () => {
const report = screen.getByTestId(viewReportTestId)
expect(report.textContent).toContain(error.message)
expect(report.textContent).toContain(error.name)
const report = page.getByTestId(viewReportTestId)
expect(report).toHaveTextContent(error.message)
expect(report).toHaveTextContent(error.name)
})
})
@ -120,7 +120,7 @@ describe('ViewReport', () => {
props: { file },
})
const taskError = container.getByTestId(taskErrorTestId)
const preElements = taskError.querySelectorAll('pre')
const preElements = taskError.element().querySelectorAll('pre')
expect(preElements).toHaveLength(1)
expect(preElements[0].textContent, 'error has the correct plain text').toBe(
@ -179,7 +179,7 @@ describe('ViewReport', () => {
props: { file },
})
const taskError = container.getByTestId(taskErrorTestId)
const preElements = taskError.querySelectorAll('pre')
const preElements = taskError.element().querySelectorAll('pre')
expect(preElements).toHaveLength(1)
expect(preElements[0].textContent, 'error has the correct plain text').toBe(
@ -224,10 +224,10 @@ describe('ViewReport', () => {
},
})
const diffElement = within(component.getByTestId('diff'))
const diffElement = component.getByTestId('diff')
expect(diffElement.getByText(/Expected/)).toBeTruthy()
expect(diffElement.getByText(/Received/)).toBeTruthy()
expect(diffElement.queryByText(/\\x1B/)).toBeFalsy()
expect(diffElement.getByText(/Expected/)).toBeInTheDocument()
expect(diffElement.getByText(/Received/)).toBeInTheDocument()
expect(diffElement.getByText(/\\x1B/)).not.toBeInTheDocument()
})
})

View File

@ -1,9 +1,14 @@
<script setup lang="ts">
import type { RunnerTask, RunnerTestFile, RunnerTestSuite } from 'vitest'
import { computed } from 'vue'
import { browserState, config } from '~/composables/client'
import { isDark } from '~/composables/dark'
import { mapLeveledTaskStacks } from '~/composables/error'
import { openScreenshot, useScreenshot } from '~/composables/screenshot'
import IconButton from '../IconButton.vue'
import Modal from '../Modal.vue'
import ScreenshotError from './ScreenshotError.vue'
import ViewReportError from './ViewReportError.vue'
const props = defineProps<{
file: RunnerTestFile

View File

@ -1,7 +1,9 @@
<script setup lang="ts">
import type { ParsedStack, TestError } from 'vitest'
import { computed } from 'vue'
import { showLocationSource } from '~/composables/codemirror'
import { isTestFile, openInEditor } from '~/composables/error'
import { isDark } from '~/composables/dark'
import { createAnsiToHtmlFilter, isTestFile, openInEditor } from '~/composables/error'
import { escapeHtml } from '~/utils/escape'
const props = defineProps<{

View File

@ -2,12 +2,18 @@
import type { TestAnnotation, TestAnnotationLocation } from '@vitest/runner'
import type { RunnerTestCase } from 'vitest'
import { relative } from 'pathe'
import { computed } from 'vue'
import { getAttachmentUrl, sanitizeFilePath } from '~/composables/attachments'
import { browserState, config } from '~/composables/client'
import { showAnnotationSource } from '~/composables/codemirror'
import { isDark } from '~/composables/dark'
import { mapLeveledTaskStacks } from '~/composables/error'
import { openScreenshot, useScreenshot } from '~/composables/screenshot'
import AnnotationAttachmentImage from '../AnnotationAttachmentImage.vue'
import IconButton from '../IconButton.vue'
import Modal from '../Modal.vue'
import ScreenshotError from './ScreenshotError.vue'
import ViewReportError from './ViewReportError.vue'
const props = defineProps<{
test: RunnerTestCase

View File

@ -1,7 +1,8 @@
import type { BrowserUI } from 'vitest'
import { viewport } from './browser'
import { browserState, findById } from './client'
import { updateBrowserPanel } from './navigation'
import { currentModule, showDashboard, updateBrowserPanel } from './navigation'
import { activeFileId } from './params'
export const ui: BrowserUI = {
setCurrentFileId(fileId: string) {

View File

@ -1,3 +1,5 @@
import { ref } from 'vue'
export type ViewportSize
= | 'small-mobile'
| 'large-mobile'

View File

@ -10,7 +10,7 @@ import type {
import type { BrowserRunnerState } from '../../../types'
import { createFileTask } from '@vitest/runner/utils'
import { createClient, getTasks } from '@vitest/ws-client'
import { reactive as reactiveVue } from 'vue'
import { computed, reactive as reactiveVue, ref, shallowRef, watch } from 'vue'
import { explorerTree } from '~/composables/explorer'
import { isFileNode } from '~/composables/explorer/utils'
import { isSuite as isTaskSuite } from '~/utils/task'

View File

@ -1,6 +1,7 @@
import type { TestError } from '@vitest/utils'
import type { Ref } from 'vue'
import type { RunState } from '../../../types'
import { computed, ref } from 'vue'
export const testRunState: Ref<RunState> = ref('idle')
export const finished = computed(() => testRunState.value === 'idle')

View File

@ -9,6 +9,7 @@ import type {
} from 'vitest'
import { decompressSync, strFromU8 } from 'fflate'
import { parse } from 'flatted'
import { reactive } from 'vue'
import { StateManager } from '../../../../ws-client/src/state'
interface HTMLReportMetadata {

View File

@ -3,9 +3,11 @@ import type { RunnerTestCase } from 'vitest'
import type { Ref, WritableComputedRef } from 'vue'
import CodeMirror from 'codemirror'
import { watch } from 'vue'
import { markRaw, onUnmounted, shallowRef, watch } from 'vue'
import { navigateTo } from '~/composables/navigation'
import { openInEditor } from './error'
import { selectedTest } from './params'
import 'codemirror/mode/javascript/javascript'
// import 'codemirror/mode/css/css'
import 'codemirror/mode/xml/xml'

View File

@ -1,2 +1,4 @@
import { useDark, useToggle } from '@vueuse/core'
export const isDark = useDark()
export const toggleDark = useToggle(isDark)

View File

@ -1,4 +1,6 @@
import type { Ref } from 'vue'
import { debouncedWatch } from '@vueuse/core'
import { computed, ref, watch } from 'vue'
import { explorerTree } from '~/composables/explorer'
import {
filter,

View File

@ -1,5 +1,7 @@
import type { File } from '@vitest/runner'
import type { FileTreeNode, Filter, FilteredTests, TreeFilterState, UITaskTreeNode } from './types'
import { useLocalStorage } from '@vueuse/core'
import { computed, reactive, ref, shallowRef } from 'vue'
import { explorerTree } from './index'
export const uiFiles = shallowRef<FileTreeNode[]>([])

View File

@ -6,6 +6,8 @@ import type {
RootTreeNode,
UITaskTreeNode,
} from '~/composables/explorer/types'
import { useRafFn } from '@vueuse/core'
import { reactive } from 'vue'
import { runCollapseAllTask, runCollapseNode } from '~/composables/explorer/collapse'
import { annotateTest, collectTestsTotalData, preparePendingTasks, runCollect, runLoadFiles } from '~/composables/explorer/collector'
import { runExpandAll, runExpandNode } from '~/composables/explorer/expand'

View File

@ -1,8 +1,11 @@
import type { File, Task } from '@vitest/runner'
import type { Params } from './params'
import { useLocalStorage, watchOnce } from '@vueuse/core'
import { computed, reactive, ref, watch } from 'vue'
import { viewport } from './browser'
import { browserState, client, config, findById } from './client'
import { testRunState } from './client/state'
import { showTaskSource } from './codemirror'
import { activeFileId, columnNumber, lineNumber, selectedTest, viewMode } from './params'
export const currentModule = ref<File>()

View File

@ -1,3 +1,5 @@
import { toRef, useUrlSearchParams } from '@vueuse/core'
export interface Params {
file: string
view: null | 'graph' | 'editor' | 'console'

View File

@ -1,4 +1,5 @@
import type { RunnerTask } from 'vitest'
import { computed, ref } from 'vue'
export function openScreenshot(task: RunnerTask) {
const filePath = task.meta?.failScreenshotPath

View File

@ -1,6 +1,14 @@
<script setup lang="ts">
import { useDebounceFn } from '@vueuse/core'
// @ts-expect-error missing types
import { Pane, Splitpanes } from 'splitpanes'
import BrowserIframe from '~/components/BrowserIframe.vue'
import ConnectionOverlay from '~/components/ConnectionOverlay.vue'
import Coverage from '~/components/Coverage.vue'
import Dashboard from '~/components/Dashboard.vue'
import FileDetails from '~/components/FileDetails.vue'
import Navigation from '~/components/Navigation.vue'
import ProgressBar from '~/components/ProgressBar.vue'
import { browserState } from '~/composables/client'
import {
coverageUrl,

View File

@ -1,13 +1,12 @@
import type { RenderOptions } from '@testing-library/vue'
import type { ComponentRenderOptions } from 'vitest-browser-vue'
import { vTooltip } from 'floating-vue'
import {
render as _render,
cleanup,
} from 'vitest-browser-vue'
} from '@testing-library/vue'
import { vTooltip } from 'floating-vue'
import { afterEach } from 'vitest'
export { page } from 'vitest/browser'
export function render<C>(component: C, options?: RenderOptions<C>) {
export function render<C>(component: C, options?: ComponentRenderOptions<C, any>) {
return _render(component, {
...options,
global: {
@ -17,9 +16,3 @@ export function render<C>(component: C, options?: RenderOptions<C>) {
},
})
}
afterEach(() => {
cleanup()
})
export { screen, within } from '@testing-library/vue'

View File

@ -38,6 +38,7 @@
"build:client": "vite build",
"build:node": "rollup -c",
"typecheck": "tsc --noEmit",
"typecheck:client": "vue-tsc --noEmit",
"dev:client": "vite",
"dev": "rollup -c --watch --watch.include 'node/**'",
"dev:ui": "pnpm run --stream '/^(dev|dev:client)$/'",
@ -59,7 +60,6 @@
"@faker-js/faker": "^10.0.0",
"@iconify-json/carbon": "catalog:",
"@iconify-json/logos": "catalog:",
"@testing-library/vue": "^8.1.0",
"@types/codemirror": "^5.60.16",
"@types/d3-force": "^3.0.10",
"@types/d3-selection": "^3.0.11",
@ -80,13 +80,14 @@
"mime": "^4.1.0",
"rollup": "^4.52.0",
"splitpanes": "^3.2.0",
"typescript": "^5.9.3",
"unocss": "catalog:",
"unplugin-auto-import": "^0.19.0",
"unplugin-vue-components": "catalog:",
"vite": "^5.0.0",
"vite-plugin-pages": "^0.33.1",
"vitest-browser-vue": "2.0.0-beta.1",
"vue": "catalog:",
"vue-router": "^4.5.1",
"vue-tsc": "^3.1.1",
"vue-virtual-scroller": "2.0.0-beta.8"
}
}

View File

@ -1,4 +1,4 @@
import type { Reporter } from 'vitest'
import type { Reporter } from 'vitest/node'
declare const reporter: Reporter
export default reporter

View File

@ -1,3 +1 @@
/// <reference types="./client/auto-imports" />
/// <reference types="./client/components" />
/// <reference types="./client/shim" />

View File

@ -5,6 +5,9 @@
"lib": ["dom", "esnext", "DOM.Iterable"],
"skipLibCheck": true
},
"vueCompilerOptions": {
"checkUnknownComponents": true
},
"include": ["./client/**/*"],
"exclude": ["dist", "node_modules"]
}

View File

@ -2,8 +2,6 @@ import Vue from '@vitejs/plugin-vue'
import { resolve } from 'pathe'
import { presetAttributify, presetIcons, presetUno, transformerDirectives } from 'unocss'
import Unocss from 'unocss/vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { defineConfig } from 'vite'
import Pages from 'vite-plugin-pages'
@ -54,24 +52,9 @@ export default defineConfig({
],
safelist: 'absolute origin-top mt-[8px]'.split(' '),
}),
Components({
dirs: ['client/components'],
dts: resolve(import.meta.dirname, './client/components.d.ts'),
}),
Pages({
dirs: ['client/pages'],
}),
AutoImport({
dts: resolve(import.meta.dirname, './client/auto-imports.d.ts'),
dirs: ['./client/composables'],
imports: ['vue', 'vue-router', '@vueuse/core'],
injectAtEnd: true,
exclude: [
/node_modules/,
/dist/,
/\.git/,
],
}),
// uncomment to see the HTML reporter preview
// {
// name: 'debug-html-report',

389
pnpm-lock.yaml generated
View File

@ -243,10 +243,10 @@ importers:
dependencies:
'@vueuse/core':
specifier: 'catalog:'
version: 12.8.2(typescript@5.9.2)
version: 12.8.2(typescript@5.9.3)
vue:
specifier: 'catalog:'
version: 3.5.21(typescript@5.9.2)
version: 3.5.21(typescript@5.9.3)
devDependencies:
'@iconify-json/carbon':
specifier: 'catalog:'
@ -259,7 +259,7 @@ importers:
version: 3.13.0
'@shikijs/vitepress-twoslash':
specifier: ^3.13.0
version: 3.13.0(typescript@5.9.2)
version: 3.13.0(typescript@5.9.3)
'@unocss/reset':
specifier: 'catalog:'
version: 66.5.1
@ -271,7 +271,7 @@ importers:
version: 1.0.0(@vite-pwa/assets-generator@1.0.1)(vite-plugin-pwa@0.21.2(@vite-pwa/assets-generator@1.0.1)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0))
'@vitejs/plugin-vue':
specifier: 'catalog:'
version: 6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
version: 6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.3))
https-localhost:
specifier: ^4.7.1
version: 4.7.1
@ -283,7 +283,7 @@ importers:
version: 66.5.1(postcss@8.5.6)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))
unplugin-vue-components:
specifier: 'catalog:'
version: 0.28.0(@babel/parser@7.28.4)(rollup@4.52.0)(vue@3.5.21(typescript@5.9.2))
version: 0.28.0(@babel/parser@7.28.4)(rollup@4.52.0)(vue@3.5.21(typescript@5.9.3))
vite:
specifier: ^7.1.5
version: 7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)
@ -292,7 +292,7 @@ importers:
version: 0.21.2(@vite-pwa/assets-generator@1.0.1)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
vitepress:
specifier: 2.0.0-alpha.12
version: 2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1)
version: 2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.3)(yaml@2.8.1)
vitepress-plugin-group-icons:
specifier: ^1.6.3
version: 1.6.3(markdown-it@14.1.0)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))
@ -301,7 +301,7 @@ importers:
version: 1.7.5
vitepress-plugin-tabs:
specifier: ^0.7.3
version: 0.7.3(vitepress@2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
version: 0.7.3(vitepress@2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.3)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.3))
workbox-window:
specifier: ^7.3.0
version: 7.3.0
@ -712,7 +712,7 @@ importers:
version: 8.3.4
msw:
specifier: 'catalog:'
version: 2.11.3(@types/node@22.18.6)(typescript@5.9.2)
version: 2.11.3(@types/node@22.18.6)(typescript@5.9.3)
pathe:
specifier: 'catalog:'
version: 2.0.3
@ -805,9 +805,6 @@ importers:
'@iconify-json/logos':
specifier: 'catalog:'
version: 1.2.9
'@testing-library/vue':
specifier: ^8.1.0
version: 8.1.0(@vue/compiler-sfc@3.5.21)(vue@3.5.21(typescript@5.9.2))
'@types/codemirror':
specifier: ^5.60.16
version: 5.60.16
@ -825,7 +822,7 @@ importers:
version: 66.5.1
'@vitejs/plugin-vue':
specifier: 'catalog:'
version: 6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
version: 6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.3))
'@vitest/browser-playwright':
specifier: workspace:*
version: link:../browser-playwright
@ -840,7 +837,7 @@ importers:
version: 2.4.6
'@vueuse/core':
specifier: 'catalog:'
version: 12.8.2(typescript@5.9.2)
version: 12.8.2(typescript@5.9.3)
ansi-to-html:
specifier: ^0.7.2
version: 0.7.2
@ -858,7 +855,7 @@ importers:
version: 3.1.2
floating-vue:
specifier: ^5.2.2
version: 5.2.2(vue@3.5.21(typescript@5.9.2))
version: 5.2.2(vue@3.5.21(typescript@5.9.3))
mime:
specifier: ^4.1.0
version: 4.1.0
@ -867,31 +864,34 @@ importers:
version: 4.52.0
splitpanes:
specifier: ^3.2.0
version: 3.2.0(vue@3.5.21(typescript@5.9.2))
version: 3.2.0(vue@3.5.21(typescript@5.9.3))
typescript:
specifier: ^5.9.3
version: 5.9.3
unocss:
specifier: 'catalog:'
version: 66.5.1(postcss@8.5.6)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))
unplugin-auto-import:
specifier: ^0.19.0
version: 0.19.0(@vueuse/core@12.8.2(typescript@5.9.2))(rollup@4.52.0)
unplugin-vue-components:
specifier: 'catalog:'
version: 0.28.0(@babel/parser@7.28.4)(rollup@4.52.0)(vue@3.5.21(typescript@5.9.2))
vite:
specifier: ^7.1.5
version: 7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)
vite-plugin-pages:
specifier: ^0.33.1
version: 0.33.1(@vue/compiler-sfc@3.5.21)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.21(typescript@5.9.2)))
version: 0.33.1(@vue/compiler-sfc@3.5.21)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.21(typescript@5.9.3)))
vitest-browser-vue:
specifier: 2.0.0-beta.1
version: 2.0.0-beta.1(vitest@packages+vitest)(vue@3.5.21(typescript@5.9.3))
vue:
specifier: 'catalog:'
version: 3.5.21(typescript@5.9.2)
version: 3.5.21(typescript@5.9.3)
vue-router:
specifier: ^4.5.1
version: 4.5.1(vue@3.5.21(typescript@5.9.2))
version: 4.5.1(vue@3.5.21(typescript@5.9.3))
vue-tsc:
specifier: ^3.1.1
version: 3.1.1(typescript@5.9.3)
vue-virtual-scroller:
specifier: 2.0.0-beta.8
version: 2.0.0-beta.8(vue@3.5.21(typescript@5.9.2))
version: 2.0.0-beta.8(vue@3.5.21(typescript@5.9.3))
packages/utils:
dependencies:
@ -1279,7 +1279,7 @@ importers:
version: link:../../packages/web-worker
'@vueuse/integrations':
specifier: ^10.11.1
version: 10.11.1(axios@1.12.2(debug@4.4.3))(focus-trap@7.6.5)(vue@3.5.21(typescript@5.9.2))
version: 10.11.1(axios@1.12.2(debug@4.4.3))(focus-trap@7.6.5)(vue@3.5.21(typescript@5.9.3))
axios:
specifier: ^1.12.2
version: 1.12.2(debug@4.4.3)
@ -1321,7 +1321,7 @@ importers:
version: 0.1.1
vue:
specifier: 'catalog:'
version: 3.5.21(typescript@5.9.2)
version: 3.5.21(typescript@5.9.3)
zustand:
specifier: ^4.5.7
version: 4.5.7(@types/react@19.1.13)(react@19.1.1)
@ -1339,7 +1339,7 @@ importers:
version: 3.0.3
'@vitejs/plugin-vue':
specifier: latest
version: 6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
version: 6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.3))
'@vitest/browser-playwright':
specifier: workspace:*
version: link:../../packages/browser-playwright
@ -1387,7 +1387,7 @@ importers:
version: link:../../packages/vitest
vue:
specifier: 'catalog:'
version: 3.5.21(typescript@5.9.2)
version: 3.5.21(typescript@5.9.3)
test/dts-config:
devDependencies:
@ -3998,16 +3998,6 @@ packages:
peerDependencies:
'@testing-library/dom': '>=7.21.4'
'@testing-library/vue@8.1.0':
resolution: {integrity: sha512-ls4RiHO1ta4mxqqajWRh8158uFObVrrtAPoxk7cIp4HrnQUj/ScKzqz53HxYpG3X6Zb7H2v+0eTGLSoy8HQ2nA==}
engines: {node: '>=14'}
peerDependencies:
'@vue/compiler-sfc': '>= 3'
vue: '>= 3'
peerDependenciesMeta:
'@vue/compiler-sfc':
optional: true
'@tootallnate/quickjs-emscripten@0.23.0':
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
@ -4447,6 +4437,9 @@ packages:
'@volar/typescript@1.11.1':
resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==}
'@volar/typescript@2.4.23':
resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==}
'@vue/compiler-core@3.5.21':
resolution: {integrity: sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==}
@ -4490,6 +4483,14 @@ packages:
typescript:
optional: true
'@vue/language-core@3.1.1':
resolution: {integrity: sha512-qjMY3Q+hUCjdH+jLrQapqgpsJ0rd/2mAY02lZoHG3VFJZZZKLjAlV+Oo9QmWIT4jh8+Rx8RUGUi++d7T9Wb6Mw==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
'@vue/reactivity@3.5.21':
resolution: {integrity: sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==}
@ -4707,6 +4708,9 @@ packages:
alien-signals@2.0.5:
resolution: {integrity: sha512-PdJB6+06nUNAClInE3Dweq7/2xVAYM64vvvS1IHVHSJmgeOtEdrAGyp7Z2oJtYm0B342/Exd2NT0uMJaThcjLQ==}
alien-signals@3.0.3:
resolution: {integrity: sha512-2JXjom6R7ZwrISpUphLhf4htUq1aKRCennTJ6u9kFfr3sLmC9+I4CxxVi+McoFnIg+p1HnVrfLT/iCt4Dlz//Q==}
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@ -7657,10 +7661,6 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
picomatch@4.0.2:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
picomatch@4.0.3:
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
@ -8517,9 +8517,6 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
strip-literal@2.1.1:
resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==}
strip-literal@3.0.0:
resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==}
@ -8800,6 +8797,11 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
hasBin: true
uc.micro@2.1.0:
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
@ -8854,9 +8856,6 @@ packages:
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
unimport@3.14.5:
resolution: {integrity: sha512-tn890SwFFZxqaJSKQPPd+yygfKSATbM8BZWW1aCR2TJBTs1SDrmLamBueaFtYsGjHtQaRgqEbQflOjN2iW12gA==}
unique-string@2.0.0:
resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
engines: {node: '>=8'}
@ -8903,18 +8902,6 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
unplugin-auto-import@0.19.0:
resolution: {integrity: sha512-W97gTDEWu/L1EcKCXY5Ni8bsMW1E9kv12wYQv3mYpd7zcFctXYlLKsqeva6sbCQbzS8t9AG/XdU5/WkEJKPlFw==}
engines: {node: '>=14'}
peerDependencies:
'@nuxt/kit': ^3.2.2
'@vueuse/core': '*'
peerDependenciesMeta:
'@nuxt/kit':
optional: true
'@vueuse/core':
optional: true
unplugin-isolated-decl@0.15.2:
resolution: {integrity: sha512-RvJvC6+oTEfxKVIcyjfxlTFtzSQDU+22YKYge9huSvNzUE9GSPueG0tSIhVDvVUvdz4TFj46O/3vShZceFJLxw==}
engines: {node: '>=20.18.0'}
@ -8958,18 +8945,10 @@ packages:
'@nuxt/kit':
optional: true
unplugin@1.16.0:
resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==}
engines: {node: '>=14.0.0'}
unplugin@2.3.10:
resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==}
engines: {node: '>=18.12.0'}
unplugin@2.3.5:
resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==}
engines: {node: '>=18.12.0'}
unplugin@2.3.8:
resolution: {integrity: sha512-lkaSIlxceytPyt9yfb1h7L9jDFqwMqvUZeGsKB7Z8QrvAO3xZv2S+xMQQYzxk0AGJHcQhbcvhKEstrMy99jnuQ==}
engines: {node: '>=18.12.0'}
@ -9151,6 +9130,12 @@ packages:
'@types/react-dom':
optional: true
vitest-browser-vue@2.0.0-beta.1:
resolution: {integrity: sha512-yDq97dJMuOzz1UNMPP3KuEtFLHdy5uMWU2nm3N9CDm+Hlh1zH4yWQEcJrrQHo1MXItIaSo4E4eHwV4y+3D2j5g==}
peerDependencies:
vitest: workspace:*
vue: ^3.0.0
vitest-environment-custom@file:test/core/vitest-environment-custom:
resolution: {directory: test/core/vitest-environment-custom, type: directory}
@ -9163,6 +9148,9 @@ packages:
peerDependencies:
vitest: workspace:*
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
vue-component-type-helpers@2.0.17:
resolution: {integrity: sha512-2car49m8ciqg/JjgMBkx7o/Fd2A7fHESxNqL/2vJYFLXm4VwYO4yH0rexOi4a35vwNgDyvt17B07Vj126l9rAQ==}
@ -9210,6 +9198,12 @@ packages:
peerDependencies:
typescript: '*'
vue-tsc@3.1.1:
resolution: {integrity: sha512-fyixKxFniOVgn+L/4+g8zCG6dflLLt01Agz9jl3TO45Bgk87NZJRmJVPsiK+ouq3LB91jJCbOV+pDkzYTxbI7A==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
vue-virtual-scroller@2.0.0-beta.8:
resolution: {integrity: sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ==}
peerDependencies:
@ -11629,12 +11623,12 @@ snapshots:
'@shikijs/core': 3.13.0
'@shikijs/types': 3.13.0
'@shikijs/twoslash@3.13.0(typescript@5.9.2)':
'@shikijs/twoslash@3.13.0(typescript@5.9.3)':
dependencies:
'@shikijs/core': 3.13.0
'@shikijs/types': 3.13.0
twoslash: 0.3.4(typescript@5.9.2)
typescript: 5.9.2
twoslash: 0.3.4(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@ -11648,10 +11642,10 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
'@shikijs/vitepress-twoslash@3.13.0(typescript@5.9.2)':
'@shikijs/vitepress-twoslash@3.13.0(typescript@5.9.3)':
dependencies:
'@shikijs/twoslash': 3.13.0(typescript@5.9.2)
floating-vue: 5.2.2(vue@3.5.21(typescript@5.9.2))
'@shikijs/twoslash': 3.13.0(typescript@5.9.3)
floating-vue: 5.2.2(vue@3.5.21(typescript@5.9.3))
lz-string: 1.5.0
magic-string: 0.30.19
markdown-it: 14.1.0
@ -11660,9 +11654,9 @@ snapshots:
mdast-util-to-hast: 13.2.0
ohash: 2.0.11
shiki: 3.13.0
twoslash: 0.3.4(typescript@5.9.2)
twoslash-vue: 0.3.4(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.2)
twoslash: 0.3.4(typescript@5.9.3)
twoslash-vue: 0.3.4(typescript@5.9.3)
vue: 3.5.21(typescript@5.9.3)
transitivePeerDependencies:
- '@nuxt/kit'
- supports-color
@ -11807,15 +11801,6 @@ snapshots:
dependencies:
'@testing-library/dom': 10.4.1
'@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.21)(vue@3.5.21(typescript@5.9.2))':
dependencies:
'@babel/runtime': 7.26.0
'@testing-library/dom': 9.3.4
'@vue/test-utils': 2.4.6
vue: 3.5.21(typescript@5.9.2)
optionalDependencies:
'@vue/compiler-sfc': 3.5.21
'@tootallnate/quickjs-emscripten@0.23.0': {}
'@tybys/wasm-util@0.10.1':
@ -12140,10 +12125,10 @@ snapshots:
'@typescript-eslint/types': 8.44.0
eslint-visitor-keys: 4.2.1
'@typescript/vfs@1.6.1(typescript@5.9.2)':
'@typescript/vfs@1.6.1(typescript@5.9.3)':
dependencies:
debug: 4.4.3
typescript: 5.9.2
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@ -12329,11 +12314,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@vitejs/plugin-vue@6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))':
'@vitejs/plugin-vue@6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.3))':
dependencies:
'@rolldown/pluginutils': 1.0.0-beta.29
vite: 7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
'@vitest/cjs-lib@file:test/browser/cjs-lib': {}
@ -12385,6 +12370,12 @@ snapshots:
'@volar/language-core': 1.11.1
path-browserify: 1.0.1
'@volar/typescript@2.4.23':
dependencies:
'@volar/language-core': 2.4.23
path-browserify: 1.0.1
vscode-uri: 3.1.0
'@vue/compiler-core@3.5.21':
dependencies:
'@babel/parser': 7.28.4
@ -12454,7 +12445,7 @@ snapshots:
optionalDependencies:
typescript: 5.9.2
'@vue/language-core@3.0.6(typescript@5.9.2)':
'@vue/language-core@3.0.6(typescript@5.9.3)':
dependencies:
'@volar/language-core': 2.4.23
'@vue/compiler-dom': 3.5.21
@ -12465,7 +12456,19 @@ snapshots:
path-browserify: 1.0.1
picomatch: 4.0.3
optionalDependencies:
typescript: 5.9.2
typescript: 5.9.3
'@vue/language-core@3.1.1(typescript@5.9.3)':
dependencies:
'@volar/language-core': 2.4.23
'@vue/compiler-dom': 3.5.21
'@vue/shared': 3.5.21
alien-signals: 3.0.3
muggle-string: 0.4.1
path-browserify: 1.0.1
picomatch: 4.0.3
optionalDependencies:
typescript: 5.9.3
'@vue/reactivity@3.5.21':
dependencies:
@ -12483,11 +12486,11 @@ snapshots:
'@vue/shared': 3.5.21
csstype: 3.1.3
'@vue/server-renderer@3.5.21(vue@3.5.21(typescript@5.9.2))':
'@vue/server-renderer@3.5.21(vue@3.5.21(typescript@5.9.3))':
dependencies:
'@vue/compiler-ssr': 3.5.21
'@vue/shared': 3.5.21
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
'@vue/shared@3.5.18': {}
@ -12498,37 +12501,37 @@ snapshots:
js-beautify: 1.15.1
vue-component-type-helpers: 2.0.17
'@vueuse/core@10.11.1(vue@3.5.21(typescript@5.9.2))':
'@vueuse/core@10.11.1(vue@3.5.21(typescript@5.9.3))':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.11.1
'@vueuse/shared': 10.11.1(vue@3.5.21(typescript@5.9.2))
vue-demi: 0.14.10(vue@3.5.21(typescript@5.9.2))
'@vueuse/shared': 10.11.1(vue@3.5.21(typescript@5.9.3))
vue-demi: 0.14.10(vue@3.5.21(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
'@vueuse/core@12.8.2(typescript@5.9.2)':
'@vueuse/core@12.8.2(typescript@5.9.3)':
dependencies:
'@types/web-bluetooth': 0.0.21
'@vueuse/metadata': 12.8.2
'@vueuse/shared': 12.8.2(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.2)
'@vueuse/shared': 12.8.2(typescript@5.9.3)
vue: 3.5.21(typescript@5.9.3)
transitivePeerDependencies:
- typescript
'@vueuse/core@13.8.0(vue@3.5.21(typescript@5.9.2))':
'@vueuse/core@13.8.0(vue@3.5.21(typescript@5.9.3))':
dependencies:
'@types/web-bluetooth': 0.0.21
'@vueuse/metadata': 13.8.0
'@vueuse/shared': 13.8.0(vue@3.5.21(typescript@5.9.2))
vue: 3.5.21(typescript@5.9.2)
'@vueuse/shared': 13.8.0(vue@3.5.21(typescript@5.9.3))
vue: 3.5.21(typescript@5.9.3)
'@vueuse/integrations@10.11.1(axios@1.12.2(debug@4.4.3))(focus-trap@7.6.5)(vue@3.5.21(typescript@5.9.2))':
'@vueuse/integrations@10.11.1(axios@1.12.2(debug@4.4.3))(focus-trap@7.6.5)(vue@3.5.21(typescript@5.9.3))':
dependencies:
'@vueuse/core': 10.11.1(vue@3.5.21(typescript@5.9.2))
'@vueuse/shared': 10.11.1(vue@3.5.21(typescript@5.9.2))
vue-demi: 0.14.10(vue@3.5.21(typescript@5.9.2))
'@vueuse/core': 10.11.1(vue@3.5.21(typescript@5.9.3))
'@vueuse/shared': 10.11.1(vue@3.5.21(typescript@5.9.3))
vue-demi: 0.14.10(vue@3.5.21(typescript@5.9.3))
optionalDependencies:
axios: 1.12.2(debug@4.4.3)
focus-trap: 7.6.5
@ -12536,11 +12539,11 @@ snapshots:
- '@vue/composition-api'
- vue
'@vueuse/integrations@13.8.0(axios@1.12.2)(change-case@5.4.4)(focus-trap@7.6.5)(vue@3.5.21(typescript@5.9.2))':
'@vueuse/integrations@13.8.0(axios@1.12.2)(change-case@5.4.4)(focus-trap@7.6.5)(vue@3.5.21(typescript@5.9.3))':
dependencies:
'@vueuse/core': 13.8.0(vue@3.5.21(typescript@5.9.2))
'@vueuse/shared': 13.8.0(vue@3.5.21(typescript@5.9.2))
vue: 3.5.21(typescript@5.9.2)
'@vueuse/core': 13.8.0(vue@3.5.21(typescript@5.9.3))
'@vueuse/shared': 13.8.0(vue@3.5.21(typescript@5.9.3))
vue: 3.5.21(typescript@5.9.3)
optionalDependencies:
axios: 1.12.2(debug@4.4.3)
change-case: 5.4.4
@ -12552,22 +12555,22 @@ snapshots:
'@vueuse/metadata@13.8.0': {}
'@vueuse/shared@10.11.1(vue@3.5.21(typescript@5.9.2))':
'@vueuse/shared@10.11.1(vue@3.5.21(typescript@5.9.3))':
dependencies:
vue-demi: 0.14.10(vue@3.5.21(typescript@5.9.2))
vue-demi: 0.14.10(vue@3.5.21(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
'@vueuse/shared@12.8.2(typescript@5.9.2)':
'@vueuse/shared@12.8.2(typescript@5.9.3)':
dependencies:
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
transitivePeerDependencies:
- typescript
'@vueuse/shared@13.8.0(vue@3.5.21(typescript@5.9.2))':
'@vueuse/shared@13.8.0(vue@3.5.21(typescript@5.9.3))':
dependencies:
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
'@wdio/config@9.19.2':
dependencies:
@ -12666,6 +12669,8 @@ snapshots:
alien-signals@2.0.5: {}
alien-signals@3.0.3: {}
ansi-regex@5.0.1: {}
ansi-regex@6.0.1: {}
@ -14299,11 +14304,11 @@ snapshots:
flatted@3.3.3: {}
floating-vue@5.2.2(vue@3.5.21(typescript@5.9.2)):
floating-vue@5.2.2(vue@3.5.21(typescript@5.9.3)):
dependencies:
'@floating-ui/dom': 1.1.1
vue: 3.5.21(typescript@5.9.2)
vue-resize: 2.0.0-alpha.1(vue@3.5.21(typescript@5.9.2))
vue: 3.5.21(typescript@5.9.3)
vue-resize: 2.0.0-alpha.1(vue@3.5.21(typescript@5.9.3))
focus-trap@7.6.5:
dependencies:
@ -15799,7 +15804,7 @@ snapshots:
ms@2.1.3: {}
msw@2.11.3(@types/node@22.18.6)(typescript@5.9.2):
msw@2.11.3(@types/node@22.18.6)(typescript@5.9.3):
dependencies:
'@bundled-es-modules/cookie': 2.0.1
'@bundled-es-modules/statuses': 1.0.1
@ -15821,7 +15826,7 @@ snapshots:
until-async: 3.0.2
yargs: 17.7.2
optionalDependencies:
typescript: 5.9.2
typescript: 5.9.3
transitivePeerDependencies:
- '@types/node'
@ -16193,8 +16198,6 @@ snapshots:
picomatch@2.3.1: {}
picomatch@4.0.2: {}
picomatch@4.0.3: {}
pino-abstract-transport@2.0.0:
@ -17067,9 +17070,9 @@ snapshots:
split2@4.2.0: {}
splitpanes@3.2.0(vue@3.5.21(typescript@5.9.2)):
splitpanes@3.2.0(vue@3.5.21(typescript@5.9.3)):
dependencies:
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
sprintf-js@1.0.3: {}
@ -17198,10 +17201,6 @@ snapshots:
strip-json-comments@3.1.1: {}
strip-literal@2.1.1:
dependencies:
js-tokens: 9.0.1
strip-literal@3.0.0:
dependencies:
js-tokens: 9.0.1
@ -17418,20 +17417,20 @@ snapshots:
twoslash-protocol@0.3.4: {}
twoslash-vue@0.3.4(typescript@5.9.2):
twoslash-vue@0.3.4(typescript@5.9.3):
dependencies:
'@vue/language-core': 3.0.6(typescript@5.9.2)
twoslash: 0.3.4(typescript@5.9.2)
'@vue/language-core': 3.0.6(typescript@5.9.3)
twoslash: 0.3.4(typescript@5.9.3)
twoslash-protocol: 0.3.4
typescript: 5.9.2
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
twoslash@0.3.4(typescript@5.9.2):
twoslash@0.3.4(typescript@5.9.3):
dependencies:
'@typescript/vfs': 1.6.1(typescript@5.9.2)
'@typescript/vfs': 1.6.1(typescript@5.9.3)
twoslash-protocol: 0.3.4
typescript: 5.9.2
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@ -17489,6 +17488,8 @@ snapshots:
typescript@5.9.2: {}
typescript@5.9.3: {}
uc.micro@2.1.0: {}
ufo@1.5.4: {}
@ -17545,25 +17546,6 @@ snapshots:
trough: 2.2.0
vfile: 6.0.1
unimport@3.14.5(rollup@4.52.0):
dependencies:
'@rollup/pluginutils': 5.3.0(rollup@4.52.0)
acorn: 8.11.3(patch_hash=62f89b815dbd769c8a4d5b19b1f6852f28922ecb581d876c8a8377d05c2483c4)
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
fast-glob: 3.3.3
local-pkg: 0.5.1
magic-string: 0.30.19
mlly: 1.8.0
pathe: 1.1.2
picomatch: 4.0.3
pkg-types: 1.3.1
scule: 1.3.0
strip-literal: 2.1.1
unplugin: 1.16.0
transitivePeerDependencies:
- rollup
unique-string@2.0.0:
dependencies:
crypto-random-string: 2.0.0
@ -17630,20 +17612,6 @@ snapshots:
unpipe@1.0.0: {}
unplugin-auto-import@0.19.0(@vueuse/core@12.8.2(typescript@5.9.2))(rollup@4.52.0):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.4(rollup@4.52.0)
local-pkg: 0.5.1
magic-string: 0.30.19
picomatch: 4.0.2
unimport: 3.14.5(rollup@4.52.0)
unplugin: 2.3.5
optionalDependencies:
'@vueuse/core': 12.8.2(typescript@5.9.2)
transitivePeerDependencies:
- rollup
unplugin-isolated-decl@0.15.2(typescript@5.9.2):
dependencies:
debug: 4.4.3
@ -17679,7 +17647,7 @@ snapshots:
pathe: 2.0.3
picomatch: 4.0.3
unplugin-vue-components@0.28.0(@babel/parser@7.28.4)(rollup@4.52.0)(vue@3.5.21(typescript@5.9.2)):
unplugin-vue-components@0.28.0(@babel/parser@7.28.4)(rollup@4.52.0)(vue@3.5.21(typescript@5.9.3)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.3.0(rollup@4.52.0)
@ -17691,18 +17659,13 @@ snapshots:
minimatch: 9.0.5
mlly: 1.8.0
unplugin: 2.3.10
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
optionalDependencies:
'@babel/parser': 7.28.4
transitivePeerDependencies:
- rollup
- supports-color
unplugin@1.16.0:
dependencies:
acorn: 8.11.3(patch_hash=62f89b815dbd769c8a4d5b19b1f6852f28922ecb581d876c8a8377d05c2483c4)
webpack-virtual-modules: 0.6.2
unplugin@2.3.10:
dependencies:
'@jridgewell/remapping': 2.3.5
@ -17710,12 +17673,6 @@ snapshots:
picomatch: 4.0.3
webpack-virtual-modules: 0.6.2
unplugin@2.3.5:
dependencies:
acorn: 8.11.3(patch_hash=62f89b815dbd769c8a4d5b19b1f6852f28922ecb581d876c8a8377d05c2483c4)
picomatch: 4.0.3
webpack-virtual-modules: 0.6.2
unplugin@2.3.8:
dependencies:
'@jridgewell/remapping': 2.3.5
@ -17777,7 +17734,7 @@ snapshots:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
vite-plugin-pages@0.33.1(@vue/compiler-sfc@3.5.21)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.21(typescript@5.9.2))):
vite-plugin-pages@0.33.1(@vue/compiler-sfc@3.5.21)(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.21(typescript@5.9.3))):
dependencies:
'@types/debug': 4.1.12
debug: 4.4.3
@ -17792,7 +17749,7 @@ snapshots:
yaml: 2.8.0
optionalDependencies:
'@vue/compiler-sfc': 3.5.21
vue-router: 4.5.1(vue@3.5.21(typescript@5.9.2))
vue-router: 4.5.1(vue@3.5.21(typescript@5.9.3))
transitivePeerDependencies:
- supports-color
@ -17875,12 +17832,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
vitepress-plugin-tabs@0.7.3(vitepress@2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)):
vitepress-plugin-tabs@0.7.3(vitepress@2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.3)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.3)):
dependencies:
vitepress: 2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1)
vue: 3.5.21(typescript@5.9.2)
vitepress: 2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.3)(yaml@2.8.1)
vue: 3.5.21(typescript@5.9.3)
vitepress@2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1):
vitepress@2.0.0-alpha.12(@types/node@22.18.6)(axios@1.12.2)(change-case@5.4.4)(jiti@2.5.1)(lightningcss@1.30.1)(oxc-minify@0.82.3)(postcss@8.5.6)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(typescript@5.9.3)(yaml@2.8.1):
dependencies:
'@docsearch/css': 4.0.0-beta.7
'@docsearch/js': 4.0.0-beta.7
@ -17889,17 +17846,17 @@ snapshots:
'@shikijs/transformers': 3.13.0
'@shikijs/types': 3.12.0
'@types/markdown-it': 14.1.2
'@vitejs/plugin-vue': 6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
'@vitejs/plugin-vue': 6.0.1(vite@7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.3))
'@vue/devtools-api': 8.0.1
'@vue/shared': 3.5.18
'@vueuse/core': 13.8.0(vue@3.5.21(typescript@5.9.2))
'@vueuse/integrations': 13.8.0(axios@1.12.2)(change-case@5.4.4)(focus-trap@7.6.5)(vue@3.5.21(typescript@5.9.2))
'@vueuse/core': 13.8.0(vue@3.5.21(typescript@5.9.3))
'@vueuse/integrations': 13.8.0(axios@1.12.2)(change-case@5.4.4)(focus-trap@7.6.5)(vue@3.5.21(typescript@5.9.3))
focus-trap: 7.6.5
mark.js: 8.11.1
minisearch: 7.1.2
shiki: 3.12.0
vite: 7.1.5(@types/node@22.18.6)(jiti@2.5.1)(lightningcss@1.30.1)(sass-embedded@1.93.0)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
optionalDependencies:
oxc-minify: 0.82.3
postcss: 8.5.6
@ -17938,6 +17895,12 @@ snapshots:
'@types/react': 19.1.13
'@types/react-dom': 18.2.14
vitest-browser-vue@2.0.0-beta.1(vitest@packages+vitest)(vue@3.5.21(typescript@5.9.3)):
dependencies:
'@vue/test-utils': 2.4.6
vitest: link:packages/vitest
vue: 3.5.21(typescript@5.9.3)
vitest-environment-custom@file:test/core/vitest-environment-custom: {}
vitest-package-exports@0.1.1:
@ -17949,11 +17912,13 @@ snapshots:
dependencies:
vitest: link:packages/vitest
vscode-uri@3.1.0: {}
vue-component-type-helpers@2.0.17: {}
vue-demi@0.14.10(vue@3.5.21(typescript@5.9.2)):
vue-demi@0.14.10(vue@3.5.21(typescript@5.9.3)):
dependencies:
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
vue-eslint-parser@10.2.0(eslint@9.38.0(jiti@2.5.1)):
dependencies:
@ -17969,18 +17934,18 @@ snapshots:
vue-flow-layout@0.2.0: {}
vue-observe-visibility@2.0.0-alpha.1(vue@3.5.21(typescript@5.9.2)):
vue-observe-visibility@2.0.0-alpha.1(vue@3.5.21(typescript@5.9.3)):
dependencies:
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
vue-resize@2.0.0-alpha.1(vue@3.5.21(typescript@5.9.2)):
vue-resize@2.0.0-alpha.1(vue@3.5.21(typescript@5.9.3)):
dependencies:
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
vue-router@4.5.1(vue@3.5.21(typescript@5.9.2)):
vue-router@4.5.1(vue@3.5.21(typescript@5.9.3)):
dependencies:
'@vue/devtools-api': 6.6.4
vue: 3.5.21(typescript@5.9.2)
vue: 3.5.21(typescript@5.9.3)
vue-template-compiler@2.7.15:
dependencies:
@ -17994,22 +17959,28 @@ snapshots:
semver: 7.7.2
typescript: 5.9.2
vue-virtual-scroller@2.0.0-beta.8(vue@3.5.21(typescript@5.9.2)):
vue-tsc@3.1.1(typescript@5.9.3):
dependencies:
'@volar/typescript': 2.4.23
'@vue/language-core': 3.1.1(typescript@5.9.3)
typescript: 5.9.3
vue-virtual-scroller@2.0.0-beta.8(vue@3.5.21(typescript@5.9.3)):
dependencies:
mitt: 2.1.0
vue: 3.5.21(typescript@5.9.2)
vue-observe-visibility: 2.0.0-alpha.1(vue@3.5.21(typescript@5.9.2))
vue-resize: 2.0.0-alpha.1(vue@3.5.21(typescript@5.9.2))
vue: 3.5.21(typescript@5.9.3)
vue-observe-visibility: 2.0.0-alpha.1(vue@3.5.21(typescript@5.9.3))
vue-resize: 2.0.0-alpha.1(vue@3.5.21(typescript@5.9.3))
vue@3.5.21(typescript@5.9.2):
vue@3.5.21(typescript@5.9.3):
dependencies:
'@vue/compiler-dom': 3.5.21
'@vue/compiler-sfc': 3.5.21
'@vue/runtime-dom': 3.5.21
'@vue/server-renderer': 3.5.21(vue@3.5.21(typescript@5.9.2))
'@vue/server-renderer': 3.5.21(vue@3.5.21(typescript@5.9.3))
'@vue/shared': 3.5.21
optionalDependencies:
typescript: 5.9.2
typescript: 5.9.3
w3c-xmlserializer@5.0.0:
dependencies:

View File

@ -9,6 +9,8 @@
"exclude": [
"**/dist/**",
"./packages/vitest/dist/**",
"./packages/ui/**/*.spec.ts",
"./packages/ui/client/test.ts",
"./packages/*/*.d.ts",
"./packages/*/*.d.cts",
"./examples/**/*.*",