Add Sound implementation
This commit is contained in:
parent
7b17c46987
commit
e47dbc5ab5
|
@ -22,9 +22,9 @@
|
||||||
"@sentry/tracing": "7.17.2",
|
"@sentry/tracing": "7.17.2",
|
||||||
"@sentry/vue": "7.17.2",
|
"@sentry/vue": "7.17.2",
|
||||||
"@vue/runtime-core": "3.2.41",
|
"@vue/runtime-core": "3.2.41",
|
||||||
"@vueuse/core": "9.1.1",
|
"@vueuse/core": "9.3.0",
|
||||||
"@vueuse/integrations": "9.1.1",
|
"@vueuse/integrations": "9.3.0",
|
||||||
"@vueuse/router": "9.1.1",
|
"@vueuse/router": "9.3.0",
|
||||||
"axios": "0.27.2",
|
"axios": "0.27.2",
|
||||||
"axios-auth-refresh": "3.3.4",
|
"axios-auth-refresh": "3.3.4",
|
||||||
"diff": "5.1.0",
|
"diff": "5.1.0",
|
||||||
|
@ -36,13 +36,13 @@
|
||||||
"lodash-es": "4.17.21",
|
"lodash-es": "4.17.21",
|
||||||
"moment": "2.29.4",
|
"moment": "2.29.4",
|
||||||
"qs": "6.11.0",
|
"qs": "6.11.0",
|
||||||
"sass": "1.54.9",
|
|
||||||
"showdown": "2.1.0",
|
"showdown": "2.1.0",
|
||||||
"standardized-audio-context": "^25.3.32",
|
"standardized-audio-context": "25.3.32",
|
||||||
"text-clipper": "2.2.0",
|
"text-clipper": "2.2.0",
|
||||||
"transliteration": "2.3.5",
|
"transliteration": "2.3.5",
|
||||||
"universal-cookie": "4.0.4",
|
"universal-cookie": "4.0.4",
|
||||||
"vue": "3.2.41",
|
"vue": "3.2.41",
|
||||||
|
"vue": "3.2.40",
|
||||||
"vue-gettext": "2.1.12",
|
"vue-gettext": "2.1.12",
|
||||||
"vue-router": "4.1.6",
|
"vue-router": "4.1.6",
|
||||||
"vue-upload-component": "3.1.2",
|
"vue-upload-component": "3.1.2",
|
||||||
|
@ -74,24 +74,25 @@
|
||||||
"@vue/test-utils": "2.2.1",
|
"@vue/test-utils": "2.2.1",
|
||||||
"@vue/tsconfig": "0.1.3",
|
"@vue/tsconfig": "0.1.3",
|
||||||
"easygettext": "2.17.0",
|
"easygettext": "2.17.0",
|
||||||
"eslint": "8.23.1",
|
"eslint": "8.24.0",
|
||||||
"eslint-config-standard": "17.0.0",
|
"eslint-config-standard": "17.0.0",
|
||||||
"eslint-plugin-html": "7.1.0",
|
"eslint-plugin-html": "7.1.0",
|
||||||
"eslint-plugin-import": "2.26.0",
|
"eslint-plugin-import": "2.26.0",
|
||||||
"eslint-plugin-n": "15.2.5",
|
"eslint-plugin-n": "15.3.0",
|
||||||
"eslint-plugin-node": "11.1.0",
|
"eslint-plugin-node": "11.1.0",
|
||||||
"eslint-plugin-promise": "6.0.1",
|
"eslint-plugin-promise": "6.0.1",
|
||||||
"eslint-plugin-vue": "9.4.0",
|
"eslint-plugin-vue": "9.6.0",
|
||||||
"jsdom": "20.0.1",
|
"jsdom": "20.0.1",
|
||||||
"moxios": "0.4.0",
|
"moxios": "0.4.0",
|
||||||
|
"sass": "1.55.0",
|
||||||
"sinon": "14.0.1",
|
"sinon": "14.0.1",
|
||||||
"typescript": "4.8.4",
|
"typescript": "4.8.4",
|
||||||
"utility-types": "3.10.0",
|
"utility-types": "3.10.0",
|
||||||
"vite": "3.0.9",
|
"vite": "3.1.6",
|
||||||
"vite-plugin-pwa": "0.12.4",
|
"vite-plugin-pwa": "0.13.1",
|
||||||
"vite-plugin-vue-inspector": "1.1.3",
|
"vite-plugin-vue-inspector": "1.1.3",
|
||||||
"vitest": "0.22.1",
|
"vitest": "0.24.0",
|
||||||
"vue-tsc": "0.40.13",
|
"vue-tsc": "1.0.0",
|
||||||
"workbox-core": "6.5.4",
|
"workbox-core": "6.5.4",
|
||||||
"workbox-precaching": "6.5.4",
|
"workbox-precaching": "6.5.4",
|
||||||
"workbox-routing": "6.5.4",
|
"workbox-routing": "6.5.4",
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { registerSoundImplementation } from '~/api/player'
|
||||||
|
|
||||||
|
window.funkwhale = {
|
||||||
|
registerSoundImplementation
|
||||||
|
}
|
|
@ -0,0 +1,113 @@
|
||||||
|
import type { IAudioContext, IAudioNode } from 'standardized-audio-context'
|
||||||
|
|
||||||
|
import { createAudioSource } from '~/composables/audio/audio-api'
|
||||||
|
import { reactive, ref, type Ref } from 'vue'
|
||||||
|
import { createEventHook, refDefault, type EventHookOn } from '@vueuse/shared'
|
||||||
|
import { useEventListener } from '@vueuse/core'
|
||||||
|
|
||||||
|
export interface SoundSource {
|
||||||
|
uuid: string
|
||||||
|
mimetype: string
|
||||||
|
url: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Sound {
|
||||||
|
preload(): void | Promise<void>
|
||||||
|
dispose(): void
|
||||||
|
|
||||||
|
readonly audioNode: IAudioNode<IAudioContext>
|
||||||
|
readonly isLoaded: Ref<boolean>
|
||||||
|
readonly currentTime: number
|
||||||
|
readonly duration: number
|
||||||
|
readonly buffered: number
|
||||||
|
|
||||||
|
play(): void | Promise<void>
|
||||||
|
pause(): void | Promise<void>
|
||||||
|
|
||||||
|
seekTo(seconds: number): void | Promise<void>
|
||||||
|
seekBy(seconds: number): void | Promise<void>
|
||||||
|
|
||||||
|
onSoundEnd: EventHookOn<Sound>
|
||||||
|
}
|
||||||
|
|
||||||
|
export const soundImplementations = reactive(new Set<Constructor<Sound>>())
|
||||||
|
|
||||||
|
export const registerSoundImplementation = <T extends Constructor<Sound>>(implementation: T) => {
|
||||||
|
soundImplementations.add(implementation)
|
||||||
|
return implementation
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default Sound implementation
|
||||||
|
@registerSoundImplementation
|
||||||
|
export class HTMLSound implements Sound {
|
||||||
|
#audio = new Audio()
|
||||||
|
#soundEndEventHook = createEventHook<HTMLSound>()
|
||||||
|
|
||||||
|
readonly isLoaded = ref(false)
|
||||||
|
|
||||||
|
audioNode = createAudioSource(this.#audio)
|
||||||
|
onSoundEnd: EventHookOn<HTMLSound>
|
||||||
|
|
||||||
|
constructor (sources: SoundSource[]) {
|
||||||
|
// TODO: Quality picker
|
||||||
|
this.#audio.src = sources[0].url
|
||||||
|
this.#audio.preload = 'auto'
|
||||||
|
|
||||||
|
useEventListener(this.#audio, 'ended', () => this.#soundEndEventHook.trigger(this))
|
||||||
|
useEventListener(this.#audio, 'loadeddata', () => {
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState
|
||||||
|
this.isLoaded.value = this.#audio.readyState >= 2
|
||||||
|
})
|
||||||
|
|
||||||
|
this.onSoundEnd = this.#soundEndEventHook.on
|
||||||
|
}
|
||||||
|
|
||||||
|
preload () {
|
||||||
|
this.#audio.load()
|
||||||
|
}
|
||||||
|
|
||||||
|
dispose () {
|
||||||
|
this.audioNode.disconnect()
|
||||||
|
}
|
||||||
|
|
||||||
|
async play () {
|
||||||
|
this.#audio.play()
|
||||||
|
}
|
||||||
|
|
||||||
|
async pause () {
|
||||||
|
this.#audio.pause()
|
||||||
|
}
|
||||||
|
|
||||||
|
async seekTo (seconds: number) {
|
||||||
|
this.#audio.currentTime = seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
async seekBy (seconds: number) {
|
||||||
|
this.#audio.currentTime += seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
get duration () {
|
||||||
|
const { duration } = this.#audio
|
||||||
|
return isNaN(duration) ? 0 : duration
|
||||||
|
}
|
||||||
|
|
||||||
|
get buffered () {
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Web/Guide/Audio_and_video_delivery/buffering_seeking_time_ranges#creating_our_own_buffering_feedback
|
||||||
|
if (this.duration > 0) {
|
||||||
|
const { length } = this.#audio.buffered
|
||||||
|
for (let i = 0; i < length; i++) {
|
||||||
|
if (this.#audio.buffered.start(length - 1 - i) < this.#audio.currentTime) {
|
||||||
|
return this.#audio.buffered.end(length - 1 - i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
get currentTime () {
|
||||||
|
return this.#audio.currentTime
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const soundImplementation = refDefault(ref<Constructor<Sound>>(), HTMLSound)
|
|
@ -1,13 +1,29 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { initializeFirstTrack, isPlaying, _seekEnd } from '~/composables/audio/player'
|
import {
|
||||||
|
LoopingMode,
|
||||||
|
initializeFirstTrack,
|
||||||
|
isPlaying,
|
||||||
|
mute,
|
||||||
|
volume,
|
||||||
|
toggleLooping,
|
||||||
|
looping,
|
||||||
|
seekBy,
|
||||||
|
seekTo,
|
||||||
|
currentTime,
|
||||||
|
duration,
|
||||||
|
progress,
|
||||||
|
bufferProgress,
|
||||||
|
loading as isLoadingAudio
|
||||||
|
} from '~/composables/audio/player'
|
||||||
|
|
||||||
import { useMouse, useWindowSize } from '@vueuse/core'
|
import { useMouse, useWindowSize } from '@vueuse/core'
|
||||||
import { useGettext } from 'vue3-gettext'
|
import { useGettext } from 'vue3-gettext'
|
||||||
import { computed, ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
import { useStore } from '~/store'
|
import { useStore } from '~/store'
|
||||||
|
|
||||||
import onKeyboardShortcut from '~/composables/onKeyboardShortcut'
|
import onKeyboardShortcut from '~/composables/onKeyboardShortcut'
|
||||||
import usePlayer from '~/composables/audio/usePlayer'
|
|
||||||
import useQueue from '~/composables/audio/useQueue'
|
import useQueue from '~/composables/audio/useQueue'
|
||||||
|
import time from '~/utils/time'
|
||||||
|
|
||||||
import TrackFavoriteIcon from '~/components/favorites/TrackFavoriteIcon.vue'
|
import TrackFavoriteIcon from '~/components/favorites/TrackFavoriteIcon.vue'
|
||||||
import TrackPlaylistIcon from '~/components/playlists/TrackPlaylistIcon.vue'
|
import TrackPlaylistIcon from '~/components/playlists/TrackPlaylistIcon.vue'
|
||||||
|
@ -33,40 +49,23 @@ const {
|
||||||
next
|
next
|
||||||
} = useQueue()
|
} = useQueue()
|
||||||
|
|
||||||
const {
|
|
||||||
playing,
|
|
||||||
loading: isLoadingAudio,
|
|
||||||
looping,
|
|
||||||
currentTime,
|
|
||||||
progress,
|
|
||||||
durationFormatted,
|
|
||||||
currentTimeFormatted,
|
|
||||||
bufferProgress,
|
|
||||||
duration,
|
|
||||||
toggleMute,
|
|
||||||
seek,
|
|
||||||
togglePlayback,
|
|
||||||
resume,
|
|
||||||
pause
|
|
||||||
} = usePlayer()
|
|
||||||
|
|
||||||
// Key binds
|
// Key binds
|
||||||
onKeyboardShortcut('e', toggleMobilePlayer)
|
onKeyboardShortcut('e', toggleMobilePlayer)
|
||||||
onKeyboardShortcut('p', togglePlayback)
|
onKeyboardShortcut('p', () => { isPlaying.value = !isPlaying.value })
|
||||||
onKeyboardShortcut('s', shuffle)
|
onKeyboardShortcut('s', shuffle)
|
||||||
onKeyboardShortcut('q', () => store.dispatch('queue/clean'))
|
onKeyboardShortcut('q', () => store.dispatch('queue/clean'))
|
||||||
onKeyboardShortcut('m', () => toggleMute)
|
onKeyboardShortcut('m', mute)
|
||||||
onKeyboardShortcut('l', () => store.commit('player/toggleLooping'))
|
onKeyboardShortcut('l', toggleLooping)
|
||||||
onKeyboardShortcut('f', () => store.dispatch('favorites/toggle', currentTrack.value?.id))
|
onKeyboardShortcut('f', () => store.dispatch('favorites/toggle', currentTrack.value?.id))
|
||||||
onKeyboardShortcut('escape', () => store.commit('ui/queueFocused', null))
|
onKeyboardShortcut('escape', () => store.commit('ui/queueFocused', null))
|
||||||
|
|
||||||
onKeyboardShortcut(['shift', 'up'], () => store.commit('player/incrementVolume', 0.1), true)
|
onKeyboardShortcut(['shift', 'up'], () => (volume.value += 0.1), true)
|
||||||
onKeyboardShortcut(['shift', 'down'], () => store.commit('player/incrementVolume', -0.1), true)
|
onKeyboardShortcut(['shift', 'down'], () => (volume.value -= 0.1), true)
|
||||||
|
|
||||||
onKeyboardShortcut('right', () => seek(5), true)
|
onKeyboardShortcut('right', () => seekBy(5), true)
|
||||||
onKeyboardShortcut(['shift', 'right'], () => seek(30), true)
|
onKeyboardShortcut(['shift', 'right'], () => seekBy(30), true)
|
||||||
onKeyboardShortcut('left', () => seek(-5), true)
|
onKeyboardShortcut('left', () => seekBy(-5), true)
|
||||||
onKeyboardShortcut(['shift', 'left'], () => seek(-30), true)
|
onKeyboardShortcut(['shift', 'left'], () => seekBy(-30), true)
|
||||||
|
|
||||||
onKeyboardShortcut(['ctrl', 'shift', 'left'], previous, true)
|
onKeyboardShortcut(['ctrl', 'shift', 'left'], previous, true)
|
||||||
onKeyboardShortcut(['ctrl', 'shift', 'right'], next, true)
|
onKeyboardShortcut(['ctrl', 'shift', 'right'], next, true)
|
||||||
|
@ -80,9 +79,6 @@ const labels = computed(() => ({
|
||||||
unmute: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Unmute'),
|
unmute: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Unmute'),
|
||||||
mute: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Mute'),
|
mute: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Mute'),
|
||||||
expandQueue: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Expand queue'),
|
expandQueue: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Expand queue'),
|
||||||
loopingDisabled: $pgettext('Sidebar/Player/Icon.Tooltip', 'Looping disabled. Click to switch to single-track looping.'),
|
|
||||||
loopingSingle: $pgettext('Sidebar/Player/Icon.Tooltip', 'Looping on a single track. Click to switch to whole queue looping.'),
|
|
||||||
loopingWhole: $pgettext('Sidebar/Player/Icon.Tooltip', 'Looping on whole queue. Click to disable looping.'),
|
|
||||||
shuffle: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Shuffle your queue'),
|
shuffle: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Shuffle your queue'),
|
||||||
clear: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Clear your queue'),
|
clear: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Clear your queue'),
|
||||||
addArtistContentFilter: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Hide content from this artist…')
|
addArtistContentFilter: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Hide content from this artist…')
|
||||||
|
@ -95,15 +91,24 @@ const switchTab = () => {
|
||||||
const progressBar = ref()
|
const progressBar = ref()
|
||||||
const touchProgress = (event: MouseEvent) => {
|
const touchProgress = (event: MouseEvent) => {
|
||||||
const time = ((event.clientX - ((event.target as Element).closest('.progress')?.getBoundingClientRect().left ?? 0)) / progressBar.value.offsetWidth) * duration.value
|
const time = ((event.clientX - ((event.target as Element).closest('.progress')?.getBoundingClientRect().left ?? 0)) / progressBar.value.offsetWidth) * duration.value
|
||||||
currentTime.value = time
|
seekTo(time)
|
||||||
}
|
}
|
||||||
|
|
||||||
const { x } = useMouse()
|
const { x } = useMouse({ type: 'client' })
|
||||||
const { width: screenWidth } = useWindowSize()
|
const { width: screenWidth } = useWindowSize({ includeScrollbar: false })
|
||||||
|
|
||||||
initializeFirstTrack()
|
initializeFirstTrack()
|
||||||
onKeyboardShortcut('w', () => { isPlaying.value = !isPlaying.value })
|
|
||||||
onKeyboardShortcut('9', () => { _seekEnd() })
|
const loopingTitle = computed(() => {
|
||||||
|
const mode = looping.value
|
||||||
|
return mode === LoopingMode.None
|
||||||
|
? $pgettext('Sidebar/Player/Icon.Tooltip', 'Looping disabled. Click to switch to single-track looping.')
|
||||||
|
: mode === LoopingMode.LoopTrack
|
||||||
|
? $pgettext('Sidebar/Player/Icon.Tooltip', 'Looping on a single track. Click to switch to whole queue looping.')
|
||||||
|
: $pgettext('Sidebar/Player/Icon.Tooltip', 'Looping on whole queue. Click to disable looping.')
|
||||||
|
})
|
||||||
|
|
||||||
|
const currentTimeFormatted = computed(() => time.parse(Math.round(currentTime.value)))
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -136,7 +141,7 @@ onKeyboardShortcut('9', () => { _seekEnd() })
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
class="position bar"
|
class="position bar"
|
||||||
:style="{ 'transform': `translateX(calc(${progress}% - 100%)` }"
|
:style="{ 'transform': `translateX(${progress - 100}%)` }"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
class="seek bar"
|
class="seek bar"
|
||||||
|
@ -264,11 +269,11 @@ onKeyboardShortcut('9', () => { _seekEnd() })
|
||||||
<i :class="['ui', 'large', {'disabled': !hasPrevious}, 'backward step', 'icon']" />
|
<i :class="['ui', 'large', {'disabled': !hasPrevious}, 'backward step', 'icon']" />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-if="!playing"
|
v-if="!isPlaying"
|
||||||
:title="labels.play"
|
:title="labels.play"
|
||||||
:aria-label="labels.play"
|
:aria-label="labels.play"
|
||||||
class="circular button control"
|
class="circular button control"
|
||||||
@click.prevent.stop="resume"
|
@click.prevent.stop="isPlaying = true"
|
||||||
>
|
>
|
||||||
<i :class="['ui', 'big', 'play', {'disabled': !currentTrack}, 'icon']" />
|
<i :class="['ui', 'big', 'play', {'disabled': !currentTrack}, 'icon']" />
|
||||||
</button>
|
</button>
|
||||||
|
@ -277,7 +282,7 @@ onKeyboardShortcut('9', () => { _seekEnd() })
|
||||||
:title="labels.pause"
|
:title="labels.pause"
|
||||||
:aria-label="labels.pause"
|
:aria-label="labels.pause"
|
||||||
class="circular button control"
|
class="circular button control"
|
||||||
@click.prevent.stop="pause"
|
@click.prevent.stop="isPlaying = false"
|
||||||
>
|
>
|
||||||
<i :class="['ui', 'big', 'pause', {'disabled': !currentTrack}, 'icon']" />
|
<i :class="['ui', 'big', 'pause', {'disabled': !currentTrack}, 'icon']" />
|
||||||
</button>
|
</button>
|
||||||
|
@ -297,12 +302,12 @@ onKeyboardShortcut('9', () => { _seekEnd() })
|
||||||
<template v-if="!isLoadingAudio">
|
<template v-if="!isLoadingAudio">
|
||||||
<span
|
<span
|
||||||
class="start"
|
class="start"
|
||||||
@click.stop.prevent="currentTime = 0"
|
@click.stop.prevent="seekTo(0)"
|
||||||
>
|
>
|
||||||
{{ currentTimeFormatted }}
|
{{ currentTimeFormatted }}
|
||||||
</span>
|
</span>
|
||||||
|
|
|
|
||||||
<span class="total">{{ durationFormatted }}</span>
|
<span class="total">{{ time.parse(Math.round(duration)) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -310,43 +315,24 @@ onKeyboardShortcut('9', () => { _seekEnd() })
|
||||||
<div class="group">
|
<div class="group">
|
||||||
<volume-control class="expandable" />
|
<volume-control class="expandable" />
|
||||||
<button
|
<button
|
||||||
v-if="looping === 0"
|
|
||||||
class="circular control button"
|
class="circular control button"
|
||||||
:title="labels.loopingDisabled"
|
:class="{ looping: looping !== LoopingMode.None }"
|
||||||
:aria-label="labels.loopingDisabled"
|
:title="loopingTitle"
|
||||||
|
:aria-label="loopingTitle"
|
||||||
:disabled="!currentTrack"
|
:disabled="!currentTrack"
|
||||||
@click.prevent.stop="$store.commit('player/looping', 1)"
|
@click.prevent.stop="toggleLooping"
|
||||||
>
|
>
|
||||||
<i :class="['ui', {'disabled': !currentTrack}, 'step', 'repeat', 'icon']" />
|
<i class="repeat icon">
|
||||||
</button>
|
<span
|
||||||
<button
|
v-if="looping !== LoopingMode.None"
|
||||||
v-if="looping === 1"
|
class="ui circular tiny vibrant label"
|
||||||
:title="labels.loopingSingle"
|
>
|
||||||
:aria-label="labels.loopingSingle"
|
<template v-if="looping === LoopingMode.LoopTrack">1</template>
|
||||||
:disabled="!currentTrack"
|
<template v-else-if="looping === LoopingMode.LoopQueue">∞</template>
|
||||||
class="looping circular control button"
|
</span>
|
||||||
@click.prevent.stop="$store.commit('player/looping', 2)"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="repeat icon"
|
|
||||||
>
|
|
||||||
<span class="ui circular tiny vibrant label">1</span>
|
|
||||||
</i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
v-if="looping === 2"
|
|
||||||
class="looping circular control button"
|
|
||||||
:title="labels.loopingWhole"
|
|
||||||
:aria-label="labels.loopingWhole"
|
|
||||||
:disabled="!currentTrack"
|
|
||||||
@click.prevent.stop="$store.commit('player/looping', 0)"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="repeat icon"
|
|
||||||
>
|
|
||||||
<span class="ui circular tiny vibrant label">∞</span>
|
|
||||||
</i>
|
</i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="circular control button"
|
class="circular control button"
|
||||||
:disabled="queueIsEmpty || null"
|
:disabled="queueIsEmpty || null"
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import type { IAudioContext, IMediaElementAudioSourceNode } from 'standardized-audio-context'
|
import type { IAudioContext, IAudioNode } from 'standardized-audio-context'
|
||||||
|
|
||||||
import { AudioContext } from 'standardized-audio-context'
|
import { AudioContext } from 'standardized-audio-context'
|
||||||
import { useEventListener } from '@vueuse/core'
|
import { useEventListener } from '@vueuse/core'
|
||||||
|
|
||||||
// Audio nodes
|
// Audio nodes
|
||||||
const AUDIO_CONTEXT = new AudioContext()
|
export const AUDIO_CONTEXT = new AudioContext()
|
||||||
const GAIN_NODE = AUDIO_CONTEXT.createGain()
|
export const GAIN_NODE = AUDIO_CONTEXT.createGain()
|
||||||
|
|
||||||
// Unlock AudioContext automatically
|
// Unlock AudioContext automatically
|
||||||
const UNLOCK_EVENTS = ['touchstart', 'touchend', 'mousedown', 'keydown']
|
const UNLOCK_EVENTS = ['touchstart', 'touchend', 'mousedown', 'keydown']
|
||||||
|
@ -18,14 +18,17 @@ for (const event of UNLOCK_EVENTS) {
|
||||||
|
|
||||||
// Connect Gain Node
|
// Connect Gain Node
|
||||||
GAIN_NODE.connect(AUDIO_CONTEXT.destination)
|
GAIN_NODE.connect(AUDIO_CONTEXT.destination)
|
||||||
GAIN_NODE.gain.value = 1
|
|
||||||
|
export const setGain = (value: number) => {
|
||||||
|
GAIN_NODE.gain.value = Math.max(0, Math.min(value, 1))
|
||||||
|
}
|
||||||
|
|
||||||
// TODO (wvffle): Create equalizer filters
|
// TODO (wvffle): Create equalizer filters
|
||||||
const equalizerFilters = [
|
const equalizerFilters = [
|
||||||
GAIN_NODE
|
GAIN_NODE
|
||||||
]
|
]
|
||||||
|
|
||||||
export const connectAudioSource = (sourceNode: IMediaElementAudioSourceNode<IAudioContext>) => {
|
export const connectAudioSource = (sourceNode: IAudioNode<IAudioContext>) => {
|
||||||
for (const filter of equalizerFilters) {
|
for (const filter of equalizerFilters) {
|
||||||
sourceNode.connect(filter)
|
sourceNode.connect(filter)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,24 @@
|
||||||
import { getCurrentSound, createTrack } from '~/composables/audio/tracks'
|
import { currentSound, createTrack } from '~/composables/audio/tracks'
|
||||||
import { tryOnMounted } from '@vueuse/core'
|
import { tryOnMounted, useIntervalFn, useRafFn, useStorage } from '@vueuse/core'
|
||||||
import { ref, watch } from 'vue'
|
import { computed, ref, watch, watchEffect, type Ref } from 'vue'
|
||||||
|
|
||||||
import useQueue from '~/composables/audio/useQueue'
|
import useQueue from '~/composables/audio/useQueue'
|
||||||
|
import { setGain } from './audio-api'
|
||||||
|
|
||||||
const { currentIndex } = useQueue()
|
const { currentIndex } = useQueue()
|
||||||
|
|
||||||
export const isPlaying = ref(false)
|
export const isPlaying = ref(false)
|
||||||
|
|
||||||
watch(isPlaying, (playing) => {
|
watch(isPlaying, (playing) => {
|
||||||
const sound = getCurrentSound()
|
const sound = currentSound.value
|
||||||
if (!sound) return
|
if (!sound) return
|
||||||
|
|
||||||
if (playing) {
|
if (playing) {
|
||||||
sound.audio.play()
|
sound.play()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
sound.audio.pause()
|
sound.pause()
|
||||||
})
|
})
|
||||||
|
|
||||||
// Create first track when we initalize the page
|
// Create first track when we initalize the page
|
||||||
|
@ -25,9 +26,109 @@ export const initializeFirstTrack = () => tryOnMounted(() => {
|
||||||
createTrack(currentIndex.value)
|
createTrack(currentIndex.value)
|
||||||
})
|
})
|
||||||
|
|
||||||
export const _seekEnd = () => {
|
// Volume
|
||||||
const sound = getCurrentSound()
|
const lastVolume = useStorage('player:last-volume', 0.7)
|
||||||
|
|
||||||
|
export const volume: Ref<number> = useStorage('player:volume', 0.7)
|
||||||
|
watch(volume, (to, from) => setGain(to))
|
||||||
|
|
||||||
|
export const mute = () => {
|
||||||
|
if (volume.value > 0) {
|
||||||
|
lastVolume.value = volume.value
|
||||||
|
volume.value = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lastVolume.value === 0) {
|
||||||
|
volume.value = 0.7
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
volume.value = lastVolume.value
|
||||||
|
}
|
||||||
|
|
||||||
|
// Looping
|
||||||
|
export enum LoopingMode {
|
||||||
|
None,
|
||||||
|
LoopTrack,
|
||||||
|
LoopQueue
|
||||||
|
}
|
||||||
|
|
||||||
|
const MODE_MAX = 1 + Math.max(...Object.values(LoopingMode).filter(mode => typeof mode === 'number') as number[])
|
||||||
|
|
||||||
|
export const looping: Ref<number> = useStorage('player:looping', LoopingMode.None)
|
||||||
|
export const toggleLooping = () => {
|
||||||
|
looping.value += 1
|
||||||
|
looping.value %= MODE_MAX
|
||||||
|
}
|
||||||
|
|
||||||
|
// Duration
|
||||||
|
export const duration = ref(0)
|
||||||
|
watchEffect(() => {
|
||||||
|
if (currentSound.value?.isLoaded.value) {
|
||||||
|
duration.value = currentSound.value?.duration ?? 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
duration.value = 0
|
||||||
|
})
|
||||||
|
|
||||||
|
// Current time
|
||||||
|
export const currentTime = ref(0)
|
||||||
|
useIntervalFn(() => {
|
||||||
|
const sound = currentSound.value
|
||||||
|
if (!sound) {
|
||||||
|
currentTime.value = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
currentTime.value = sound.currentTime
|
||||||
|
}, 1000)
|
||||||
|
|
||||||
|
// Seeking
|
||||||
|
export const seekBy = async (seconds: number) => {
|
||||||
|
const sound = currentSound.value
|
||||||
if (!sound) return
|
if (!sound) return
|
||||||
|
|
||||||
sound.audio.currentTime = sound.audio.duration - 3
|
await sound.seekBy(seconds)
|
||||||
|
currentTime.value = sound.currentTime
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const seekTo = async (seconds: number) => {
|
||||||
|
const sound = currentSound.value
|
||||||
|
if (!sound) return
|
||||||
|
|
||||||
|
await sound.seekTo(seconds)
|
||||||
|
currentTime.value = sound.currentTime
|
||||||
|
}
|
||||||
|
|
||||||
|
// Buffer progress
|
||||||
|
export const bufferProgress = ref(0)
|
||||||
|
useIntervalFn(() => {
|
||||||
|
const sound = currentSound.value
|
||||||
|
if (!sound) {
|
||||||
|
bufferProgress.value = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
bufferProgress.value = sound.buffered / sound.duration * 100
|
||||||
|
}, 1000)
|
||||||
|
|
||||||
|
// Progress
|
||||||
|
export const progress = ref(0)
|
||||||
|
useRafFn(() => {
|
||||||
|
const sound = currentSound.value
|
||||||
|
if (!sound) {
|
||||||
|
progress.value = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
progress.value = sound.currentTime / sound.duration * 100
|
||||||
|
})
|
||||||
|
|
||||||
|
// Loading
|
||||||
|
export const loading = computed(() => {
|
||||||
|
const sound = currentSound.value
|
||||||
|
if (!sound) return false
|
||||||
|
return !sound.isLoaded.value
|
||||||
|
})
|
||||||
|
|
|
@ -1,26 +1,24 @@
|
||||||
import type { IAudioContext, IMediaElementAudioSourceNode } from 'standardized-audio-context'
|
import type { Sound, SoundSource } from '~/api/player'
|
||||||
import type { Track, Upload } from '~/types'
|
import type { Track, Upload } from '~/types'
|
||||||
|
|
||||||
import { connectAudioSource, createAudioSource } from '~/composables/audio/audio-api'
|
import { connectAudioSource } from '~/composables/audio/audio-api'
|
||||||
import { isPlaying } from '~/composables/audio/player'
|
import { isPlaying } from '~/composables/audio/player'
|
||||||
|
import { soundImplementation } from '~/api/player'
|
||||||
|
import { computed, shallowReactive } from 'vue'
|
||||||
|
|
||||||
import useQueue from '~/composables/audio/useQueue'
|
import useQueue from '~/composables/audio/useQueue'
|
||||||
|
|
||||||
import { useEventListener } from '@vueuse/core'
|
|
||||||
|
|
||||||
import store from '~/store'
|
import store from '~/store'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
export interface SoundSource {
|
const createOnEndHandler = (sound: Sound) => () => {
|
||||||
uuid: string
|
console.log('TRACK ENDED, PLAYING NEXT')
|
||||||
mimetype: string
|
createTrack(currentIndex.value + 1)
|
||||||
url: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Sound {
|
// NOTE: We push it to the end of the job queue
|
||||||
audio: HTMLAudioElement
|
setTimeout(() => {
|
||||||
sources: SoundSource[]
|
store.dispatch('queue/next')
|
||||||
sourceNode: IMediaElementAudioSourceNode<IAudioContext>
|
}, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
const ALLOWED_PLAY_TYPES: (CanPlayTypeResult | undefined)[] = ['maybe', 'probably']
|
const ALLOWED_PLAY_TYPES: (CanPlayTypeResult | undefined)[] = ['maybe', 'probably']
|
||||||
|
@ -29,7 +27,7 @@ const AUDIO_ELEMENT = document.createElement('audio')
|
||||||
const { tracks, currentIndex } = useQueue()
|
const { tracks, currentIndex } = useQueue()
|
||||||
|
|
||||||
const soundPromises = new Map<number, Promise<Sound>>()
|
const soundPromises = new Map<number, Promise<Sound>>()
|
||||||
const soundCache = new Map<number, Sound>()
|
const soundCache = shallowReactive(new Map<number, Sound>())
|
||||||
|
|
||||||
const getUploadSources = (uploads: Upload[]): SoundSource[] => {
|
const getUploadSources = (uploads: Upload[]): SoundSource[] => {
|
||||||
const sources = uploads
|
const sources = uploads
|
||||||
|
@ -78,12 +76,10 @@ export const createSound = async (track: Track): Promise<Sound> => {
|
||||||
const createSoundPromise = async () => {
|
const createSoundPromise = async () => {
|
||||||
const sources = await getTrackSources(track)
|
const sources = await getTrackSources(track)
|
||||||
|
|
||||||
const audio = new Audio()
|
const SoundImplementation = soundImplementation.value
|
||||||
audio.src = sources[0].url
|
const sound = new SoundImplementation(sources)
|
||||||
|
sound.onSoundEnd(createOnEndHandler(sound))
|
||||||
|
|
||||||
const sourceNode = createAudioSource(audio)
|
|
||||||
|
|
||||||
const sound = { audio, sources, sourceNode }
|
|
||||||
soundCache.set(track.id, sound)
|
soundCache.set(track.id, sound)
|
||||||
soundPromises.delete(track.id)
|
soundPromises.delete(track.id)
|
||||||
return sound
|
return sound
|
||||||
|
@ -101,33 +97,27 @@ export const createTrack = async (index: number) => {
|
||||||
|
|
||||||
const track = tracks.value[index]
|
const track = tracks.value[index]
|
||||||
if (!soundPromises.has(track.id) && !soundCache.has(track.id)) {
|
if (!soundPromises.has(track.id) && !soundCache.has(track.id)) {
|
||||||
// TODO (wvffle): Resolve race condition
|
// TODO (wvffle): Resolve race condition - is it still here after adding soundPromises?
|
||||||
console.log('NO TRACK IN CACHE, CREATING')
|
console.log('NO TRACK IN CACHE, CREATING')
|
||||||
}
|
}
|
||||||
|
|
||||||
const sound = await createSound(track)
|
const sound = await createSound(track)
|
||||||
console.log('CONNECTING NODE')
|
console.log('CONNECTING NODE')
|
||||||
|
|
||||||
const stop = useEventListener(sound.audio, 'ended', () => {
|
sound.audioNode.disconnect()
|
||||||
createTrack(currentIndex.value + 1)
|
connectAudioSource(sound.audioNode)
|
||||||
store.dispatch('queue/next')
|
|
||||||
stop()
|
|
||||||
})
|
|
||||||
|
|
||||||
sound.sourceNode.disconnect()
|
|
||||||
connectAudioSource(sound.sourceNode)
|
|
||||||
|
|
||||||
if (isPlaying.value) {
|
if (isPlaying.value) {
|
||||||
sound.audio.play()
|
await sound.play()
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: Preload next track
|
// NOTE: Preload next track
|
||||||
if (index + 1 < tracks.value.length) {
|
if (index === currentIndex.value && index + 1 < tracks.value.length) {
|
||||||
createSound(tracks.value[index + 1])
|
setTimeout(async () => {
|
||||||
.then(sound => sound.audio.load())
|
const sound = await createSound(tracks.value[index + 1])
|
||||||
|
await sound.preload()
|
||||||
|
}, 100)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getCurrentSound = () => {
|
export const currentSound = computed(() => soundCache.get(tracks.value[currentIndex.value]?.id ?? -1))
|
||||||
return soundCache.get(tracks.value[currentIndex.value]?.id ?? -1)
|
|
||||||
}
|
|
||||||
|
|
|
@ -89,7 +89,6 @@ watchEffect(() => Howler.volume(toLinearVolumeScale(volume.value)))
|
||||||
|
|
||||||
const mute = () => store.dispatch('player/mute')
|
const mute = () => store.dispatch('player/mute')
|
||||||
const unmute = () => store.dispatch('player/unmute')
|
const unmute = () => store.dispatch('player/unmute')
|
||||||
const toggleMute = () => store.dispatch('player/toggleMute')
|
|
||||||
|
|
||||||
// Time and duration
|
// Time and duration
|
||||||
const duration = computed(() => store.state.player.duration)
|
const duration = computed(() => store.state.player.duration)
|
||||||
|
@ -245,7 +244,6 @@ export default () => {
|
||||||
volume,
|
volume,
|
||||||
mute,
|
mute,
|
||||||
unmute,
|
unmute,
|
||||||
toggleMute,
|
|
||||||
|
|
||||||
duration,
|
duration,
|
||||||
currentTime,
|
currentTime,
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
import type { InitModule } from '~/types'
|
import type { InitModule } from '~/types'
|
||||||
|
|
||||||
import router from '~/router'
|
|
||||||
import store, { key } from '~/store'
|
import store, { key } from '~/store'
|
||||||
|
import router from '~/router'
|
||||||
|
|
||||||
import { createApp, defineAsyncComponent, h } from 'vue'
|
import { createApp, defineAsyncComponent, h } from 'vue'
|
||||||
|
|
||||||
import useLogger from '~/composables/useLogger'
|
import useLogger from '~/composables/useLogger'
|
||||||
import useTheme from '~/composables/useTheme'
|
import useTheme from '~/composables/useTheme'
|
||||||
|
|
||||||
|
import '~/api'
|
||||||
|
|
||||||
// NOTE: Set the theme as fast as possible
|
// NOTE: Set the theme as fast as possible
|
||||||
useTheme()
|
useTheme()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
export declare global {
|
||||||
|
interface Window {
|
||||||
|
funkwhale: {
|
||||||
|
registerSoundImplementation: (implementation: SoundImplementation) => void
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Constructor<T> = {
|
||||||
|
new(...args: any[]): T;
|
||||||
|
readonly prototype: T;
|
||||||
|
}
|
||||||
|
}
|
|
@ -136,14 +136,6 @@ const store: Module<State, RootState> = {
|
||||||
pausePlayback ({ commit }) {
|
pausePlayback ({ commit }) {
|
||||||
commit('playing', false)
|
commit('playing', false)
|
||||||
},
|
},
|
||||||
toggleMute ({ commit, state }) {
|
|
||||||
if (state.volume > 0) {
|
|
||||||
commit('tempVolume', state.volume)
|
|
||||||
commit('volume', 0)
|
|
||||||
} else {
|
|
||||||
commit('volume', state.tempVolume)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
trackListened ({ rootState }, track) {
|
trackListened ({ rootState }, track) {
|
||||||
if (!rootState.auth.authenticated) {
|
if (!rootState.auth.authenticated) {
|
||||||
return
|
return
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"noUnusedLocals": true,
|
"noUnusedLocals": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
"typeRoots": ["node_modules/@types"],
|
"typeRoots": ["node_modules/@types"],
|
||||||
"types": [
|
"types": [
|
||||||
"vitest/globals",
|
"vitest/globals",
|
||||||
|
|
537
front/yarn.lock
537
front/yarn.lock
|
@ -898,7 +898,7 @@
|
||||||
"@babel/types" "^7.4.4"
|
"@babel/types" "^7.4.4"
|
||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
|
|
||||||
"@babel/runtime@^7.11.2", "@babel/runtime@^7.19.4", "@babel/runtime@^7.8.4":
|
"@babel/runtime@^7.11.2", "@babel/runtime@^7.19.0", "@babel/runtime@^7.19.4", "@babel/runtime@^7.8.4":
|
||||||
version "7.20.0"
|
version "7.20.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a"
|
||||||
integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==
|
integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==
|
||||||
|
@ -949,11 +949,6 @@
|
||||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.12.tgz#e548b10a5e55b9e10537a049ebf0bc72c453b769"
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.12.tgz#e548b10a5e55b9e10537a049ebf0bc72c453b769"
|
||||||
integrity sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==
|
integrity sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==
|
||||||
|
|
||||||
"@esbuild/linux-loong64@0.14.54":
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
|
|
||||||
integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
|
|
||||||
|
|
||||||
"@esbuild/linux-loong64@0.15.12":
|
"@esbuild/linux-loong64@0.15.12":
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz#475b33a2631a3d8ca8aa95ee127f9a61d95bf9c1"
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz#475b33a2631a3d8ca8aa95ee127f9a61d95bf9c1"
|
||||||
|
@ -974,7 +969,7 @@
|
||||||
minimatch "^3.1.2"
|
minimatch "^3.1.2"
|
||||||
strip-json-comments "^3.1.1"
|
strip-json-comments "^3.1.1"
|
||||||
|
|
||||||
"@humanwhocodes/config-array@^0.10.4":
|
"@humanwhocodes/config-array@^0.10.5":
|
||||||
version "0.10.7"
|
version "0.10.7"
|
||||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc"
|
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc"
|
||||||
integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==
|
integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==
|
||||||
|
@ -1621,48 +1616,58 @@
|
||||||
c8 "^7.12.0"
|
c8 "^7.12.0"
|
||||||
vitest "0.24.3"
|
vitest "0.24.3"
|
||||||
|
|
||||||
"@volar/code-gen@0.40.13":
|
"@volar/language-core@1.0.0":
|
||||||
version "0.40.13"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.40.13.tgz#cd69a67b11462b93d79ea2139f9f1e0a76e15111"
|
resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.0.0.tgz#57fea42d061793f39f7231ed41f2533cf9ce2d5b"
|
||||||
integrity sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==
|
integrity sha512-gUeIyRmPD9dtCAADK+ZCr0n4n1lbwsGJ+ulQn//phfD+p9B1E9B4o2WRoeOOAkcqXZTEFmCxtg+S6Pa0pwUVHA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@volar/source-map" "0.40.13"
|
"@volar/source-map" "1.0.0"
|
||||||
|
"@vue/reactivity" "^3.2.38"
|
||||||
|
muggle-string "^0.1.0"
|
||||||
|
|
||||||
"@volar/source-map@0.40.13":
|
"@volar/source-map@1.0.0":
|
||||||
version "0.40.13"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.40.13.tgz#9acbc47614bbd8fa710d233d10fff1b18cb78a80"
|
resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.0.0.tgz#963d281d4e4bcba32592bc77b2b1f1f4c0b8ea43"
|
||||||
integrity sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==
|
integrity sha512-EyIauGZmii2d4FicOw9eUnjq5nX/lqxKoPDPAZSGfkYOI/zfhhRydjLWR/BTbtPEV+Pqu6p5QjV3ts2/jQtKPw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/reactivity" "3.2.38"
|
muggle-string "^0.1.0"
|
||||||
|
|
||||||
"@volar/typescript-faster@0.40.13":
|
"@volar/typescript-faster@1.0.0":
|
||||||
version "0.40.13"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@volar/typescript-faster/-/typescript-faster-0.40.13.tgz#5d9600333cc250ad53e8604ff6a2a32e4acfbc86"
|
resolved "https://registry.yarnpkg.com/@volar/typescript-faster/-/typescript-faster-1.0.0.tgz#5ab4315148baec2feb5eb4a1efabb8b79de1c5b0"
|
||||||
integrity sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==
|
integrity sha512-QsKMB2bEfWMKaPKW5HDmvBsusIgGx0WG1U30EaHwpnME25XZSJh1a5BZh9uUQcZteLkjtEfAmCI2PkfDgz1zew==
|
||||||
dependencies:
|
dependencies:
|
||||||
semver "^7.3.7"
|
semver "^7.3.7"
|
||||||
|
|
||||||
"@volar/vue-language-core@0.40.13":
|
"@volar/typescript@1.0.0":
|
||||||
version "0.40.13"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@volar/vue-language-core/-/vue-language-core-0.40.13.tgz#13a79c29ef63d66a40afd1b29166404703b240c4"
|
resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.0.0.tgz#281567d955285cdddd9bd8f396e88acdb7d7ac03"
|
||||||
integrity sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==
|
integrity sha512-0BsNJnN/VuQ3WQ3RmdJo7Xf8pwT0JCV0xdtgH9okEMeuXBLPZjg7tKwDHT3TY8ord1mVk0tjNnzyQJAhaQ8t0w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@volar/code-gen" "0.40.13"
|
"@volar/language-core" "1.0.0"
|
||||||
"@volar/source-map" "0.40.13"
|
"@volar/typescript-faster" "1.0.0"
|
||||||
"@vue/compiler-core" "^3.2.38"
|
|
||||||
|
"@volar/vue-language-core@1.0.0":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@volar/vue-language-core/-/vue-language-core-1.0.0.tgz#fae737411063c55d83169581c6882e93bb50629c"
|
||||||
|
integrity sha512-BYJvROEGNMDxTbyT7j9B9i8VDeLzEwDijNy2WactsK4mhruYRp911BwI9UNia4dD6RgMhyIShExRNoCwtCNMtw==
|
||||||
|
dependencies:
|
||||||
|
"@volar/language-core" "1.0.0"
|
||||||
|
"@volar/source-map" "1.0.0"
|
||||||
"@vue/compiler-dom" "^3.2.38"
|
"@vue/compiler-dom" "^3.2.38"
|
||||||
"@vue/compiler-sfc" "^3.2.38"
|
"@vue/compiler-sfc" "^3.2.38"
|
||||||
"@vue/reactivity" "^3.2.38"
|
"@vue/reactivity" "^3.2.38"
|
||||||
"@vue/shared" "^3.2.38"
|
"@vue/shared" "^3.2.38"
|
||||||
|
minimatch "^5.1.0"
|
||||||
|
vue-template-compiler "^2.7.10"
|
||||||
|
|
||||||
"@volar/vue-typescript@0.40.13":
|
"@volar/vue-typescript@1.0.0":
|
||||||
version "0.40.13"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-0.40.13.tgz#50fe8e0965f4e14596eca57550b5ca13388c244c"
|
resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-1.0.0.tgz#322bc9b354d08a92bd51e64a42594aa3f97e62ba"
|
||||||
integrity sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==
|
integrity sha512-W9qU96gdApnEgHZf6i9BKQVDJqreYKVsXDRdJPtJEeykSwi6an0LYwgkpCfDjW3pyeVYSYAxVegYE8rSo9k4IA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@volar/code-gen" "0.40.13"
|
"@volar/typescript" "1.0.0"
|
||||||
"@volar/typescript-faster" "0.40.13"
|
"@volar/vue-language-core" "1.0.0"
|
||||||
"@volar/vue-language-core" "0.40.13"
|
|
||||||
|
|
||||||
"@vue/babel-helper-vue-transform-on@^1.0.2":
|
"@vue/babel-helper-vue-transform-on@^1.0.2":
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
|
@ -1684,7 +1689,17 @@
|
||||||
html-tags "^3.1.0"
|
html-tags "^3.1.0"
|
||||||
svg-tags "^1.0.0"
|
svg-tags "^1.0.0"
|
||||||
|
|
||||||
"@vue/compiler-core@3.2.41", "@vue/compiler-core@^3.2.38":
|
"@vue/compiler-core@3.2.40":
|
||||||
|
version "3.2.40"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.40.tgz#c785501f09536748121e937fb87605bbb1ada8e5"
|
||||||
|
integrity sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.16.4"
|
||||||
|
"@vue/shared" "3.2.40"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
"@vue/compiler-core@3.2.41":
|
||||||
version "3.2.41"
|
version "3.2.41"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.41.tgz#fb5b25f23817400f44377d878a0cdead808453ef"
|
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.41.tgz#fb5b25f23817400f44377d878a0cdead808453ef"
|
||||||
integrity sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==
|
integrity sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==
|
||||||
|
@ -1694,6 +1709,14 @@
|
||||||
estree-walker "^2.0.2"
|
estree-walker "^2.0.2"
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
"@vue/compiler-dom@3.2.40":
|
||||||
|
version "3.2.40"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.40.tgz#c225418773774db536174d30d3f25ba42a33e7e4"
|
||||||
|
integrity sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-core" "3.2.40"
|
||||||
|
"@vue/shared" "3.2.40"
|
||||||
|
|
||||||
"@vue/compiler-dom@3.2.41", "@vue/compiler-dom@^3.2.31", "@vue/compiler-dom@^3.2.38":
|
"@vue/compiler-dom@3.2.41", "@vue/compiler-dom@^3.2.31", "@vue/compiler-dom@^3.2.38":
|
||||||
version "3.2.41"
|
version "3.2.41"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz#dc63dcd3ce8ca8a8721f14009d498a7a54380299"
|
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz#dc63dcd3ce8ca8a8721f14009d498a7a54380299"
|
||||||
|
@ -1702,6 +1725,22 @@
|
||||||
"@vue/compiler-core" "3.2.41"
|
"@vue/compiler-core" "3.2.41"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.41"
|
||||||
|
|
||||||
|
"@vue/compiler-sfc@3.2.40":
|
||||||
|
version "3.2.40"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.40.tgz#61823283efc84d25d9d2989458f305d32a2ed141"
|
||||||
|
integrity sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.16.4"
|
||||||
|
"@vue/compiler-core" "3.2.40"
|
||||||
|
"@vue/compiler-dom" "3.2.40"
|
||||||
|
"@vue/compiler-ssr" "3.2.40"
|
||||||
|
"@vue/reactivity-transform" "3.2.40"
|
||||||
|
"@vue/shared" "3.2.40"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
magic-string "^0.25.7"
|
||||||
|
postcss "^8.1.10"
|
||||||
|
source-map "^0.6.1"
|
||||||
|
|
||||||
"@vue/compiler-sfc@3.2.41", "@vue/compiler-sfc@^3.0.0", "@vue/compiler-sfc@^3.2.38":
|
"@vue/compiler-sfc@3.2.41", "@vue/compiler-sfc@^3.0.0", "@vue/compiler-sfc@^3.2.38":
|
||||||
version "3.2.41"
|
version "3.2.41"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz#238fb8c48318408c856748f4116aff8cc1dc2a73"
|
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz#238fb8c48318408c856748f4116aff8cc1dc2a73"
|
||||||
|
@ -1718,6 +1757,14 @@
|
||||||
postcss "^8.1.10"
|
postcss "^8.1.10"
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
"@vue/compiler-ssr@3.2.40":
|
||||||
|
version "3.2.40"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.40.tgz#67df95a096c63e9ec4b50b84cc6f05816793629c"
|
||||||
|
integrity sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-dom" "3.2.40"
|
||||||
|
"@vue/shared" "3.2.40"
|
||||||
|
|
||||||
"@vue/compiler-ssr@3.2.41":
|
"@vue/compiler-ssr@3.2.41":
|
||||||
version "3.2.41"
|
version "3.2.41"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz#344f564d68584b33367731c04ffc949784611fcb"
|
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz#344f564d68584b33367731c04ffc949784611fcb"
|
||||||
|
@ -1752,6 +1799,17 @@
|
||||||
"@typescript-eslint/parser" "^5.0.0"
|
"@typescript-eslint/parser" "^5.0.0"
|
||||||
vue-eslint-parser "^9.0.0"
|
vue-eslint-parser "^9.0.0"
|
||||||
|
|
||||||
|
"@vue/reactivity-transform@3.2.40":
|
||||||
|
version "3.2.40"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.40.tgz#dc24b9074b26f0d9dd2034c6349f5bb2a51c86ac"
|
||||||
|
integrity sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.16.4"
|
||||||
|
"@vue/compiler-core" "3.2.40"
|
||||||
|
"@vue/shared" "3.2.40"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
magic-string "^0.25.7"
|
||||||
|
|
||||||
"@vue/reactivity-transform@3.2.41":
|
"@vue/reactivity-transform@3.2.41":
|
||||||
version "3.2.41"
|
version "3.2.41"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz#9ff938877600c97f646e09ac1959b5150fb11a0c"
|
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz#9ff938877600c97f646e09ac1959b5150fb11a0c"
|
||||||
|
@ -1763,12 +1821,12 @@
|
||||||
estree-walker "^2.0.2"
|
estree-walker "^2.0.2"
|
||||||
magic-string "^0.25.7"
|
magic-string "^0.25.7"
|
||||||
|
|
||||||
"@vue/reactivity@3.2.38":
|
"@vue/reactivity@3.2.40":
|
||||||
version "3.2.38"
|
version "3.2.40"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.38.tgz#d576fdcea98eefb96a1f1ad456e289263e87292e"
|
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.40.tgz#ae65496f5b364e4e481c426f391568ed7d133cca"
|
||||||
integrity sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==
|
integrity sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/shared" "3.2.38"
|
"@vue/shared" "3.2.40"
|
||||||
|
|
||||||
"@vue/reactivity@3.2.41", "@vue/reactivity@^3.2.38":
|
"@vue/reactivity@3.2.41", "@vue/reactivity@^3.2.38":
|
||||||
version "3.2.41"
|
version "3.2.41"
|
||||||
|
@ -1777,6 +1835,14 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.41"
|
||||||
|
|
||||||
|
"@vue/runtime-core@3.2.40":
|
||||||
|
version "3.2.40"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.40.tgz#e814358bf1b0ff6d4a6b4f8f62d9f341964fb275"
|
||||||
|
integrity sha512-U1+rWf0H8xK8aBUZhnrN97yoZfHbjgw/bGUzfgKPJl69/mXDuSg8CbdBYBn6VVQdR947vWneQBFzdhasyzMUKg==
|
||||||
|
dependencies:
|
||||||
|
"@vue/reactivity" "3.2.40"
|
||||||
|
"@vue/shared" "3.2.40"
|
||||||
|
|
||||||
"@vue/runtime-core@3.2.41":
|
"@vue/runtime-core@3.2.41":
|
||||||
version "3.2.41"
|
version "3.2.41"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.41.tgz#775bfc00b3fadbaddab77138f23322aee3517a76"
|
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.41.tgz#775bfc00b3fadbaddab77138f23322aee3517a76"
|
||||||
|
@ -1785,27 +1851,27 @@
|
||||||
"@vue/reactivity" "3.2.41"
|
"@vue/reactivity" "3.2.41"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.41"
|
||||||
|
|
||||||
"@vue/runtime-dom@3.2.41":
|
"@vue/runtime-dom@3.2.40":
|
||||||
version "3.2.41"
|
version "3.2.40"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.41.tgz#cdf86be7410f7b15c29632a96ce879e5b4c9ab92"
|
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.40.tgz#975119feac5ab703aa9bbbf37c9cc966602c8eab"
|
||||||
integrity sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==
|
integrity sha512-AO2HMQ+0s2+MCec8hXAhxMgWhFhOPJ/CyRXnmTJ6XIOnJFLrH5Iq3TNwvVcODGR295jy77I6dWPj+wvFoSYaww==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/runtime-core" "3.2.41"
|
"@vue/runtime-core" "3.2.40"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.40"
|
||||||
csstype "^2.6.8"
|
csstype "^2.6.8"
|
||||||
|
|
||||||
"@vue/server-renderer@3.2.41":
|
"@vue/server-renderer@3.2.40":
|
||||||
version "3.2.41"
|
version "3.2.40"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.41.tgz#ca64552c05878f94e8d191ac439141c06c0fb2ad"
|
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.40.tgz#55eaac31f7105c3907e1895129bf4efb6b0ce393"
|
||||||
integrity sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==
|
integrity sha512-gtUcpRwrXOJPJ4qyBpU3EyxQa4EkV8I4f8VrDePcGCPe4O/hd0BPS7v9OgjIQob6Ap8VDz9G+mGTKazE45/95w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/compiler-ssr" "3.2.41"
|
"@vue/compiler-ssr" "3.2.40"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.40"
|
||||||
|
|
||||||
"@vue/shared@3.2.38":
|
"@vue/shared@3.2.40":
|
||||||
version "3.2.38"
|
version "3.2.40"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.38.tgz#e823f0cb2e85b6bf43430c0d6811b1441c300f3c"
|
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.40.tgz#e57799da2a930b975321981fcee3d1e90ed257ae"
|
||||||
integrity sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==
|
integrity sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==
|
||||||
|
|
||||||
"@vue/shared@3.2.41", "@vue/shared@^3.2.38":
|
"@vue/shared@3.2.41", "@vue/shared@^3.2.38":
|
||||||
version "3.2.41"
|
version "3.2.41"
|
||||||
|
@ -1822,42 +1888,42 @@
|
||||||
resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz#4a61dbd29783d01ddab504276dcf0c2b6988654f"
|
resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz#4a61dbd29783d01ddab504276dcf0c2b6988654f"
|
||||||
integrity sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==
|
integrity sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==
|
||||||
|
|
||||||
"@vueuse/core@9.1.1":
|
"@vueuse/core@9.3.0":
|
||||||
version "9.1.1"
|
version "9.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-9.1.1.tgz#a5c09c33ccee58cfd53bc3ec2d5a0d304155529e"
|
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-9.3.0.tgz#74d855bd19cb5eadd2edb30c871918fac881e8b8"
|
||||||
integrity sha512-QfuaNWRDMQcCUwXylCyYhPC3ScS9Tiiz4J0chdwr3vOemBwRToSywq8MP+ZegKYFnbETzRY8G/5zC+ca30wrRQ==
|
integrity sha512-64Rna8IQDWpdrJxgitDg7yv1yTp41ZmvV8zlLEylK4QQLWAhz1OFGZDPZ8bU4lwcGgbEJ2sGi2jrdNh4LttUSQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/web-bluetooth" "^0.0.15"
|
"@types/web-bluetooth" "^0.0.15"
|
||||||
"@vueuse/metadata" "9.1.1"
|
"@vueuse/metadata" "9.3.0"
|
||||||
"@vueuse/shared" "9.1.1"
|
"@vueuse/shared" "9.3.0"
|
||||||
vue-demi "*"
|
vue-demi "*"
|
||||||
|
|
||||||
"@vueuse/integrations@9.1.1":
|
"@vueuse/integrations@9.3.0":
|
||||||
version "9.1.1"
|
version "9.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-9.1.1.tgz#2397f6e53a33ef984c7a3625fc2cc14daa780a87"
|
resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-9.3.0.tgz#d08f0b96335746242e0a979d58964f374eed303a"
|
||||||
integrity sha512-RVRio67rogVIV8e1Uov93JuxrE7UXhRm2B1pzdTAd+/oBxo4E3WaoXo/naI3kW1quvlOUv+g1/6goyGQoIGSow==
|
integrity sha512-KkJpC97VioZUpSw7rvgnqoLgTztLlLLGdYp6WQKn69cJiItsJVSRZrmI+X9YVxPBzuLvRymYZfp0RMyISVFHTw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vueuse/core" "9.1.1"
|
"@vueuse/core" "9.3.0"
|
||||||
"@vueuse/shared" "9.1.1"
|
"@vueuse/shared" "9.3.0"
|
||||||
vue-demi "*"
|
vue-demi "*"
|
||||||
|
|
||||||
"@vueuse/metadata@9.1.1":
|
"@vueuse/metadata@9.3.0":
|
||||||
version "9.1.1"
|
version "9.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-9.1.1.tgz#b3fe4b97e62096f7566cd8eb107c503998b2c9a6"
|
resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-9.3.0.tgz#c107fe77a577e1f221536cd1b291039c0c7c4bce"
|
||||||
integrity sha512-XZ2KtSW+85LLHB/IdGILPAtbIVHasPsAW7aqz3BRMzJdAQWRiM/FGa1OKBwLbXtUw/AmjKYFlZJo7eOFIBXRog==
|
integrity sha512-GnnfjbzIPJIh9ngL9s9oGU1+Hx/h5/KFqTfJykzh/1xjaHkedV9g0MASpdmPZIP+ynNhKAcEfA6g5i8KXwtoMA==
|
||||||
|
|
||||||
"@vueuse/router@9.1.1":
|
"@vueuse/router@9.3.0":
|
||||||
version "9.1.1"
|
version "9.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-9.1.1.tgz#356946b97e2499d96d8e9b5cfced5f778edd63c9"
|
resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-9.3.0.tgz#731b2e88718f8ca13202e527864686a122ccc68f"
|
||||||
integrity sha512-1HE09QYoHEUF2vWJqGEV1GgoFy6ti7gxzahiN9o/GJpyWM11koQd03BhP4RjVbUx3ua2wTYNSmaCKvLJGCnNGg==
|
integrity sha512-UFN2MFciprH21oYsAgNHeDJ4Bd86HpRm9gximSN8j6h4fc2aa62fvfhprfHqdTxYAcgcGkMwcc9TO75jOvr8gg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vueuse/shared" "9.1.1"
|
"@vueuse/shared" "9.3.0"
|
||||||
vue-demi "*"
|
vue-demi "*"
|
||||||
|
|
||||||
"@vueuse/shared@9.1.1":
|
"@vueuse/shared@9.3.0":
|
||||||
version "9.1.1"
|
version "9.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-9.1.1.tgz#811f47629e281a19013ae6dcdf11ed3e1e91e023"
|
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-9.3.0.tgz#40fc138ba4e379c894075830aa2e15404aaa8a5b"
|
||||||
integrity sha512-c+IfcOYmHiHqoEa3ED1Tbpue5GHmoUmTp8PtO4YbczthtY155Rt6DmWhjxMLXBF1Bcidagxljmp/7xtAzEHXLw==
|
integrity sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
vue-demi "*"
|
vue-demi "*"
|
||||||
|
|
||||||
|
@ -2049,7 +2115,7 @@ at-least-node@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
|
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
|
||||||
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
|
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
|
||||||
|
|
||||||
automation-events@^4.0.22:
|
automation-events@^4.0.21:
|
||||||
version "4.0.22"
|
version "4.0.22"
|
||||||
resolved "https://registry.yarnpkg.com/automation-events/-/automation-events-4.0.22.tgz#eaaea55ea0edbbd20f54053cce5c686f56736866"
|
resolved "https://registry.yarnpkg.com/automation-events/-/automation-events-4.0.22.tgz#eaaea55ea0edbbd20f54053cce5c686f56736866"
|
||||||
integrity sha512-npbme6c94VOnW8pvns60ioIi1+9lUZEMC6feTJoAkINnKSEHda5dKwMRmzoh4Y8zjQVXMUNcO6LcQkH4SXyvWA==
|
integrity sha512-npbme6c94VOnW8pvns60ioIi1+9lUZEMC6feTJoAkINnKSEHda5dKwMRmzoh4Y8zjQVXMUNcO6LcQkH4SXyvWA==
|
||||||
|
@ -2495,6 +2561,11 @@ data-urls@^3.0.2:
|
||||||
whatwg-mimetype "^3.0.0"
|
whatwg-mimetype "^3.0.0"
|
||||||
whatwg-url "^11.0.0"
|
whatwg-url "^11.0.0"
|
||||||
|
|
||||||
|
de-indent@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
|
||||||
|
integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
|
||||||
|
|
||||||
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
|
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
|
||||||
version "4.3.4"
|
version "4.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||||
|
@ -2718,151 +2789,76 @@ es-to-primitive@^1.2.1:
|
||||||
is-date-object "^1.0.1"
|
is-date-object "^1.0.1"
|
||||||
is-symbol "^1.0.2"
|
is-symbol "^1.0.2"
|
||||||
|
|
||||||
esbuild-android-64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
|
|
||||||
integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
|
|
||||||
|
|
||||||
esbuild-android-64@0.15.12:
|
esbuild-android-64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz#5e8151d5f0a748c71a7fbea8cee844ccf008e6fc"
|
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz#5e8151d5f0a748c71a7fbea8cee844ccf008e6fc"
|
||||||
integrity sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==
|
integrity sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==
|
||||||
|
|
||||||
esbuild-android-arm64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
|
|
||||||
integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
|
|
||||||
|
|
||||||
esbuild-android-arm64@0.15.12:
|
esbuild-android-arm64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz#5ee72a6baa444bc96ffcb472a3ba4aba2cc80666"
|
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz#5ee72a6baa444bc96ffcb472a3ba4aba2cc80666"
|
||||||
integrity sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==
|
integrity sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==
|
||||||
|
|
||||||
esbuild-darwin-64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
|
|
||||||
integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
|
|
||||||
|
|
||||||
esbuild-darwin-64@0.15.12:
|
esbuild-darwin-64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz#70047007e093fa1b3ba7ef86f9b3fa63db51fe25"
|
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz#70047007e093fa1b3ba7ef86f9b3fa63db51fe25"
|
||||||
integrity sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==
|
integrity sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==
|
||||||
|
|
||||||
esbuild-darwin-arm64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73"
|
|
||||||
integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
|
|
||||||
|
|
||||||
esbuild-darwin-arm64@0.15.12:
|
esbuild-darwin-arm64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz#41c951f23d9a70539bcca552bae6e5196696ae04"
|
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz#41c951f23d9a70539bcca552bae6e5196696ae04"
|
||||||
integrity sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==
|
integrity sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==
|
||||||
|
|
||||||
esbuild-freebsd-64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
|
|
||||||
integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
|
|
||||||
|
|
||||||
esbuild-freebsd-64@0.15.12:
|
esbuild-freebsd-64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz#a761b5afd12bbedb7d56c612e9cfa4d2711f33f0"
|
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz#a761b5afd12bbedb7d56c612e9cfa4d2711f33f0"
|
||||||
integrity sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==
|
integrity sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==
|
||||||
|
|
||||||
esbuild-freebsd-arm64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
|
|
||||||
integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
|
|
||||||
|
|
||||||
esbuild-freebsd-arm64@0.15.12:
|
esbuild-freebsd-arm64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz#6b0839d4d58deabc6cbd96276eb8cbf94f7f335e"
|
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz#6b0839d4d58deabc6cbd96276eb8cbf94f7f335e"
|
||||||
integrity sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==
|
integrity sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==
|
||||||
|
|
||||||
esbuild-linux-32@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
|
|
||||||
integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
|
|
||||||
|
|
||||||
esbuild-linux-32@0.15.12:
|
esbuild-linux-32@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz#bd50bfe22514d434d97d5150977496e2631345b4"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz#bd50bfe22514d434d97d5150977496e2631345b4"
|
||||||
integrity sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==
|
integrity sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==
|
||||||
|
|
||||||
esbuild-linux-64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
|
|
||||||
integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
|
|
||||||
|
|
||||||
esbuild-linux-64@0.15.12:
|
esbuild-linux-64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz#074bb2b194bf658245f8490f29c01ffcdfa8c931"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz#074bb2b194bf658245f8490f29c01ffcdfa8c931"
|
||||||
integrity sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==
|
integrity sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==
|
||||||
|
|
||||||
esbuild-linux-arm64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
|
|
||||||
integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
|
|
||||||
|
|
||||||
esbuild-linux-arm64@0.15.12:
|
esbuild-linux-arm64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz#3bf789c4396dc032875a122988efd6f3733f28f5"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz#3bf789c4396dc032875a122988efd6f3733f28f5"
|
||||||
integrity sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==
|
integrity sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==
|
||||||
|
|
||||||
esbuild-linux-arm@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
|
|
||||||
integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
|
|
||||||
|
|
||||||
esbuild-linux-arm@0.15.12:
|
esbuild-linux-arm@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz#b91b5a8d470053f6c2c9c8a5e67ec10a71fe4a67"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz#b91b5a8d470053f6c2c9c8a5e67ec10a71fe4a67"
|
||||||
integrity sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==
|
integrity sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==
|
||||||
|
|
||||||
esbuild-linux-mips64le@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
|
|
||||||
integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
|
|
||||||
|
|
||||||
esbuild-linux-mips64le@0.15.12:
|
esbuild-linux-mips64le@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz#2fb54099ada3c950a7536dfcba46172c61e580e2"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz#2fb54099ada3c950a7536dfcba46172c61e580e2"
|
||||||
integrity sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==
|
integrity sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==
|
||||||
|
|
||||||
esbuild-linux-ppc64le@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
|
|
||||||
integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
|
|
||||||
|
|
||||||
esbuild-linux-ppc64le@0.15.12:
|
esbuild-linux-ppc64le@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz#9e3b8c09825fb27886249dfb3142a750df29a1b7"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz#9e3b8c09825fb27886249dfb3142a750df29a1b7"
|
||||||
integrity sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==
|
integrity sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==
|
||||||
|
|
||||||
esbuild-linux-riscv64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
|
|
||||||
integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
|
|
||||||
|
|
||||||
esbuild-linux-riscv64@0.15.12:
|
esbuild-linux-riscv64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz#923d0f5b6e12ee0d1fe116b08e4ae4478fe40693"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz#923d0f5b6e12ee0d1fe116b08e4ae4478fe40693"
|
||||||
integrity sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==
|
integrity sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==
|
||||||
|
|
||||||
esbuild-linux-s390x@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
|
|
||||||
integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
|
|
||||||
|
|
||||||
esbuild-linux-s390x@0.15.12:
|
esbuild-linux-s390x@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz#3b1620220482b96266a0c6d9d471d451a1eab86f"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz#3b1620220482b96266a0c6d9d471d451a1eab86f"
|
||||||
integrity sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==
|
integrity sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==
|
||||||
|
|
||||||
esbuild-netbsd-64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
|
|
||||||
integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
|
|
||||||
|
|
||||||
esbuild-netbsd-64@0.15.12:
|
esbuild-netbsd-64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz#276730f80da646859b1af5a740e7802d8cd73e42"
|
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz#276730f80da646859b1af5a740e7802d8cd73e42"
|
||||||
|
@ -2875,11 +2871,6 @@ esbuild-node-loader@^0.6.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild ">=0.13.12"
|
esbuild ">=0.13.12"
|
||||||
|
|
||||||
esbuild-openbsd-64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
|
|
||||||
integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
|
|
||||||
|
|
||||||
esbuild-openbsd-64@0.15.12:
|
esbuild-openbsd-64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz#bd0eea1dd2ca0722ed489d88c26714034429f8ae"
|
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz#bd0eea1dd2ca0722ed489d88c26714034429f8ae"
|
||||||
|
@ -2890,41 +2881,21 @@ esbuild-register@^3.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.3.3.tgz#5bd80025c80caf77e6484ced5cc77233b1d39688"
|
resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.3.3.tgz#5bd80025c80caf77e6484ced5cc77233b1d39688"
|
||||||
integrity sha512-eFHOkutgIMJY5gc8LUp/7c+LLlDqzNi9T6AwCZ2WKKl3HmT+5ef3ZRyPPxDOynInML0fgaC50yszPKfPnjC0NQ==
|
integrity sha512-eFHOkutgIMJY5gc8LUp/7c+LLlDqzNi9T6AwCZ2WKKl3HmT+5ef3ZRyPPxDOynInML0fgaC50yszPKfPnjC0NQ==
|
||||||
|
|
||||||
esbuild-sunos-64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
|
|
||||||
integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
|
|
||||||
|
|
||||||
esbuild-sunos-64@0.15.12:
|
esbuild-sunos-64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz#5e56bf9eef3b2d92360d6d29dcde7722acbecc9e"
|
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz#5e56bf9eef3b2d92360d6d29dcde7722acbecc9e"
|
||||||
integrity sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==
|
integrity sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==
|
||||||
|
|
||||||
esbuild-windows-32@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
|
|
||||||
integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
|
|
||||||
|
|
||||||
esbuild-windows-32@0.15.12:
|
esbuild-windows-32@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz#a4f1a301c1a2fa7701fcd4b91ef9d2620cf293d0"
|
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz#a4f1a301c1a2fa7701fcd4b91ef9d2620cf293d0"
|
||||||
integrity sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==
|
integrity sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==
|
||||||
|
|
||||||
esbuild-windows-64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
|
|
||||||
integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
|
|
||||||
|
|
||||||
esbuild-windows-64@0.15.12:
|
esbuild-windows-64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz#bc2b467541744d653be4fe64eaa9b0dbbf8e07f6"
|
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz#bc2b467541744d653be4fe64eaa9b0dbbf8e07f6"
|
||||||
integrity sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==
|
integrity sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==
|
||||||
|
|
||||||
esbuild-windows-arm64@0.14.54:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
|
|
||||||
integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
|
|
||||||
|
|
||||||
esbuild-windows-arm64@0.15.12:
|
esbuild-windows-arm64@0.15.12:
|
||||||
version "0.15.12"
|
version "0.15.12"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz#9a7266404334a86be800957eaee9aef94c3df328"
|
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz#9a7266404334a86be800957eaee9aef94c3df328"
|
||||||
|
@ -2958,33 +2929,6 @@ esbuild@>=0.13.0, esbuild@>=0.13.12, esbuild@^0.15.9:
|
||||||
esbuild-windows-64 "0.15.12"
|
esbuild-windows-64 "0.15.12"
|
||||||
esbuild-windows-arm64 "0.15.12"
|
esbuild-windows-arm64 "0.15.12"
|
||||||
|
|
||||||
esbuild@^0.14.47:
|
|
||||||
version "0.14.54"
|
|
||||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2"
|
|
||||||
integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==
|
|
||||||
optionalDependencies:
|
|
||||||
"@esbuild/linux-loong64" "0.14.54"
|
|
||||||
esbuild-android-64 "0.14.54"
|
|
||||||
esbuild-android-arm64 "0.14.54"
|
|
||||||
esbuild-darwin-64 "0.14.54"
|
|
||||||
esbuild-darwin-arm64 "0.14.54"
|
|
||||||
esbuild-freebsd-64 "0.14.54"
|
|
||||||
esbuild-freebsd-arm64 "0.14.54"
|
|
||||||
esbuild-linux-32 "0.14.54"
|
|
||||||
esbuild-linux-64 "0.14.54"
|
|
||||||
esbuild-linux-arm "0.14.54"
|
|
||||||
esbuild-linux-arm64 "0.14.54"
|
|
||||||
esbuild-linux-mips64le "0.14.54"
|
|
||||||
esbuild-linux-ppc64le "0.14.54"
|
|
||||||
esbuild-linux-riscv64 "0.14.54"
|
|
||||||
esbuild-linux-s390x "0.14.54"
|
|
||||||
esbuild-netbsd-64 "0.14.54"
|
|
||||||
esbuild-openbsd-64 "0.14.54"
|
|
||||||
esbuild-sunos-64 "0.14.54"
|
|
||||||
esbuild-windows-32 "0.14.54"
|
|
||||||
esbuild-windows-64 "0.14.54"
|
|
||||||
esbuild-windows-arm64 "0.14.54"
|
|
||||||
|
|
||||||
escalade@^3.1.1:
|
escalade@^3.1.1:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
|
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
|
||||||
|
@ -3082,21 +3026,7 @@ eslint-plugin-import@2.26.0, eslint-plugin-import@^2.26.0:
|
||||||
resolve "^1.22.0"
|
resolve "^1.22.0"
|
||||||
tsconfig-paths "^3.14.1"
|
tsconfig-paths "^3.14.1"
|
||||||
|
|
||||||
eslint-plugin-n@15.2.5:
|
eslint-plugin-n@15.3.0, eslint-plugin-n@^15.2.4:
|
||||||
version "15.2.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.2.5.tgz#aa7ff8d45bb8bf2df8ea3b7d3774ae570cb794b8"
|
|
||||||
integrity sha512-8+BYsqiyZfpu6NXmdLOXVUfk8IocpCjpd8nMRRH0A9ulrcemhb2VI9RSJMEy5udx++A/YcVPD11zT8hpFq368g==
|
|
||||||
dependencies:
|
|
||||||
builtins "^5.0.1"
|
|
||||||
eslint-plugin-es "^4.1.0"
|
|
||||||
eslint-utils "^3.0.0"
|
|
||||||
ignore "^5.1.1"
|
|
||||||
is-core-module "^2.10.0"
|
|
||||||
minimatch "^3.1.2"
|
|
||||||
resolve "^1.22.1"
|
|
||||||
semver "^7.3.7"
|
|
||||||
|
|
||||||
eslint-plugin-n@^15.2.4:
|
|
||||||
version "15.3.0"
|
version "15.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.3.0.tgz#3e1ad236a17dce7ecc0760621c46cc251ef99560"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.3.0.tgz#3e1ad236a17dce7ecc0760621c46cc251ef99560"
|
||||||
integrity sha512-IyzPnEWHypCWasDpxeJnim60jhlumbmq0pubL6IOcnk8u2y53s5QfT8JnXy7skjHJ44yWHRb11PLtDHuu1kg/Q==
|
integrity sha512-IyzPnEWHypCWasDpxeJnim60jhlumbmq0pubL6IOcnk8u2y53s5QfT8JnXy7skjHJ44yWHRb11PLtDHuu1kg/Q==
|
||||||
|
@ -3132,10 +3062,10 @@ eslint-plugin-promise@^6.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816"
|
||||||
integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==
|
integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==
|
||||||
|
|
||||||
eslint-plugin-vue@9.4.0:
|
eslint-plugin-vue@9.6.0:
|
||||||
version "9.4.0"
|
version "9.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.4.0.tgz#31c2d9002b5bb437b351a5feffdf37c4397e5cb9"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.6.0.tgz#5d1825b93d54595b1ba97106843e1d28cf3bb291"
|
||||||
integrity sha512-Nzz2QIJ8FG+rtJaqT/7/ru5ie2XgT9KCudkbN0y3uFYhQ41nuHEaboLAiqwMcK006hZPQv/rVMRhUIwEGhIvfQ==
|
integrity sha512-zzySkJgVbFCylnG2+9MDF7N+2Rjze2y0bF8GyUNpFOnT8mCMfqqtLDJkHBuYu9N/psW1A6DVbQhPkP92E+qakA==
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint-utils "^3.0.0"
|
eslint-utils "^3.0.0"
|
||||||
natural-compare "^1.4.0"
|
natural-compare "^1.4.0"
|
||||||
|
@ -3190,13 +3120,13 @@ eslint-visitor-keys@^3.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
|
||||||
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
|
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
|
||||||
|
|
||||||
eslint@8.23.1:
|
eslint@8.24.0:
|
||||||
version "8.23.1"
|
version "8.24.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.1.tgz#cfd7b3f7fdd07db8d16b4ac0516a29c8d8dca5dc"
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.24.0.tgz#489516c927a5da11b3979dbfb2679394523383c8"
|
||||||
integrity sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==
|
integrity sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint/eslintrc" "^1.3.2"
|
"@eslint/eslintrc" "^1.3.2"
|
||||||
"@humanwhocodes/config-array" "^0.10.4"
|
"@humanwhocodes/config-array" "^0.10.5"
|
||||||
"@humanwhocodes/gitignore-to-minimatch" "^1.0.2"
|
"@humanwhocodes/gitignore-to-minimatch" "^1.0.2"
|
||||||
"@humanwhocodes/module-importer" "^1.0.1"
|
"@humanwhocodes/module-importer" "^1.0.1"
|
||||||
ajv "^6.10.0"
|
ajv "^6.10.0"
|
||||||
|
@ -3622,6 +3552,11 @@ has@^1.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
|
he@^1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||||
|
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
||||||
|
|
||||||
howler@2.2.3:
|
howler@2.2.3:
|
||||||
version "2.2.3"
|
version "2.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/howler/-/howler-2.2.3.tgz#a2eff9b08b586798e7a2ee17a602a90df28715da"
|
resolved "https://registry.yarnpkg.com/howler/-/howler-2.2.3.tgz#a2eff9b08b586798e7a2ee17a602a90df28715da"
|
||||||
|
@ -4228,7 +4163,7 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^1.1.7"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
minimatch@^5.0.1:
|
minimatch@^5.0.1, minimatch@^5.1.0:
|
||||||
version "5.1.0"
|
version "5.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7"
|
||||||
integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==
|
integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==
|
||||||
|
@ -4270,6 +4205,11 @@ ms@^2.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||||
|
|
||||||
|
muggle-string@^0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/muggle-string/-/muggle-string-0.1.0.tgz#1fda8a281c8b27bb8b70466dbc9f27586a8baa6c"
|
||||||
|
integrity sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==
|
||||||
|
|
||||||
nanoid@^3.3.4:
|
nanoid@^3.3.4:
|
||||||
version "3.3.4"
|
version "3.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
|
||||||
|
@ -4811,20 +4751,20 @@ rollup-plugin-terser@^7.0.0:
|
||||||
serialize-javascript "^4.0.0"
|
serialize-javascript "^4.0.0"
|
||||||
terser "^5.0.0"
|
terser "^5.0.0"
|
||||||
|
|
||||||
"rollup@>=2.75.6 <2.77.0 || ~2.77.0":
|
rollup@^2.43.1, rollup@^2.79.0, rollup@^2.79.1:
|
||||||
version "2.77.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.3.tgz#8f00418d3a2740036e15deb653bed1a90ee0cc12"
|
|
||||||
integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==
|
|
||||||
optionalDependencies:
|
|
||||||
fsevents "~2.3.2"
|
|
||||||
|
|
||||||
rollup@^2.43.1, rollup@^2.75.7, rollup@^2.79.1:
|
|
||||||
version "2.79.1"
|
version "2.79.1"
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
|
||||||
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
|
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "~2.3.2"
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
|
rollup@~2.78.0:
|
||||||
|
version "2.78.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f"
|
||||||
|
integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
run-parallel@^1.1.9:
|
run-parallel@^1.1.9:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
|
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
|
||||||
|
@ -4851,10 +4791,10 @@ safe-regex-test@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||||
|
|
||||||
sass@1.54.9:
|
sass@1.55.0:
|
||||||
version "1.54.9"
|
version "1.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.9.tgz#b05f14ed572869218d1a76961de60cd647221762"
|
resolved "https://registry.yarnpkg.com/sass/-/sass-1.55.0.tgz#0c4d3c293cfe8f8a2e8d3b666e1cf1bff8065d1c"
|
||||||
integrity sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q==
|
integrity sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==
|
||||||
dependencies:
|
dependencies:
|
||||||
chokidar ">=3.0.0 <4.0.0"
|
chokidar ">=3.0.0 <4.0.0"
|
||||||
immutable "^4.0.0"
|
immutable "^4.0.0"
|
||||||
|
@ -4981,13 +4921,13 @@ sourcemap-codec@^1.4.8:
|
||||||
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||||
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||||
|
|
||||||
standardized-audio-context@^25.3.32:
|
standardized-audio-context@25.3.32:
|
||||||
version "25.3.33"
|
version "25.3.32"
|
||||||
resolved "https://registry.yarnpkg.com/standardized-audio-context/-/standardized-audio-context-25.3.33.tgz#8108ee2520097d1b359badbf6b573f0fab41d14c"
|
resolved "https://registry.yarnpkg.com/standardized-audio-context/-/standardized-audio-context-25.3.32.tgz#01f09f64b53f81e07dae9c5534a08a7d832e83c0"
|
||||||
integrity sha512-9BzVo8NDemOMENPKiwdE65uJJ6ae00jmafT2ZzZ0j+1WVhYZXfmykDgcP4h8eRAPC7r+mFedJfbdr7DMANJRkw==
|
integrity sha512-TtnRZGzHaTowIrEPo7w7WK74TrrY885NpplFpD79h85YuUAUBrUGifHlh8GK11oyZHfwDtCV29yFPfIHWotrXg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.19.4"
|
"@babel/runtime" "^7.19.0"
|
||||||
automation-events "^4.0.22"
|
automation-events "^4.0.21"
|
||||||
tslib "^2.4.0"
|
tslib "^2.4.0"
|
||||||
|
|
||||||
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||||
|
@ -5147,16 +5087,11 @@ text-table@^0.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||||
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
|
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
|
||||||
|
|
||||||
tinybench@^2.3.0:
|
tinybench@^2.2.1, tinybench@^2.3.0:
|
||||||
version "2.3.1"
|
version "2.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.3.1.tgz#14f64e6b77d7ef0b1f6ab850c7a808c6760b414d"
|
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.3.1.tgz#14f64e6b77d7ef0b1f6ab850c7a808c6760b414d"
|
||||||
integrity sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==
|
integrity sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==
|
||||||
|
|
||||||
tinypool@^0.2.4:
|
|
||||||
version "0.2.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.2.4.tgz#4d2598c4689d1a2ce267ddf3360a9c6b3925a20c"
|
|
||||||
integrity sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==
|
|
||||||
|
|
||||||
tinypool@^0.3.0:
|
tinypool@^0.3.0:
|
||||||
version "0.3.0"
|
version "0.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.3.0.tgz#c405d8b743509fc28ea4ca358433190be654f819"
|
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.3.0.tgz#c405d8b743509fc28ea4ca358433190be654f819"
|
||||||
|
@ -5386,17 +5321,17 @@ v8-to-istanbul@^9.0.0:
|
||||||
"@types/istanbul-lib-coverage" "^2.0.1"
|
"@types/istanbul-lib-coverage" "^2.0.1"
|
||||||
convert-source-map "^1.6.0"
|
convert-source-map "^1.6.0"
|
||||||
|
|
||||||
vite-plugin-pwa@0.12.4:
|
vite-plugin-pwa@0.13.1:
|
||||||
version "0.12.4"
|
version "0.13.1"
|
||||||
resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.12.4.tgz#9e921518a0a340e4e6ae287a2cf345c4ca56f92d"
|
resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.13.1.tgz#345133f947d4fc8252a1fd96f2fcb0e17c4201ae"
|
||||||
integrity sha512-ONHS2OcMMWdOOIPG8JBet2BTssZC1FSjY34f9t5byM3H6RKgu5qbv6p809OlfYkg8bFi58oEhNDxDB5UE4vkfQ==
|
integrity sha512-NR3dIa+o2hzlzo4lF4Gu0cYvoMjSw2DdRc6Epw1yjmCqWaGuN86WK9JqZie4arNlE1ZuWT3CLiMdiX5wcmmUmg==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^4.3.4"
|
debug "^4.3.4"
|
||||||
fast-glob "^3.2.11"
|
fast-glob "^3.2.11"
|
||||||
pretty-bytes "^6.0.0"
|
pretty-bytes "^6.0.0"
|
||||||
rollup "^2.75.7"
|
rollup "^2.79.0"
|
||||||
workbox-build "^6.5.3"
|
workbox-build "^6.5.4"
|
||||||
workbox-window "^6.5.3"
|
workbox-window "^6.5.4"
|
||||||
|
|
||||||
vite-plugin-vue-inspector@1.1.3:
|
vite-plugin-vue-inspector@1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
|
@ -5414,19 +5349,19 @@ vite-plugin-vue-inspector@1.1.3:
|
||||||
magic-string "^0.26.1"
|
magic-string "^0.26.1"
|
||||||
shell-quote "^1.7.3"
|
shell-quote "^1.7.3"
|
||||||
|
|
||||||
vite@3.0.9:
|
vite@3.1.6:
|
||||||
version "3.0.9"
|
version "3.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.9.tgz#45fac22c2a5290a970f23d66c1aef56a04be8a30"
|
resolved "https://registry.yarnpkg.com/vite/-/vite-3.1.6.tgz#4c6db3000326342c918204a42a130fb3ffed2414"
|
||||||
integrity sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==
|
integrity sha512-qMXIwnehvvcK5XfJiXQUiTxoYAEMKhM+jqCY6ZSTKFBKu1hJnAKEzP3AOcnTerI0cMZYAaJ4wpW1wiXLMDt4mA==
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild "^0.14.47"
|
esbuild "^0.15.9"
|
||||||
postcss "^8.4.16"
|
postcss "^8.4.16"
|
||||||
resolve "^1.22.1"
|
resolve "^1.22.1"
|
||||||
rollup ">=2.75.6 <2.77.0 || ~2.77.0"
|
rollup "~2.78.0"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "~2.3.2"
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
"vite@^2.9.12 || ^3.0.0-0", vite@^3.0.0:
|
vite@^3.0.0:
|
||||||
version "3.2.1"
|
version "3.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.1.tgz#dc1f54568300a7acdd89c8611e2719c21f1334f4"
|
resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.1.tgz#dc1f54568300a7acdd89c8611e2719c21f1334f4"
|
||||||
integrity sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==
|
integrity sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==
|
||||||
|
@ -5438,10 +5373,10 @@ vite@3.0.9:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "~2.3.2"
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
vitest@0.22.1:
|
vitest@0.24.0:
|
||||||
version "0.22.1"
|
version "0.24.0"
|
||||||
resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.22.1.tgz#3122e6024bf782ee9aca53034017af7adb009c32"
|
resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.24.0.tgz#61555b7b56e07f04a1692352de7d4803de0f5c88"
|
||||||
integrity sha512-+x28YTnSLth4KbXg7MCzoDAzPJlJex7YgiZbUh6YLp0/4PqVZ7q7/zyfdL0OaPtKTpNiQFPpMC8Y2MSzk8F7dw==
|
integrity sha512-k5j3FPTor+MJx2x0pDW2gtVk+s9VC6nSHT3SoqOIk9Je5fFpPgict+Xy2eAVXUogvSixs45Ya1oZk+oK93BO0w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/chai" "^4.3.3"
|
"@types/chai" "^4.3.3"
|
||||||
"@types/chai-subset" "^1.3.3"
|
"@types/chai-subset" "^1.3.3"
|
||||||
|
@ -5449,9 +5384,11 @@ vitest@0.22.1:
|
||||||
chai "^4.3.6"
|
chai "^4.3.6"
|
||||||
debug "^4.3.4"
|
debug "^4.3.4"
|
||||||
local-pkg "^0.4.2"
|
local-pkg "^0.4.2"
|
||||||
tinypool "^0.2.4"
|
strip-literal "^0.4.2"
|
||||||
|
tinybench "^2.2.1"
|
||||||
|
tinypool "^0.3.0"
|
||||||
tinyspy "^1.0.2"
|
tinyspy "^1.0.2"
|
||||||
vite "^2.9.12 || ^3.0.0-0"
|
vite "^3.0.0"
|
||||||
|
|
||||||
vitest@0.24.3:
|
vitest@0.24.3:
|
||||||
version "0.24.3"
|
version "0.24.3"
|
||||||
|
@ -5525,13 +5462,21 @@ vue-router@4.1.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/devtools-api" "^6.4.5"
|
"@vue/devtools-api" "^6.4.5"
|
||||||
|
|
||||||
vue-tsc@0.40.13:
|
vue-template-compiler@^2.7.10:
|
||||||
version "0.40.13"
|
version "2.7.13"
|
||||||
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.40.13.tgz#0a193014f7cadb47459cf0809ce3953b74a1348c"
|
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.13.tgz#1520a5aa6d1af51dd0622824e79814f6e8cb7058"
|
||||||
integrity sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==
|
integrity sha512-jYM6TClwDS9YqP48gYrtAtaOhRKkbYmbzE+Q51gX5YDr777n7tNI/IZk4QV4l/PjQPNh/FVa/E92sh/RqKMrog==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@volar/vue-language-core" "0.40.13"
|
de-indent "^1.0.2"
|
||||||
"@volar/vue-typescript" "0.40.13"
|
he "^1.2.0"
|
||||||
|
|
||||||
|
vue-tsc@1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.0.0.tgz#adb844b08f55e962c43f33e453f8185090ac7570"
|
||||||
|
integrity sha512-QtQunVlF8SLs75s9FTCOOLXx6Fb5ccN6r3xDT4rUzznPzP6xfRC/iWhrJImEBRz74fhqXWPUMfujcmibnwYyXw==
|
||||||
|
dependencies:
|
||||||
|
"@volar/vue-language-core" "1.0.0"
|
||||||
|
"@volar/vue-typescript" "1.0.0"
|
||||||
|
|
||||||
vue-upload-component@3.1.2:
|
vue-upload-component@3.1.2:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
|
@ -5569,16 +5514,16 @@ vue3-lazyload@0.3.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
vue-demi "^0.12.5"
|
vue-demi "^0.12.5"
|
||||||
|
|
||||||
vue@3.2.41:
|
vue@3.2.40:
|
||||||
version "3.2.41"
|
version "3.2.40"
|
||||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.41.tgz#ed452b8a0f7f2b962f055c8955139c28b1c06806"
|
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.40.tgz#23f387f6f9b3a0767938db6751e4fb5900f0ee34"
|
||||||
integrity sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==
|
integrity sha512-1mGHulzUbl2Nk3pfvI5aXYYyJUs1nm4kyvuz38u4xlQkLUn1i2R7nDbI4TufECmY8v1qNBHYy62bCaM+3cHP2A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/compiler-dom" "3.2.41"
|
"@vue/compiler-dom" "3.2.40"
|
||||||
"@vue/compiler-sfc" "3.2.41"
|
"@vue/compiler-sfc" "3.2.40"
|
||||||
"@vue/runtime-dom" "3.2.41"
|
"@vue/runtime-dom" "3.2.40"
|
||||||
"@vue/server-renderer" "3.2.41"
|
"@vue/server-renderer" "3.2.40"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.40"
|
||||||
|
|
||||||
vuedraggable@4.1.0:
|
vuedraggable@4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
|
@ -5701,7 +5646,7 @@ workbox-broadcast-update@6.5.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core "6.5.4"
|
workbox-core "6.5.4"
|
||||||
|
|
||||||
workbox-build@^6.5.3:
|
workbox-build@^6.5.4:
|
||||||
version "6.5.4"
|
version "6.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389"
|
resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389"
|
||||||
integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==
|
integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==
|
||||||
|
@ -5836,7 +5781,7 @@ workbox-sw@6.5.4:
|
||||||
resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736"
|
resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736"
|
||||||
integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==
|
integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==
|
||||||
|
|
||||||
workbox-window@6.5.4, workbox-window@^6.5.3:
|
workbox-window@6.5.4, workbox-window@^6.5.4:
|
||||||
version "6.5.4"
|
version "6.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91"
|
resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91"
|
||||||
integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==
|
integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==
|
||||||
|
|
Loading…
Reference in New Issue