refactor(stage-*): audio hearing module

This commit is contained in:
Neko Ayaka
2025-09-01 17:54:18 +08:00
parent 0a59323aca
commit c4b53010d9
12 changed files with 192 additions and 789 deletions
@@ -2,10 +2,11 @@
import type { TranscriptionProvider } from '@xsai-ext/shared-providers' import type { TranscriptionProvider } from '@xsai-ext/shared-providers'
import { Alert, Button, ErrorContainer, LevelMeter, RadioCardManySelect, RadioCardSimple, TestDummyMarker, ThresholdMeter, TimeSeriesChart } from '@proj-airi/stage-ui/components' import { Alert, Button, ErrorContainer, LevelMeter, RadioCardManySelect, RadioCardSimple, TestDummyMarker, ThresholdMeter, TimeSeriesChart } from '@proj-airi/stage-ui/components'
import { useAudioAnalyzer, useAudioDevice, useAudioRecorder } from '@proj-airi/stage-ui/composables' import { useAudioAnalyzer, useAudioRecorder } from '@proj-airi/stage-ui/composables'
import { useAudioContext } from '@proj-airi/stage-ui/stores/audio' import { useAudioContext } from '@proj-airi/stage-ui/stores/audio'
import { useHearingStore } from '@proj-airi/stage-ui/stores/modules/hearing' import { useHearingStore } from '@proj-airi/stage-ui/stores/modules/hearing'
import { useProvidersStore } from '@proj-airi/stage-ui/stores/providers' import { useProvidersStore } from '@proj-airi/stage-ui/stores/providers'
import { useSettingsAudioDevice } from '@proj-airi/stage-ui/stores/settings'
import { FieldCheckbox, FieldRange, FieldSelect } from '@proj-airi/ui' import { FieldCheckbox, FieldRange, FieldSelect } from '@proj-airi/ui'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { computed, onMounted, onUnmounted, ref, watch } from 'vue' import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
@@ -31,7 +32,8 @@ const {
const providersStore = useProvidersStore() const providersStore = useProvidersStore()
const { configuredTranscriptionProvidersMetadata } = storeToRefs(providersStore) const { configuredTranscriptionProvidersMetadata } = storeToRefs(providersStore)
const { audioInputs, selectedAudioInput, stream, stopStream, startStream } = useAudioDevice() const { stopStream, startStream } = useSettingsAudioDevice()
const { audioInputs, selectedAudioInput, stream } = storeToRefs(useSettingsAudioDevice())
const { startRecord, stopRecord, onStopRecord } = useAudioRecorder(stream) const { startRecord, stopRecord, onStopRecord } = useAudioRecorder(stream)
const { startAnalyzer, stopAnalyzer, onAnalyzerUpdate, volumeLevel } = useAudioAnalyzer() const { startAnalyzer, stopAnalyzer, onAnalyzerUpdate, volumeLevel } = useAudioAnalyzer()
const { audioContext } = storeToRefs(useAudioContext()) const { audioContext } = storeToRefs(useAudioContext())
@@ -144,6 +146,32 @@ async function loadVADModel() {
} }
} }
onStopRecord(async (recording) => {
if (!recording)
return
try {
if (recording && recording.size > 0) {
audios.value.push(recording)
const provider = await providersStore.getProviderInstance<TranscriptionProvider<string>>(activeTranscriptionProvider.value)
if (!provider) {
throw new Error('Failed to initialize speech provider')
}
// Get model from configuration or use default
const model = activeTranscriptionModel.value
const res = await hearingStore.transcription(provider, model, new File([recording], 'recording.wav'))
transcriptions.value.push(res.text)
}
}
catch (err) {
error.value = err instanceof Error ? err.message : String(err)
console.error('Error generating transcription:', error.value)
}
})
// Audio monitoring // Audio monitoring
async function setupAudioMonitoring() { async function setupAudioMonitoring() {
try { try {
@@ -161,32 +189,6 @@ async function setupAudioMonitoring() {
return return
} }
onStopRecord(async (recording) => {
if (!recording)
return
try {
if (recording && recording.size > 0) {
audios.value.push(recording)
const provider = await providersStore.getProviderInstance<TranscriptionProvider<string>>(activeTranscriptionProvider.value)
if (!provider) {
throw new Error('Failed to initialize speech provider')
}
// Get model from configuration or use default
const model = activeTranscriptionModel.value
const res = await hearingStore.transcription(provider, model, new File([recording], 'recording.wav'))
transcriptions.value.push(res.text)
}
}
catch (err) {
error.value = err instanceof Error ? err.message : String(err)
console.error('Error generating transcription:', error.value)
}
})
const source = audioContext.value.createMediaStreamSource(stream.value) const source = audioContext.value.createMediaStreamSource(stream.value)
const analyzer = startAnalyzer(audioContext.value) const analyzer = startAnalyzer(audioContext.value)
@@ -50,4 +50,4 @@ class VADProcessor extends AudioWorkletProcessor {
} }
} }
registerProcessor('vad-processor', VADProcessor) registerProcessor('vad-audio-worklet-processor', VADProcessor)
+1
View File
@@ -37,6 +37,7 @@
"@stdlib/string-base-kebabcase": "^0.2.2", "@stdlib/string-base-kebabcase": "^0.2.2",
"@tresjs/cientos": "^4.3.1", "@tresjs/cientos": "^4.3.1",
"@tresjs/core": "^4.3.6", "@tresjs/core": "^4.3.6",
"@unbird/eventa": "^0.0.5",
"@valibot/to-json-schema": "1.0.0-rc.0", "@valibot/to-json-schema": "1.0.0-rc.0",
"@vueuse/core": "^13.8.0", "@vueuse/core": "^13.8.0",
"@vueuse/shared": "^13.8.0", "@vueuse/shared": "^13.8.0",
@@ -146,6 +146,32 @@ async function loadVADModel() {
} }
} }
onStopRecord(async (recording) => {
if (!recording)
return
try {
if (recording && recording.size > 0) {
audios.value.push(recording)
const provider = await providersStore.getProviderInstance<TranscriptionProvider<string>>(activeTranscriptionProvider.value)
if (!provider) {
throw new Error('Failed to initialize speech provider')
}
// Get model from configuration or use default
const model = activeTranscriptionModel.value
const res = await hearingStore.transcription(provider, model, new File([recording], 'recording.wav'))
transcriptions.value.push(res.text)
}
}
catch (err) {
error.value = err instanceof Error ? err.message : String(err)
console.error('Error generating transcription:', error.value)
}
})
// Audio monitoring // Audio monitoring
async function setupAudioMonitoring() { async function setupAudioMonitoring() {
try { try {
@@ -163,32 +189,6 @@ async function setupAudioMonitoring() {
return return
} }
onStopRecord(async (recording) => {
if (!recording)
return
try {
if (recording && recording.size > 0) {
audios.value.push(recording)
const provider = await providersStore.getProviderInstance<TranscriptionProvider<string>>(activeTranscriptionProvider.value)
if (!provider) {
throw new Error('Failed to initialize speech provider')
}
// Get model from configuration or use default
const model = activeTranscriptionModel.value
const res = await hearingStore.transcription(provider, model, new File([recording], 'recording.wav'))
transcriptions.value.push(res.text)
}
}
catch (err) {
error.value = err instanceof Error ? err.message : String(err)
console.error('Error generating transcription:', error.value)
}
})
const source = audioContext.value.createMediaStreamSource(stream.value) const source = audioContext.value.createMediaStreamSource(stream.value)
const analyzer = startAnalyzer(audioContext.value) const analyzer = startAnalyzer(audioContext.value)
@@ -50,4 +50,4 @@ class VADProcessor extends AudioWorkletProcessor {
} }
} }
registerProcessor('vad-processor', VADProcessor) registerProcessor('vad-audio-worklet-processor', VADProcessor)
+1 -21
View File
@@ -186,14 +186,10 @@ export class VAD implements BaseVAD {
// Update the state // Update the state
this.state = stateN this.state = stateN
// Get the speech probability // Get the speech probability
const speechProb = output.data[0] const speechProb = output.data[0]
this.emit('debug', { this.emit('debug', { message: 'VAD score', data: { probability: speechProb } })
message: 'VAD score',
data: { probability: speechProb },
})
// Apply thresholds // Apply thresholds
return ( return (
@@ -269,22 +265,6 @@ export class VAD implements BaseVAD {
this.sampleRateTensor = new Tensor('int64', [this.config.sampleRate], []) this.sampleRateTensor = new Tensor('int64', [this.config.sampleRate], [])
} }
} }
/**
* Get current VAD probability
*/
public getLastProbability(): number {
// This should be set after the last detectSpeech call
// For now, we'll return 0 as a placeholder
return 0
}
/**
* Check if currently recording speech
*/
public isCurrentlyRecording(): boolean {
return this.isRecording
}
} }
/** /**
+3
View File
@@ -85,6 +85,7 @@ words:
- elevenlabs - elevenlabs
- Equirectangular - Equirectangular
- esaxx - esaxx
- eventa
- Factorio - Factorio
- feaxios - feaxios
- formkit - formkit
@@ -240,6 +241,7 @@ words:
- tresjs - tresjs
- tsdown - tsdown
- turborepo - turborepo
- unbird
- unbundle - unbundle
- uncrypto - uncrypto
- unhead - unhead
@@ -260,6 +262,7 @@ words:
- waapi - waapi
- wavefile - wavefile
- webgpu - webgpu
- webworkers
- weeb - weeb
- wgpu - wgpu
- wlipsync - wlipsync
@@ -6,6 +6,7 @@ import { until } from '@vueuse/core'
import { computed, onUnmounted, ref, watch } from 'vue' import { computed, onUnmounted, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useAudioAnalyzer } from '../../../composables/audio/audio-analyzer'
import { useAudioRecorder } from '../../../composables/audio/audio-recorder' import { useAudioRecorder } from '../../../composables/audio/audio-recorder'
import { useAudioDevice } from '../../../composables/audio/device' import { useAudioDevice } from '../../../composables/audio/device'
import { LevelMeter, TestDummyMarker, ThresholdMeter } from '../../Gadgets' import { LevelMeter, TestDummyMarker, ThresholdMeter } from '../../Gadgets'
@@ -20,6 +21,8 @@ const props = defineProps<{
const { t } = useI18n() const { t } = useI18n()
const { audioInputs, selectedAudioInput, stream, stopStream, startStream } = useAudioDevice() const { audioInputs, selectedAudioInput, stream, stopStream, startStream } = useAudioDevice()
const { volumeLevel, stopAnalyzer, startAnalyzer } = useAudioAnalyzer()
const { startRecord, stopRecord, onStopRecord } = useAudioRecorder(stream)
const speakingThreshold = ref(25) // 0-100 (for volume-based fallback) const speakingThreshold = ref(25) // 0-100 (for volume-based fallback)
const isMonitoring = ref(false) const isMonitoring = ref(false)
@@ -28,10 +31,8 @@ const isSpeaking = ref(false)
const errorMessage = ref<string>('') const errorMessage = ref<string>('')
const audioContext = ref<AudioContext>() const audioContext = ref<AudioContext>()
const analyser = ref<AnalyserNode>()
const dataArray = ref<Uint8Array<ArrayBuffer>>() const dataArray = ref<Uint8Array<ArrayBuffer>>()
const animationFrame = ref<number>() const animationFrame = ref<number>()
const volumeLevel = ref(0) // 0-100
const audios = ref<Blob[]>([]) const audios = ref<Blob[]>([])
const audioCleanups = ref<(() => void)[]>([]) const audioCleanups = ref<(() => void)[]>([])
@@ -44,94 +45,6 @@ const audioURLs = computed(() => {
}) })
const transcriptions = ref<string[]>([]) const transcriptions = ref<string[]>([])
const { startRecord, stopRecord, onStopRecord } = useAudioRecorder(stream)
// Audio monitoring
async function setupAudioMonitoring() {
try {
// Clean up existing connections
await stopAudioMonitoring()
await startStream()
await until(stream).toBeTruthy()
// Create audio context
audioContext.value = new AudioContext()
const source = audioContext.value.createMediaStreamSource(stream.value!)
// Create analyser for volume detection
analyser.value = audioContext.value.createAnalyser()
analyser.value.fftSize = 256
analyser.value.smoothingTimeConstant = 0.3
// Connect audio graph
source.connect(analyser.value)
// Set up data array for analysis
const bufferLength = analyser.value.frequencyBinCount
dataArray.value = new Uint8Array(bufferLength)
// Start audio analysis loop
startAudioAnalysis()
}
catch (error) {
console.error('Error setting up audio monitoring:', error)
errorMessage.value = error instanceof Error ? error.message : String(error)
}
}
async function stopAudioMonitoring() {
// Stop animation frame
if (animationFrame.value) {
cancelAnimationFrame(animationFrame.value)
animationFrame.value = undefined
}
// Stop media stream
if (stream.value) {
stream.value.getTracks().forEach(track => track.stop())
stream.value = undefined
}
// Close audio context
if (audioContext.value) {
await audioContext.value.close()
audioContext.value = undefined
}
await stopRecord()
await stopStream()
analyser.value = undefined
dataArray.value = undefined
volumeLevel.value = 0
isSpeaking.value = false
}
function startAudioAnalysis() {
const analyze = () => {
if (!analyser.value || !dataArray.value)
return
// Get frequency data for volume visualization
analyser.value.getByteFrequencyData(dataArray.value)
// Calculate RMS volume level
let sum = 0
for (let i = 0; i < dataArray.value.length; i++) {
sum += dataArray.value[i] * dataArray.value[i]
}
const rms = Math.sqrt(sum / dataArray.value.length)
volumeLevel.value = Math.min(100, (rms / 255) * 100 * 3) // Amplify for better visualization
isSpeaking.value = volumeLevel.value > speakingThreshold.value
animationFrame.value = requestAnimationFrame(analyze)
}
analyze()
}
watch(selectedAudioInput, async () => { watch(selectedAudioInput, async () => {
if (isMonitoring.value) { if (isMonitoring.value) {
await setupAudioMonitoring() await setupAudioMonitoring()
@@ -144,23 +57,69 @@ watch(audioInputs, () => {
} }
}) })
async function setupAudioMonitoring() {
try {
await stopAudioMonitoring()
await startStream()
await until(stream).toBeTruthy()
// Create audio context
audioContext.value = new AudioContext()
const source = audioContext.value.createMediaStreamSource(stream.value!)
const analyzer = startAnalyzer(audioContext.value)
source.connect(analyzer!)
// Set up data array for analysis
const bufferLength = analyzer!.frequencyBinCount
dataArray.value = new Uint8Array(bufferLength)
}
catch (error) {
console.error('Error setting up audio monitoring:', error)
errorMessage.value = error instanceof Error ? error.message : String(error)
}
}
async function stopAudioMonitoring() {
// Stop animation frame
if (animationFrame.value) {
cancelAnimationFrame(animationFrame.value)
animationFrame.value = undefined
}
if (stream.value) {
stream.value.getTracks().forEach(track => track.stop())
stream.value = undefined
}
if (audioContext.value) {
await audioContext.value.close()
audioContext.value = undefined
}
await stopRecord()
await stopStream()
await stopAnalyzer()
dataArray.value = undefined
isSpeaking.value = false
}
onStopRecord(async (recording) => {
try {
if (recording && recording.size > 0) {
audios.value.push(recording)
const res = await props.generateTranscription(new File([recording], 'recording.wav'))
transcriptions.value.push(res.text)
}
}
catch (err) {
errorMessage.value = err instanceof Error ? err.message : String(err)
console.error('Error generating transcription:', errorMessage.value)
}
})
// Monitoring toggle // Monitoring toggle
async function toggleMonitoring() { async function toggleMonitoring() {
if (!isMonitoring.value) { if (!isMonitoring.value) {
onStopRecord(async (recording) => {
try {
if (recording && recording.size > 0) {
audios.value.push(recording)
const res = await props.generateTranscription(new File([recording], 'recording.wav'))
transcriptions.value.push(res.text)
}
}
catch (err) {
errorMessage.value = err instanceof Error ? err.message : String(err)
console.error('Error generating transcription:', errorMessage.value)
}
})
await setupAudioMonitoring() await setupAudioMonitoring()
await startRecord() await startRecord()
isMonitoring.value = true isMonitoring.value = true
@@ -1,21 +1,21 @@
import type { MaybeRefOrGetter } from 'vue' import type { MaybeRefOrGetter } from 'vue'
import { toWav } from '@proj-airi/audio/encoding'
import { until } from '@vueuse/core' import { until } from '@vueuse/core'
import { ref, shallowRef, toRef, watch } from 'vue' import { BufferTarget, MediaStreamAudioTrackSource, Output, QUALITY_MEDIUM, WavOutputFormat } from 'mediabunny'
import { ref, shallowRef, toRef } from 'vue'
async function getMediaStreamTrack(stream: MediaStream) {
return stream.getAudioTracks()[0]
}
export function useAudioRecorder( export function useAudioRecorder(
media: MaybeRefOrGetter<MediaStream | undefined>, media: MaybeRefOrGetter<MediaStream | undefined>,
) { ) {
const mediaRef = toRef(media) const mediaRef = toRef(media)
const recording = shallowRef<Blob>() const recording = shallowRef<Blob>()
const isRecording = ref(false)
// Audio processing variables const mediaOutput = ref<Output>()
const audioContext = ref<AudioContext>() const mediaFormat = ref<string>()
const sourceNode = ref<MediaStreamAudioSourceNode>()
const processorNode = ref<ScriptProcessorNode>() // Using ScriptProcessorNode for wider compatibility
const audioData = ref<Float32Array<ArrayBufferLike>[]>([])
const onStopRecordHooks = ref<Array<(recording: Blob | undefined) => Promise<void>>>([]) const onStopRecordHooks = ref<Array<(recording: Blob | undefined) => Promise<void>>>([])
@@ -23,107 +23,42 @@ export function useAudioRecorder(
onStopRecordHooks.value.push(callback) onStopRecordHooks.value.push(callback)
} }
// Convert audio buffer to WAV format
function encodeWAV(samples: Float32Array[], sampleRate: number): Blob {
const view = toWav(samples[0].buffer, sampleRate)
return new Blob([view], { type: 'audio/wav' })
}
async function startRecord() { async function startRecord() {
await until(mediaRef).toBeTruthy() await until(mediaRef).toBeTruthy()
if (!mediaRef.value) {
return
}
// Reset recording state const track = await getMediaStreamTrack(mediaRef.value!)
recording.value = undefined mediaOutput.value = new Output({ format: new WavOutputFormat(), target: new BufferTarget() })
audioData.value = []
isRecording.value = true
try { const audioSource = new MediaStreamAudioTrackSource(track, { codec: 'pcm-f32', bitrate: QUALITY_MEDIUM })
// Create audio context and nodes audioSource.errorPromise.catch(console.error)
audioContext.value = new AudioContext() mediaOutput.value.addAudioTrack(audioSource)
sourceNode.value = audioContext.value.createMediaStreamSource(mediaRef.value)
// Create script processor for audio processing mediaFormat.value = await mediaOutput.value.getMimeType()
processorNode.value = audioContext.value.createScriptProcessor(4096, 1, 1) await mediaOutput.value.start()
// Process audio data
processorNode.value.onaudioprocess = (e) => {
if (isRecording.value) {
const channelData = new Float32Array(e.inputBuffer.getChannelData(0))
audioData.value.push(channelData)
}
}
// Connect nodes
sourceNode.value.connect(processorNode.value)
processorNode.value.connect(audioContext.value.destination)
}
catch (error) {
console.error('Error starting audio recording:', error)
isRecording.value = false
}
} }
async function stopRecord() { async function stopRecord() {
if (!isRecording.value || !audioContext.value) { if (!mediaOutput.value) {
return return
} }
isRecording.value = false await mediaOutput.value?.finalize()
const bufferTarget = mediaOutput.value?.target as BufferTarget | undefined
const buffer = bufferTarget!.buffer
const audioBlob = new Blob([buffer!], { type: mediaFormat.value })
try { for (const hook of onStopRecordHooks.value) {
// Disconnect and clean up audio nodes hook(audioBlob)
if (processorNode.value) {
processorNode.value.disconnect()
processorNode.value = undefined
}
if (sourceNode.value) {
sourceNode.value.disconnect()
sourceNode.value = undefined
}
// Create WAV from recorded data
if (audioData.value.length > 0) {
recording.value = encodeWAV(audioData.value, audioContext.value.sampleRate)
// Call hooks with the recording
for (const hook of onStopRecordHooks.value) {
await hook(recording.value)
}
}
else {
recording.value = undefined
}
// Close audio context
await audioContext.value.close()
audioContext.value = undefined
}
catch (error) {
console.error('Error stopping audio recording:', error)
} }
return audioData.value return audioBlob
} }
watch(mediaRef, () => {
if (isRecording.value) {
stopRecord().then(() => {
if (mediaRef.value && mediaRef.value.active) {
startRecord()
}
})
}
})
return { return {
startRecord, startRecord,
stopRecord, stopRecord,
onStopRecord, onStopRecord,
recording, recording,
isRecording,
} }
} }
+6 -8
View File
@@ -127,6 +127,12 @@ export function createVADStates(vad: BaseVAD, vadAudioWorkletUrl: string, option
} }
function stop() { function stop() {
if (audioContext) {
audioContext.suspend()
}
}
function dispose() {
if (sourceNode) { if (sourceNode) {
sourceNode.disconnect() sourceNode.disconnect()
sourceNode = null sourceNode = null
@@ -139,14 +145,6 @@ export function createVADStates(vad: BaseVAD, vadAudioWorkletUrl: string, option
mediaStream.getTracks().forEach(track => track.stop()) mediaStream.getTracks().forEach(track => track.stop())
mediaStream = null mediaStream = null
} }
if (audioContext) {
audioContext.suspend()
}
}
function dispose() {
stop()
if (audioContext && audioContext.state !== 'closed') { if (audioContext && audioContext.state !== 'closed') {
audioContext.close() audioContext.close()
} }
+36 -511
View File
@@ -746,6 +746,9 @@ importers:
'@tresjs/core': '@tresjs/core':
specifier: ^4.3.6 specifier: ^4.3.6
version: 4.3.6(three@0.179.1)(typescript@5.9.2)(vue@3.5.20(typescript@5.9.2)) version: 4.3.6(three@0.179.1)(typescript@5.9.2)(vue@3.5.20(typescript@5.9.2))
'@unbird/eventa':
specifier: ^0.0.5
version: 0.0.5(web-worker@1.5.0)
'@valibot/to-json-schema': '@valibot/to-json-schema':
specifier: 1.0.0-rc.0 specifier: 1.0.0-rc.0
version: 1.0.0-rc.0(valibot@1.0.0-beta.9(typescript@5.9.2)) version: 1.0.0-rc.0(valibot@1.0.0-beta.9(typescript@5.9.2))
@@ -883,7 +886,7 @@ importers:
version: 4.5.1(vue@3.5.20(typescript@5.9.2)) version: 4.5.1(vue@3.5.20(typescript@5.9.2))
vue-sonner: vue-sonner:
specifier: ^2.0.8 specifier: ^2.0.8
version: 2.0.8(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.3.0)(@vue/compiler-sfc@3.5.20)(bufferutil@4.0.9)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.34.0(jiti@2.5.1))(ioredis@5.7.0)(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(utf-8-validate@5.0.10)(vue-tsc@3.0.6(typescript@5.9.2))(xml2js@0.6.2)(yaml@2.8.1) version: 2.0.8(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.3.0)(@vue/compiler-sfc@3.5.20)(bufferutil@4.0.9)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.34.0(jiti@2.5.1))(ioredis@5.7.0)(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(utf-8-validate@5.0.10)(vue-tsc@3.0.6(typescript@5.9.2))(xml2js@0.6.2)(yaml@2.8.1)
workbox-window: workbox-window:
specifier: ^7.3.0 specifier: ^7.3.0
version: 7.3.0 version: 7.3.0
@@ -923,7 +926,7 @@ importers:
version: 1.2.30 version: 1.2.30
'@intlify/unplugin-vue-i18n': '@intlify/unplugin-vue-i18n':
specifier: ^6.0.8 specifier: ^6.0.8
version: 6.0.8(@vue/compiler-dom@3.5.20)(eslint@9.34.0(jiti@2.5.1))(rollup@2.79.2)(typescript@5.9.2)(vue-i18n@11.1.11(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2)) version: 6.0.8(@vue/compiler-dom@3.5.20)(eslint@9.34.0(jiti@2.5.1))(rollup@4.49.0)(typescript@5.9.2)(vue-i18n@11.1.11(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))
'@proj-airi/lobe-icons': '@proj-airi/lobe-icons':
specifier: ^1.0.10 specifier: ^1.0.10
version: 1.0.10 version: 1.0.10
@@ -977,22 +980,22 @@ importers:
version: 4.4.1 version: 4.4.1
unplugin-info: unplugin-info:
specifier: ^1.2.4 specifier: ^1.2.4
version: 1.2.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rollup@2.79.2) version: 1.2.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rollup@4.49.0)
unplugin-vue-macros: unplugin-vue-macros:
specifier: ^2.14.5 specifier: ^2.14.5
version: 2.14.5(@vueuse/core@13.8.0(vue@3.5.20(typescript@5.9.2)))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2)) version: 2.14.5(@vueuse/core@13.8.0(vue@3.5.20(typescript@5.9.2)))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2))
unplugin-vue-router: unplugin-vue-router:
specifier: ^0.15.0 specifier: ^0.15.0
version: 0.15.0(@vue/compiler-sfc@3.5.20)(typescript@5.9.2)(vue-router@4.5.1(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2)) version: 0.15.0(@vue/compiler-sfc@3.5.20)(typescript@5.9.2)(vue-router@4.5.1(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))
unplugin-yaml: unplugin-yaml:
specifier: ^3.0.4 specifier: ^3.0.4
version: 3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2) version: 3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)
vite: vite:
specifier: catalog:rolldown-vite specifier: catalog:rolldown-vite
version: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) version: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
vite-bundle-visualizer: vite-bundle-visualizer:
specifier: ^1.2.1 specifier: ^1.2.1
version: 1.2.1(rollup@2.79.2) version: 1.2.1(rollup@4.49.0)
vite-plugin-pwa: vite-plugin-pwa:
specifier: ^1.0.3 specifier: ^1.0.3
version: 1.0.3(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) version: 1.0.3(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
@@ -1137,7 +1140,7 @@ importers:
version: 0.1.3 version: 0.1.3
unplugin-yaml: unplugin-yaml:
specifier: ^3.0.4 specifier: ^3.0.4
version: 3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown@1.0.0-beta.34)(rollup@4.49.0)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) version: 3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown@1.0.0-beta.34)(rollup@4.49.0)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))
vitepress: vitepress:
specifier: ^2.0.0-alpha.12 specifier: ^2.0.0-alpha.12
version: 2.0.0-alpha.12(@types/node@24.3.0)(change-case@5.4.4)(fuse.js@7.1.0)(jiti@2.5.1)(jwt-decode@4.0.0)(less@4.4.1)(lightningcss@1.30.1)(nprogress@0.2.0)(postcss@8.5.6)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) version: 2.0.0-alpha.12(@types/node@24.3.0)(change-case@5.4.4)(fuse.js@7.1.0)(jiti@2.5.1)(jwt-decode@4.0.0)(less@4.4.1)(lightningcss@1.30.1)(nprogress@0.2.0)(postcss@8.5.6)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1)
@@ -1145,49 +1148,6 @@ importers:
specifier: ^3.0.6 specifier: ^3.0.6
version: 3.0.6(typescript@5.9.2) version: 3.0.6(typescript@5.9.2)
packages/audia:
dependencies:
'@vueuse/core':
specifier: ^13.8.0
version: 13.8.0(vue@3.5.20(typescript@5.9.2))
mediabunny:
specifier: ^1.11.2
version: 1.11.2
vue:
specifier: ^3.5.20
version: 3.5.20(typescript@5.9.2)
devDependencies:
'@ffmpeg/ffmpeg':
specifier: ^0.12.15
version: 0.12.15
'@ffmpeg/util':
specifier: ^0.12.2
version: 0.12.2
'@proj-airi/ui':
specifier: workspace:^
version: link:../ui
'@unocss/reset':
specifier: ^66.4.2
version: 66.4.2
'@vitejs/plugin-vue':
specifier: ^6.0.1
version: 6.0.1(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.20(typescript@5.9.2))
unplugin-vue-router:
specifier: ^0.15.0
version: 0.15.0(@vue/compiler-sfc@3.5.20)(typescript@5.9.2)(vue-router@4.5.1(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))
vite:
specifier: catalog:rolldown-vite
version: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
vite-plugin-vue-devtools:
specifier: ^8.0.1
version: 8.0.1(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.20(typescript@5.9.2))
vue-router:
specifier: ^4.5.1
version: 4.5.1(vue@3.5.20(typescript@5.9.2))
vue-tsc:
specifier: ^3.0.6
version: 3.0.6(typescript@5.9.2)
packages/audio: packages/audio:
dependencies: dependencies:
'@alexanderolsen/libsamplerate-js': '@alexanderolsen/libsamplerate-js':
@@ -3728,18 +3688,6 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@ffmpeg/ffmpeg@0.12.15':
resolution: {integrity: sha512-1C8Obr4GsN3xw+/1Ww6PFM84wSQAGsdoTuTWPOj2OizsRDLT4CXTaVjPhkw6ARyDus1B9X/L2LiXHqYYsGnRFw==}
engines: {node: '>=18.x'}
'@ffmpeg/types@0.12.4':
resolution: {integrity: sha512-k9vJQNBGTxE5AhYDtOYR5rO5fKsspbg51gbcwtbkw2lCdoIILzklulcjJfIDwrtn7XhDeF2M+THwJ2FGrLeV6A==}
engines: {node: '>=16.x'}
'@ffmpeg/util@0.12.2':
resolution: {integrity: sha512-ouyoW+4JB7WxjeZ2y6KpRvB+dLp7Cp4ro8z0HIVpZVCM7AwFlHa0c4R8Y/a4M3wMqATpYKhC7lSFHQ0T11MEDw==}
engines: {node: '>=18.x'}
'@floating-ui/core@1.6.8': '@floating-ui/core@1.6.8':
resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==}
@@ -6713,6 +6661,20 @@ packages:
resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==} resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@unbird/eventa@0.0.5':
resolution: {integrity: sha512-2v9agB95DRBcvS2Wsa6E3PVvnvDMYYN9lawrEBJlcFUmybjVpAQW3l8qusPMGVLMPxuvYopxGUHg5N0QK/9Whg==}
peerDependencies:
electron: '>=30'
h3: 2.0.0-beta.1
web-worker: ^1.5.0
peerDependenciesMeta:
electron:
optional: true
h3:
optional: true
web-worker:
optional: true
'@ungap/structured-clone@1.3.0': '@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
@@ -16839,14 +16801,6 @@ snapshots:
'@ffmpeg-installer/win32-x64@4.1.0': '@ffmpeg-installer/win32-x64@4.1.0':
optional: true optional: true
'@ffmpeg/ffmpeg@0.12.15':
dependencies:
'@ffmpeg/types': 0.12.4
'@ffmpeg/types@0.12.4': {}
'@ffmpeg/util@0.12.2': {}
'@floating-ui/core@1.6.8': '@floating-ui/core@1.6.8':
dependencies: dependencies:
'@floating-ui/utils': 0.2.9 '@floating-ui/utils': 0.2.9
@@ -17280,33 +17234,6 @@ snapshots:
'@intlify/shared@11.1.11': {} '@intlify/shared@11.1.11': {}
'@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.20)(eslint@9.34.0(jiti@2.5.1))(rollup@2.79.2)(typescript@5.9.2)(vue-i18n@11.1.11(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))':
dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1))
'@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.11(vue@3.5.20(typescript@5.9.2)))
'@intlify/shared': 11.1.11
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.20)(vue-i18n@11.1.11(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))
'@rollup/pluginutils': 5.2.0(rollup@2.79.2)
'@typescript-eslint/scope-manager': 8.41.0
'@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2)
debug: 4.4.1
fast-glob: 3.3.3
js-yaml: 4.1.0
json5: 2.2.3
pathe: 1.1.2
picocolors: 1.1.1
source-map-js: 1.2.1
unplugin: 1.16.1
vue: 3.5.20(typescript@5.9.2)
optionalDependencies:
vue-i18n: 11.1.11(vue@3.5.20(typescript@5.9.2))
transitivePeerDependencies:
- '@vue/compiler-dom'
- eslint
- rollup
- supports-color
- typescript
'@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.20)(eslint@9.34.0(jiti@2.5.1))(rollup@4.49.0)(typescript@5.9.2)(vue-i18n@11.1.11(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))': '@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.20)(eslint@9.34.0(jiti@2.5.1))(rollup@4.49.0)(typescript@5.9.2)(vue-i18n@11.1.11(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1))
@@ -17960,63 +17887,6 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- magicast - magicast
'@nuxt/vite-builder@4.0.3(@types/node@24.3.0)(eslint@9.34.0(jiti@2.5.1))(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.34)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2))(yaml@2.8.1)':
dependencies:
'@nuxt/kit': 4.0.3(magicast@0.3.5)
'@rollup/plugin-replace': 6.0.2(rollup@2.79.2)
'@vitejs/plugin-vue': 6.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.20(typescript@5.9.2))
'@vitejs/plugin-vue-jsx': 5.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.20(typescript@5.9.2))
autoprefixer: 10.4.21(postcss@8.5.6)
consola: 3.4.2
cssnano: 7.1.1(postcss@8.5.6)
defu: 6.1.4
esbuild: 0.25.9
escape-string-regexp: 5.0.0
exsolve: 1.0.7
get-port-please: 3.2.0
h3: 1.15.4
jiti: 2.5.1
knitwork: 1.2.0
magic-string: 0.30.18
mlly: 1.8.0
mocked-exports: 0.1.1
pathe: 2.0.3
pkg-types: 2.3.0
postcss: 8.5.6
rollup-plugin-visualizer: 6.0.3(rolldown@1.0.0-beta.34)(rollup@2.79.2)
std-env: 3.9.0
ufo: 1.6.1
unenv: 2.0.0-rc.19
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
vite-plugin-checker: 0.10.3(eslint@9.34.0(jiti@2.5.1))(optionator@0.9.4)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vue-tsc@3.0.6(typescript@5.9.2))
vue: 3.5.20(typescript@5.9.2)
vue-bundle-renderer: 2.1.2
transitivePeerDependencies:
- '@biomejs/biome'
- '@types/node'
- eslint
- less
- lightningcss
- magicast
- meow
- optionator
- rolldown
- rollup
- sass
- sass-embedded
- stylelint
- stylus
- sugarss
- supports-color
- terser
- tsx
- typescript
- vls
- vti
- vue-tsc
- yaml
'@nuxt/vite-builder@4.0.3(@types/node@24.3.0)(eslint@9.34.0(jiti@2.5.1))(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.34)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2))(yaml@2.8.1)': '@nuxt/vite-builder@4.0.3(@types/node@24.3.0)(eslint@9.34.0(jiti@2.5.1))(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.34)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2))(yaml@2.8.1)':
dependencies: dependencies:
'@nuxt/kit': 4.0.3(magicast@0.3.5) '@nuxt/kit': 4.0.3(magicast@0.3.5)
@@ -19626,13 +19496,6 @@ snapshots:
magic-string: 0.25.9 magic-string: 0.25.9
rollup: 2.79.2 rollup: 2.79.2
'@rollup/plugin-replace@6.0.2(rollup@2.79.2)':
dependencies:
'@rollup/pluginutils': 5.2.0(rollup@2.79.2)
magic-string: 0.30.18
optionalDependencies:
rollup: 2.79.2
'@rollup/plugin-replace@6.0.2(rollup@4.49.0)': '@rollup/plugin-replace@6.0.2(rollup@4.49.0)':
dependencies: dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.49.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
@@ -20316,6 +20179,13 @@ snapshots:
'@typescript-eslint/types': 8.41.0 '@typescript-eslint/types': 8.41.0
eslint-visitor-keys: 4.2.1 eslint-visitor-keys: 4.2.1
'@unbird/eventa@0.0.5(web-worker@1.5.0)':
dependencies:
nanoid: 5.1.5
picomatch: 4.0.3
optionalDependencies:
web-worker: 1.5.0
'@ungap/structured-clone@1.3.0': {} '@ungap/structured-clone@1.3.0': {}
'@unhead/vue@2.0.14(vue@3.5.20(typescript@5.9.2))': '@unhead/vue@2.0.14(vue@3.5.20(typescript@5.9.2))':
@@ -21882,108 +21752,6 @@ snapshots:
astring@1.9.0: {} astring@1.9.0: {}
astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1):
dependencies:
'@astrojs/compiler': 2.12.2
'@astrojs/internal-helpers': 0.6.1
'@astrojs/markdown-remark': 6.3.2
'@astrojs/telemetry': 3.3.0
'@capsizecss/unpack': 2.4.0(encoding@0.1.13)
'@oslojs/encoding': 1.1.0
'@rollup/pluginutils': 5.2.0(rollup@2.79.2)
acorn: 8.15.0
aria-query: 5.3.2
axobject-query: 4.1.0
boxen: 8.0.1
ci-info: 4.3.0
clsx: 2.1.1
common-ancestor-path: 1.0.1
cookie: 1.0.2
cssesc: 3.0.0
debug: 4.4.1
deterministic-object-hash: 2.0.2
devalue: 5.3.2
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.4
es-module-lexer: 1.7.0
esbuild: 0.25.9
estree-walker: 3.0.3
flattie: 1.1.1
fontace: 0.3.0
github-slugger: 2.0.0
html-escaper: 3.0.3
http-cache-semantics: 4.2.0
import-meta-resolve: 4.1.0
js-yaml: 4.1.0
kleur: 4.1.5
magic-string: 0.30.18
magicast: 0.3.5
mrmime: 2.0.1
neotraverse: 0.6.18
p-limit: 6.2.0
p-queue: 8.1.0
package-manager-detector: 1.3.0
picomatch: 4.0.3
prompts: 2.4.2
rehype: 13.0.2
semver: 7.7.2
shiki: 3.12.0
tinyexec: 0.3.2
tinyglobby: 0.2.14
tsconfck: 3.1.6(typescript@5.9.2)
ultrahtml: 1.6.0
unifont: 0.5.2
unist-util-visit: 5.0.0
unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0)
vfile: 6.0.3
vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
vitefu: 1.1.1(vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
yocto-spinner: 0.2.3
zod: 3.25.76
zod-to-json-schema: 3.24.6(zod@3.25.76)
zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76)
optionalDependencies:
sharp: 0.33.5
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
- '@azure/data-tables'
- '@azure/identity'
- '@azure/keyvault-secrets'
- '@azure/storage-blob'
- '@capacitor/preferences'
- '@deno/kv'
- '@netlify/blobs'
- '@planetscale/database'
- '@types/node'
- '@upstash/redis'
- '@vercel/blob'
- '@vercel/functions'
- '@vercel/kv'
- aws4fetch
- db0
- encoding
- idb-keyval
- ioredis
- jiti
- less
- lightningcss
- rollup
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
- tsx
- typescript
- uploadthing
- yaml
optional: true
astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1):
dependencies: dependencies:
'@astrojs/compiler': 2.12.2 '@astrojs/compiler': 2.12.2
@@ -22086,108 +21854,6 @@ snapshots:
- yaml - yaml
optional: true optional: true
astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1):
dependencies:
'@astrojs/compiler': 2.12.2
'@astrojs/internal-helpers': 0.6.1
'@astrojs/markdown-remark': 6.3.2
'@astrojs/telemetry': 3.3.0
'@capsizecss/unpack': 2.4.0(encoding@0.1.13)
'@oslojs/encoding': 1.1.0
'@rollup/pluginutils': 5.2.0(rollup@4.49.0)
acorn: 8.15.0
aria-query: 5.3.2
axobject-query: 4.1.0
boxen: 8.0.1
ci-info: 4.3.0
clsx: 2.1.1
common-ancestor-path: 1.0.1
cookie: 1.0.2
cssesc: 3.0.0
debug: 4.4.1
deterministic-object-hash: 2.0.2
devalue: 5.3.2
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.4
es-module-lexer: 1.7.0
esbuild: 0.25.9
estree-walker: 3.0.3
flattie: 1.1.1
fontace: 0.3.0
github-slugger: 2.0.0
html-escaper: 3.0.3
http-cache-semantics: 4.2.0
import-meta-resolve: 4.1.0
js-yaml: 4.1.0
kleur: 4.1.5
magic-string: 0.30.18
magicast: 0.3.5
mrmime: 2.0.1
neotraverse: 0.6.18
p-limit: 6.2.0
p-queue: 8.1.0
package-manager-detector: 1.3.0
picomatch: 4.0.3
prompts: 2.4.2
rehype: 13.0.2
semver: 7.7.2
shiki: 3.12.0
tinyexec: 0.3.2
tinyglobby: 0.2.14
tsconfck: 3.1.6(typescript@5.9.2)
ultrahtml: 1.6.0
unifont: 0.5.2
unist-util-visit: 5.0.0
unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0)
vfile: 6.0.3
vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
vitefu: 1.1.1(vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
yocto-spinner: 0.2.3
zod: 3.25.76
zod-to-json-schema: 3.24.6(zod@3.25.76)
zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76)
optionalDependencies:
sharp: 0.33.5
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
- '@azure/data-tables'
- '@azure/identity'
- '@azure/keyvault-secrets'
- '@azure/storage-blob'
- '@capacitor/preferences'
- '@deno/kv'
- '@netlify/blobs'
- '@planetscale/database'
- '@types/node'
- '@upstash/redis'
- '@vercel/blob'
- '@vercel/functions'
- '@vercel/kv'
- aws4fetch
- db0
- encoding
- idb-keyval
- ioredis
- jiti
- less
- lightningcss
- rollup
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
- tsx
- typescript
- uploadthing
- yaml
optional: true
async-mutex@0.3.2: async-mutex@0.3.2:
dependencies: dependencies:
tslib: 2.8.1 tslib: 2.8.1
@@ -26785,7 +26451,7 @@ snapshots:
dependencies: dependencies:
boolbase: 1.0.0 boolbase: 1.0.0
nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.3.0)(@vue/compiler-sfc@3.5.20)(bufferutil@4.0.9)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.34.0(jiti@2.5.1))(ioredis@5.7.0)(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(utf-8-validate@5.0.10)(vue-tsc@3.0.6(typescript@5.9.2))(xml2js@0.6.2)(yaml@2.8.1): nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.3.0)(@vue/compiler-sfc@3.5.20)(bufferutil@4.0.9)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.34.0(jiti@2.5.1))(ioredis@5.7.0)(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(utf-8-validate@5.0.10)(vue-tsc@3.0.6(typescript@5.9.2))(xml2js@0.6.2)(yaml@2.8.1):
dependencies: dependencies:
'@nuxt/cli': 3.28.0(magicast@0.3.5) '@nuxt/cli': 3.28.0(magicast@0.3.5)
'@nuxt/devalue': 2.0.2 '@nuxt/devalue': 2.0.2
@@ -26793,7 +26459,7 @@ snapshots:
'@nuxt/kit': 4.0.3(magicast@0.3.5) '@nuxt/kit': 4.0.3(magicast@0.3.5)
'@nuxt/schema': 4.0.3 '@nuxt/schema': 4.0.3
'@nuxt/telemetry': 2.6.6(magicast@0.3.5) '@nuxt/telemetry': 2.6.6(magicast@0.3.5)
'@nuxt/vite-builder': 4.0.3(@types/node@24.3.0)(eslint@9.34.0(jiti@2.5.1))(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.34)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2))(yaml@2.8.1) '@nuxt/vite-builder': 4.0.3(@types/node@24.3.0)(eslint@9.34.0(jiti@2.5.1))(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.34)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2))(yaml@2.8.1)
'@unhead/vue': 2.0.14(vue@3.5.20(typescript@5.9.2)) '@unhead/vue': 2.0.14(vue@3.5.20(typescript@5.9.2))
'@vue/shared': 3.5.20 '@vue/shared': 3.5.20
c12: 3.2.0(magicast@0.3.5) c12: 3.2.0(magicast@0.3.5)
@@ -28808,15 +28474,6 @@ snapshots:
'@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.34 '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.34
'@rolldown/binding-win32-x64-msvc': 1.0.0-beta.34 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.34
rollup-plugin-visualizer@5.11.0(rollup@2.79.2):
dependencies:
open: 8.4.2
picomatch: 2.3.1
source-map: 0.7.4
yargs: 17.7.2
optionalDependencies:
rollup: 2.79.2
rollup-plugin-visualizer@5.11.0(rollup@4.49.0): rollup-plugin-visualizer@5.11.0(rollup@4.49.0):
dependencies: dependencies:
open: 8.4.2 open: 8.4.2
@@ -28826,16 +28483,6 @@ snapshots:
optionalDependencies: optionalDependencies:
rollup: 4.49.0 rollup: 4.49.0
rollup-plugin-visualizer@6.0.3(rolldown@1.0.0-beta.34)(rollup@2.79.2):
dependencies:
open: 8.4.2
picomatch: 4.0.3
source-map: 0.7.4
yargs: 17.7.2
optionalDependencies:
rolldown: 1.0.0-beta.34
rollup: 2.79.2
rollup-plugin-visualizer@6.0.3(rolldown@1.0.0-beta.34)(rollup@4.49.0): rollup-plugin-visualizer@6.0.3(rolldown@1.0.0-beta.34)(rollup@4.49.0):
dependencies: dependencies:
open: 8.4.2 open: 8.4.2
@@ -30102,14 +29749,6 @@ snapshots:
unpipe@1.0.0: {} unpipe@1.0.0: {}
unplugin-combine@1.2.1(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2)(unplugin@1.16.1):
optionalDependencies:
esbuild: 0.25.9
rolldown: 1.0.0-beta.34
rollup: 2.79.2
unplugin: 1.16.1
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
unplugin-combine@1.2.1(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(unplugin@1.16.1): unplugin-combine@1.2.1(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(unplugin@1.16.1):
optionalDependencies: optionalDependencies:
esbuild: 0.25.9 esbuild: 0.25.9
@@ -30118,21 +29757,6 @@ snapshots:
unplugin: 1.16.1 unplugin: 1.16.1
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
unplugin-info@1.2.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rollup@2.79.2):
dependencies:
ci-info: 4.3.0
git-url-parse: 16.1.0
simple-git: 3.28.0
unplugin: 2.3.9
optionalDependencies:
'@nuxt/kit': 4.0.3(magicast@0.3.5)
'@nuxt/schema': 4.0.3
esbuild: 0.25.9
rollup: 2.79.2
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
unplugin-info@1.2.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rollup@4.49.0): unplugin-info@1.2.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rollup@4.49.0):
dependencies: dependencies:
ci-info: 4.3.0 ci-info: 4.3.0
@@ -30201,52 +29825,6 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- vue - vue
unplugin-vue-macros@2.14.5(@vueuse/core@13.8.0(vue@3.5.20(typescript@5.9.2)))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2)):
dependencies:
'@vue-macros/better-define': 1.11.4(vue@3.5.20(typescript@5.9.2))
'@vue-macros/boolean-prop': 0.5.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/chain-call': 0.4.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/common': 1.16.1(vue@3.5.20(typescript@5.9.2))
'@vue-macros/config': 0.6.1(vue@3.5.20(typescript@5.9.2))
'@vue-macros/define-emit': 0.5.4(vue@3.5.20(typescript@5.9.2))
'@vue-macros/define-models': 1.3.5(@vueuse/core@13.8.0(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))
'@vue-macros/define-prop': 0.6.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/define-props': 4.0.6(@vue-macros/reactivity-transform@1.1.6(vue@3.5.20(typescript@5.9.2)))(vue@3.5.20(typescript@5.9.2))
'@vue-macros/define-props-refs': 1.3.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/define-render': 1.6.6(vue@3.5.20(typescript@5.9.2))
'@vue-macros/define-slots': 1.2.6(vue@3.5.20(typescript@5.9.2))
'@vue-macros/define-stylex': 0.2.3(vue@3.5.20(typescript@5.9.2))
'@vue-macros/devtools': 0.4.1(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(typescript@5.9.2)
'@vue-macros/export-expose': 0.3.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/export-props': 0.6.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/export-render': 0.3.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/hoist-static': 1.7.0(vue@3.5.20(typescript@5.9.2))
'@vue-macros/jsx-directive': 0.10.6(typescript@5.9.2)
'@vue-macros/named-template': 0.5.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/reactivity-transform': 1.1.6(vue@3.5.20(typescript@5.9.2))
'@vue-macros/script-lang': 0.2.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/setup-block': 0.4.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/setup-component': 0.18.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/setup-sfc': 0.18.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/short-bind': 1.1.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/short-emits': 1.6.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/short-vmodel': 1.5.5(vue@3.5.20(typescript@5.9.2))
'@vue-macros/volar': 0.30.15(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2))
unplugin: 1.16.1
unplugin-combine: 1.2.1(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2)(unplugin@1.16.1)
unplugin-vue-define-options: 1.5.5(vue@3.5.20(typescript@5.9.2))
vue: 3.5.20(typescript@5.9.2)
transitivePeerDependencies:
- '@rspack/core'
- '@vueuse/core'
- esbuild
- rolldown
- rollup
- typescript
- vite
- vue-tsc
- webpack
unplugin-vue-macros@2.14.5(@vueuse/core@13.8.0(vue@3.5.20(typescript@5.9.2)))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2)): unplugin-vue-macros@2.14.5(@vueuse/core@13.8.0(vue@3.5.20(typescript@5.9.2)))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(typescript@5.9.2)(vue-tsc@3.0.6(typescript@5.9.2))(vue@3.5.20(typescript@5.9.2)):
dependencies: dependencies:
'@vue-macros/better-define': 1.11.4(vue@3.5.20(typescript@5.9.2)) '@vue-macros/better-define': 1.11.4(vue@3.5.20(typescript@5.9.2))
@@ -30339,20 +29917,6 @@ snapshots:
- tsx - tsx
- yaml - yaml
unplugin-yaml@3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2):
dependencies:
'@rollup/pluginutils': 5.2.0(rollup@2.79.2)
unplugin: 2.3.9
yaml: 2.8.1
optionalDependencies:
'@nuxt/kit': 4.0.3(magicast@0.3.5)
'@nuxt/schema': 4.0.3
astro: 5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1)
esbuild: 0.25.9
rolldown: 1.0.0-beta.34
rollup: 2.79.2
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
unplugin-yaml@3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0): unplugin-yaml@3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0):
dependencies: dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.49.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
@@ -30381,20 +29945,6 @@ snapshots:
rollup: 4.49.0 rollup: 4.49.0
vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
unplugin-yaml@3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown@1.0.0-beta.34)(rollup@4.49.0)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)):
dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.49.0)
unplugin: 2.3.9
yaml: 2.8.1
optionalDependencies:
'@nuxt/kit': 4.0.3(magicast@0.3.5)
'@nuxt/schema': 4.0.3
astro: 5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1)
esbuild: 0.25.9
rolldown: 1.0.0-beta.34
rollup: 4.49.0
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
unplugin-yaml@3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown@1.0.0-beta.34)(rollup@4.49.0)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): unplugin-yaml@3.0.4(@nuxt/kit@4.0.3(magicast@0.3.5))(@nuxt/schema@4.0.3)(astro@5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1))(esbuild@0.25.9)(rolldown@1.0.0-beta.34)(rollup@4.49.0)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)):
dependencies: dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.49.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
@@ -30403,7 +29953,7 @@ snapshots:
optionalDependencies: optionalDependencies:
'@nuxt/kit': 4.0.3(magicast@0.3.5) '@nuxt/kit': 4.0.3(magicast@0.3.5)
'@nuxt/schema': 4.0.3 '@nuxt/schema': 4.0.3
astro: 5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) astro: 5.10.1(@netlify/blobs@9.1.2)(@types/node@24.3.0)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(encoding@0.1.13)(ioredis@5.7.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1)
esbuild: 0.25.9 esbuild: 0.25.9
rolldown: 1.0.0-beta.34 rolldown: 1.0.0-beta.34
rollup: 4.49.0 rollup: 4.49.0
@@ -30576,16 +30126,6 @@ snapshots:
'@types/unist': 3.0.3 '@types/unist': 3.0.3
vfile-message: 4.0.2 vfile-message: 4.0.2
vite-bundle-visualizer@1.2.1(rollup@2.79.2):
dependencies:
cac: 6.7.14
import-from-esm: 1.3.3
rollup-plugin-visualizer: 5.11.0(rollup@2.79.2)
tmp: 0.2.3
transitivePeerDependencies:
- rollup
- supports-color
vite-bundle-visualizer@1.2.1(rollup@4.49.0): vite-bundle-visualizer@1.2.1(rollup@4.49.0):
dependencies: dependencies:
cac: 6.7.14 cac: 6.7.14
@@ -30778,21 +30318,6 @@ snapshots:
- supports-color - supports-color
- vue - vue
vite-plugin-vue-devtools@8.0.1(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.20(typescript@5.9.2)):
dependencies:
'@vue/devtools-core': 8.0.1(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vue@3.5.20(typescript@5.9.2))
'@vue/devtools-kit': 8.0.1
'@vue/devtools-shared': 8.0.1
execa: 9.6.0
sirv: 3.0.1
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)
vite-plugin-inspect: 11.3.3(@nuxt/kit@4.0.3(magicast@0.3.5))(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))
vite-plugin-vue-inspector: 5.3.2(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))
transitivePeerDependencies:
- '@nuxt/kit'
- supports-color
- vue
vite-plugin-vue-inspector@5.3.2(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): vite-plugin-vue-inspector@5.3.2(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)):
dependencies: dependencies:
'@babel/core': 7.28.3 '@babel/core': 7.28.3
@@ -31033,11 +30558,11 @@ snapshots:
'@vue/devtools-api': 6.6.4 '@vue/devtools-api': 6.6.4
vue: 3.5.20(typescript@5.9.2) vue: 3.5.20(typescript@5.9.2)
vue-sonner@2.0.8(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.3.0)(@vue/compiler-sfc@3.5.20)(bufferutil@4.0.9)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.34.0(jiti@2.5.1))(ioredis@5.7.0)(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(utf-8-validate@5.0.10)(vue-tsc@3.0.6(typescript@5.9.2))(xml2js@0.6.2)(yaml@2.8.1): vue-sonner@2.0.8(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.3.0)(@vue/compiler-sfc@3.5.20)(bufferutil@4.0.9)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.34.0(jiti@2.5.1))(ioredis@5.7.0)(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(utf-8-validate@5.0.10)(vue-tsc@3.0.6(typescript@5.9.2))(xml2js@0.6.2)(yaml@2.8.1):
dependencies: dependencies:
'@nuxt/kit': 4.0.3(magicast@0.3.5) '@nuxt/kit': 4.0.3(magicast@0.3.5)
'@nuxt/schema': 4.0.3 '@nuxt/schema': 4.0.3
nuxt: 4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.3.0)(@vue/compiler-sfc@3.5.20)(bufferutil@4.0.9)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.34.0(jiti@2.5.1))(ioredis@5.7.0)(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@2.79.2)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(utf-8-validate@5.0.10)(vue-tsc@3.0.6(typescript@5.9.2))(xml2js@0.6.2)(yaml@2.8.1) nuxt: 4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.3.0)(@vue/compiler-sfc@3.5.20)(bufferutil@4.0.9)(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.34.0(jiti@2.5.1))(ioredis@5.7.0)(less@4.4.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(jiti@2.5.1)(less@4.4.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(rolldown@1.0.0-beta.34)(rollup@4.49.0)(terser@5.43.1)(tsx@4.20.5)(typescript@5.9.2)(utf-8-validate@5.0.10)(vue-tsc@3.0.6(typescript@5.9.2))(xml2js@0.6.2)(yaml@2.8.1)
transitivePeerDependencies: transitivePeerDependencies:
- '@azure/app-configuration' - '@azure/app-configuration'
- '@azure/cosmos' - '@azure/cosmos'