diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs
new file mode 100644
index 0000000..b718035
--- /dev/null
+++ b/frontend/.eslintrc.cjs
@@ -0,0 +1,42 @@
+module.exports = {
+ root: true,
+ env: {
+ browser: true,
+ es2022: true,
+ node: true,
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'plugin:vue/vue3-recommended',
+ ],
+ parser: 'vue-eslint-parser',
+ parserOptions: {
+ parser: '@typescript-eslint/parser',
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+ plugins: ['@typescript-eslint', 'vue'],
+ rules: {
+ // TypeScript
+ '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
+ '@typescript-eslint/no-explicit-any': 'warn',
+ '@typescript-eslint/ban-ts-comment': 'warn',
+
+ // Vue
+ 'vue/multi-word-component-names': 'off',
+ 'vue/no-v-html': 'off',
+ 'vue/require-default-prop': 'off',
+ 'vue/max-attributes-per-line': 'off',
+ 'vue/singleline-html-element-content-newline': 'off',
+ 'vue/html-closing-bracket-newline': 'off',
+ 'vue/html-self-closing': 'off',
+ 'vue/html-indent': 'off',
+ 'vue/v-slot-style': 'off',
+
+ // General
+ 'no-console': ['warn', { allow: ['warn', 'error'] }],
+ 'prefer-const': 'error',
+ },
+ ignorePatterns: ['dist', 'node_modules', 'src/generated', '*.d.ts'],
+}
diff --git a/frontend/components.d.ts b/frontend/components.d.ts
index 8eddc1b..c53b864 100644
--- a/frontend/components.d.ts
+++ b/frontend/components.d.ts
@@ -11,12 +11,15 @@ declare module 'vue' {
BuildServerStats: typeof import('./src/components/BuildServerStats.vue')['default']
BuildStats: typeof import('./src/components/MainNav/BuildStats.vue')['default']
CurrentlyBuilding: typeof import('./src/components/CurrentlyBuilding.vue')['default']
+ EmptyState: typeof import('./src/components/common/EmptyState.vue')['default']
MainNav: typeof import('./src/components/MainNav.vue')['default']
+ PackageCard: typeof import('./src/components/Packages/PackageCard.vue')['default']
PackageFilters: typeof import('./src/components/Packages/PackageFilters.vue')['default']
Packages: typeof import('./src/components/Packages.vue')['default']
PackageTable: typeof import('./src/components/Packages/PackageTable.vue')['default']
QueuedPackagesList: typeof import('./src/components/CurrentlyBuilding/QueuedPackagesList.vue')['default']
StatItem: typeof import('./src/components/MainNav/BuildStats/StatItem.vue')['default']
StatsListSection: typeof import('./src/components/MainNav/BuildStats/StatsListSection.vue')['default']
+ StatusBadge: typeof import('./src/components/common/StatusBadge.vue')['default']
}
}
diff --git a/frontend/index.html b/frontend/index.html
index 40c00e7..26ffc6e 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -3,7 +3,7 @@
-
+
ALHP Status
diff --git a/frontend/package.json b/frontend/package.json
index 9d1c0f8..00c0ef3 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -6,7 +6,12 @@
"prebuild": "npm run generate-api-types",
"dev": "node --no-warnings ./node_modules/.bin/vite",
"build": "vue-tsc --noEmit && vite build",
- "preview": "vite preview"
+ "preview": "vite preview",
+ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
+ "lint:check": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts",
+ "test": "vitest",
+ "test:run": "vitest run",
+ "test:coverage": "vitest run --coverage"
},
"dependencies": {
"@fontsource/roboto": "^5.2.5",
@@ -20,8 +25,15 @@
},
"devDependencies": {
"@babel/types": "^7.27.0",
+ "@testing-library/vue": "^8.1.0",
"@types/node": "^22.14.1",
+ "@typescript-eslint/eslint-plugin": "^8.18.0",
+ "@typescript-eslint/parser": "^8.18.0",
"@vitejs/plugin-vue": "^5.2.3",
+ "@vue/test-utils": "^2.4.6",
+ "eslint": "^8.57.0",
+ "eslint-plugin-vue": "^9.31.0",
+ "happy-dom": "^15.11.7",
"openapi-typescript": "^7.6.1",
"prettier": "^3.5.3",
"sass": "^1.86.3",
@@ -30,6 +42,7 @@
"unplugin-vue-components": "^28.5.0",
"vite": "^6.2.6",
"vite-plugin-vuetify": "^2.1.1",
+ "vitest": "^2.1.8",
"vue-tsc": "^2.2.8"
},
"packageManager": "yarn@4.7.0"
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index cc5f32f..579a15e 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -1,14 +1,14 @@
-
-
-
+
+
-
+
+
-
-
+
+
@@ -18,31 +18,19 @@ import BuildServerStats from '@/components/BuildServerStats.vue'
import CurrentlyBuilding from '@/components/CurrentlyBuilding.vue'
import Packages from '@/components/Packages.vue'
import { useStatsStore } from '@/stores/statsStore'
-import { onBeforeMount, onUnmounted } from 'vue'
+import { onBeforeMount } from 'vue'
import { usePackagesStore } from '@/stores'
+import { useAutoRefresh } from '@/composables/useAutoRefresh'
const statsStore = useStatsStore()
const packagesStore = usePackagesStore()
-let refreshInterval: number | null = null
-const startAutoRefresh = (intervalMinutes = Number(import.meta.env.VITE_UPDATE_INTERVAL) || 5) => {
- stopAutoRefresh()
- refreshInterval = window.setInterval(
- () => {
- statsStore.fetchStats()
- packagesStore.fetchPackages()
- packagesStore.fetchCurrentlyBuilding()
- },
- intervalMinutes * 60 * 1000
- )
-}
-
-const stopAutoRefresh = () => {
- if (refreshInterval !== null) {
- clearInterval(refreshInterval)
- refreshInterval = null
- }
-}
+const intervalMinutes = Number(import.meta.env.VITE_UPDATE_INTERVAL) || 5
+const { start: startAutoRefresh } = useAutoRefresh(() => {
+ statsStore.fetchStats()
+ packagesStore.fetchPackages()
+ packagesStore.fetchCurrentlyBuilding()
+}, intervalMinutes * 60 * 1000)
onBeforeMount(() => {
statsStore.fetchStats()
@@ -50,8 +38,32 @@ onBeforeMount(() => {
packagesStore.fetchCurrentlyBuilding()
startAutoRefresh()
})
-
-onUnmounted(() => {
- stopAutoRefresh()
-})
+
+
diff --git a/frontend/src/__tests__/composables/useAutoRefresh.spec.ts b/frontend/src/__tests__/composables/useAutoRefresh.spec.ts
new file mode 100644
index 0000000..41896ca
--- /dev/null
+++ b/frontend/src/__tests__/composables/useAutoRefresh.spec.ts
@@ -0,0 +1,105 @@
+import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
+import { useAutoRefresh, useNowTimer } from '@/composables/useAutoRefresh'
+
+// Mock Vue's onUnmounted
+vi.mock('vue', async () => {
+ const actual = await vi.importActual('vue')
+ return {
+ ...actual,
+ onUnmounted: vi.fn(),
+ }
+})
+
+describe('useAutoRefresh', () => {
+ beforeEach(() => {
+ vi.useFakeTimers()
+ })
+
+ afterEach(() => {
+ vi.useRealTimers()
+ })
+
+ describe('useAutoRefresh', () => {
+ it('should call callback at specified interval', () => {
+ const callback = vi.fn()
+ const { start } = useAutoRefresh(callback, 1000)
+
+ start()
+ expect(callback).not.toHaveBeenCalled()
+
+ vi.advanceTimersByTime(1000)
+ expect(callback).toHaveBeenCalledTimes(1)
+
+ vi.advanceTimersByTime(1000)
+ expect(callback).toHaveBeenCalledTimes(2)
+ })
+
+ it('should stop calling callback after stop()', () => {
+ const callback = vi.fn()
+ const { start, stop } = useAutoRefresh(callback, 1000)
+
+ start()
+ vi.advanceTimersByTime(1000)
+ expect(callback).toHaveBeenCalledTimes(1)
+
+ stop()
+ vi.advanceTimersByTime(2000)
+ expect(callback).toHaveBeenCalledTimes(1) // Still 1
+ })
+
+ it('should track running state', () => {
+ const callback = vi.fn()
+ const { start, stop, isRunning } = useAutoRefresh(callback, 1000)
+
+ expect(isRunning.value).toBe(false)
+
+ start()
+ expect(isRunning.value).toBe(true)
+
+ stop()
+ expect(isRunning.value).toBe(false)
+ })
+
+ it('should restart interval on restart()', () => {
+ const callback = vi.fn()
+ const { start, restart } = useAutoRefresh(callback, 1000)
+
+ start()
+ vi.advanceTimersByTime(500)
+
+ restart()
+ vi.advanceTimersByTime(500)
+ expect(callback).not.toHaveBeenCalled() // Timer was reset
+
+ vi.advanceTimersByTime(500)
+ expect(callback).toHaveBeenCalledTimes(1)
+ })
+ })
+
+ describe('useNowTimer', () => {
+ it('should update now value every second', () => {
+ const { now, start } = useNowTimer()
+ const initialValue = now.value
+
+ start()
+
+ vi.advanceTimersByTime(1000)
+ expect(now.value).toBeGreaterThan(initialValue)
+
+ vi.advanceTimersByTime(1000)
+ expect(now.value).toBeGreaterThan(initialValue + 1)
+ })
+
+ it('should stop updating after stop()', () => {
+ const { now, start, stop } = useNowTimer()
+
+ start()
+ vi.advanceTimersByTime(1000)
+ const valueAfterStart = now.value
+
+ stop()
+ vi.advanceTimersByTime(2000)
+ expect(now.value).toBe(valueAfterStart)
+ })
+ })
+})
diff --git a/frontend/src/__tests__/composables/useDateFormat.spec.ts b/frontend/src/__tests__/composables/useDateFormat.spec.ts
new file mode 100644
index 0000000..05a1d3e
--- /dev/null
+++ b/frontend/src/__tests__/composables/useDateFormat.spec.ts
@@ -0,0 +1,65 @@
+import { describe, it, expect, vi } from 'vitest'
+import { unixTimestampToLocalizedDate, useRelativeTime } from '@/composables/useDateFormat'
+
+describe('useDateFormat', () => {
+ describe('unixTimestampToLocalizedDate', () => {
+ it('should convert unix timestamp to localized date string', () => {
+ // Mock navigator.language
+ vi.stubGlobal('navigator', { language: 'en-US' })
+
+ const timestamp = 1702612991 // 2023-12-15T03:43:11Z
+ const result = unixTimestampToLocalizedDate(timestamp)
+
+ // The exact format depends on locale, but it should be a string
+ expect(typeof result).toBe('string')
+ expect(result.length).toBeGreaterThan(0)
+ })
+
+ it('should handle timestamp 0', () => {
+ const result = unixTimestampToLocalizedDate(0)
+ expect(typeof result).toBe('string')
+ })
+ })
+
+ describe('useRelativeTime', () => {
+ it('should format seconds correctly', () => {
+ const { formatTimeAgo } = useRelativeTime()
+
+ const result = formatTimeAgo(30)
+ expect(result).toContain('30')
+ expect(result).toContain('second')
+ })
+
+ it('should format minutes correctly', () => {
+ const { formatTimeAgo } = useRelativeTime()
+
+ const result = formatTimeAgo(120) // 2 minutes
+ expect(result).toContain('2')
+ expect(result).toContain('minute')
+ })
+
+ it('should format hours correctly', () => {
+ const { formatTimeAgo } = useRelativeTime()
+
+ const result = formatTimeAgo(7200) // 2 hours
+ expect(result).toContain('2')
+ expect(result).toContain('hour')
+ })
+
+ it('should use minutes for values between 60 and 3600 seconds', () => {
+ const { formatTimeAgo } = useRelativeTime()
+
+ const result = formatTimeAgo(180) // 3 minutes
+ expect(result).toContain('minute')
+ expect(result).not.toContain('second')
+ })
+
+ it('should use hours for values >= 3600 seconds', () => {
+ const { formatTimeAgo } = useRelativeTime()
+
+ const result = formatTimeAgo(3600) // 1 hour
+ expect(result).toContain('hour')
+ expect(result).not.toContain('minute')
+ })
+ })
+})
diff --git a/frontend/src/__tests__/composables/useDebounce.spec.ts b/frontend/src/__tests__/composables/useDebounce.spec.ts
new file mode 100644
index 0000000..a59aa00
--- /dev/null
+++ b/frontend/src/__tests__/composables/useDebounce.spec.ts
@@ -0,0 +1,111 @@
+import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
+import { ref, nextTick } from 'vue'
+import { useDebouncedRef, useDebounce } from '@/composables/useDebounce'
+
+describe('useDebounce', () => {
+ beforeEach(() => {
+ vi.useFakeTimers()
+ })
+
+ afterEach(() => {
+ vi.useRealTimers()
+ })
+
+ describe('useDebouncedRef', () => {
+ it('should debounce ref value changes', async () => {
+ const sourceRef = ref('initial')
+ const { debouncedValue } = useDebouncedRef(sourceRef, 300)
+
+ expect(debouncedValue.value).toBe('initial')
+
+ sourceRef.value = 'updated'
+ await nextTick() // Allow Vue watcher to trigger
+ expect(debouncedValue.value).toBe('initial') // Not yet updated
+
+ vi.advanceTimersByTime(200)
+ expect(debouncedValue.value).toBe('initial') // Still not updated
+
+ vi.advanceTimersByTime(100)
+ expect(debouncedValue.value).toBe('updated') // Now updated after 300ms
+ })
+
+ it('should cancel pending update when new value is set', async () => {
+ const sourceRef = ref('initial')
+ const { debouncedValue } = useDebouncedRef(sourceRef, 300)
+
+ sourceRef.value = 'first'
+ await nextTick()
+ vi.advanceTimersByTime(200)
+
+ sourceRef.value = 'second'
+ await nextTick()
+ vi.advanceTimersByTime(200)
+
+ expect(debouncedValue.value).toBe('initial') // Neither update applied yet
+
+ vi.advanceTimersByTime(100)
+ expect(debouncedValue.value).toBe('second') // Only second value applied
+ })
+
+ it('should allow manual cancellation', async () => {
+ const sourceRef = ref('initial')
+ const { debouncedValue, cancel } = useDebouncedRef(sourceRef, 300)
+
+ sourceRef.value = 'updated'
+ await nextTick()
+ vi.advanceTimersByTime(200)
+
+ cancel()
+
+ vi.advanceTimersByTime(200)
+ expect(debouncedValue.value).toBe('initial') // Cancelled, no update
+ })
+ })
+
+ describe('useDebounce', () => {
+ it('should debounce function calls', () => {
+ const callback = vi.fn()
+ const { debouncedFn } = useDebounce(callback, 300)
+
+ debouncedFn()
+ expect(callback).not.toHaveBeenCalled()
+
+ vi.advanceTimersByTime(300)
+ expect(callback).toHaveBeenCalledTimes(1)
+ })
+
+ it('should pass arguments to callback', () => {
+ const callback = vi.fn()
+ const { debouncedFn } = useDebounce(callback, 300)
+
+ debouncedFn('arg1', 'arg2')
+ vi.advanceTimersByTime(300)
+
+ expect(callback).toHaveBeenCalledWith('arg1', 'arg2')
+ })
+
+ it('should only call callback once for rapid calls', () => {
+ const callback = vi.fn()
+ const { debouncedFn } = useDebounce(callback, 300)
+
+ debouncedFn()
+ debouncedFn()
+ debouncedFn()
+
+ vi.advanceTimersByTime(300)
+ expect(callback).toHaveBeenCalledTimes(1)
+ })
+
+ it('should allow manual cancellation', () => {
+ const callback = vi.fn()
+ const { debouncedFn, cancel } = useDebounce(callback, 300)
+
+ debouncedFn()
+ vi.advanceTimersByTime(200)
+ cancel()
+ vi.advanceTimersByTime(200)
+
+ expect(callback).not.toHaveBeenCalled()
+ })
+ })
+})
diff --git a/frontend/src/__tests__/composables/usePackageDisplay.spec.ts b/frontend/src/__tests__/composables/usePackageDisplay.spec.ts
new file mode 100644
index 0000000..0fdca56
--- /dev/null
+++ b/frontend/src/__tests__/composables/usePackageDisplay.spec.ts
@@ -0,0 +1,123 @@
+import { describe, it, expect } from 'vitest'
+import { usePackageDisplay } from '@/composables/Packages/usePackageDisplay'
+
+describe('usePackageDisplay', () => {
+ const { repoName, repoVersion, getVersionColor, getStatusColor, getLto, getDs } =
+ usePackageDisplay()
+
+ describe('repoName', () => {
+ it('should extract repo name from full repo string', () => {
+ expect(repoName('extra-x86_64-v3')).toBe('extra')
+ expect(repoName('core-x86_64-v4')).toBe('core')
+ })
+ })
+
+ describe('repoVersion', () => {
+ it('should extract version from full repo string', () => {
+ expect(repoVersion('extra-x86_64-v3')).toBe('v3')
+ expect(repoVersion('core-x86_64-v4')).toBe('v4')
+ })
+ })
+
+ describe('getVersionColor', () => {
+ it('should return CSS variable for v2', () => {
+ expect(getVersionColor('v2')).toBe('var(--color-version-v2)')
+ })
+
+ it('should return CSS variable for v3', () => {
+ expect(getVersionColor('v3')).toBe('var(--color-version-v3)')
+ })
+
+ it('should return CSS variable for v4', () => {
+ expect(getVersionColor('v4')).toBe('var(--color-version-v4)')
+ })
+
+ it('should return muted color for unknown version', () => {
+ expect(getVersionColor('v1')).toBe('var(--color-text-muted)')
+ expect(getVersionColor('unknown')).toBe('var(--color-text-muted)')
+ })
+ })
+
+ describe('getStatusColor', () => {
+ it('should return empty string (status colors now handled by StatusBadge)', () => {
+ expect(getStatusColor('skipped')).toBe('')
+ expect(getStatusColor('queued')).toBe('')
+ expect(getStatusColor('latest')).toBe('')
+ expect(getStatusColor('failed')).toBe('')
+ expect(getStatusColor('signing')).toBe('')
+ expect(getStatusColor('building')).toBe('')
+ expect(getStatusColor('unknown')).toBe('')
+ })
+
+ it('should return empty string for undefined status', () => {
+ expect(getStatusColor(undefined)).toBe('')
+ })
+ })
+
+ describe('getLto', () => {
+ it('should return success info for enabled', () => {
+ const result = getLto('enabled')
+ expect(result.title).toBe('Built with LTO')
+ expect(result.icon).toBe('mdi-check-circle')
+ expect(result.color).toBe('var(--color-status-success)')
+ })
+
+ it('should return waiting info for unknown', () => {
+ const result = getLto('unknown')
+ expect(result.title).toBe('Not built with LTO yet')
+ expect(result.icon).toBe('mdi-timer-sand')
+ expect(result.color).toBe('var(--color-text-muted)')
+ })
+
+ it('should return error info for disabled', () => {
+ const result = getLto('disabled')
+ expect(result.title).toBe('LTO explicitly disabled')
+ expect(result.icon).toBe('mdi-close-circle')
+ expect(result.color).toBe('var(--color-status-error)')
+ })
+
+ it('should return warning info for auto_disabled', () => {
+ const result = getLto('auto_disabled')
+ expect(result.title).toBe('LTO automatically disabled')
+ expect(result.icon).toBe('mdi-alert-circle')
+ expect(result.color).toBe('var(--color-status-warning)')
+ })
+
+ it('should return empty for undefined', () => {
+ const result = getLto(undefined)
+ expect(result.title).toBe('')
+ expect(result.icon).toBe('')
+ expect(result.color).toBe('')
+ })
+ })
+
+ describe('getDs', () => {
+ it('should return success info for available', () => {
+ const result = getDs('available')
+ expect(result.title).toBe('Debug symbols available')
+ expect(result.icon).toBe('mdi-check-circle')
+ expect(result.color).toBe('var(--color-status-success)')
+ })
+
+ it('should return waiting info for unknown', () => {
+ const result = getDs('unknown')
+ expect(result.title).toBe('Not built yet')
+ expect(result.icon).toBe('mdi-timer-sand')
+ expect(result.color).toBe('var(--color-text-muted)')
+ })
+
+ it('should return error info for not_available', () => {
+ const result = getDs('not_available')
+ expect(result.title).toBe('Not built with debug symbols')
+ expect(result.icon).toBe('mdi-close-circle')
+ expect(result.color).toBe('var(--color-status-error)')
+ })
+
+ it('should return empty for undefined', () => {
+ const result = getDs(undefined)
+ expect(result.title).toBe('')
+ expect(result.icon).toBe('')
+ expect(result.color).toBe('')
+ })
+ })
+})
diff --git a/frontend/src/assets/styles/base.scss b/frontend/src/assets/styles/base.scss
index e5ff37c..824adf0 100644
--- a/frontend/src/assets/styles/base.scss
+++ b/frontend/src/assets/styles/base.scss
@@ -1,2 +1,3 @@
@use "@fontsource/roboto";
@use "fork-awesome/css/fork-awesome.min.css";
+@use "./tokens.scss";
diff --git a/frontend/src/assets/styles/tokens.scss b/frontend/src/assets/styles/tokens.scss
new file mode 100644
index 0000000..ea00b6d
--- /dev/null
+++ b/frontend/src/assets/styles/tokens.scss
@@ -0,0 +1,256 @@
+// Design Tokens - CSS Custom Properties
+// These tokens form the foundation of our design system
+
+:root {
+ // ============================================
+ // Color Palette - Dark Theme (Default)
+ // ============================================
+
+ // Background colors
+ --color-bg-primary: #0f1419;
+ --color-bg-secondary: #1a1f2e;
+ --color-bg-tertiary: #242b3d;
+ --color-bg-elevated: #2d3548;
+ --color-bg-hover: #353d52;
+
+ // Surface colors
+ --color-surface: #1a1f2e;
+ --color-surface-variant: #242b3d;
+
+ // Brand colors
+ --color-brand-primary: #3b82f6;
+ --color-brand-accent: #609926;
+
+ // Status colors (improved contrast)
+ --color-status-success: #22c55e;
+ --color-status-warning: #f59e0b;
+ --color-status-error: #ef4444;
+ --color-status-info: #3b82f6;
+ --color-status-neutral: #6b7280;
+
+ // Status background colors (subtle)
+ --color-status-success-bg: rgba(34, 197, 94, 0.15);
+ --color-status-warning-bg: rgba(245, 158, 11, 0.15);
+ --color-status-error-bg: rgba(239, 68, 68, 0.15);
+ --color-status-info-bg: rgba(59, 130, 246, 0.15);
+ --color-status-neutral-bg: rgba(107, 114, 128, 0.15);
+
+ // Package status colors
+ --color-pkg-latest: #22c55e;
+ --color-pkg-built: #3b82f6;
+ --color-pkg-failed: #ef4444;
+ --color-pkg-skipped: #6b7280;
+ --color-pkg-delayed: #f59e0b;
+ --color-pkg-queued: #f97316;
+ --color-pkg-building: #14b8a6;
+ --color-pkg-signing: #6366f1;
+ --color-pkg-unknown: #9ca3af;
+
+ // Version colors
+ --color-version-v2: #60a5fa;
+ --color-version-v3: #fbbf24;
+ --color-version-v4: #34d399;
+
+ // Text colors
+ --color-text-primary: #f9fafb;
+ --color-text-secondary: #9ca3af;
+ --color-text-muted: #6b7280;
+ --color-text-inverse: #111827;
+
+ // Border colors
+ --color-border: #374151;
+ --color-border-light: #4b5563;
+
+ // ============================================
+ // Spacing Scale (8px base)
+ // ============================================
+ --space-0: 0;
+ --space-1: 4px;
+ --space-2: 8px;
+ --space-3: 12px;
+ --space-4: 16px;
+ --space-5: 20px;
+ --space-6: 24px;
+ --space-8: 32px;
+ --space-10: 40px;
+ --space-12: 48px;
+ --space-16: 64px;
+
+ // ============================================
+ // Border Radius
+ // ============================================
+ --radius-none: 0;
+ --radius-sm: 4px;
+ --radius-md: 8px;
+ --radius-lg: 12px;
+ --radius-xl: 16px;
+ --radius-2xl: 24px;
+ --radius-full: 9999px;
+
+ // ============================================
+ // Shadows
+ // ============================================
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3);
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3);
+
+ // ============================================
+ // Transitions
+ // ============================================
+ --transition-fast: 150ms ease;
+ --transition-normal: 250ms ease;
+ --transition-slow: 350ms ease;
+
+ // ============================================
+ // Typography
+ // ============================================
+ --font-family: 'Roboto', sans-serif;
+ --font-size-xs: 0.75rem;
+ --font-size-sm: 0.875rem;
+ --font-size-base: 1rem;
+ --font-size-lg: 1.125rem;
+ --font-size-xl: 1.25rem;
+ --font-size-2xl: 1.5rem;
+ --font-size-3xl: 1.875rem;
+
+ --font-weight-normal: 400;
+ --font-weight-medium: 500;
+ --font-weight-semibold: 600;
+ --font-weight-bold: 700;
+
+ --line-height-tight: 1.25;
+ --line-height-normal: 1.5;
+ --line-height-relaxed: 1.75;
+
+ // ============================================
+ // Safe Area Insets (for notched devices)
+ // ============================================
+ --safe-area-top: env(safe-area-inset-top, 0px);
+ --safe-area-right: env(safe-area-inset-right, 0px);
+ --safe-area-bottom: env(safe-area-inset-bottom, 0px);
+ --safe-area-left: env(safe-area-inset-left, 0px);
+}
+
+// ============================================
+// Light Theme Override
+// ============================================
+[data-theme="light"] {
+ // Background colors
+ --color-bg-primary: #ffffff;
+ --color-bg-secondary: #f9fafb;
+ --color-bg-tertiary: #f3f4f6;
+ --color-bg-elevated: #ffffff;
+ --color-bg-hover: #e5e7eb;
+
+ // Surface colors
+ --color-surface: #ffffff;
+ --color-surface-variant: #f3f4f6;
+
+ // Text colors
+ --color-text-primary: #111827;
+ --color-text-secondary: #4b5563;
+ --color-text-muted: #9ca3af;
+ --color-text-inverse: #f9fafb;
+
+ // Border colors
+ --color-border: #e5e7eb;
+ --color-border-light: #d1d5db;
+
+ // Status background colors (adjusted for light theme)
+ --color-status-success-bg: rgba(34, 197, 94, 0.1);
+ --color-status-warning-bg: rgba(245, 158, 11, 0.1);
+ --color-status-error-bg: rgba(239, 68, 68, 0.1);
+ --color-status-info-bg: rgba(59, 130, 246, 0.1);
+ --color-status-neutral-bg: rgba(107, 114, 128, 0.1);
+
+ // Shadows (lighter for light theme)
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
+}
+
+// ============================================
+// Global Styles
+// ============================================
+
+// Theme transition class - only apply transitions during theme switch
+html.theme-transition,
+html.theme-transition *,
+html.theme-transition *::before,
+html.theme-transition *::after {
+ transition: background-color var(--transition-normal),
+ border-color var(--transition-normal),
+ color var(--transition-fast) !important;
+}
+
+// Focus states
+:focus-visible {
+ outline: 2px solid var(--color-brand-primary);
+ outline-offset: 2px;
+}
+
+// Selection color
+::selection {
+ background-color: var(--color-brand-primary);
+ color: var(--color-text-inverse);
+}
+
+// Scrollbar styling (WebKit)
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+
+::-webkit-scrollbar-track {
+ background: var(--color-bg-secondary);
+}
+
+::-webkit-scrollbar-thumb {
+ background: var(--color-border-light);
+ border-radius: var(--radius-full);
+
+ &:hover {
+ background: var(--color-text-muted);
+ }
+}
+
+// Firefox scrollbar
+* {
+ scrollbar-width: thin;
+ scrollbar-color: var(--color-border-light) var(--color-bg-secondary);
+}
+
+// ============================================
+// Vuetify Tooltip Override
+// ============================================
+.v-tooltip > .v-overlay__content {
+ background: var(--color-bg-elevated) !important;
+ color: var(--color-text-primary) !important;
+ border: 1px solid var(--color-border) !important;
+ border-radius: var(--radius-md) !important;
+ padding: var(--space-2) var(--space-3) !important;
+ font-size: var(--font-size-sm) !important;
+ box-shadow: var(--shadow-lg) !important;
+}
+
+[data-theme="light"] .v-tooltip > .v-overlay__content {
+ background: #1f2937 !important;
+ color: #f9fafb !important;
+ border-color: #374151 !important;
+}
+
+// ============================================
+// Reduced Motion Support (accessibility)
+// ============================================
+@media (prefers-reduced-motion: reduce) {
+ *,
+ *::before,
+ *::after {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ scroll-behavior: auto !important;
+ }
+}
diff --git a/frontend/src/components/BuildServerStats.vue b/frontend/src/components/BuildServerStats.vue
index 06ec68d..16f0798 100644
--- a/frontend/src/components/BuildServerStats.vue
+++ b/frontend/src/components/BuildServerStats.vue
@@ -1,12 +1,19 @@
-
- Buildserver Stats
-
-
+
+
+
+ Buildserver Stats
+
+
+
+
+
+
+
diff --git a/frontend/src/components/CurrentlyBuilding.vue b/frontend/src/components/CurrentlyBuilding.vue
index cc671b4..1cf5e5e 100644
--- a/frontend/src/components/CurrentlyBuilding.vue
+++ b/frontend/src/components/CurrentlyBuilding.vue
@@ -1,122 +1,109 @@
-
-
-
-
-
-
-
- {{
- updateFailed
- ? 'Could not fetch data.'
- : packageArrays.building.length > 0
- ? 'Building'
- : 'Idle'
- }}
-
-
-
-
-
-
-
-
-
- Last updated
- {{ formatTimeAgo(lastUpdatedSeconds) }}
-
- {{
- unixTimestampToLocalizedDate(
- Math.floor((packagesStore.state.lastUpdated || Date.now()) / 1000)
- )
- }}
-
-
-
- Last Mirror sync
- {{ formatTimeAgo(lastMirrorSync) }}
-
- {{
- unixTimestampToLocalizedDate(
- statsStore.state.stats?.last_mirror_timestamp || Math.floor(Date.now() / 1000)
- )
- }}
-
-
-
+
+
+
+
+
+
+
+ Currently Building
+
+
+
+
+
+ {{ pkg.pkgbase }}
+ {{ pkg.repo }}
+
+
{{ pkg.arch_version }}
+
+
+
+
+
+
+
+ Queued
+ {{ queuedPackages.length }}
+
+
+
+
+
-
diff --git a/frontend/src/components/CurrentlyBuilding/QueuedPackagesList.vue b/frontend/src/components/CurrentlyBuilding/QueuedPackagesList.vue
index 49ebe06..107a4e8 100644
--- a/frontend/src/components/CurrentlyBuilding/QueuedPackagesList.vue
+++ b/frontend/src/components/CurrentlyBuilding/QueuedPackagesList.vue
@@ -1,45 +1,38 @@
-
-
+
- No packages queued.
+ No packages queued.
-
-
-
-
-
+
+
+
+
Show all queued packages
- ({{ packages.length }})
+ {{ packages.length }}
-
-
-
-
-
-
-
- {{ pkg.pkgbase }}
- ({{ pkg.repo }})
-
-
- {{ pkg.arch_version }}
-
-
-
+
+
+
+
+ {{ pkg.pkgbase }}
+ {{ pkg.repo }}
+
+
{{ pkg.arch_version }}
+
+
-
+
+
+
diff --git a/frontend/src/components/MainNav.vue b/frontend/src/components/MainNav.vue
index 5533c99..6217341 100644
--- a/frontend/src/components/MainNav.vue
+++ b/frontend/src/components/MainNav.vue
@@ -1,26 +1,54 @@
-
+
-
+
-
+
+
-
+
-
+
+
-
+
+
+
+ {{ statsStore.state.stats?.latest || 0 }}
+
+
+ {{ statsStore.state.stats?.failed || 0 }}
+
+
+
+
+
+
+ {{ isDark ? 'Light mode' : 'Dark mode' }}
+
+
@@ -30,23 +58,23 @@
import BuildStats from '@/components/MainNav/BuildStats.vue'
import { useDisplay } from 'vuetify'
import { computed } from 'vue'
+import { usePackagesStore, useStatsStore } from '@/stores'
+import { useTheme } from '@/composables/useTheme'
const { mobile, width } = useDisplay()
+const packagesStore = usePackagesStore()
+const statsStore = useStatsStore()
+const { isDark, toggleTheme } = useTheme()
+
+const goHome = () => {
+ packagesStore.resetFilters()
+}
const isTablet = computed(() => mobile && width.value >= 650 && width.value < 960)
const isDesktop = computed(() => !mobile.value && !isTablet.value)
-interface AppBarColors {
- background: string
- accent: string
-}
-
const appTitle = 'ALHP Status'
const repoUrl = 'https://somegit.dev/ALHP/ALHP.GO'
const maxContainerWidth = '1440px'
-const appBarColors: AppBarColors = {
- background: '#0d1538',
- accent: '#609926'
-}
const containerClasses = computed(() => ({
'ms-3': width.value < 1440,
@@ -55,48 +83,99 @@ const containerClasses = computed(() => ({
diff --git a/frontend/src/components/MainNav/BuildStats.vue b/frontend/src/components/MainNav/BuildStats.vue
index a1b1913..065c644 100644
--- a/frontend/src/components/MainNav/BuildStats.vue
+++ b/frontend/src/components/MainNav/BuildStats.vue
@@ -1,9 +1,5 @@
-
+
-
-
-
- Loading stats...
-
-
- Error loading stats
-
+
+
+
+ Loading stats...
+
+
+
+ Error loading stats
+
+
+
diff --git a/frontend/src/components/MainNav/BuildStats/StatItem.vue b/frontend/src/components/MainNav/BuildStats/StatItem.vue
index e8e1449..c490916 100644
--- a/frontend/src/components/MainNav/BuildStats/StatItem.vue
+++ b/frontend/src/components/MainNav/BuildStats/StatItem.vue
@@ -1,7 +1,8 @@
-
- {{ count }}
-
+
+ {{ count }}
+ {{ title }}
+
+
+
diff --git a/frontend/src/components/MainNav/BuildStats/StatsListSection.vue b/frontend/src/components/MainNav/BuildStats/StatsListSection.vue
index ed3987d..32a26cc 100644
--- a/frontend/src/components/MainNav/BuildStats/StatsListSection.vue
+++ b/frontend/src/components/MainNav/BuildStats/StatsListSection.vue
@@ -1,8 +1,10 @@
-
- {{ title }}:
-
-
+
-
diff --git a/frontend/src/components/Packages.vue b/frontend/src/components/Packages.vue
index 5cd72ce..5063ca9 100644
--- a/frontend/src/components/Packages.vue
+++ b/frontend/src/components/Packages.vue
@@ -1,15 +1,43 @@
-
- Packages
+
+
+
+
diff --git a/frontend/src/components/Packages/PackageCard.vue b/frontend/src/components/Packages/PackageCard.vue
new file mode 100644
index 0000000..eb8d8a2
--- /dev/null
+++ b/frontend/src/components/Packages/PackageCard.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+ {{ repoVersion(pkg.repo || '') }}
+
+
+
+ {{ pkg.pkgbase }}
+ {{ repoName(pkg.repo || '') }}
+
+
+
+
{{ pkg.skip_reason }}
+
+
+ Arch:
+ {{ pkg.arch_version || '—' }}
+
+
+ ALHP:
+ {{ pkg.repo_version || '—' }}
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/Packages/PackageFilters.vue b/frontend/src/components/Packages/PackageFilters.vue
index 8acfa3d..f161076 100644
--- a/frontend/src/components/Packages/PackageFilters.vue
+++ b/frontend/src/components/Packages/PackageFilters.vue
@@ -1,62 +1,81 @@
-
-
+
+
-
-
+ density="compact"
+ hide-details
+ label="Search"
+ prepend-inner-icon="mdi-magnify"
+ variant="outlined" />
+
-
-
+ density="compact"
+ hide-details
+ label="Repository"
+ variant="outlined" />
+
-
-
-
-
-
-
-
-
+ variant="outlined" />
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/Packages/PackageTable.vue b/frontend/src/components/Packages/PackageTable.vue
index 26f48ef..9643fcb 100644
--- a/frontend/src/components/Packages/PackageTable.vue
+++ b/frontend/src/components/Packages/PackageTable.vue
@@ -1,112 +1,388 @@
-
-
-
- | Repository |
- Pkgbase |
- Status |
- Reason |
-
- LTO
-
- Link time optimization;
-
- Does not guarantee that package is actually built with LTO
-
- |
-
- DS
-
- Debug-symbols available via debuginfod
-
- |
- Archlinux Version |
- ALHP Version |
- Info |
-
-
-
-
- No Packages found
-
-
-
- |
-
- {{ repoVersion(pkg.repo || '') }}
-
- {{ repoName(pkg.repo || '') }}
- |
- {{ pkg.pkgbase }} |
- {{ (pkg.status || '').toLocaleUpperCase() }} |
- {{ pkg.skip_reason || '' }} |
- |
-
-
- |
- {{ pkg.arch_version }} |
- {{ pkg.repo_version }} |
-
-
-
-
-
-
- AW
-
-
-
- {{ `Built on ${pkg.build_date}` }}
-
- {{ `Peak-Memory: ${pkg.peak_mem}` }}
-
+
+
+
+
+
+
+
+
+ | Repository |
+ Pkgbase |
+ Status |
+ Reason |
+
+
-
+
+ Link time optimization;
+
+ Does not guarantee that package is actually built with LTO
+
+ |
+
+
+
+ Debug-symbols available via debuginfod
+
+ |
+ Archlinux Version |
+ ALHP Version |
+
+
+
+
+
+ |
+
|
-
-
-
+
+
+ |
+
+ {{ repoVersion(pkg.repo || '') }}
+
+ {{ repoName(pkg.repo || '') }}
+ |
+
+ {{ pkg.pkgbase }}
+ |
+
+
+ |
+
+ {{ pkg.skip_reason }}
+ —
+ |
+
+
+
+ {{ getLto(pkg.lto).title }}
+
+ |
+
+
+
+ {{ getDs(pkg.debug_symbols).title }}
+
+ |
+
+ {{ pkg.arch_version || '—' }}
+ |
+
+ {{ pkg.repo_version || '—' }}
+ |
+
+
+ |
+
+
+ |
+
+
+
+
diff --git a/frontend/src/components/common/EmptyState.vue b/frontend/src/components/common/EmptyState.vue
new file mode 100644
index 0000000..2c0c930
--- /dev/null
+++ b/frontend/src/components/common/EmptyState.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
{{ title }}
+
{{ description }}
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/common/StatusBadge.vue b/frontend/src/components/common/StatusBadge.vue
new file mode 100644
index 0000000..2bcabb6
--- /dev/null
+++ b/frontend/src/components/common/StatusBadge.vue
@@ -0,0 +1,158 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
diff --git a/frontend/src/composables/Packages/usePackageDisplay.ts b/frontend/src/composables/Packages/usePackageDisplay.ts
index 6e8f33b..65c84d0 100644
--- a/frontend/src/composables/Packages/usePackageDisplay.ts
+++ b/frontend/src/composables/Packages/usePackageDisplay.ts
@@ -7,61 +7,49 @@ export function usePackageDisplay() {
const getVersionColor = (version: string) => {
switch (version) {
case 'v2':
- return '#3498db'
+ return 'var(--color-version-v2)'
case 'v3':
- return '#f39c12'
+ return 'var(--color-version-v3)'
case 'v4':
- return '#2ecc71'
+ return 'var(--color-version-v4)'
default:
- return 'grey'
+ return 'var(--color-text-muted)'
}
}
const getStatusColor = (status: components['schemas']['Package']['status']) => {
- switch (status) {
- case 'skipped':
- return '#373737'
- case 'queued':
- return '#5d2f03'
- case 'latest':
- return ''
- case 'failed':
- return '#4f140f'
- case 'signing':
- return '#093372'
- case 'building':
- return '#084f46'
- case 'unknown':
- return '#191919'
- default:
- return ''
- }
+ // Return empty string - we now use StatusBadge component instead of row colors
+ return ''
}
const getLto = (lto: components['schemas']['Package']['lto']) => {
switch (lto) {
case 'enabled':
return {
- title: 'built with LTO',
- class: 'fa fa-check fa-lg text-success'
+ title: 'Built with LTO',
+ icon: 'mdi-check-circle',
+ color: 'var(--color-status-success)',
}
case 'unknown':
return {
- title: 'not built with LTO yet',
- class: 'fa fa-hourglass-o fa-lg text-grey'
+ title: 'Not built with LTO yet',
+ icon: 'mdi-timer-sand',
+ color: 'var(--color-text-muted)',
}
case 'disabled':
return {
title: 'LTO explicitly disabled',
- class: 'fa fa-times fa-lg text-red'
+ icon: 'mdi-close-circle',
+ color: 'var(--color-status-error)',
}
case 'auto_disabled':
return {
title: 'LTO automatically disabled',
- class: 'fa fa-times-circle-o fa-lg text-amber'
+ icon: 'mdi-alert-circle',
+ color: 'var(--color-status-warning)',
}
default:
- return { title: '', class: '' }
+ return { title: '', icon: '', color: '' }
}
}
@@ -70,20 +58,23 @@ export function usePackageDisplay() {
case 'available':
return {
title: 'Debug symbols available',
- class: 'fa fa-check fa-lg text-success'
+ icon: 'mdi-check-circle',
+ color: 'var(--color-status-success)',
}
case 'unknown':
return {
title: 'Not built yet',
- class: 'fa fa-hourglass-o fa-lg text-grey'
+ icon: 'mdi-timer-sand',
+ color: 'var(--color-text-muted)',
}
case 'not_available':
return {
title: 'Not built with debug symbols',
- class: 'fa fa-times fa-lg text-red'
+ icon: 'mdi-close-circle',
+ color: 'var(--color-status-error)',
}
default:
- return { title: '', class: '' }
+ return { title: '', icon: '', color: '' }
}
}
@@ -93,6 +84,6 @@ export function usePackageDisplay() {
getVersionColor,
getStatusColor,
getLto,
- getDs
+ getDs,
}
}
diff --git a/frontend/src/composables/useAutoRefresh.ts b/frontend/src/composables/useAutoRefresh.ts
new file mode 100644
index 0000000..f7b3139
--- /dev/null
+++ b/frontend/src/composables/useAutoRefresh.ts
@@ -0,0 +1,75 @@
+import { onUnmounted, ref } from 'vue'
+
+/**
+ * Creates an auto-refresh interval that can be started, stopped, and automatically cleaned up
+ * @param callback - The function to call on each interval
+ * @param intervalMs - Interval in milliseconds (default: 5 minutes)
+ * @returns Control functions for the interval
+ */
+export function useAutoRefresh(callback: () => void, intervalMs = 5 * 60 * 1000) {
+ const intervalId = ref(null)
+ const isRunning = ref(false)
+
+ const stop = () => {
+ if (intervalId.value !== null) {
+ clearInterval(intervalId.value)
+ intervalId.value = null
+ isRunning.value = false
+ }
+ }
+
+ const start = () => {
+ stop()
+ intervalId.value = window.setInterval(callback, intervalMs)
+ isRunning.value = true
+ }
+
+ const restart = () => {
+ start()
+ }
+
+ // Clean up on unmount
+ onUnmounted(() => {
+ stop()
+ })
+
+ return {
+ start,
+ stop,
+ restart,
+ isRunning,
+ }
+}
+
+/**
+ * Creates a timer that updates a "now" ref every second for relative time displays
+ * @returns The current timestamp ref and control functions
+ */
+export function useNowTimer() {
+ const now = ref(Math.floor(Date.now() / 1000))
+ let timerId: number | undefined
+
+ const start = () => {
+ stop()
+ timerId = window.setInterval(() => {
+ now.value = Math.floor(Date.now() / 1000)
+ }, 1000)
+ }
+
+ const stop = () => {
+ if (timerId !== undefined) {
+ clearInterval(timerId)
+ timerId = undefined
+ }
+ }
+
+ onUnmounted(() => {
+ stop()
+ })
+
+ return {
+ now,
+ start,
+ stop,
+ }
+}
diff --git a/frontend/src/composables/useDateFormat.ts b/frontend/src/composables/useDateFormat.ts
new file mode 100644
index 0000000..cb60b1f
--- /dev/null
+++ b/frontend/src/composables/useDateFormat.ts
@@ -0,0 +1,40 @@
+/**
+ * Converts a Unix timestamp to a localized date string
+ * @param timestamp - Unix timestamp in seconds
+ * @returns Localized date string
+ */
+export function unixTimestampToLocalizedDate(timestamp: number): string {
+ const date = new Date(timestamp * 1000)
+ return date.toLocaleString(navigator.language)
+}
+
+/**
+ * Creates a relative time formatter
+ * @returns Functions for formatting relative time
+ */
+export function useRelativeTime() {
+ const rtf = new Intl.RelativeTimeFormat('en', {
+ localeMatcher: 'best fit',
+ numeric: 'always',
+ style: 'long',
+ })
+
+ /**
+ * Formats seconds ago into a human-readable relative time string
+ * @param seconds - Number of seconds ago (positive = past)
+ * @returns Formatted relative time string
+ */
+ const formatTimeAgo = (seconds: number): string => {
+ if (seconds >= 3600) {
+ return rtf.format(-Math.floor(seconds / 3600), 'hours')
+ } else if (seconds >= 60) {
+ return rtf.format(-Math.floor(seconds / 60), 'minutes')
+ } else {
+ return rtf.format(-seconds, 'seconds')
+ }
+ }
+
+ return {
+ formatTimeAgo,
+ }
+}
diff --git a/frontend/src/composables/useDebounce.ts b/frontend/src/composables/useDebounce.ts
new file mode 100644
index 0000000..f3833c9
--- /dev/null
+++ b/frontend/src/composables/useDebounce.ts
@@ -0,0 +1,54 @@
+import { ref, watch, type Ref } from 'vue'
+
+/**
+ * Creates a debounced version of a ref value
+ * @param value - The ref to debounce
+ * @param delay - Debounce delay in milliseconds (default: 300)
+ * @returns A tuple of [debouncedValue, cancel function]
+ */
+export function useDebouncedRef(value: Ref, delay = 300) {
+ const debouncedValue = ref(value.value) as Ref
+ let timeout: ReturnType | null = null
+
+ const cancel = () => {
+ if (timeout) {
+ clearTimeout(timeout)
+ timeout = null
+ }
+ }
+
+ watch(value, (newValue) => {
+ cancel()
+ timeout = setTimeout(() => {
+ debouncedValue.value = newValue
+ }, delay)
+ })
+
+ return { debouncedValue, cancel }
+}
+
+/**
+ * Creates a debounced callback function
+ * @param callback - The function to debounce
+ * @param delay - Debounce delay in milliseconds (default: 300)
+ * @returns A tuple of [debounced function, cancel function]
+ */
+export function useDebounce) => void>(callback: T, delay = 300) {
+ let timeout: ReturnType | null = null
+
+ const cancel = () => {
+ if (timeout) {
+ clearTimeout(timeout)
+ timeout = null
+ }
+ }
+
+ const debouncedFn = (...args: Parameters) => {
+ cancel()
+ timeout = setTimeout(() => {
+ callback(...args)
+ }, delay)
+ }
+
+ return { debouncedFn, cancel }
+}
diff --git a/frontend/src/composables/useTheme.ts b/frontend/src/composables/useTheme.ts
new file mode 100644
index 0000000..8b4bd20
--- /dev/null
+++ b/frontend/src/composables/useTheme.ts
@@ -0,0 +1,122 @@
+import { ref, watch, onMounted } from 'vue'
+import { useTheme as useVuetifyTheme } from 'vuetify'
+
+type ThemeMode = 'light' | 'dark' | 'system'
+
+const STORAGE_KEY = 'alhp-theme-preference'
+
+// Global reactive state (shared across components)
+const themeMode = ref('system')
+const isDark = ref(true)
+
+/**
+ * Theme management composable
+ * Handles dark/light mode with OS preference detection and persistence
+ */
+export function useTheme() {
+ const vuetifyTheme = useVuetifyTheme()
+
+ /**
+ * Get system preference for dark mode
+ */
+ const getSystemPreference = (): boolean => {
+ if (typeof window === 'undefined') return true
+ return window.matchMedia('(prefers-color-scheme: dark)').matches
+ }
+
+ /**
+ * Apply theme to document and Vuetify
+ */
+ const applyTheme = (dark: boolean, animate = false) => {
+ isDark.value = dark
+
+ // Add transition class for smooth theme switching
+ if (animate) {
+ document.documentElement.classList.add('theme-transition')
+ setTimeout(() => {
+ document.documentElement.classList.remove('theme-transition')
+ }, 300)
+ }
+
+ // Apply to Vuetify
+ vuetifyTheme.global.name.value = dark ? 'darkTheme' : 'lightTheme'
+
+ // Apply data attribute for CSS variables
+ document.documentElement.setAttribute('data-theme', dark ? 'dark' : 'light')
+
+ // Update meta theme-color for mobile browsers
+ const metaThemeColor = document.querySelector('meta[name="theme-color"]')
+ if (metaThemeColor) {
+ metaThemeColor.setAttribute('content', dark ? '#0f1419' : '#ffffff')
+ }
+ }
+
+ /**
+ * Set theme mode and persist preference
+ */
+ const setThemeMode = (mode: ThemeMode, animate = true) => {
+ themeMode.value = mode
+ localStorage.setItem(STORAGE_KEY, mode)
+
+ if (mode === 'system') {
+ applyTheme(getSystemPreference(), animate)
+ } else {
+ applyTheme(mode === 'dark', animate)
+ }
+ }
+
+ /**
+ * Toggle between dark and light modes
+ */
+ const toggleTheme = () => {
+ if (themeMode.value === 'system') {
+ // If currently following system, switch to opposite of current
+ setThemeMode(isDark.value ? 'light' : 'dark')
+ } else {
+ setThemeMode(themeMode.value === 'dark' ? 'light' : 'dark')
+ }
+ }
+
+ /**
+ * Initialize theme from storage or system preference
+ */
+ const initTheme = () => {
+ const stored = localStorage.getItem(STORAGE_KEY) as ThemeMode | null
+
+ if (stored && ['light', 'dark', 'system'].includes(stored)) {
+ themeMode.value = stored
+ } else {
+ themeMode.value = 'system'
+ }
+
+ // Don't animate on initial load
+ if (themeMode.value === 'system') {
+ applyTheme(getSystemPreference(), false)
+ } else {
+ applyTheme(themeMode.value === 'dark', false)
+ }
+ }
+
+ // Watch for system preference changes
+ onMounted(() => {
+ initTheme()
+
+ // Listen for system preference changes
+ const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
+ const handleChange = (e: MediaQueryListEvent) => {
+ if (themeMode.value === 'system') {
+ applyTheme(e.matches, true)
+ }
+ }
+
+ mediaQuery.addEventListener('change', handleChange)
+ })
+
+ return {
+ themeMode,
+ isDark,
+ toggleTheme,
+ setThemeMode,
+ initTheme,
+ }
+}
diff --git a/frontend/src/plugins/vuetify.ts b/frontend/src/plugins/vuetify.ts
index 77879b7..17ea602 100644
--- a/frontend/src/plugins/vuetify.ts
+++ b/frontend/src/plugins/vuetify.ts
@@ -9,22 +9,62 @@ import '@mdi/font/css/materialdesignicons.css'
import 'vuetify/styles'
// Composables
-import {createVuetify, type ThemeDefinition} from 'vuetify'
+import { createVuetify, type ThemeDefinition } from 'vuetify'
-const customDarkTheme: ThemeDefinition = {
+const darkTheme: ThemeDefinition = {
dark: true,
colors: {
- background: '#111217',
- primary: '#0D6EFD'
- }
+ background: '#0f1419',
+ surface: '#1a1f2e',
+ 'surface-variant': '#242b3d',
+ primary: '#3b82f6',
+ secondary: '#609926',
+ error: '#ef4444',
+ warning: '#f59e0b',
+ info: '#3b82f6',
+ success: '#22c55e',
+ 'on-background': '#f9fafb',
+ 'on-surface': '#f9fafb',
+ 'on-primary': '#ffffff',
+ },
+}
+
+const lightTheme: ThemeDefinition = {
+ dark: false,
+ colors: {
+ background: '#ffffff',
+ surface: '#f9fafb',
+ 'surface-variant': '#f3f4f6',
+ primary: '#3b82f6',
+ secondary: '#609926',
+ error: '#ef4444',
+ warning: '#f59e0b',
+ info: '#3b82f6',
+ success: '#22c55e',
+ 'on-background': '#111827',
+ 'on-surface': '#111827',
+ 'on-primary': '#ffffff',
+ },
}
// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides
export default createVuetify({
theme: {
- defaultTheme: 'customDarkTheme',
+ defaultTheme: 'darkTheme',
themes: {
- customDarkTheme
- }
- }
+ darkTheme,
+ lightTheme,
+ },
+ },
+ defaults: {
+ VBtn: {
+ variant: 'flat',
+ },
+ VCard: {
+ rounded: 'lg',
+ },
+ VChip: {
+ rounded: 'lg',
+ },
+ },
})
diff --git a/frontend/src/stores/packagesStore.ts b/frontend/src/stores/packagesStore.ts
index 28c46c6..37a8c57 100644
--- a/frontend/src/stores/packagesStore.ts
+++ b/frontend/src/stores/packagesStore.ts
@@ -54,12 +54,11 @@ export const usePackagesStore = defineStore('packages', () => {
filter.repo = state.filters.repo
}
- // @ts-ignore
getPackages({
limit: state.limit,
offset: state.offset,
...filter
- })
+ } as Parameters[0])
.then((response) => {
if (!response) throw new Error('No response from API')
state.packages = response.packages || []
@@ -75,7 +74,6 @@ export const usePackagesStore = defineStore('packages', () => {
state.limit = Number(import.meta.env.VITE_LIMIT) || 50
} else {
state.error = err instanceof Error ? err.message : 'Failed to fetch packages'
- console.error('Error fetching packages:', err)
}
})
.finally(() => {
@@ -102,7 +100,6 @@ export const usePackagesStore = defineStore('packages', () => {
} else {
state.errorCurrentlyBuilding =
err instanceof Error ? err.message : 'Failed to fetch currently building packages'
- console.error('Error fetching queued packages:', err)
}
})
.finally(() => {
@@ -119,7 +116,7 @@ export const usePackagesStore = defineStore('packages', () => {
}
const setFilters = (newFilters: PackageFilters, page?: number) => {
- state.filters = JSON.parse(JSON.stringify(newFilters))
+ state.filters = structuredClone(newFilters)
if (state.filters.exact === false) {
state.filters.exact = undefined
}
@@ -148,7 +145,7 @@ export const usePackagesStore = defineStore('packages', () => {
const updateUrlParams = () => {
const params = new URLSearchParams()
- let page = state.offset / state.limit + 1
+ const page = state.offset / state.limit + 1
// Only add a page parameter if it's not the first page
if (page > 1) {
params.set('page', page.toString())
diff --git a/frontend/src/stores/statsStore.ts b/frontend/src/stores/statsStore.ts
index 89f869a..6afc5e7 100644
--- a/frontend/src/stores/statsStore.ts
+++ b/frontend/src/stores/statsStore.ts
@@ -20,8 +20,7 @@ export const useStatsStore = defineStore('stats', () => {
state.stats = response
})
.catch((err) => {
- state.error = err instanceof Error ? err.message : 'Failed to fetch packages'
- console.error('Error fetching packages:', err)
+ state.error = err instanceof Error ? err.message : 'Failed to fetch stats'
})
.finally(() => {
state.loading = false
diff --git a/frontend/vitest.config.ts b/frontend/vitest.config.ts
new file mode 100644
index 0000000..ef89142
--- /dev/null
+++ b/frontend/vitest.config.ts
@@ -0,0 +1,22 @@
+import { defineConfig } from 'vitest/config'
+import vue from '@vitejs/plugin-vue'
+import { fileURLToPath } from 'node:url'
+
+export default defineConfig({
+ plugins: [vue()],
+ test: {
+ environment: 'happy-dom',
+ globals: true,
+ include: ['src/**/*.{test,spec}.{js,ts,vue}'],
+ coverage: {
+ provider: 'v8',
+ reporter: ['text', 'json', 'html'],
+ exclude: ['node_modules', 'src/generated', 'dist'],
+ },
+ },
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
+ },
+ },
+})
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 57bdd4b..3f90ee7 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -5,6 +5,17 @@ __metadata:
version: 8
cacheKey: 10c0
+"@babel/code-frame@npm:^7.10.4":
+ version: 7.27.1
+ resolution: "@babel/code-frame@npm:7.27.1"
+ dependencies:
+ "@babel/helper-validator-identifier": "npm:^7.27.1"
+ js-tokens: "npm:^4.0.0"
+ picocolors: "npm:^1.1.1"
+ checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00
+ languageName: node
+ linkType: hard
+
"@babel/code-frame@npm:^7.26.2":
version: 7.26.2
resolution: "@babel/code-frame@npm:7.26.2"
@@ -30,6 +41,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-validator-identifier@npm:^7.27.1":
+ version: 7.28.5
+ resolution: "@babel/helper-validator-identifier@npm:7.28.5"
+ checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847
+ languageName: node
+ linkType: hard
+
"@babel/parser@npm:^7.25.3":
version: 7.26.10
resolution: "@babel/parser@npm:7.26.10"
@@ -41,6 +59,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.23.2":
+ version: 7.28.4
+ resolution: "@babel/runtime@npm:7.28.4"
+ checksum: 10c0/792ce7af9750fb9b93879cc9d1db175701c4689da890e6ced242ea0207c9da411ccf16dc04e689cc01158b28d7898c40d75598f4559109f761c12ce01e959bf7
+ languageName: node
+ linkType: hard
+
"@babel/types@npm:^7.26.10":
version: 7.26.10
resolution: "@babel/types@npm:7.26.10"
@@ -61,6 +86,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/aix-ppc64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/aix-ppc64@npm:0.21.5"
+ conditions: os=aix & cpu=ppc64
+ languageName: node
+ linkType: hard
+
"@esbuild/aix-ppc64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/aix-ppc64@npm:0.25.1"
@@ -68,6 +100,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/android-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/android-arm64@npm:0.21.5"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/android-arm64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/android-arm64@npm:0.25.1"
@@ -75,6 +114,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/android-arm@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/android-arm@npm:0.21.5"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
"@esbuild/android-arm@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/android-arm@npm:0.25.1"
@@ -82,6 +128,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/android-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/android-x64@npm:0.21.5"
+ conditions: os=android & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/android-x64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/android-x64@npm:0.25.1"
@@ -89,6 +142,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/darwin-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/darwin-arm64@npm:0.21.5"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/darwin-arm64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/darwin-arm64@npm:0.25.1"
@@ -96,6 +156,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/darwin-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/darwin-x64@npm:0.21.5"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/darwin-x64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/darwin-x64@npm:0.25.1"
@@ -103,6 +170,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/freebsd-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/freebsd-arm64@npm:0.21.5"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/freebsd-arm64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/freebsd-arm64@npm:0.25.1"
@@ -110,6 +184,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/freebsd-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/freebsd-x64@npm:0.21.5"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/freebsd-x64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/freebsd-x64@npm:0.25.1"
@@ -117,6 +198,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-arm64@npm:0.21.5"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-arm64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-arm64@npm:0.25.1"
@@ -124,6 +212,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-arm@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-arm@npm:0.21.5"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-arm@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-arm@npm:0.25.1"
@@ -131,6 +226,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-ia32@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-ia32@npm:0.21.5"
+ conditions: os=linux & cpu=ia32
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-ia32@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-ia32@npm:0.25.1"
@@ -138,6 +240,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-loong64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-loong64@npm:0.21.5"
+ conditions: os=linux & cpu=loong64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-loong64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-loong64@npm:0.25.1"
@@ -145,6 +254,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-mips64el@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-mips64el@npm:0.21.5"
+ conditions: os=linux & cpu=mips64el
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-mips64el@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-mips64el@npm:0.25.1"
@@ -152,6 +268,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-ppc64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-ppc64@npm:0.21.5"
+ conditions: os=linux & cpu=ppc64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-ppc64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-ppc64@npm:0.25.1"
@@ -159,6 +282,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-riscv64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-riscv64@npm:0.21.5"
+ conditions: os=linux & cpu=riscv64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-riscv64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-riscv64@npm:0.25.1"
@@ -166,6 +296,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-s390x@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-s390x@npm:0.21.5"
+ conditions: os=linux & cpu=s390x
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-s390x@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-s390x@npm:0.25.1"
@@ -173,6 +310,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-x64@npm:0.21.5"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-x64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/linux-x64@npm:0.25.1"
@@ -187,6 +331,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/netbsd-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/netbsd-x64@npm:0.21.5"
+ conditions: os=netbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/netbsd-x64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/netbsd-x64@npm:0.25.1"
@@ -201,6 +352,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/openbsd-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/openbsd-x64@npm:0.21.5"
+ conditions: os=openbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/openbsd-x64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/openbsd-x64@npm:0.25.1"
@@ -208,6 +366,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/sunos-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/sunos-x64@npm:0.21.5"
+ conditions: os=sunos & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/sunos-x64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/sunos-x64@npm:0.25.1"
@@ -215,6 +380,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/win32-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/win32-arm64@npm:0.21.5"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/win32-arm64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/win32-arm64@npm:0.25.1"
@@ -222,6 +394,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/win32-ia32@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/win32-ia32@npm:0.21.5"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
"@esbuild/win32-ia32@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/win32-ia32@npm:0.25.1"
@@ -229,6 +408,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/win32-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/win32-x64@npm:0.21.5"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/win32-x64@npm:0.25.1":
version: 0.25.1
resolution: "@esbuild/win32-x64@npm:0.25.1"
@@ -236,6 +422,48 @@ __metadata:
languageName: node
linkType: hard
+"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.7.0":
+ version: 4.9.0
+ resolution: "@eslint-community/eslint-utils@npm:4.9.0"
+ dependencies:
+ eslint-visitor-keys: "npm:^3.4.3"
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+ checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817
+ languageName: node
+ linkType: hard
+
+"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1":
+ version: 4.12.2
+ resolution: "@eslint-community/regexpp@npm:4.12.2"
+ checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d
+ languageName: node
+ linkType: hard
+
+"@eslint/eslintrc@npm:^2.1.4":
+ version: 2.1.4
+ resolution: "@eslint/eslintrc@npm:2.1.4"
+ dependencies:
+ ajv: "npm:^6.12.4"
+ debug: "npm:^4.3.2"
+ espree: "npm:^9.6.0"
+ globals: "npm:^13.19.0"
+ ignore: "npm:^5.2.0"
+ import-fresh: "npm:^3.2.1"
+ js-yaml: "npm:^4.1.0"
+ minimatch: "npm:^3.1.2"
+ strip-json-comments: "npm:^3.1.1"
+ checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573
+ languageName: node
+ linkType: hard
+
+"@eslint/js@npm:8.57.1":
+ version: 8.57.1
+ resolution: "@eslint/js@npm:8.57.1"
+ checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223
+ languageName: node
+ linkType: hard
+
"@fontsource/roboto@npm:^5.2.5":
version: 5.2.5
resolution: "@fontsource/roboto@npm:5.2.5"
@@ -243,6 +471,31 @@ __metadata:
languageName: node
linkType: hard
+"@humanwhocodes/config-array@npm:^0.13.0":
+ version: 0.13.0
+ resolution: "@humanwhocodes/config-array@npm:0.13.0"
+ dependencies:
+ "@humanwhocodes/object-schema": "npm:^2.0.3"
+ debug: "npm:^4.3.1"
+ minimatch: "npm:^3.0.5"
+ checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e
+ languageName: node
+ linkType: hard
+
+"@humanwhocodes/module-importer@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "@humanwhocodes/module-importer@npm:1.0.1"
+ checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529
+ languageName: node
+ linkType: hard
+
+"@humanwhocodes/object-schema@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "@humanwhocodes/object-schema@npm:2.0.3"
+ checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c
+ languageName: node
+ linkType: hard
+
"@isaacs/cliui@npm:^8.0.2":
version: 8.0.2
resolution: "@isaacs/cliui@npm:8.0.2"
@@ -264,6 +517,13 @@ __metadata:
languageName: node
linkType: hard
+"@jridgewell/sourcemap-codec@npm:^1.5.5":
+ version: 1.5.5
+ resolution: "@jridgewell/sourcemap-codec@npm:1.5.5"
+ checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0
+ languageName: node
+ linkType: hard
+
"@mdi/font@npm:7.4.47":
version: 7.4.47
resolution: "@mdi/font@npm:7.4.47"
@@ -288,7 +548,7 @@ __metadata:
languageName: node
linkType: hard
-"@nodelib/fs.walk@npm:^1.2.3":
+"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
@@ -320,6 +580,13 @@ __metadata:
languageName: node
linkType: hard
+"@one-ini/wasm@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@one-ini/wasm@npm:0.1.1"
+ checksum: 10c0/54700e055037f1a63bfcc86d24822203b25759598c2c3e295d1435130a449108aebc119c9c2e467744767dbe0b6ab47a182c61aa1071ba7368f5e20ab197ba65
+ languageName: node
+ linkType: hard
+
"@parcel/watcher-android-arm64@npm:2.5.1":
version: 2.5.1
resolution: "@parcel/watcher-android-arm64@npm:2.5.1"
@@ -514,6 +781,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-android-arm-eabi@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-android-arm-eabi@npm:4.53.3"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-android-arm64@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-android-arm64@npm:4.36.0"
@@ -521,6 +795,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-android-arm64@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-android-arm64@npm:4.53.3"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-darwin-arm64@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-darwin-arm64@npm:4.36.0"
@@ -528,6 +809,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-darwin-arm64@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-darwin-arm64@npm:4.53.3"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-darwin-x64@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-darwin-x64@npm:4.36.0"
@@ -535,6 +823,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-darwin-x64@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-darwin-x64@npm:4.53.3"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-freebsd-arm64@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-freebsd-arm64@npm:4.36.0"
@@ -542,6 +837,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-freebsd-arm64@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-freebsd-arm64@npm:4.53.3"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-freebsd-x64@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-freebsd-x64@npm:4.36.0"
@@ -549,6 +851,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-freebsd-x64@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-freebsd-x64@npm:4.53.3"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-arm-gnueabihf@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.36.0"
@@ -556,6 +865,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-arm-gnueabihf@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.53.3"
+ conditions: os=linux & cpu=arm & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-arm-musleabihf@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.36.0"
@@ -563,6 +879,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-arm-musleabihf@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.53.3"
+ conditions: os=linux & cpu=arm & libc=musl
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-arm64-gnu@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.36.0"
@@ -570,6 +893,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-arm64-gnu@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.53.3"
+ conditions: os=linux & cpu=arm64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-arm64-musl@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.36.0"
@@ -577,6 +907,20 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-arm64-musl@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-arm64-musl@npm:4.53.3"
+ conditions: os=linux & cpu=arm64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-loong64-gnu@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.53.3"
+ conditions: os=linux & cpu=loong64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-loongarch64-gnu@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.36.0"
@@ -591,6 +935,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-ppc64-gnu@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.53.3"
+ conditions: os=linux & cpu=ppc64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-riscv64-gnu@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.36.0"
@@ -598,6 +949,20 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-riscv64-gnu@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.53.3"
+ conditions: os=linux & cpu=riscv64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-riscv64-musl@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.53.3"
+ conditions: os=linux & cpu=riscv64 & libc=musl
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-s390x-gnu@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.36.0"
@@ -605,6 +970,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-s390x-gnu@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.53.3"
+ conditions: os=linux & cpu=s390x & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-x64-gnu@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.36.0"
@@ -612,6 +984,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-x64-gnu@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-x64-gnu@npm:4.53.3"
+ conditions: os=linux & cpu=x64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-x64-musl@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-linux-x64-musl@npm:4.36.0"
@@ -619,6 +998,20 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-x64-musl@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-linux-x64-musl@npm:4.53.3"
+ conditions: os=linux & cpu=x64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-openharmony-arm64@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-openharmony-arm64@npm:4.53.3"
+ conditions: os=openharmony & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-win32-arm64-msvc@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.36.0"
@@ -626,6 +1019,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-win32-arm64-msvc@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.53.3"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-win32-ia32-msvc@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.36.0"
@@ -633,6 +1033,20 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-win32-ia32-msvc@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.53.3"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-win32-x64-gnu@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-win32-x64-gnu@npm:4.53.3"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-win32-x64-msvc@npm:4.36.0":
version: 4.36.0
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.36.0"
@@ -640,6 +1054,53 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-win32-x64-msvc@npm:4.53.3":
+ version: 4.53.3
+ resolution: "@rollup/rollup-win32-x64-msvc@npm:4.53.3"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@testing-library/dom@npm:^9.3.3":
+ version: 9.3.4
+ resolution: "@testing-library/dom@npm:9.3.4"
+ dependencies:
+ "@babel/code-frame": "npm:^7.10.4"
+ "@babel/runtime": "npm:^7.12.5"
+ "@types/aria-query": "npm:^5.0.1"
+ aria-query: "npm:5.1.3"
+ chalk: "npm:^4.1.0"
+ dom-accessibility-api: "npm:^0.5.9"
+ lz-string: "npm:^1.5.0"
+ pretty-format: "npm:^27.0.2"
+ checksum: 10c0/147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794
+ languageName: node
+ linkType: hard
+
+"@testing-library/vue@npm:^8.1.0":
+ version: 8.1.0
+ resolution: "@testing-library/vue@npm:8.1.0"
+ dependencies:
+ "@babel/runtime": "npm:^7.23.2"
+ "@testing-library/dom": "npm:^9.3.3"
+ "@vue/test-utils": "npm:^2.4.1"
+ peerDependencies:
+ "@vue/compiler-sfc": ">= 3"
+ vue: ">= 3"
+ peerDependenciesMeta:
+ "@vue/compiler-sfc":
+ optional: true
+ checksum: 10c0/b7547bae3a957f541174503c8274572b240e9ba58fdeaa20aa1f95decee2a124ff3c90d83c2f11a9c5fb7689f744786e79b553a26f81fe8691b5bd58a74c813e
+ languageName: node
+ linkType: hard
+
+"@types/aria-query@npm:^5.0.1":
+ version: 5.0.4
+ resolution: "@types/aria-query@npm:5.0.4"
+ checksum: 10c0/dc667bc6a3acc7bba2bccf8c23d56cb1f2f4defaa704cfef595437107efaa972d3b3db9ec1d66bc2711bfc35086821edd32c302bffab36f2e79b97f312069f08
+ languageName: node
+ linkType: hard
+
"@types/estree@npm:1.0.6":
version: 1.0.6
resolution: "@types/estree@npm:1.0.6"
@@ -647,6 +1108,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/estree@npm:1.0.8, @types/estree@npm:^1.0.0":
+ version: 1.0.8
+ resolution: "@types/estree@npm:1.0.8"
+ checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5
+ languageName: node
+ linkType: hard
+
"@types/node@npm:^22.14.1":
version: 22.14.1
resolution: "@types/node@npm:22.14.1"
@@ -656,6 +1124,149 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/eslint-plugin@npm:^8.18.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/eslint-plugin@npm:8.48.0"
+ dependencies:
+ "@eslint-community/regexpp": "npm:^4.10.0"
+ "@typescript-eslint/scope-manager": "npm:8.48.0"
+ "@typescript-eslint/type-utils": "npm:8.48.0"
+ "@typescript-eslint/utils": "npm:8.48.0"
+ "@typescript-eslint/visitor-keys": "npm:8.48.0"
+ graphemer: "npm:^1.4.0"
+ ignore: "npm:^7.0.0"
+ natural-compare: "npm:^1.4.0"
+ ts-api-utils: "npm:^2.1.0"
+ peerDependencies:
+ "@typescript-eslint/parser": ^8.48.0
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <6.0.0"
+ checksum: 10c0/5f4f9ac3ace3f615bac428859026b70fb7fa236666cfe8856fed3add7e4ba73c7113264c2df7a9d68247b679dfcc21b0414488bda7b9b3de1c209b1807ed7842
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/parser@npm:^8.18.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/parser@npm:8.48.0"
+ dependencies:
+ "@typescript-eslint/scope-manager": "npm:8.48.0"
+ "@typescript-eslint/types": "npm:8.48.0"
+ "@typescript-eslint/typescript-estree": "npm:8.48.0"
+ "@typescript-eslint/visitor-keys": "npm:8.48.0"
+ debug: "npm:^4.3.4"
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <6.0.0"
+ checksum: 10c0/180753e1dc55cd5174a236b738d3b0dd6dd6c131797cd417b3b3b8fac344168f3d21bd49eae6c0a075be29ed69b7bc74d97cadd917f1f4d4c113c29e76c1f9cd
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/project-service@npm:8.48.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/project-service@npm:8.48.0"
+ dependencies:
+ "@typescript-eslint/tsconfig-utils": "npm:^8.48.0"
+ "@typescript-eslint/types": "npm:^8.48.0"
+ debug: "npm:^4.3.4"
+ peerDependencies:
+ typescript: ">=4.8.4 <6.0.0"
+ checksum: 10c0/6e1d08312fe55a91ba37eb19131af91ad7834bafd15d1cddb83a1e35e5134382e10dc0b14531036ba1c075ce4cba627123625ed6f2e209fb3355f3dda25da0a1
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/scope-manager@npm:8.48.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/scope-manager@npm:8.48.0"
+ dependencies:
+ "@typescript-eslint/types": "npm:8.48.0"
+ "@typescript-eslint/visitor-keys": "npm:8.48.0"
+ checksum: 10c0/0766e365901a8af9d9e41fa70464254aacf8b4d167734d88b6cdaa0235e86bfdffc57a3e39a20e105929b8df499d252090f64f81f86770f74626ca809afe54b6
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/tsconfig-utils@npm:8.48.0, @typescript-eslint/tsconfig-utils@npm:^8.48.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/tsconfig-utils@npm:8.48.0"
+ peerDependencies:
+ typescript: ">=4.8.4 <6.0.0"
+ checksum: 10c0/52e9ce8ffbaf32f3c6f4b8fa8af6e3901c430411e137a0baf650fcefdd8edf3dcc4569eba726a28424471d4d1d96b815aa4cf7b63aa7b67380efd6a8dd354222
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/type-utils@npm:8.48.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/type-utils@npm:8.48.0"
+ dependencies:
+ "@typescript-eslint/types": "npm:8.48.0"
+ "@typescript-eslint/typescript-estree": "npm:8.48.0"
+ "@typescript-eslint/utils": "npm:8.48.0"
+ debug: "npm:^4.3.4"
+ ts-api-utils: "npm:^2.1.0"
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <6.0.0"
+ checksum: 10c0/72ab5c7d183b844e4870bfa5dfeb68e2e7ce5f3e1b33c06d5a8e70f0d0a012c9152ad15071d41ba3788266109804a9f4cdb85d664b11df8948bc930e29e0c244
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/types@npm:8.48.0, @typescript-eslint/types@npm:^8.48.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/types@npm:8.48.0"
+ checksum: 10c0/865a8f4ae4a50aa8976f3d7e0f874f1a1c80227ec53ded68644d41011c729a489bb59f70683b29237ab945716ea0258e1d47387163379eab3edaaf5e5cc3b757
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/typescript-estree@npm:8.48.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/typescript-estree@npm:8.48.0"
+ dependencies:
+ "@typescript-eslint/project-service": "npm:8.48.0"
+ "@typescript-eslint/tsconfig-utils": "npm:8.48.0"
+ "@typescript-eslint/types": "npm:8.48.0"
+ "@typescript-eslint/visitor-keys": "npm:8.48.0"
+ debug: "npm:^4.3.4"
+ minimatch: "npm:^9.0.4"
+ semver: "npm:^7.6.0"
+ tinyglobby: "npm:^0.2.15"
+ ts-api-utils: "npm:^2.1.0"
+ peerDependencies:
+ typescript: ">=4.8.4 <6.0.0"
+ checksum: 10c0/f17dd35f7b82654fae9fe83c2eb650572464dbce0170d55b3ef94b99e9aae010f2cbadd436089c8e59eef97d41719ace3a2deb4ac3cdfac26d43b36f34df5590
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/utils@npm:8.48.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/utils@npm:8.48.0"
+ dependencies:
+ "@eslint-community/eslint-utils": "npm:^4.7.0"
+ "@typescript-eslint/scope-manager": "npm:8.48.0"
+ "@typescript-eslint/types": "npm:8.48.0"
+ "@typescript-eslint/typescript-estree": "npm:8.48.0"
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <6.0.0"
+ checksum: 10c0/56334312d1dc114a5c8b05dac4da191c40a416a5705fa76797ebdc9f6a96d35727fd0993cf8776f5c4411837e5fc2151bfa61d3eecc98b24f5a821a63a4d56f3
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/visitor-keys@npm:8.48.0":
+ version: 8.48.0
+ resolution: "@typescript-eslint/visitor-keys@npm:8.48.0"
+ dependencies:
+ "@typescript-eslint/types": "npm:8.48.0"
+ eslint-visitor-keys: "npm:^4.2.1"
+ checksum: 10c0/20ae9ec255a786de40cdba281b63f634a642dcc34d2a79c5ffc160109f7f6227c28ae2c64be32cbc53dc68dc398c3da715bfcce90422b5024f15f7124a3c1704
+ languageName: node
+ linkType: hard
+
+"@ungap/structured-clone@npm:^1.2.0":
+ version: 1.3.0
+ resolution: "@ungap/structured-clone@npm:1.3.0"
+ checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a
+ languageName: node
+ linkType: hard
+
"@vitejs/plugin-vue@npm:^5.2.3":
version: 5.2.3
resolution: "@vitejs/plugin-vue@npm:5.2.3"
@@ -666,6 +1277,87 @@ __metadata:
languageName: node
linkType: hard
+"@vitest/expect@npm:2.1.9":
+ version: 2.1.9
+ resolution: "@vitest/expect@npm:2.1.9"
+ dependencies:
+ "@vitest/spy": "npm:2.1.9"
+ "@vitest/utils": "npm:2.1.9"
+ chai: "npm:^5.1.2"
+ tinyrainbow: "npm:^1.2.0"
+ checksum: 10c0/98d1cf02917316bebef9e4720723e38298a1c12b3c8f3a81f259bb822de4288edf594e69ff64f0b88afbda6d04d7a4f0c2f720f3fec16b4c45f5e2669f09fdbb
+ languageName: node
+ linkType: hard
+
+"@vitest/mocker@npm:2.1.9":
+ version: 2.1.9
+ resolution: "@vitest/mocker@npm:2.1.9"
+ dependencies:
+ "@vitest/spy": "npm:2.1.9"
+ estree-walker: "npm:^3.0.3"
+ magic-string: "npm:^0.30.12"
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^5.0.0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+ checksum: 10c0/f734490d8d1206a7f44dfdfca459282f5921d73efa72935bb1dc45307578defd38a4131b14853316373ec364cbe910dbc74594ed4137e0da35aa4d9bb716f190
+ languageName: node
+ linkType: hard
+
+"@vitest/pretty-format@npm:2.1.9, @vitest/pretty-format@npm:^2.1.9":
+ version: 2.1.9
+ resolution: "@vitest/pretty-format@npm:2.1.9"
+ dependencies:
+ tinyrainbow: "npm:^1.2.0"
+ checksum: 10c0/155f9ede5090eabed2a73361094bb35ed4ec6769ae3546d2a2af139166569aec41bb80e031c25ff2da22b71dd4ed51e5468e66a05e6aeda5f14b32e30bc18f00
+ languageName: node
+ linkType: hard
+
+"@vitest/runner@npm:2.1.9":
+ version: 2.1.9
+ resolution: "@vitest/runner@npm:2.1.9"
+ dependencies:
+ "@vitest/utils": "npm:2.1.9"
+ pathe: "npm:^1.1.2"
+ checksum: 10c0/e81f176badb12a815cbbd9bd97e19f7437a0b64e8934d680024b0f768d8670d59cad698ef0e3dada5241b6731d77a7bb3cd2c7cb29f751fd4dd35eb11c42963a
+ languageName: node
+ linkType: hard
+
+"@vitest/snapshot@npm:2.1.9":
+ version: 2.1.9
+ resolution: "@vitest/snapshot@npm:2.1.9"
+ dependencies:
+ "@vitest/pretty-format": "npm:2.1.9"
+ magic-string: "npm:^0.30.12"
+ pathe: "npm:^1.1.2"
+ checksum: 10c0/394974b3a1fe96186a3c87f933b2f7f1f7b7cc42f9c781d80271dbb4c987809bf035fecd7398b8a3a2d54169e3ecb49655e38a0131d0e7fea5ce88960613b526
+ languageName: node
+ linkType: hard
+
+"@vitest/spy@npm:2.1.9":
+ version: 2.1.9
+ resolution: "@vitest/spy@npm:2.1.9"
+ dependencies:
+ tinyspy: "npm:^3.0.2"
+ checksum: 10c0/12a59b5095e20188b819a1d797e0a513d991b4e6a57db679927c43b362a3eff52d823b34e855a6dd9e73c9fa138dcc5ef52210841a93db5cbf047957a60ca83c
+ languageName: node
+ linkType: hard
+
+"@vitest/utils@npm:2.1.9":
+ version: 2.1.9
+ resolution: "@vitest/utils@npm:2.1.9"
+ dependencies:
+ "@vitest/pretty-format": "npm:2.1.9"
+ loupe: "npm:^3.1.2"
+ tinyrainbow: "npm:^1.2.0"
+ checksum: 10c0/81a346cd72b47941f55411f5df4cc230e5f740d1e97e0d3f771b27f007266fc1f28d0438582f6409ea571bc0030ed37f684c64c58d1947d6298d770c21026fdf
+ languageName: node
+ linkType: hard
+
"@volar/language-core@npm:2.4.12, @volar/language-core@npm:~2.4.11":
version: 2.4.12
resolution: "@volar/language-core@npm:2.4.12"
@@ -857,6 +1549,16 @@ __metadata:
languageName: node
linkType: hard
+"@vue/test-utils@npm:^2.4.1, @vue/test-utils@npm:^2.4.6":
+ version: 2.4.6
+ resolution: "@vue/test-utils@npm:2.4.6"
+ dependencies:
+ js-beautify: "npm:^1.14.9"
+ vue-component-type-helpers: "npm:^2.0.0"
+ checksum: 10c0/37fa46cb6b98f90affb2faf5aa41422617bbd23ff35bc714d08035334e593ae31d18757d5ae688f778dd8b4c28de431601c0b9b7ca17fc1b55f1401a5577375e
+ languageName: node
+ linkType: hard
+
"@vuetify/loader-shared@npm:^2.1.0":
version: 2.1.0
resolution: "@vuetify/loader-shared@npm:2.1.0"
@@ -876,6 +1578,15 @@ __metadata:
languageName: node
linkType: hard
+"acorn-jsx@npm:^5.3.2":
+ version: 5.3.2
+ resolution: "acorn-jsx@npm:5.3.2"
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1
+ languageName: node
+ linkType: hard
+
"acorn@npm:^8.14.0, acorn@npm:^8.14.1":
version: 8.14.1
resolution: "acorn@npm:8.14.1"
@@ -885,6 +1596,15 @@ __metadata:
languageName: node
linkType: hard
+"acorn@npm:^8.9.0":
+ version: 8.15.0
+ resolution: "acorn@npm:8.15.0"
+ bin:
+ acorn: bin/acorn
+ checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec
+ languageName: node
+ linkType: hard
+
"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1":
version: 7.1.1
resolution: "agent-base@npm:7.1.1"
@@ -911,6 +1631,18 @@ __metadata:
languageName: node
linkType: hard
+"ajv@npm:^6.12.4":
+ version: 6.12.6
+ resolution: "ajv@npm:6.12.6"
+ dependencies:
+ fast-deep-equal: "npm:^3.1.1"
+ fast-json-stable-stringify: "npm:^2.0.0"
+ json-schema-traverse: "npm:^0.4.1"
+ uri-js: "npm:^4.2.2"
+ checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71
+ languageName: node
+ linkType: hard
+
"alhp-web@workspace:.":
version: 0.0.0-use.local
resolution: "alhp-web@workspace:."
@@ -918,9 +1650,16 @@ __metadata:
"@babel/types": "npm:^7.27.0"
"@fontsource/roboto": "npm:^5.2.5"
"@mdi/font": "npm:7.4.47"
+ "@testing-library/vue": "npm:^8.1.0"
"@types/node": "npm:^22.14.1"
+ "@typescript-eslint/eslint-plugin": "npm:^8.18.0"
+ "@typescript-eslint/parser": "npm:^8.18.0"
"@vitejs/plugin-vue": "npm:^5.2.3"
+ "@vue/test-utils": "npm:^2.4.6"
+ eslint: "npm:^8.57.0"
+ eslint-plugin-vue: "npm:^9.31.0"
fork-awesome: "npm:^1.2.0"
+ happy-dom: "npm:^15.11.7"
openapi-fetch: "npm:^0.13.5"
openapi-typescript: "npm:^7.6.1"
pinia: "npm:^3.0.2"
@@ -932,6 +1671,7 @@ __metadata:
unplugin-vue-components: "npm:^28.5.0"
vite: "npm:^6.2.6"
vite-plugin-vuetify: "npm:^2.1.1"
+ vitest: "npm:^2.1.8"
vue: "npm:^3.5.13"
vue-tsc: "npm:^2.2.8"
vuetify: "npm:^3.8.1"
@@ -966,7 +1706,7 @@ __metadata:
languageName: node
linkType: hard
-"ansi-styles@npm:^4.0.0":
+"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0":
version: 4.3.0
resolution: "ansi-styles@npm:4.3.0"
dependencies:
@@ -975,6 +1715,13 @@ __metadata:
languageName: node
linkType: hard
+"ansi-styles@npm:^5.0.0":
+ version: 5.2.0
+ resolution: "ansi-styles@npm:5.2.0"
+ checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df
+ languageName: node
+ linkType: hard
+
"ansi-styles@npm:^6.1.0":
version: 6.2.1
resolution: "ansi-styles@npm:6.2.1"
@@ -999,6 +1746,55 @@ __metadata:
languageName: node
linkType: hard
+"aria-query@npm:5.1.3":
+ version: 5.1.3
+ resolution: "aria-query@npm:5.1.3"
+ dependencies:
+ deep-equal: "npm:^2.0.5"
+ checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf
+ languageName: node
+ linkType: hard
+
+"array-buffer-byte-length@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "array-buffer-byte-length@npm:1.0.2"
+ dependencies:
+ call-bound: "npm:^1.0.3"
+ is-array-buffer: "npm:^3.0.5"
+ checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d
+ languageName: node
+ linkType: hard
+
+"assertion-error@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "assertion-error@npm:2.0.1"
+ checksum: 10c0/bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8
+ languageName: node
+ linkType: hard
+
+"async-function@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "async-function@npm:1.0.0"
+ checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73
+ languageName: node
+ linkType: hard
+
+"async-generator-function@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "async-generator-function@npm:1.0.0"
+ checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186
+ languageName: node
+ linkType: hard
+
+"available-typed-arrays@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "available-typed-arrays@npm:1.0.7"
+ dependencies:
+ possible-typed-array-names: "npm:^1.0.0"
+ checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2
+ languageName: node
+ linkType: hard
+
"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
@@ -1020,6 +1816,23 @@ __metadata:
languageName: node
linkType: hard
+"boolbase@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "boolbase@npm:1.0.0"
+ checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf
+ languageName: node
+ linkType: hard
+
+"brace-expansion@npm:^1.1.7":
+ version: 1.1.12
+ resolution: "brace-expansion@npm:1.1.12"
+ dependencies:
+ balanced-match: "npm:^1.0.0"
+ concat-map: "npm:0.0.1"
+ checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73
+ languageName: node
+ linkType: hard
+
"brace-expansion@npm:^2.0.1":
version: 2.0.1
resolution: "brace-expansion@npm:2.0.1"
@@ -1047,6 +1860,13 @@ __metadata:
languageName: node
linkType: hard
+"cac@npm:^6.7.14":
+ version: 6.7.14
+ resolution: "cac@npm:6.7.14"
+ checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10
+ languageName: node
+ linkType: hard
+
"cacache@npm:^18.0.0":
version: 18.0.3
resolution: "cacache@npm:18.0.3"
@@ -1067,6 +1887,68 @@ __metadata:
languageName: node
linkType: hard
+"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "call-bind-apply-helpers@npm:1.0.2"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ function-bind: "npm:^1.1.2"
+ checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938
+ languageName: node
+ linkType: hard
+
+"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8":
+ version: 1.0.8
+ resolution: "call-bind@npm:1.0.8"
+ dependencies:
+ call-bind-apply-helpers: "npm:^1.0.0"
+ es-define-property: "npm:^1.0.0"
+ get-intrinsic: "npm:^1.2.4"
+ set-function-length: "npm:^1.2.2"
+ checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4
+ languageName: node
+ linkType: hard
+
+"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "call-bound@npm:1.0.4"
+ dependencies:
+ call-bind-apply-helpers: "npm:^1.0.2"
+ get-intrinsic: "npm:^1.3.0"
+ checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644
+ languageName: node
+ linkType: hard
+
+"callsites@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "callsites@npm:3.1.0"
+ checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301
+ languageName: node
+ linkType: hard
+
+"chai@npm:^5.1.2":
+ version: 5.3.3
+ resolution: "chai@npm:5.3.3"
+ dependencies:
+ assertion-error: "npm:^2.0.1"
+ check-error: "npm:^2.1.1"
+ deep-eql: "npm:^5.0.1"
+ loupe: "npm:^3.1.0"
+ pathval: "npm:^2.0.0"
+ checksum: 10c0/b360fd4d38861622e5010c2f709736988b05c7f31042305fa3f4e9911f6adb80ccfb4e302068bf8ed10e835c2e2520cba0f5edc13d878b886987e5aa62483f53
+ languageName: node
+ linkType: hard
+
+"chalk@npm:^4.0.0, chalk@npm:^4.1.0":
+ version: 4.1.2
+ resolution: "chalk@npm:4.1.2"
+ dependencies:
+ ansi-styles: "npm:^4.1.0"
+ supports-color: "npm:^7.1.0"
+ checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880
+ languageName: node
+ linkType: hard
+
"change-case@npm:^5.4.4":
version: 5.4.4
resolution: "change-case@npm:5.4.4"
@@ -1074,6 +1956,13 @@ __metadata:
languageName: node
linkType: hard
+"check-error@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "check-error@npm:2.1.1"
+ checksum: 10c0/979f13eccab306cf1785fa10941a590b4e7ea9916ea2a4f8c87f0316fc3eab07eabefb6e587424ef0f88cbcd3805791f172ea739863ca3d7ce2afc54641c7f0e
+ languageName: node
+ linkType: hard
+
"chokidar@npm:^3.6.0":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
@@ -1139,6 +2028,20 @@ __metadata:
languageName: node
linkType: hard
+"commander@npm:^10.0.0":
+ version: 10.0.1
+ resolution: "commander@npm:10.0.1"
+ checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3
+ languageName: node
+ linkType: hard
+
+"concat-map@npm:0.0.1":
+ version: 0.0.1
+ resolution: "concat-map@npm:0.0.1"
+ checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f
+ languageName: node
+ linkType: hard
+
"confbox@npm:^0.1.8":
version: 0.1.8
resolution: "confbox@npm:0.1.8"
@@ -1153,6 +2056,16 @@ __metadata:
languageName: node
linkType: hard
+"config-chain@npm:^1.1.13":
+ version: 1.1.13
+ resolution: "config-chain@npm:1.1.13"
+ dependencies:
+ ini: "npm:^1.3.4"
+ proto-list: "npm:~1.2.1"
+ checksum: 10c0/39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e
+ languageName: node
+ linkType: hard
+
"copy-anything@npm:^3.0.2":
version: 3.0.5
resolution: "copy-anything@npm:3.0.5"
@@ -1173,6 +2086,26 @@ __metadata:
languageName: node
linkType: hard
+"cross-spawn@npm:^7.0.2":
+ version: 7.0.6
+ resolution: "cross-spawn@npm:7.0.6"
+ dependencies:
+ path-key: "npm:^3.1.0"
+ shebang-command: "npm:^2.0.0"
+ which: "npm:^2.0.1"
+ checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1
+ languageName: node
+ linkType: hard
+
+"cssesc@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "cssesc@npm:3.0.0"
+ bin:
+ cssesc: bin/cssesc
+ checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7
+ languageName: node
+ linkType: hard
+
"csstype@npm:^3.1.3":
version: 3.1.3
resolution: "csstype@npm:3.1.3"
@@ -1199,6 +2132,18 @@ __metadata:
languageName: node
linkType: hard
+"debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.7":
+ version: 4.4.3
+ resolution: "debug@npm:4.4.3"
+ dependencies:
+ ms: "npm:^2.1.3"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6
+ languageName: node
+ linkType: hard
+
"debug@npm:^4.3.3, debug@npm:^4.3.4":
version: 4.3.4
resolution: "debug@npm:4.3.4"
@@ -1223,6 +2168,68 @@ __metadata:
languageName: node
linkType: hard
+"deep-eql@npm:^5.0.1":
+ version: 5.0.2
+ resolution: "deep-eql@npm:5.0.2"
+ checksum: 10c0/7102cf3b7bb719c6b9c0db2e19bf0aa9318d141581befe8c7ce8ccd39af9eaa4346e5e05adef7f9bd7015da0f13a3a25dcfe306ef79dc8668aedbecb658dd247
+ languageName: node
+ linkType: hard
+
+"deep-equal@npm:^2.0.5":
+ version: 2.2.3
+ resolution: "deep-equal@npm:2.2.3"
+ dependencies:
+ array-buffer-byte-length: "npm:^1.0.0"
+ call-bind: "npm:^1.0.5"
+ es-get-iterator: "npm:^1.1.3"
+ get-intrinsic: "npm:^1.2.2"
+ is-arguments: "npm:^1.1.1"
+ is-array-buffer: "npm:^3.0.2"
+ is-date-object: "npm:^1.0.5"
+ is-regex: "npm:^1.1.4"
+ is-shared-array-buffer: "npm:^1.0.2"
+ isarray: "npm:^2.0.5"
+ object-is: "npm:^1.1.5"
+ object-keys: "npm:^1.1.1"
+ object.assign: "npm:^4.1.4"
+ regexp.prototype.flags: "npm:^1.5.1"
+ side-channel: "npm:^1.0.4"
+ which-boxed-primitive: "npm:^1.0.2"
+ which-collection: "npm:^1.0.1"
+ which-typed-array: "npm:^1.1.13"
+ checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f
+ languageName: node
+ linkType: hard
+
+"deep-is@npm:^0.1.3":
+ version: 0.1.4
+ resolution: "deep-is@npm:0.1.4"
+ checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c
+ languageName: node
+ linkType: hard
+
+"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4":
+ version: 1.1.4
+ resolution: "define-data-property@npm:1.1.4"
+ dependencies:
+ es-define-property: "npm:^1.0.0"
+ es-errors: "npm:^1.3.0"
+ gopd: "npm:^1.0.1"
+ checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37
+ languageName: node
+ linkType: hard
+
+"define-properties@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "define-properties@npm:1.2.1"
+ dependencies:
+ define-data-property: "npm:^1.0.1"
+ has-property-descriptors: "npm:^1.0.0"
+ object-keys: "npm:^1.1.1"
+ checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3
+ languageName: node
+ linkType: hard
+
"detect-libc@npm:^1.0.3":
version: 1.0.3
resolution: "detect-libc@npm:1.0.3"
@@ -1232,6 +2239,33 @@ __metadata:
languageName: node
linkType: hard
+"doctrine@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "doctrine@npm:3.0.0"
+ dependencies:
+ esutils: "npm:^2.0.2"
+ checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520
+ languageName: node
+ linkType: hard
+
+"dom-accessibility-api@npm:^0.5.9":
+ version: 0.5.16
+ resolution: "dom-accessibility-api@npm:0.5.16"
+ checksum: 10c0/b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053
+ languageName: node
+ linkType: hard
+
+"dunder-proto@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "dunder-proto@npm:1.0.1"
+ dependencies:
+ call-bind-apply-helpers: "npm:^1.0.1"
+ es-errors: "npm:^1.3.0"
+ gopd: "npm:^1.2.0"
+ checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031
+ languageName: node
+ linkType: hard
+
"eastasianwidth@npm:^0.2.0":
version: 0.2.0
resolution: "eastasianwidth@npm:0.2.0"
@@ -1239,6 +2273,20 @@ __metadata:
languageName: node
linkType: hard
+"editorconfig@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "editorconfig@npm:1.0.4"
+ dependencies:
+ "@one-ini/wasm": "npm:0.1.1"
+ commander: "npm:^10.0.0"
+ minimatch: "npm:9.0.1"
+ semver: "npm:^7.5.3"
+ bin:
+ editorconfig: bin/editorconfig
+ checksum: 10c0/ed6985959d7b34a56e1c09bef118758c81c969489b768d152c93689fce8403b0452462e934f665febaba3478eebc0fd41c0a36100783eaadf6d926c4abc87a3d
+ languageName: node
+ linkType: hard
+
"emoji-regex@npm:^8.0.0":
version: 8.0.0
resolution: "emoji-regex@npm:8.0.0"
@@ -1283,6 +2331,133 @@ __metadata:
languageName: node
linkType: hard
+"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "es-define-property@npm:1.0.1"
+ checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c
+ languageName: node
+ linkType: hard
+
+"es-errors@npm:^1.3.0":
+ version: 1.3.0
+ resolution: "es-errors@npm:1.3.0"
+ checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85
+ languageName: node
+ linkType: hard
+
+"es-get-iterator@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "es-get-iterator@npm:1.1.3"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ get-intrinsic: "npm:^1.1.3"
+ has-symbols: "npm:^1.0.3"
+ is-arguments: "npm:^1.1.1"
+ is-map: "npm:^2.0.2"
+ is-set: "npm:^2.0.2"
+ is-string: "npm:^1.0.7"
+ isarray: "npm:^2.0.5"
+ stop-iteration-iterator: "npm:^1.0.0"
+ checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0
+ languageName: node
+ linkType: hard
+
+"es-module-lexer@npm:^1.5.4":
+ version: 1.7.0
+ resolution: "es-module-lexer@npm:1.7.0"
+ checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b
+ languageName: node
+ linkType: hard
+
+"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "es-object-atoms@npm:1.1.1"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c
+ languageName: node
+ linkType: hard
+
+"esbuild@npm:^0.21.3":
+ version: 0.21.5
+ resolution: "esbuild@npm:0.21.5"
+ dependencies:
+ "@esbuild/aix-ppc64": "npm:0.21.5"
+ "@esbuild/android-arm": "npm:0.21.5"
+ "@esbuild/android-arm64": "npm:0.21.5"
+ "@esbuild/android-x64": "npm:0.21.5"
+ "@esbuild/darwin-arm64": "npm:0.21.5"
+ "@esbuild/darwin-x64": "npm:0.21.5"
+ "@esbuild/freebsd-arm64": "npm:0.21.5"
+ "@esbuild/freebsd-x64": "npm:0.21.5"
+ "@esbuild/linux-arm": "npm:0.21.5"
+ "@esbuild/linux-arm64": "npm:0.21.5"
+ "@esbuild/linux-ia32": "npm:0.21.5"
+ "@esbuild/linux-loong64": "npm:0.21.5"
+ "@esbuild/linux-mips64el": "npm:0.21.5"
+ "@esbuild/linux-ppc64": "npm:0.21.5"
+ "@esbuild/linux-riscv64": "npm:0.21.5"
+ "@esbuild/linux-s390x": "npm:0.21.5"
+ "@esbuild/linux-x64": "npm:0.21.5"
+ "@esbuild/netbsd-x64": "npm:0.21.5"
+ "@esbuild/openbsd-x64": "npm:0.21.5"
+ "@esbuild/sunos-x64": "npm:0.21.5"
+ "@esbuild/win32-arm64": "npm:0.21.5"
+ "@esbuild/win32-ia32": "npm:0.21.5"
+ "@esbuild/win32-x64": "npm:0.21.5"
+ dependenciesMeta:
+ "@esbuild/aix-ppc64":
+ optional: true
+ "@esbuild/android-arm":
+ optional: true
+ "@esbuild/android-arm64":
+ optional: true
+ "@esbuild/android-x64":
+ optional: true
+ "@esbuild/darwin-arm64":
+ optional: true
+ "@esbuild/darwin-x64":
+ optional: true
+ "@esbuild/freebsd-arm64":
+ optional: true
+ "@esbuild/freebsd-x64":
+ optional: true
+ "@esbuild/linux-arm":
+ optional: true
+ "@esbuild/linux-arm64":
+ optional: true
+ "@esbuild/linux-ia32":
+ optional: true
+ "@esbuild/linux-loong64":
+ optional: true
+ "@esbuild/linux-mips64el":
+ optional: true
+ "@esbuild/linux-ppc64":
+ optional: true
+ "@esbuild/linux-riscv64":
+ optional: true
+ "@esbuild/linux-s390x":
+ optional: true
+ "@esbuild/linux-x64":
+ optional: true
+ "@esbuild/netbsd-x64":
+ optional: true
+ "@esbuild/openbsd-x64":
+ optional: true
+ "@esbuild/sunos-x64":
+ optional: true
+ "@esbuild/win32-arm64":
+ optional: true
+ "@esbuild/win32-ia32":
+ optional: true
+ "@esbuild/win32-x64":
+ optional: true
+ bin:
+ esbuild: bin/esbuild
+ checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de
+ languageName: node
+ linkType: hard
+
"esbuild@npm:^0.25.0":
version: 0.25.1
resolution: "esbuild@npm:0.25.1"
@@ -1369,6 +2544,139 @@ __metadata:
languageName: node
linkType: hard
+"escape-string-regexp@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "escape-string-regexp@npm:4.0.0"
+ checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9
+ languageName: node
+ linkType: hard
+
+"eslint-plugin-vue@npm:^9.31.0":
+ version: 9.33.0
+ resolution: "eslint-plugin-vue@npm:9.33.0"
+ dependencies:
+ "@eslint-community/eslint-utils": "npm:^4.4.0"
+ globals: "npm:^13.24.0"
+ natural-compare: "npm:^1.4.0"
+ nth-check: "npm:^2.1.1"
+ postcss-selector-parser: "npm:^6.0.15"
+ semver: "npm:^7.6.3"
+ vue-eslint-parser: "npm:^9.4.3"
+ xml-name-validator: "npm:^4.0.0"
+ peerDependencies:
+ eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
+ checksum: 10c0/2f5ee967158fc345ec3f2076835e6a9d706c4bbb7dc4c3806ad8db81133d73128fbd402f71b3adf8ae53e5e4a0a1aba32e44eb757544901a6a62021a1ccad92e
+ languageName: node
+ linkType: hard
+
+"eslint-scope@npm:^7.1.1, eslint-scope@npm:^7.2.2":
+ version: 7.2.2
+ resolution: "eslint-scope@npm:7.2.2"
+ dependencies:
+ esrecurse: "npm:^4.3.0"
+ estraverse: "npm:^5.2.0"
+ checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116
+ languageName: node
+ linkType: hard
+
+"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
+ version: 3.4.3
+ resolution: "eslint-visitor-keys@npm:3.4.3"
+ checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820
+ languageName: node
+ linkType: hard
+
+"eslint-visitor-keys@npm:^4.2.1":
+ version: 4.2.1
+ resolution: "eslint-visitor-keys@npm:4.2.1"
+ checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43
+ languageName: node
+ linkType: hard
+
+"eslint@npm:^8.57.0":
+ version: 8.57.1
+ resolution: "eslint@npm:8.57.1"
+ dependencies:
+ "@eslint-community/eslint-utils": "npm:^4.2.0"
+ "@eslint-community/regexpp": "npm:^4.6.1"
+ "@eslint/eslintrc": "npm:^2.1.4"
+ "@eslint/js": "npm:8.57.1"
+ "@humanwhocodes/config-array": "npm:^0.13.0"
+ "@humanwhocodes/module-importer": "npm:^1.0.1"
+ "@nodelib/fs.walk": "npm:^1.2.8"
+ "@ungap/structured-clone": "npm:^1.2.0"
+ ajv: "npm:^6.12.4"
+ chalk: "npm:^4.0.0"
+ cross-spawn: "npm:^7.0.2"
+ debug: "npm:^4.3.2"
+ doctrine: "npm:^3.0.0"
+ escape-string-regexp: "npm:^4.0.0"
+ eslint-scope: "npm:^7.2.2"
+ eslint-visitor-keys: "npm:^3.4.3"
+ espree: "npm:^9.6.1"
+ esquery: "npm:^1.4.2"
+ esutils: "npm:^2.0.2"
+ fast-deep-equal: "npm:^3.1.3"
+ file-entry-cache: "npm:^6.0.1"
+ find-up: "npm:^5.0.0"
+ glob-parent: "npm:^6.0.2"
+ globals: "npm:^13.19.0"
+ graphemer: "npm:^1.4.0"
+ ignore: "npm:^5.2.0"
+ imurmurhash: "npm:^0.1.4"
+ is-glob: "npm:^4.0.0"
+ is-path-inside: "npm:^3.0.3"
+ js-yaml: "npm:^4.1.0"
+ json-stable-stringify-without-jsonify: "npm:^1.0.1"
+ levn: "npm:^0.4.1"
+ lodash.merge: "npm:^4.6.2"
+ minimatch: "npm:^3.1.2"
+ natural-compare: "npm:^1.4.0"
+ optionator: "npm:^0.9.3"
+ strip-ansi: "npm:^6.0.1"
+ text-table: "npm:^0.2.0"
+ bin:
+ eslint: bin/eslint.js
+ checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1
+ languageName: node
+ linkType: hard
+
+"espree@npm:^9.3.1, espree@npm:^9.6.0, espree@npm:^9.6.1":
+ version: 9.6.1
+ resolution: "espree@npm:9.6.1"
+ dependencies:
+ acorn: "npm:^8.9.0"
+ acorn-jsx: "npm:^5.3.2"
+ eslint-visitor-keys: "npm:^3.4.1"
+ checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460
+ languageName: node
+ linkType: hard
+
+"esquery@npm:^1.4.0, esquery@npm:^1.4.2":
+ version: 1.6.0
+ resolution: "esquery@npm:1.6.0"
+ dependencies:
+ estraverse: "npm:^5.1.0"
+ checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2
+ languageName: node
+ linkType: hard
+
+"esrecurse@npm:^4.3.0":
+ version: 4.3.0
+ resolution: "esrecurse@npm:4.3.0"
+ dependencies:
+ estraverse: "npm:^5.2.0"
+ checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5
+ languageName: node
+ linkType: hard
+
+"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0":
+ version: 5.3.0
+ resolution: "estraverse@npm:5.3.0"
+ checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107
+ languageName: node
+ linkType: hard
+
"estree-walker@npm:^2.0.2":
version: 2.0.2
resolution: "estree-walker@npm:2.0.2"
@@ -1376,6 +2684,29 @@ __metadata:
languageName: node
linkType: hard
+"estree-walker@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "estree-walker@npm:3.0.3"
+ dependencies:
+ "@types/estree": "npm:^1.0.0"
+ checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d
+ languageName: node
+ linkType: hard
+
+"esutils@npm:^2.0.2":
+ version: 2.0.3
+ resolution: "esutils@npm:2.0.3"
+ checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7
+ languageName: node
+ linkType: hard
+
+"expect-type@npm:^1.1.0":
+ version: 1.2.2
+ resolution: "expect-type@npm:1.2.2"
+ checksum: 10c0/6019019566063bbc7a690d9281d920b1a91284a4a093c2d55d71ffade5ac890cf37a51e1da4602546c4b56569d2ad2fc175a2ccee77d1ae06cb3af91ef84f44b
+ languageName: node
+ linkType: hard
+
"exponential-backoff@npm:^3.1.1":
version: 3.1.1
resolution: "exponential-backoff@npm:3.1.1"
@@ -1390,7 +2721,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-deep-equal@npm:^3.1.1":
+"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3"
checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
@@ -1410,6 +2741,20 @@ __metadata:
languageName: node
linkType: hard
+"fast-json-stable-stringify@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "fast-json-stable-stringify@npm:2.1.0"
+ checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b
+ languageName: node
+ linkType: hard
+
+"fast-levenshtein@npm:^2.0.6":
+ version: 2.0.6
+ resolution: "fast-levenshtein@npm:2.0.6"
+ checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4
+ languageName: node
+ linkType: hard
+
"fastq@npm:^1.6.0":
version: 1.16.0
resolution: "fastq@npm:1.16.0"
@@ -1431,6 +2776,27 @@ __metadata:
languageName: node
linkType: hard
+"fdir@npm:^6.5.0":
+ version: 6.5.0
+ resolution: "fdir@npm:6.5.0"
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+ checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f
+ languageName: node
+ linkType: hard
+
+"file-entry-cache@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "file-entry-cache@npm:6.0.1"
+ dependencies:
+ flat-cache: "npm:^3.0.4"
+ checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd
+ languageName: node
+ linkType: hard
+
"fill-range@npm:^7.0.1":
version: 7.0.1
resolution: "fill-range@npm:7.0.1"
@@ -1449,6 +2815,43 @@ __metadata:
languageName: node
linkType: hard
+"find-up@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "find-up@npm:5.0.0"
+ dependencies:
+ locate-path: "npm:^6.0.0"
+ path-exists: "npm:^4.0.0"
+ checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a
+ languageName: node
+ linkType: hard
+
+"flat-cache@npm:^3.0.4":
+ version: 3.2.0
+ resolution: "flat-cache@npm:3.2.0"
+ dependencies:
+ flatted: "npm:^3.2.9"
+ keyv: "npm:^4.5.3"
+ rimraf: "npm:^3.0.2"
+ checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75
+ languageName: node
+ linkType: hard
+
+"flatted@npm:^3.2.9":
+ version: 3.3.3
+ resolution: "flatted@npm:3.3.3"
+ checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538
+ languageName: node
+ linkType: hard
+
+"for-each@npm:^0.3.5":
+ version: 0.3.5
+ resolution: "for-each@npm:0.3.5"
+ dependencies:
+ is-callable: "npm:^1.2.7"
+ checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee
+ languageName: node
+ linkType: hard
+
"foreground-child@npm:^3.1.0":
version: 3.2.1
resolution: "foreground-child@npm:3.2.1"
@@ -1484,6 +2887,13 @@ __metadata:
languageName: node
linkType: hard
+"fs.realpath@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "fs.realpath@npm:1.0.0"
+ checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948
+ languageName: node
+ linkType: hard
+
"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3":
version: 2.3.3
resolution: "fsevents@npm:2.3.3"
@@ -1503,6 +2913,58 @@ __metadata:
languageName: node
linkType: hard
+"function-bind@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "function-bind@npm:1.1.2"
+ checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5
+ languageName: node
+ linkType: hard
+
+"functions-have-names@npm:^1.2.3":
+ version: 1.2.3
+ resolution: "functions-have-names@npm:1.2.3"
+ checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca
+ languageName: node
+ linkType: hard
+
+"generator-function@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "generator-function@npm:2.0.1"
+ checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8
+ languageName: node
+ linkType: hard
+
+"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0":
+ version: 1.3.1
+ resolution: "get-intrinsic@npm:1.3.1"
+ dependencies:
+ async-function: "npm:^1.0.0"
+ async-generator-function: "npm:^1.0.0"
+ call-bind-apply-helpers: "npm:^1.0.2"
+ es-define-property: "npm:^1.0.1"
+ es-errors: "npm:^1.3.0"
+ es-object-atoms: "npm:^1.1.1"
+ function-bind: "npm:^1.1.2"
+ generator-function: "npm:^2.0.0"
+ get-proto: "npm:^1.0.1"
+ gopd: "npm:^1.2.0"
+ has-symbols: "npm:^1.1.0"
+ hasown: "npm:^2.0.2"
+ math-intrinsics: "npm:^1.1.0"
+ checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d
+ languageName: node
+ linkType: hard
+
+"get-proto@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "get-proto@npm:1.0.1"
+ dependencies:
+ dunder-proto: "npm:^1.0.1"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c
+ languageName: node
+ linkType: hard
+
"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2":
version: 5.1.2
resolution: "glob-parent@npm:5.1.2"
@@ -1512,6 +2974,15 @@ __metadata:
languageName: node
linkType: hard
+"glob-parent@npm:^6.0.2":
+ version: 6.0.2
+ resolution: "glob-parent@npm:6.0.2"
+ dependencies:
+ is-glob: "npm:^4.0.3"
+ checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8
+ languageName: node
+ linkType: hard
+
"glob@npm:^10.2.2, glob@npm:^10.3.10":
version: 10.4.2
resolution: "glob@npm:10.4.2"
@@ -1528,6 +2999,52 @@ __metadata:
languageName: node
linkType: hard
+"glob@npm:^10.4.2":
+ version: 10.5.0
+ resolution: "glob@npm:10.5.0"
+ dependencies:
+ foreground-child: "npm:^3.1.0"
+ jackspeak: "npm:^3.1.2"
+ minimatch: "npm:^9.0.4"
+ minipass: "npm:^7.1.2"
+ package-json-from-dist: "npm:^1.0.0"
+ path-scurry: "npm:^1.11.1"
+ bin:
+ glob: dist/esm/bin.mjs
+ checksum: 10c0/100705eddbde6323e7b35e1d1ac28bcb58322095bd8e63a7d0bef1a2cdafe0d0f7922a981b2b48369a4f8c1b077be5c171804534c3509dfe950dde15fbe6d828
+ languageName: node
+ linkType: hard
+
+"glob@npm:^7.1.3":
+ version: 7.2.3
+ resolution: "glob@npm:7.2.3"
+ dependencies:
+ fs.realpath: "npm:^1.0.0"
+ inflight: "npm:^1.0.4"
+ inherits: "npm:2"
+ minimatch: "npm:^3.1.1"
+ once: "npm:^1.3.0"
+ path-is-absolute: "npm:^1.0.0"
+ checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe
+ languageName: node
+ linkType: hard
+
+"globals@npm:^13.19.0, globals@npm:^13.24.0":
+ version: 13.24.0
+ resolution: "globals@npm:13.24.0"
+ dependencies:
+ type-fest: "npm:^0.20.2"
+ checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd
+ languageName: node
+ linkType: hard
+
+"gopd@npm:^1.0.1, gopd@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "gopd@npm:1.2.0"
+ checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead
+ languageName: node
+ linkType: hard
+
"graceful-fs@npm:^4.2.6":
version: 4.2.11
resolution: "graceful-fs@npm:4.2.11"
@@ -1535,6 +3052,72 @@ __metadata:
languageName: node
linkType: hard
+"graphemer@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "graphemer@npm:1.4.0"
+ checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31
+ languageName: node
+ linkType: hard
+
+"happy-dom@npm:^15.11.7":
+ version: 15.11.7
+ resolution: "happy-dom@npm:15.11.7"
+ dependencies:
+ entities: "npm:^4.5.0"
+ webidl-conversions: "npm:^7.0.0"
+ whatwg-mimetype: "npm:^3.0.0"
+ checksum: 10c0/22b08cac20192b08edf2e9c857ceeda8333a3301c4b5965a9550787b00db60d6d107c726390bd45a35305cd12ab086abd656bf957a408be0fcdc9fcd389f1973
+ languageName: node
+ linkType: hard
+
+"has-bigints@npm:^1.0.2":
+ version: 1.1.0
+ resolution: "has-bigints@npm:1.1.0"
+ checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788
+ languageName: node
+ linkType: hard
+
+"has-flag@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "has-flag@npm:4.0.0"
+ checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1
+ languageName: node
+ linkType: hard
+
+"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "has-property-descriptors@npm:1.0.2"
+ dependencies:
+ es-define-property: "npm:^1.0.0"
+ checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236
+ languageName: node
+ linkType: hard
+
+"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "has-symbols@npm:1.1.0"
+ checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e
+ languageName: node
+ linkType: hard
+
+"has-tostringtag@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "has-tostringtag@npm:1.0.2"
+ dependencies:
+ has-symbols: "npm:^1.0.3"
+ checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c
+ languageName: node
+ linkType: hard
+
+"hasown@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "hasown@npm:2.0.2"
+ dependencies:
+ function-bind: "npm:^1.1.2"
+ checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9
+ languageName: node
+ linkType: hard
+
"he@npm:^1.2.0":
version: 1.2.0
resolution: "he@npm:1.2.0"
@@ -1597,6 +3180,20 @@ __metadata:
languageName: node
linkType: hard
+"ignore@npm:^5.2.0":
+ version: 5.3.2
+ resolution: "ignore@npm:5.3.2"
+ checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337
+ languageName: node
+ linkType: hard
+
+"ignore@npm:^7.0.0":
+ version: 7.0.5
+ resolution: "ignore@npm:7.0.5"
+ checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d
+ languageName: node
+ linkType: hard
+
"immutable@npm:^5.0.2":
version: 5.0.3
resolution: "immutable@npm:5.0.3"
@@ -1604,6 +3201,16 @@ __metadata:
languageName: node
linkType: hard
+"import-fresh@npm:^3.2.1":
+ version: 3.3.1
+ resolution: "import-fresh@npm:3.3.1"
+ dependencies:
+ parent-module: "npm:^1.0.0"
+ resolve-from: "npm:^4.0.0"
+ checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec
+ languageName: node
+ linkType: hard
+
"imurmurhash@npm:^0.1.4":
version: 0.1.4
resolution: "imurmurhash@npm:0.1.4"
@@ -1625,6 +3232,41 @@ __metadata:
languageName: node
linkType: hard
+"inflight@npm:^1.0.4":
+ version: 1.0.6
+ resolution: "inflight@npm:1.0.6"
+ dependencies:
+ once: "npm:^1.3.0"
+ wrappy: "npm:1"
+ checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2
+ languageName: node
+ linkType: hard
+
+"inherits@npm:2":
+ version: 2.0.4
+ resolution: "inherits@npm:2.0.4"
+ checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2
+ languageName: node
+ linkType: hard
+
+"ini@npm:^1.3.4":
+ version: 1.3.8
+ resolution: "ini@npm:1.3.8"
+ checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a
+ languageName: node
+ linkType: hard
+
+"internal-slot@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "internal-slot@npm:1.1.0"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ hasown: "npm:^2.0.2"
+ side-channel: "npm:^1.1.0"
+ checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7
+ languageName: node
+ linkType: hard
+
"ip-address@npm:^9.0.5":
version: 9.0.5
resolution: "ip-address@npm:9.0.5"
@@ -1635,6 +3277,36 @@ __metadata:
languageName: node
linkType: hard
+"is-arguments@npm:^1.1.1":
+ version: 1.2.0
+ resolution: "is-arguments@npm:1.2.0"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ has-tostringtag: "npm:^1.0.2"
+ checksum: 10c0/6377344b31e9fcb707c6751ee89b11f132f32338e6a782ec2eac9393b0cbd32235dad93052998cda778ee058754860738341d8114910d50ada5615912bb929fc
+ languageName: node
+ linkType: hard
+
+"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.5":
+ version: 3.0.5
+ resolution: "is-array-buffer@npm:3.0.5"
+ dependencies:
+ call-bind: "npm:^1.0.8"
+ call-bound: "npm:^1.0.3"
+ get-intrinsic: "npm:^1.2.6"
+ checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d
+ languageName: node
+ linkType: hard
+
+"is-bigint@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "is-bigint@npm:1.1.0"
+ dependencies:
+ has-bigints: "npm:^1.0.2"
+ checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4
+ languageName: node
+ linkType: hard
+
"is-binary-path@npm:~2.1.0":
version: 2.1.0
resolution: "is-binary-path@npm:2.1.0"
@@ -1644,6 +3316,33 @@ __metadata:
languageName: node
linkType: hard
+"is-boolean-object@npm:^1.2.1":
+ version: 1.2.2
+ resolution: "is-boolean-object@npm:1.2.2"
+ dependencies:
+ call-bound: "npm:^1.0.3"
+ has-tostringtag: "npm:^1.0.2"
+ checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e
+ languageName: node
+ linkType: hard
+
+"is-callable@npm:^1.2.7":
+ version: 1.2.7
+ resolution: "is-callable@npm:1.2.7"
+ checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f
+ languageName: node
+ linkType: hard
+
+"is-date-object@npm:^1.0.5":
+ version: 1.1.0
+ resolution: "is-date-object@npm:1.1.0"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ has-tostringtag: "npm:^1.0.2"
+ checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f
+ languageName: node
+ linkType: hard
+
"is-extglob@npm:^2.1.1":
version: 2.1.1
resolution: "is-extglob@npm:2.1.1"
@@ -1658,7 +3357,7 @@ __metadata:
languageName: node
linkType: hard
-"is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1":
+"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1":
version: 4.0.3
resolution: "is-glob@npm:4.0.3"
dependencies:
@@ -1674,6 +3373,23 @@ __metadata:
languageName: node
linkType: hard
+"is-map@npm:^2.0.2, is-map@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "is-map@npm:2.0.3"
+ checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc
+ languageName: node
+ linkType: hard
+
+"is-number-object@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "is-number-object@npm:1.1.1"
+ dependencies:
+ call-bound: "npm:^1.0.3"
+ has-tostringtag: "npm:^1.0.2"
+ checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53
+ languageName: node
+ linkType: hard
+
"is-number@npm:^7.0.0":
version: 7.0.0
resolution: "is-number@npm:7.0.0"
@@ -1681,6 +3397,79 @@ __metadata:
languageName: node
linkType: hard
+"is-path-inside@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "is-path-inside@npm:3.0.3"
+ checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05
+ languageName: node
+ linkType: hard
+
+"is-regex@npm:^1.1.4, is-regex@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "is-regex@npm:1.2.1"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ gopd: "npm:^1.2.0"
+ has-tostringtag: "npm:^1.0.2"
+ hasown: "npm:^2.0.2"
+ checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04
+ languageName: node
+ linkType: hard
+
+"is-set@npm:^2.0.2, is-set@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "is-set@npm:2.0.3"
+ checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7
+ languageName: node
+ linkType: hard
+
+"is-shared-array-buffer@npm:^1.0.2":
+ version: 1.0.4
+ resolution: "is-shared-array-buffer@npm:1.0.4"
+ dependencies:
+ call-bound: "npm:^1.0.3"
+ checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db
+ languageName: node
+ linkType: hard
+
+"is-string@npm:^1.0.7, is-string@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "is-string@npm:1.1.1"
+ dependencies:
+ call-bound: "npm:^1.0.3"
+ has-tostringtag: "npm:^1.0.2"
+ checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d
+ languageName: node
+ linkType: hard
+
+"is-symbol@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "is-symbol@npm:1.1.1"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ has-symbols: "npm:^1.1.0"
+ safe-regex-test: "npm:^1.1.0"
+ checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e
+ languageName: node
+ linkType: hard
+
+"is-weakmap@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "is-weakmap@npm:2.0.2"
+ checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299
+ languageName: node
+ linkType: hard
+
+"is-weakset@npm:^2.0.3":
+ version: 2.0.4
+ resolution: "is-weakset@npm:2.0.4"
+ dependencies:
+ call-bound: "npm:^1.0.3"
+ get-intrinsic: "npm:^1.2.6"
+ checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647
+ languageName: node
+ linkType: hard
+
"is-what@npm:^4.1.8":
version: 4.1.16
resolution: "is-what@npm:4.1.16"
@@ -1688,6 +3477,13 @@ __metadata:
languageName: node
linkType: hard
+"isarray@npm:^2.0.5":
+ version: 2.0.5
+ resolution: "isarray@npm:2.0.5"
+ checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd
+ languageName: node
+ linkType: hard
+
"isexe@npm:^2.0.0":
version: 2.0.0
resolution: "isexe@npm:2.0.0"
@@ -1715,6 +3511,30 @@ __metadata:
languageName: node
linkType: hard
+"js-beautify@npm:^1.14.9":
+ version: 1.15.4
+ resolution: "js-beautify@npm:1.15.4"
+ dependencies:
+ config-chain: "npm:^1.1.13"
+ editorconfig: "npm:^1.0.4"
+ glob: "npm:^10.4.2"
+ js-cookie: "npm:^3.0.5"
+ nopt: "npm:^7.2.1"
+ bin:
+ css-beautify: js/bin/css-beautify.js
+ html-beautify: js/bin/html-beautify.js
+ js-beautify: js/bin/js-beautify.js
+ checksum: 10c0/300386f648579feacda98640742e8db50d4504bc896673af8bc784a5864585abf89ad8d1f257f2cfd4e3da951e0e4d1f027aa3c21537edb920bd498a0e27bd86
+ languageName: node
+ linkType: hard
+
+"js-cookie@npm:^3.0.5":
+ version: 3.0.5
+ resolution: "js-cookie@npm:3.0.5"
+ checksum: 10c0/04a0e560407b4489daac3a63e231d35f4e86f78bff9d792011391b49c59f721b513411cd75714c418049c8dc9750b20fcddad1ca5a2ca616c3aca4874cce5b3a
+ languageName: node
+ linkType: hard
+
"js-levenshtein@npm:^1.1.6":
version: 1.1.6
resolution: "js-levenshtein@npm:1.1.6"
@@ -1747,6 +3567,20 @@ __metadata:
languageName: node
linkType: hard
+"json-buffer@npm:3.0.1":
+ version: 3.0.1
+ resolution: "json-buffer@npm:3.0.1"
+ checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7
+ languageName: node
+ linkType: hard
+
+"json-schema-traverse@npm:^0.4.1":
+ version: 0.4.1
+ resolution: "json-schema-traverse@npm:0.4.1"
+ checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce
+ languageName: node
+ linkType: hard
+
"json-schema-traverse@npm:^1.0.0":
version: 1.0.0
resolution: "json-schema-traverse@npm:1.0.0"
@@ -1754,6 +3588,32 @@ __metadata:
languageName: node
linkType: hard
+"json-stable-stringify-without-jsonify@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
+ checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5
+ languageName: node
+ linkType: hard
+
+"keyv@npm:^4.5.3":
+ version: 4.5.4
+ resolution: "keyv@npm:4.5.4"
+ dependencies:
+ json-buffer: "npm:3.0.1"
+ checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e
+ languageName: node
+ linkType: hard
+
+"levn@npm:^0.4.1":
+ version: 0.4.1
+ resolution: "levn@npm:0.4.1"
+ dependencies:
+ prelude-ls: "npm:^1.2.1"
+ type-check: "npm:~0.4.0"
+ checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e
+ languageName: node
+ linkType: hard
+
"local-pkg@npm:^1.1.1":
version: 1.1.1
resolution: "local-pkg@npm:1.1.1"
@@ -1765,6 +3625,36 @@ __metadata:
languageName: node
linkType: hard
+"locate-path@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "locate-path@npm:6.0.0"
+ dependencies:
+ p-locate: "npm:^5.0.0"
+ checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3
+ languageName: node
+ linkType: hard
+
+"lodash.merge@npm:^4.6.2":
+ version: 4.6.2
+ resolution: "lodash.merge@npm:4.6.2"
+ checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506
+ languageName: node
+ linkType: hard
+
+"lodash@npm:^4.17.21":
+ version: 4.17.21
+ resolution: "lodash@npm:4.17.21"
+ checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c
+ languageName: node
+ linkType: hard
+
+"loupe@npm:^3.1.0, loupe@npm:^3.1.2":
+ version: 3.2.1
+ resolution: "loupe@npm:3.2.1"
+ checksum: 10c0/910c872cba291309664c2d094368d31a68907b6f5913e989d301b5c25f30e97d76d77f23ab3bf3b46d0f601ff0b6af8810c10c31b91d2c6b2f132809ca2cc705
+ languageName: node
+ linkType: hard
+
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
version: 10.2.2
resolution: "lru-cache@npm:10.2.2"
@@ -1772,6 +3662,15 @@ __metadata:
languageName: node
linkType: hard
+"lz-string@npm:^1.5.0":
+ version: 1.5.0
+ resolution: "lz-string@npm:1.5.0"
+ bin:
+ lz-string: bin/bin.js
+ checksum: 10c0/36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b
+ languageName: node
+ linkType: hard
+
"magic-string@npm:^0.30.11, magic-string@npm:^0.30.17":
version: 0.30.17
resolution: "magic-string@npm:0.30.17"
@@ -1781,6 +3680,15 @@ __metadata:
languageName: node
linkType: hard
+"magic-string@npm:^0.30.12":
+ version: 0.30.21
+ resolution: "magic-string@npm:0.30.21"
+ dependencies:
+ "@jridgewell/sourcemap-codec": "npm:^1.5.5"
+ checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a
+ languageName: node
+ linkType: hard
+
"make-fetch-happen@npm:^13.0.0":
version: 13.0.1
resolution: "make-fetch-happen@npm:13.0.1"
@@ -1801,6 +3709,13 @@ __metadata:
languageName: node
linkType: hard
+"math-intrinsics@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "math-intrinsics@npm:1.1.0"
+ checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f
+ languageName: node
+ linkType: hard
+
"merge2@npm:^1.3.0":
version: 1.4.1
resolution: "merge2@npm:1.4.1"
@@ -1828,6 +3743,24 @@ __metadata:
languageName: node
linkType: hard
+"minimatch@npm:9.0.1":
+ version: 9.0.1
+ resolution: "minimatch@npm:9.0.1"
+ dependencies:
+ brace-expansion: "npm:^2.0.1"
+ checksum: 10c0/aa043eb8822210b39888a5d0d28df0017b365af5add9bd522f180d2a6962de1cbbf1bdeacdb1b17f410dc3336bc8d76fb1d3e814cdc65d00c2f68e01f0010096
+ languageName: node
+ linkType: hard
+
+"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
+ version: 3.1.2
+ resolution: "minimatch@npm:3.1.2"
+ dependencies:
+ brace-expansion: "npm:^1.1.7"
+ checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311
+ languageName: node
+ linkType: hard
+
"minimatch@npm:^5.0.1":
version: 5.1.6
resolution: "minimatch@npm:5.1.6"
@@ -1988,7 +3921,7 @@ __metadata:
languageName: node
linkType: hard
-"nanoid@npm:^3.3.8":
+"nanoid@npm:^3.3.11, nanoid@npm:^3.3.8":
version: 3.3.11
resolution: "nanoid@npm:3.3.11"
bin:
@@ -1997,6 +3930,13 @@ __metadata:
languageName: node
linkType: hard
+"natural-compare@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "natural-compare@npm:1.4.0"
+ checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447
+ languageName: node
+ linkType: hard
+
"negotiator@npm:^0.6.3":
version: 0.6.3
resolution: "negotiator@npm:0.6.3"
@@ -2033,7 +3973,7 @@ __metadata:
languageName: node
linkType: hard
-"nopt@npm:^7.0.0":
+"nopt@npm:^7.0.0, nopt@npm:^7.2.1":
version: 7.2.1
resolution: "nopt@npm:7.2.1"
dependencies:
@@ -2051,6 +3991,62 @@ __metadata:
languageName: node
linkType: hard
+"nth-check@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "nth-check@npm:2.1.1"
+ dependencies:
+ boolbase: "npm:^1.0.0"
+ checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479
+ languageName: node
+ linkType: hard
+
+"object-inspect@npm:^1.13.3":
+ version: 1.13.4
+ resolution: "object-inspect@npm:1.13.4"
+ checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692
+ languageName: node
+ linkType: hard
+
+"object-is@npm:^1.1.5":
+ version: 1.1.6
+ resolution: "object-is@npm:1.1.6"
+ dependencies:
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0
+ languageName: node
+ linkType: hard
+
+"object-keys@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "object-keys@npm:1.1.1"
+ checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d
+ languageName: node
+ linkType: hard
+
+"object.assign@npm:^4.1.4":
+ version: 4.1.7
+ resolution: "object.assign@npm:4.1.7"
+ dependencies:
+ call-bind: "npm:^1.0.8"
+ call-bound: "npm:^1.0.3"
+ define-properties: "npm:^1.2.1"
+ es-object-atoms: "npm:^1.0.0"
+ has-symbols: "npm:^1.1.0"
+ object-keys: "npm:^1.1.1"
+ checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc
+ languageName: node
+ linkType: hard
+
+"once@npm:^1.3.0":
+ version: 1.4.0
+ resolution: "once@npm:1.4.0"
+ dependencies:
+ wrappy: "npm:1"
+ checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0
+ languageName: node
+ linkType: hard
+
"openapi-fetch@npm:^0.13.5":
version: 0.13.5
resolution: "openapi-fetch@npm:0.13.5"
@@ -2085,6 +4081,38 @@ __metadata:
languageName: node
linkType: hard
+"optionator@npm:^0.9.3":
+ version: 0.9.4
+ resolution: "optionator@npm:0.9.4"
+ dependencies:
+ deep-is: "npm:^0.1.3"
+ fast-levenshtein: "npm:^2.0.6"
+ levn: "npm:^0.4.1"
+ prelude-ls: "npm:^1.2.1"
+ type-check: "npm:^0.4.0"
+ word-wrap: "npm:^1.2.5"
+ checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675
+ languageName: node
+ linkType: hard
+
+"p-limit@npm:^3.0.2":
+ version: 3.1.0
+ resolution: "p-limit@npm:3.1.0"
+ dependencies:
+ yocto-queue: "npm:^0.1.0"
+ checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a
+ languageName: node
+ linkType: hard
+
+"p-locate@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "p-locate@npm:5.0.0"
+ dependencies:
+ p-limit: "npm:^3.0.2"
+ checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a
+ languageName: node
+ linkType: hard
+
"p-map@npm:^4.0.0":
version: 4.0.0
resolution: "p-map@npm:4.0.0"
@@ -2101,6 +4129,15 @@ __metadata:
languageName: node
linkType: hard
+"parent-module@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "parent-module@npm:1.0.1"
+ dependencies:
+ callsites: "npm:^3.0.0"
+ checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556
+ languageName: node
+ linkType: hard
+
"parse-json@npm:^8.1.0":
version: 8.3.0
resolution: "parse-json@npm:8.3.0"
@@ -2119,6 +4156,20 @@ __metadata:
languageName: node
linkType: hard
+"path-exists@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "path-exists@npm:4.0.0"
+ checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b
+ languageName: node
+ linkType: hard
+
+"path-is-absolute@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "path-is-absolute@npm:1.0.1"
+ checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078
+ languageName: node
+ linkType: hard
+
"path-key@npm:^3.1.0":
version: 3.1.1
resolution: "path-key@npm:3.1.1"
@@ -2136,6 +4187,13 @@ __metadata:
languageName: node
linkType: hard
+"pathe@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "pathe@npm:1.1.2"
+ checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897
+ languageName: node
+ linkType: hard
+
"pathe@npm:^2.0.1, pathe@npm:^2.0.2, pathe@npm:^2.0.3":
version: 2.0.3
resolution: "pathe@npm:2.0.3"
@@ -2143,6 +4201,13 @@ __metadata:
languageName: node
linkType: hard
+"pathval@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "pathval@npm:2.0.1"
+ checksum: 10c0/460f4709479fbf2c45903a65655fc8f0a5f6d808f989173aeef5fdea4ff4f303dc13f7870303999add60ec49d4c14733895c0a869392e9866f1091fa64fd7581
+ languageName: node
+ linkType: hard
+
"perfect-debounce@npm:^1.0.0":
version: 1.0.0
resolution: "perfect-debounce@npm:1.0.0"
@@ -2171,6 +4236,13 @@ __metadata:
languageName: node
linkType: hard
+"picomatch@npm:^4.0.3":
+ version: 4.0.3
+ resolution: "picomatch@npm:4.0.3"
+ checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2
+ languageName: node
+ linkType: hard
+
"pinia@npm:^3.0.2":
version: 3.0.2
resolution: "pinia@npm:3.0.2"
@@ -2215,6 +4287,34 @@ __metadata:
languageName: node
linkType: hard
+"possible-typed-array-names@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "possible-typed-array-names@npm:1.1.0"
+ checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196
+ languageName: node
+ linkType: hard
+
+"postcss-selector-parser@npm:^6.0.15":
+ version: 6.1.2
+ resolution: "postcss-selector-parser@npm:6.1.2"
+ dependencies:
+ cssesc: "npm:^3.0.0"
+ util-deprecate: "npm:^1.0.2"
+ checksum: 10c0/523196a6bd8cf660bdf537ad95abd79e546d54180f9afb165a4ab3e651ac705d0f8b8ce6b3164fb9e3279ce482c5f751a69eb2d3a1e8eb0fd5e82294fb3ef13e
+ languageName: node
+ linkType: hard
+
+"postcss@npm:^8.4.43":
+ version: 8.5.6
+ resolution: "postcss@npm:8.5.6"
+ dependencies:
+ nanoid: "npm:^3.3.11"
+ picocolors: "npm:^1.1.1"
+ source-map-js: "npm:^1.2.1"
+ checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024
+ languageName: node
+ linkType: hard
+
"postcss@npm:^8.4.48, postcss@npm:^8.5.3":
version: 8.5.3
resolution: "postcss@npm:8.5.3"
@@ -2226,6 +4326,13 @@ __metadata:
languageName: node
linkType: hard
+"prelude-ls@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "prelude-ls@npm:1.2.1"
+ checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd
+ languageName: node
+ linkType: hard
+
"prettier@npm:^3.5.3":
version: 3.5.3
resolution: "prettier@npm:3.5.3"
@@ -2235,6 +4342,17 @@ __metadata:
languageName: node
linkType: hard
+"pretty-format@npm:^27.0.2":
+ version: 27.5.1
+ resolution: "pretty-format@npm:27.5.1"
+ dependencies:
+ ansi-regex: "npm:^5.0.1"
+ ansi-styles: "npm:^5.0.0"
+ react-is: "npm:^17.0.1"
+ checksum: 10c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed
+ languageName: node
+ linkType: hard
+
"proc-log@npm:^3.0.0":
version: 3.0.0
resolution: "proc-log@npm:3.0.0"
@@ -2259,6 +4377,20 @@ __metadata:
languageName: node
linkType: hard
+"proto-list@npm:~1.2.1":
+ version: 1.2.4
+ resolution: "proto-list@npm:1.2.4"
+ checksum: 10c0/b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12
+ languageName: node
+ linkType: hard
+
+"punycode@npm:^2.1.0":
+ version: 2.3.1
+ resolution: "punycode@npm:2.3.1"
+ checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9
+ languageName: node
+ linkType: hard
+
"quansync@npm:^0.2.8":
version: 0.2.10
resolution: "quansync@npm:0.2.10"
@@ -2273,6 +4405,13 @@ __metadata:
languageName: node
linkType: hard
+"react-is@npm:^17.0.1":
+ version: 17.0.2
+ resolution: "react-is@npm:17.0.2"
+ checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053
+ languageName: node
+ linkType: hard
+
"readdirp@npm:^4.0.1":
version: 4.1.2
resolution: "readdirp@npm:4.1.2"
@@ -2289,6 +4428,20 @@ __metadata:
languageName: node
linkType: hard
+"regexp.prototype.flags@npm:^1.5.1":
+ version: 1.5.4
+ resolution: "regexp.prototype.flags@npm:1.5.4"
+ dependencies:
+ call-bind: "npm:^1.0.8"
+ define-properties: "npm:^1.2.1"
+ es-errors: "npm:^1.3.0"
+ get-proto: "npm:^1.0.1"
+ gopd: "npm:^1.2.0"
+ set-function-name: "npm:^2.0.2"
+ checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77
+ languageName: node
+ linkType: hard
+
"require-from-string@npm:^2.0.2":
version: 2.0.2
resolution: "require-from-string@npm:2.0.2"
@@ -2296,6 +4449,13 @@ __metadata:
languageName: node
linkType: hard
+"resolve-from@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "resolve-from@npm:4.0.0"
+ checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190
+ languageName: node
+ linkType: hard
+
"retry@npm:^0.12.0":
version: 0.12.0
resolution: "retry@npm:0.12.0"
@@ -2317,6 +4477,17 @@ __metadata:
languageName: node
linkType: hard
+"rimraf@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "rimraf@npm:3.0.2"
+ dependencies:
+ glob: "npm:^7.1.3"
+ bin:
+ rimraf: bin.js
+ checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8
+ languageName: node
+ linkType: hard
+
"roboto-fontface@npm:^0.10.0":
version: 0.10.0
resolution: "roboto-fontface@npm:0.10.0"
@@ -2324,6 +4495,87 @@ __metadata:
languageName: node
linkType: hard
+"rollup@npm:^4.20.0":
+ version: 4.53.3
+ resolution: "rollup@npm:4.53.3"
+ dependencies:
+ "@rollup/rollup-android-arm-eabi": "npm:4.53.3"
+ "@rollup/rollup-android-arm64": "npm:4.53.3"
+ "@rollup/rollup-darwin-arm64": "npm:4.53.3"
+ "@rollup/rollup-darwin-x64": "npm:4.53.3"
+ "@rollup/rollup-freebsd-arm64": "npm:4.53.3"
+ "@rollup/rollup-freebsd-x64": "npm:4.53.3"
+ "@rollup/rollup-linux-arm-gnueabihf": "npm:4.53.3"
+ "@rollup/rollup-linux-arm-musleabihf": "npm:4.53.3"
+ "@rollup/rollup-linux-arm64-gnu": "npm:4.53.3"
+ "@rollup/rollup-linux-arm64-musl": "npm:4.53.3"
+ "@rollup/rollup-linux-loong64-gnu": "npm:4.53.3"
+ "@rollup/rollup-linux-ppc64-gnu": "npm:4.53.3"
+ "@rollup/rollup-linux-riscv64-gnu": "npm:4.53.3"
+ "@rollup/rollup-linux-riscv64-musl": "npm:4.53.3"
+ "@rollup/rollup-linux-s390x-gnu": "npm:4.53.3"
+ "@rollup/rollup-linux-x64-gnu": "npm:4.53.3"
+ "@rollup/rollup-linux-x64-musl": "npm:4.53.3"
+ "@rollup/rollup-openharmony-arm64": "npm:4.53.3"
+ "@rollup/rollup-win32-arm64-msvc": "npm:4.53.3"
+ "@rollup/rollup-win32-ia32-msvc": "npm:4.53.3"
+ "@rollup/rollup-win32-x64-gnu": "npm:4.53.3"
+ "@rollup/rollup-win32-x64-msvc": "npm:4.53.3"
+ "@types/estree": "npm:1.0.8"
+ fsevents: "npm:~2.3.2"
+ dependenciesMeta:
+ "@rollup/rollup-android-arm-eabi":
+ optional: true
+ "@rollup/rollup-android-arm64":
+ optional: true
+ "@rollup/rollup-darwin-arm64":
+ optional: true
+ "@rollup/rollup-darwin-x64":
+ optional: true
+ "@rollup/rollup-freebsd-arm64":
+ optional: true
+ "@rollup/rollup-freebsd-x64":
+ optional: true
+ "@rollup/rollup-linux-arm-gnueabihf":
+ optional: true
+ "@rollup/rollup-linux-arm-musleabihf":
+ optional: true
+ "@rollup/rollup-linux-arm64-gnu":
+ optional: true
+ "@rollup/rollup-linux-arm64-musl":
+ optional: true
+ "@rollup/rollup-linux-loong64-gnu":
+ optional: true
+ "@rollup/rollup-linux-ppc64-gnu":
+ optional: true
+ "@rollup/rollup-linux-riscv64-gnu":
+ optional: true
+ "@rollup/rollup-linux-riscv64-musl":
+ optional: true
+ "@rollup/rollup-linux-s390x-gnu":
+ optional: true
+ "@rollup/rollup-linux-x64-gnu":
+ optional: true
+ "@rollup/rollup-linux-x64-musl":
+ optional: true
+ "@rollup/rollup-openharmony-arm64":
+ optional: true
+ "@rollup/rollup-win32-arm64-msvc":
+ optional: true
+ "@rollup/rollup-win32-ia32-msvc":
+ optional: true
+ "@rollup/rollup-win32-x64-gnu":
+ optional: true
+ "@rollup/rollup-win32-x64-msvc":
+ optional: true
+ fsevents:
+ optional: true
+ bin:
+ rollup: dist/bin/rollup
+ checksum: 10c0/a21305aac72013083bd0dec92162b0f7f24cacf57c876ca601ec76e892895952c9ea592c1c07f23b8c125f7979c2b17f7fb565e386d03ee4c1f0952ac4ab0d75
+ languageName: node
+ linkType: hard
+
"rollup@npm:^4.30.1":
version: 4.36.0
resolution: "rollup@npm:4.36.0"
@@ -2405,6 +4657,17 @@ __metadata:
languageName: node
linkType: hard
+"safe-regex-test@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "safe-regex-test@npm:1.1.0"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ es-errors: "npm:^1.3.0"
+ is-regex: "npm:^1.2.1"
+ checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665
+ languageName: node
+ linkType: hard
+
"safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
@@ -2438,6 +4701,41 @@ __metadata:
languageName: node
linkType: hard
+"semver@npm:^7.3.6, semver@npm:^7.5.3, semver@npm:^7.6.0, semver@npm:^7.6.3":
+ version: 7.7.3
+ resolution: "semver@npm:7.7.3"
+ bin:
+ semver: bin/semver.js
+ checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e
+ languageName: node
+ linkType: hard
+
+"set-function-length@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "set-function-length@npm:1.2.2"
+ dependencies:
+ define-data-property: "npm:^1.1.4"
+ es-errors: "npm:^1.3.0"
+ function-bind: "npm:^1.1.2"
+ get-intrinsic: "npm:^1.2.4"
+ gopd: "npm:^1.0.1"
+ has-property-descriptors: "npm:^1.0.2"
+ checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c
+ languageName: node
+ linkType: hard
+
+"set-function-name@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "set-function-name@npm:2.0.2"
+ dependencies:
+ define-data-property: "npm:^1.1.4"
+ es-errors: "npm:^1.3.0"
+ functions-have-names: "npm:^1.2.3"
+ has-property-descriptors: "npm:^1.0.2"
+ checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316
+ languageName: node
+ linkType: hard
+
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
@@ -2454,6 +4752,61 @@ __metadata:
languageName: node
linkType: hard
+"side-channel-list@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "side-channel-list@npm:1.0.0"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ object-inspect: "npm:^1.13.3"
+ checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d
+ languageName: node
+ linkType: hard
+
+"side-channel-map@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "side-channel-map@npm:1.0.1"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ es-errors: "npm:^1.3.0"
+ get-intrinsic: "npm:^1.2.5"
+ object-inspect: "npm:^1.13.3"
+ checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672
+ languageName: node
+ linkType: hard
+
+"side-channel-weakmap@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "side-channel-weakmap@npm:1.0.2"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ es-errors: "npm:^1.3.0"
+ get-intrinsic: "npm:^1.2.5"
+ object-inspect: "npm:^1.13.3"
+ side-channel-map: "npm:^1.0.1"
+ checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185
+ languageName: node
+ linkType: hard
+
+"side-channel@npm:^1.0.4, side-channel@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "side-channel@npm:1.1.0"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ object-inspect: "npm:^1.13.3"
+ side-channel-list: "npm:^1.0.0"
+ side-channel-map: "npm:^1.0.1"
+ side-channel-weakmap: "npm:^1.0.2"
+ checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6
+ languageName: node
+ linkType: hard
+
+"siginfo@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "siginfo@npm:2.0.0"
+ checksum: 10c0/3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34
+ languageName: node
+ linkType: hard
+
"signal-exit@npm:^4.0.1":
version: 4.1.0
resolution: "signal-exit@npm:4.1.0"
@@ -2533,6 +4886,30 @@ __metadata:
languageName: node
linkType: hard
+"stackback@npm:0.0.2":
+ version: 0.0.2
+ resolution: "stackback@npm:0.0.2"
+ checksum: 10c0/89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983
+ languageName: node
+ linkType: hard
+
+"std-env@npm:^3.8.0":
+ version: 3.10.0
+ resolution: "std-env@npm:3.10.0"
+ checksum: 10c0/1814927a45004d36dde6707eaf17552a546769bc79a6421be2c16ce77d238158dfe5de30910b78ec30d95135cc1c59ea73ee22d2ca170f8b9753f84da34c427f
+ languageName: node
+ linkType: hard
+
+"stop-iteration-iterator@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "stop-iteration-iterator@npm:1.1.0"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ internal-slot: "npm:^1.1.0"
+ checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09
+ languageName: node
+ linkType: hard
+
"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0":
version: 4.2.3
resolution: "string-width@npm:4.2.3"
@@ -2573,6 +4950,13 @@ __metadata:
languageName: node
linkType: hard
+"strip-json-comments@npm:^3.1.1":
+ version: 3.1.1
+ resolution: "strip-json-comments@npm:3.1.1"
+ checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd
+ languageName: node
+ linkType: hard
+
"superjson@npm:^2.2.1":
version: 2.2.2
resolution: "superjson@npm:2.2.2"
@@ -2582,6 +4966,15 @@ __metadata:
languageName: node
linkType: hard
+"supports-color@npm:^7.1.0":
+ version: 7.2.0
+ resolution: "supports-color@npm:7.2.0"
+ dependencies:
+ has-flag: "npm:^4.0.0"
+ checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124
+ languageName: node
+ linkType: hard
+
"supports-color@npm:^9.4.0":
version: 9.4.0
resolution: "supports-color@npm:9.4.0"
@@ -2603,6 +4996,27 @@ __metadata:
languageName: node
linkType: hard
+"text-table@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "text-table@npm:0.2.0"
+ checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c
+ languageName: node
+ linkType: hard
+
+"tinybench@npm:^2.9.0":
+ version: 2.9.0
+ resolution: "tinybench@npm:2.9.0"
+ checksum: 10c0/c3500b0f60d2eb8db65250afe750b66d51623057ee88720b7f064894a6cb7eb93360ca824a60a31ab16dab30c7b1f06efe0795b352e37914a9d4bad86386a20c
+ languageName: node
+ linkType: hard
+
+"tinyexec@npm:^0.3.1":
+ version: 0.3.2
+ resolution: "tinyexec@npm:0.3.2"
+ checksum: 10c0/3efbf791a911be0bf0821eab37a3445c2ba07acc1522b1fa84ae1e55f10425076f1290f680286345ed919549ad67527d07281f1c19d584df3b74326909eb1f90
+ languageName: node
+ linkType: hard
+
"tinyglobby@npm:^0.2.12":
version: 0.2.12
resolution: "tinyglobby@npm:0.2.12"
@@ -2613,6 +5027,37 @@ __metadata:
languageName: node
linkType: hard
+"tinyglobby@npm:^0.2.15":
+ version: 0.2.15
+ resolution: "tinyglobby@npm:0.2.15"
+ dependencies:
+ fdir: "npm:^6.5.0"
+ picomatch: "npm:^4.0.3"
+ checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844
+ languageName: node
+ linkType: hard
+
+"tinypool@npm:^1.0.1":
+ version: 1.1.1
+ resolution: "tinypool@npm:1.1.1"
+ checksum: 10c0/bf26727d01443061b04fa863f571016950888ea994ba0cd8cba3a1c51e2458d84574341ab8dbc3664f1c3ab20885c8cf9ff1cc4b18201f04c2cde7d317fff69b
+ languageName: node
+ linkType: hard
+
+"tinyrainbow@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "tinyrainbow@npm:1.2.0"
+ checksum: 10c0/7f78a4b997e5ba0f5ecb75e7ed786f30bab9063716e7dff24dd84013fb338802e43d176cb21ed12480561f5649a82184cf31efb296601a29d38145b1cdb4c192
+ languageName: node
+ linkType: hard
+
+"tinyspy@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "tinyspy@npm:3.0.2"
+ checksum: 10c0/55ffad24e346622b59292e097c2ee30a63919d5acb7ceca87fc0d1c223090089890587b426e20054733f97a58f20af2c349fb7cc193697203868ab7ba00bcea0
+ languageName: node
+ linkType: hard
+
"to-regex-range@npm:^5.0.1":
version: 5.0.1
resolution: "to-regex-range@npm:5.0.1"
@@ -2622,6 +5067,31 @@ __metadata:
languageName: node
linkType: hard
+"ts-api-utils@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "ts-api-utils@npm:2.1.0"
+ peerDependencies:
+ typescript: ">=4.8.4"
+ checksum: 10c0/9806a38adea2db0f6aa217ccc6bc9c391ddba338a9fe3080676d0d50ed806d305bb90e8cef0276e793d28c8a929f400abb184ddd7ff83a416959c0f4d2ce754f
+ languageName: node
+ linkType: hard
+
+"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
+ version: 0.4.0
+ resolution: "type-check@npm:0.4.0"
+ dependencies:
+ prelude-ls: "npm:^1.2.1"
+ checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58
+ languageName: node
+ linkType: hard
+
+"type-fest@npm:^0.20.2":
+ version: 0.20.2
+ resolution: "type-fest@npm:0.20.2"
+ checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3
+ languageName: node
+ linkType: hard
+
"type-fest@npm:^4.39.1":
version: 4.39.1
resolution: "type-fest@npm:4.39.1"
@@ -2767,6 +5237,37 @@ __metadata:
languageName: node
linkType: hard
+"uri-js@npm:^4.2.2":
+ version: 4.4.1
+ resolution: "uri-js@npm:4.4.1"
+ dependencies:
+ punycode: "npm:^2.1.0"
+ checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c
+ languageName: node
+ linkType: hard
+
+"util-deprecate@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "util-deprecate@npm:1.0.2"
+ checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942
+ languageName: node
+ linkType: hard
+
+"vite-node@npm:2.1.9":
+ version: 2.1.9
+ resolution: "vite-node@npm:2.1.9"
+ dependencies:
+ cac: "npm:^6.7.14"
+ debug: "npm:^4.3.7"
+ es-module-lexer: "npm:^1.5.4"
+ pathe: "npm:^1.1.2"
+ vite: "npm:^5.0.0"
+ bin:
+ vite-node: vite-node.mjs
+ checksum: 10c0/0d3589f9f4e9cff696b5b49681fdb75d1638c75053728be52b4013f70792f38cb0120a9c15e3a4b22bdd6b795ad7c2da13bcaf47242d439f0906049e73bdd756
+ languageName: node
+ linkType: hard
+
"vite-plugin-vuetify@npm:^2.1.1":
version: 2.1.1
resolution: "vite-plugin-vuetify@npm:2.1.1"
@@ -2782,6 +5283,49 @@ __metadata:
languageName: node
linkType: hard
+"vite@npm:^5.0.0":
+ version: 5.4.21
+ resolution: "vite@npm:5.4.21"
+ dependencies:
+ esbuild: "npm:^0.21.3"
+ fsevents: "npm:~2.3.3"
+ postcss: "npm:^8.4.43"
+ rollup: "npm:^4.20.0"
+ peerDependencies:
+ "@types/node": ^18.0.0 || >=20.0.0
+ less: "*"
+ lightningcss: ^1.21.0
+ sass: "*"
+ sass-embedded: "*"
+ stylus: "*"
+ sugarss: "*"
+ terser: ^5.4.0
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ peerDependenciesMeta:
+ "@types/node":
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ bin:
+ vite: bin/vite.js
+ checksum: 10c0/468336a1409f728b464160cbf02672e72271fb688d0e605e776b74a89d27e1029509eef3a3a6c755928d8011e474dbf234824d054d07960be5f23cd176bc72de
+ languageName: node
+ linkType: hard
+
"vite@npm:^6.2.6":
version: 6.2.6
resolution: "vite@npm:6.2.6"
@@ -2834,6 +5378,56 @@ __metadata:
languageName: node
linkType: hard
+"vitest@npm:^2.1.8":
+ version: 2.1.9
+ resolution: "vitest@npm:2.1.9"
+ dependencies:
+ "@vitest/expect": "npm:2.1.9"
+ "@vitest/mocker": "npm:2.1.9"
+ "@vitest/pretty-format": "npm:^2.1.9"
+ "@vitest/runner": "npm:2.1.9"
+ "@vitest/snapshot": "npm:2.1.9"
+ "@vitest/spy": "npm:2.1.9"
+ "@vitest/utils": "npm:2.1.9"
+ chai: "npm:^5.1.2"
+ debug: "npm:^4.3.7"
+ expect-type: "npm:^1.1.0"
+ magic-string: "npm:^0.30.12"
+ pathe: "npm:^1.1.2"
+ std-env: "npm:^3.8.0"
+ tinybench: "npm:^2.9.0"
+ tinyexec: "npm:^0.3.1"
+ tinypool: "npm:^1.0.1"
+ tinyrainbow: "npm:^1.2.0"
+ vite: "npm:^5.0.0"
+ vite-node: "npm:2.1.9"
+ why-is-node-running: "npm:^2.3.0"
+ peerDependencies:
+ "@edge-runtime/vm": "*"
+ "@types/node": ^18.0.0 || >=20.0.0
+ "@vitest/browser": 2.1.9
+ "@vitest/ui": 2.1.9
+ happy-dom: "*"
+ jsdom: "*"
+ peerDependenciesMeta:
+ "@edge-runtime/vm":
+ optional: true
+ "@types/node":
+ optional: true
+ "@vitest/browser":
+ optional: true
+ "@vitest/ui":
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+ bin:
+ vitest: vitest.mjs
+ checksum: 10c0/e339e16dccacf4589ff43cb1f38c7b4d14427956ae8ef48702af6820a9842347c2b6c77356aeddb040329759ca508a3cb2b104ddf78103ea5bc98ab8f2c3a54e
+ languageName: node
+ linkType: hard
+
"vscode-uri@npm:^3.0.8":
version: 3.0.8
resolution: "vscode-uri@npm:3.0.8"
@@ -2841,6 +5435,30 @@ __metadata:
languageName: node
linkType: hard
+"vue-component-type-helpers@npm:^2.0.0":
+ version: 2.2.12
+ resolution: "vue-component-type-helpers@npm:2.2.12"
+ checksum: 10c0/ce15a2cdec4a57262a292ac1565aa18da9be73f3dfbcf28758a8a541199944bfff1aefb75802d6de5d955a5529c9667f1b651c659d14815c075e8965ac05175d
+ languageName: node
+ linkType: hard
+
+"vue-eslint-parser@npm:^9.4.3":
+ version: 9.4.3
+ resolution: "vue-eslint-parser@npm:9.4.3"
+ dependencies:
+ debug: "npm:^4.3.4"
+ eslint-scope: "npm:^7.1.1"
+ eslint-visitor-keys: "npm:^3.3.0"
+ espree: "npm:^9.3.1"
+ esquery: "npm:^1.4.0"
+ lodash: "npm:^4.17.21"
+ semver: "npm:^7.3.6"
+ peerDependencies:
+ eslint: ">=6.0.0"
+ checksum: 10c0/128be5988de025b5abd676a91c3e92af68288a5da1c20b2ff848fe90e040c04b2222a03b5d8048cf4a5e0b667a8addfb6f6e6565860d4afb5190c4cc42d05578
+ languageName: node
+ linkType: hard
+
"vue-tsc@npm:^2.2.8":
version: 2.2.8
resolution: "vue-tsc@npm:2.2.8"
@@ -2892,6 +5510,13 @@ __metadata:
languageName: node
linkType: hard
+"webidl-conversions@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "webidl-conversions@npm:7.0.0"
+ checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4
+ languageName: node
+ linkType: hard
+
"webpack-virtual-modules@npm:^0.6.2":
version: 0.6.2
resolution: "webpack-virtual-modules@npm:0.6.2"
@@ -2899,6 +5524,53 @@ __metadata:
languageName: node
linkType: hard
+"whatwg-mimetype@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "whatwg-mimetype@npm:3.0.0"
+ checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f
+ languageName: node
+ linkType: hard
+
+"which-boxed-primitive@npm:^1.0.2":
+ version: 1.1.1
+ resolution: "which-boxed-primitive@npm:1.1.1"
+ dependencies:
+ is-bigint: "npm:^1.1.0"
+ is-boolean-object: "npm:^1.2.1"
+ is-number-object: "npm:^1.1.1"
+ is-string: "npm:^1.1.1"
+ is-symbol: "npm:^1.1.1"
+ checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe
+ languageName: node
+ linkType: hard
+
+"which-collection@npm:^1.0.1":
+ version: 1.0.2
+ resolution: "which-collection@npm:1.0.2"
+ dependencies:
+ is-map: "npm:^2.0.3"
+ is-set: "npm:^2.0.3"
+ is-weakmap: "npm:^2.0.2"
+ is-weakset: "npm:^2.0.3"
+ checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2
+ languageName: node
+ linkType: hard
+
+"which-typed-array@npm:^1.1.13":
+ version: 1.1.19
+ resolution: "which-typed-array@npm:1.1.19"
+ dependencies:
+ available-typed-arrays: "npm:^1.0.7"
+ call-bind: "npm:^1.0.8"
+ call-bound: "npm:^1.0.4"
+ for-each: "npm:^0.3.5"
+ get-proto: "npm:^1.0.1"
+ gopd: "npm:^1.2.0"
+ has-tostringtag: "npm:^1.0.2"
+ checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f
+ languageName: node
+ linkType: hard
+
"which@npm:^2.0.1":
version: 2.0.2
resolution: "which@npm:2.0.2"
@@ -2921,6 +5593,25 @@ __metadata:
languageName: node
linkType: hard
+"why-is-node-running@npm:^2.3.0":
+ version: 2.3.0
+ resolution: "why-is-node-running@npm:2.3.0"
+ dependencies:
+ siginfo: "npm:^2.0.0"
+ stackback: "npm:0.0.2"
+ bin:
+ why-is-node-running: cli.js
+ checksum: 10c0/1cde0b01b827d2cf4cb11db962f3958b9175d5d9e7ac7361d1a7b0e2dc6069a263e69118bd974c4f6d0a890ef4eedfe34cf3d5167ec14203dbc9a18620537054
+ languageName: node
+ linkType: hard
+
+"word-wrap@npm:^1.2.5":
+ version: 1.2.5
+ resolution: "word-wrap@npm:1.2.5"
+ checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20
+ languageName: node
+ linkType: hard
+
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version: 7.0.0
resolution: "wrap-ansi@npm:7.0.0"
@@ -2943,6 +5634,20 @@ __metadata:
languageName: node
linkType: hard
+"wrappy@npm:1":
+ version: 1.0.2
+ resolution: "wrappy@npm:1.0.2"
+ checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0
+ languageName: node
+ linkType: hard
+
+"xml-name-validator@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "xml-name-validator@npm:4.0.0"
+ checksum: 10c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd
+ languageName: node
+ linkType: hard
+
"yallist@npm:^4.0.0":
version: 4.0.0
resolution: "yallist@npm:4.0.0"
@@ -2963,3 +5668,10 @@ __metadata:
checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2
languageName: node
linkType: hard
+
+"yocto-queue@npm:^0.1.0":
+ version: 0.1.0
+ resolution: "yocto-queue@npm:0.1.0"
+ checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f
+ languageName: node
+ linkType: hard