diff --git a/lib/constant.ts b/lib/constant.ts index 1d9937d..43edbdd 100644 --- a/lib/constant.ts +++ b/lib/constant.ts @@ -26,17 +26,17 @@ export const AUTOSEEK_C = AUTOSEEK_AT_MIN - AUTOSEEK_K * AUTOSEQ_TEMPO_LOW export const SCAN_OFFSETS = [ [ 124, 186, 248, 310, 372, 434, 496, 558, 620, 682, 744, 806, 868, 930, 992, - 1054, 1116, 1178, 1240, 1302, 1364, 1426, 1488, 0, + 1054, 1116, 1178, 1240, 1302, 1364, 1426, 1488, 0 ], [ -100, -75, -50, -25, 25, 50, 75, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, + 0, 0, 0 ], [ -20, -15, -10, -5, 5, 10, 15, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, + 0, 0 ], - [-4, -3, -2, -1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [-4, -3, -2, -1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] -export const BUFFER_SIZE = 16384 \ No newline at end of file +export const BUFFER_SIZE = 16384 diff --git a/lib/track.ts b/lib/track.ts index d7abcab..aed57cc 100644 --- a/lib/track.ts +++ b/lib/track.ts @@ -10,31 +10,31 @@ import * as CONSTANT from './constant' * @public */ export enum TrackType { - /** - * 输入为 url 链接 - */ - URL = 'URL', - /** - * 输入为音频文件 - */ - BUFFER = 'BUFFER', - /** - * 输入为音频流 - */ - MICROPHONE = 'MICROPHONE', + /** + * 输入为 url 链接 + */ + URL = 'URL', + /** + * 输入为音频文件 + */ + BUFFER = 'BUFFER', + /** + * 输入为音频流 + */ + MICROPHONE = 'MICROPHONE' } const BUFFER_SIZE = CONSTANT.BUFFER_SIZE const isAudioBufferSourceNode = ( - type: AudioBufferSourceNode | MediaStreamAudioSourceNode + type: AudioBufferSourceNode | MediaStreamAudioSourceNode ): type is AudioBufferSourceNode => { - return type instanceof AudioBufferSourceNode + return type instanceof AudioBufferSourceNode } const isAudioBuffer = ( - type: AudioBuffer | MediaStream + type: AudioBuffer | MediaStream ): type is AudioBuffer => { - return type instanceof AudioBuffer + return type instanceof AudioBuffer } /** * 音频类 @@ -42,113 +42,225 @@ const isAudioBuffer = ( * @remarks 主要用于播放音频以及获取音频内容 */ export default class Track { - private bufferSize = BUFFER_SIZE - private sourceNode: AudioBufferSourceNode | MediaStreamAudioSourceNode - private scriptNode: ScriptProcessorNode - private soundTouch = new SoundTouch() - private processBuffer = new SampleBuffer() - private gainNode: GainNode - constructor( - private source: AudioBuffer | MediaStream, - private audioContext: AudioContext, - public type: TrackType - ) { - if (isAudioBuffer(this.source)) { - this.sourceNode = this.audioContext.createBufferSource() - this.sourceNode.buffer = this.source - } else { - this.sourceNode = this.audioContext.createMediaStreamSource(this.source) - } - this.scriptNode = this.audioContext.createScriptProcessor( - this.bufferSize, - 2, - 2 - ) - this.sourceNode.connect(this.scriptNode) - this.gainNode = this.audioContext.createGain() - this.scriptNode.connect(this.gainNode) - this.gainNode.connect(this.audioContext.destination) - } - - /** - * 获取变调 - */ - get pitch() { - return this.soundTouch.pitch - } - - set pitch(newVal: number) { - this.soundTouch.pitch = newVal - } - - /** - * 获取音量 - */ - get volume() { - return this.gainNode.gain.value - } - - set volume(newVal: number) { - this.gainNode.gain.value = newVal - } - - /** - * 播放 - */ - async play() { - let playFlag = false - this.scriptNode.onaudioprocess = async (audioProcessingEvent) => { - const outputBuffer = audioProcessingEvent.outputBuffer - const inputBuffer = audioProcessingEvent.inputBuffer - const buffer = new Float32Array(this.bufferSize * 2) - const left = inputBuffer.getChannelData(0) - const right = - inputBuffer.numberOfChannels > 1 - ? inputBuffer.getChannelData(1) - : inputBuffer.getChannelData(0) - - for (let i = 0; i < buffer.length; i++) { - buffer[i * 2] = left[i] - buffer[i * 2 + 1] = right[i] - } - - const processBuffer = this.soundTouch.process(buffer) - this.processBuffer.putSamples(processBuffer, 0, -1) - if (playFlag) { - this.processBuffer.receiveSamples(buffer, this.bufferSize) - for (let i = 0; i < buffer.length; i++) { - outputBuffer.getChannelData(0)[i] = buffer[i * 2] - outputBuffer.getChannelData(1)[i] = buffer[i * 2 + 1] - } - } else { - if (this.processBuffer.frameCount >= this.bufferSize * 2) { - playFlag = true - } - } - } - isAudioBufferSourceNode(this.sourceNode) && this.sourceNode.start() - } - - /** - * 获取数据 - * @remarks 该接口会造成 UI/JS 线程阻塞 - * @returns 获取处理后的数据 - */ - process(): Float32Array { - if (isAudioBuffer(this.source)) { - const source = new Float32Array(this.source.length * 2) - const left = this.source.getChannelData(0) - const right = - this.source.numberOfChannels > 1 - ? this.source.getChannelData(1) - : this.source.getChannelData(0) - for (let i = 0; i < source.length; i++) { - source[i * 2] = left[i] - source[i * 2 + 1] = right[i] - } - return this.soundTouch.process(source) - } else { - return new Float32Array() - } - } + private sourceDuration = { + startTime: 0, + pauseTime: 0, + lastPauseTime: 0, + offsetTime: 0 + } + private bufferSize = BUFFER_SIZE + private sourceNode: + | AudioBufferSourceNode + | MediaStreamAudioSourceNode + | undefined + private scriptNode: ScriptProcessorNode | undefined + private soundTouch = new SoundTouch() + private processBuffer = new SampleBuffer() + private gainNode: GainNode | undefined + constructor( + private source: AudioBuffer | MediaStream, + private audioContext: AudioContext, + public type: TrackType + ) { + this.init() + } + + init() { + if (isAudioBuffer(this.source)) { + this.sourceNode = this.audioContext.createBufferSource() + this.sourceNode.buffer = this.source + this.sourceNode.addEventListener('ended', () => { + this.release() + }) + } else { + this.sourceNode = this.audioContext.createMediaStreamSource(this.source) + } + this.scriptNode = this.audioContext.createScriptProcessor( + this.bufferSize, + 2, + 2 + ) + this.sourceNode.connect(this.scriptNode) + this.gainNode = this.audioContext.createGain() + this.scriptNode.connect(this.gainNode) + this.gainNode.connect(this.audioContext.destination) + } + + /** + * 获取变调 + */ + get pitch() { + return this.soundTouch.pitch + } + + set pitch(newVal: number) { + this.soundTouch.pitch = newVal + } + + /** + * 获取音量 + */ + get volume() { + return this.gainNode ? this.gainNode.gain.value : -1 + } + + set volume(newVal: number) { + this.gainNode && (this.gainNode.gain.value = newVal) + } + + /** + * 获取音频时长 + */ + get duration() { + if (isAudioBuffer(this.source)) { + return this.source.duration + } else { + return -1 + } + } + + /** + * 获取当前时间 + */ + get currentTime() { + let baseTime = this.audioContext.currentTime + if (this.sourceDuration.lastPauseTime) { + baseTime = this.sourceDuration.lastPauseTime + } + const currentTime = + this.sourceDuration.offsetTime + + baseTime - + this.sourceDuration.startTime - + this.sourceDuration.pauseTime + return currentTime + } + + /** + * 播放 + */ + async play(offset = 0) { + let playFlag = false + if (this.scriptNode) { + this.scriptNode.onaudioprocess = async (audioProcessingEvent) => { + const outputBuffer = audioProcessingEvent.outputBuffer + const inputBuffer = audioProcessingEvent.inputBuffer + const buffer = new Float32Array(this.bufferSize * 2) + const left = inputBuffer.getChannelData(0) + const right = + inputBuffer.numberOfChannels > 1 + ? inputBuffer.getChannelData(1) + : inputBuffer.getChannelData(0) + + for (let i = 0; i < buffer.length; i++) { + buffer[i * 2] = left[i] + buffer[i * 2 + 1] = right[i] + } + + const processBuffer = this.soundTouch.process(buffer) + this.processBuffer.putSamples(processBuffer, 0, -1) + if (playFlag) { + this.processBuffer.receiveSamples(buffer, this.bufferSize) + for (let i = 0; i < buffer.length; i++) { + outputBuffer.getChannelData(0)[i] = buffer[i * 2] + outputBuffer.getChannelData(1)[i] = buffer[i * 2 + 1] + } + } else { + if (this.processBuffer.frameCount >= this.bufferSize * 2) { + playFlag = true + } + } + } + } + if (this.sourceNode && isAudioBufferSourceNode(this.sourceNode)) { + this.sourceDuration.startTime = this.audioContext.currentTime + this.sourceDuration.offsetTime = offset + this.sourceNode.start(0, offset) + } + } + + /** + * 恢复 + */ + public resume() { + if (this.sourceNode && isAudioBufferSourceNode(this.sourceNode)) { + this.sourceNode.playbackRate.value = 1 + this.sourceDuration.pauseTime += + this.audioContext.currentTime - this.sourceDuration.lastPauseTime + this.sourceDuration.lastPauseTime = 0 + } + } + + /** + * 暂停 + */ + public pause() { + if (this.sourceNode && isAudioBufferSourceNode(this.sourceNode)) { + this.sourceNode.playbackRate.value = Number.MIN_VALUE + if (!this.sourceDuration.lastPauseTime) { + this.sourceDuration.lastPauseTime = this.audioContext.currentTime + } + } + } + + /** + * seek + * @param time seek 指定时间 + */ + seek(time: number) { + this.release() + this.init() + this.play(time) + } + + /** + * 获取数据 + * @remarks 该接口会造成 UI/JS 线程阻塞 + * @returns 获取处理后的数据 + */ + process(): Float32Array { + if (isAudioBuffer(this.source)) { + const source = new Float32Array(this.source.length * 2) + const left = this.source.getChannelData(0) + const right = + this.source.numberOfChannels > 1 + ? this.source.getChannelData(1) + : this.source.getChannelData(0) + for (let i = 0; i < source.length; i++) { + source[i * 2] = left[i] + source[i * 2 + 1] = right[i] + } + return this.soundTouch.process(source) + } else { + return new Float32Array() + } + } + + /** + * 释放资源 + */ + release() { + if (this.sourceNode) { + this.gainNode && this.gainNode.disconnect() + this.sourceNode.disconnect() + this.scriptNode && this.scriptNode.disconnect() + if (!isAudioBufferSourceNode(this.sourceNode)) { + this.sourceNode.mediaStream.getTracks().forEach((track) => { + track.stop() + }) + } else { + this.resetSourceDuration() + this.sourceNode.onended = null + } + } + } + + private resetSourceDuration(): void { + this.processBuffer = new SampleBuffer() + this.sourceDuration = { + offsetTime: 0, + startTime: 0, + lastPauseTime: 0, + pauseTime: 0 + } + } } diff --git a/lib/yami.ts b/lib/yami.ts index 8e5fa78..500c1da 100644 --- a/lib/yami.ts +++ b/lib/yami.ts @@ -5,7 +5,6 @@ import Track, { TrackType } from './track' * @remarks 主要用于创建各种音频轨 */ export default class Yami { - private audioContext = new AudioContext() /** * 根据 url 创建音频轨 @@ -14,10 +13,11 @@ export default class Yami { */ async createURLTrack(url: string): Promise { return new Promise(async (resolve) => { + const audioContext = new AudioContext() const response = await fetch(url) const buffer = await response.arrayBuffer() - this.audioContext.decodeAudioData(buffer, async (audioBuffer) => { - const track = new Track(audioBuffer, this.audioContext, TrackType.URL) + audioContext.decodeAudioData(buffer, async (audioBuffer) => { + const track = new Track(audioBuffer, audioContext, TrackType.URL) resolve(track) }) }) @@ -29,10 +29,11 @@ export default class Yami { */ async createBufferTrack(buffer: ArrayBuffer): Promise { return new Promise(async (resolve) => { - this.audioContext.decodeAudioData(buffer, async (audioBuffer) => { + const audioContext = new AudioContext() + audioContext.decodeAudioData(buffer, async (audioBuffer) => { const track = new Track( audioBuffer, - this.audioContext, + audioContext, TrackType.BUFFER ) resolve(track) @@ -46,11 +47,12 @@ export default class Yami { */ async createMicrophoneTrack(config: MediaTrackConstraints | boolean = true): Promise { return new Promise(async (resolve) => { + const audioContext = new AudioContext() const stream = await navigator.mediaDevices.getUserMedia({ audio: config, video: false, }) - const track = new Track(stream, this.audioContext, TrackType.MICROPHONE) + const track = new Track(stream, audioContext, TrackType.MICROPHONE) resolve(track) }) } diff --git a/package.json b/package.json index 617d4d5..ff64a43 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "build-type": "tsc --emitDeclarationOnly -d && api-extractor run --local" }, "devDependencies": { + "@mdi/font": "^7.0.96", "@microsoft/api-extractor": "^7.33.6", + "@vitejs/plugin-vue": "^3.2.0", "typedoc": "^0.23.21", "typescript": "^4.8.4", - "vite": "^3.2.3" + "vite": "^3.2.3", + "vue": "^3.2.45", + "vuetify": "^3.0.3" }, "repository": { "type": "git", diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..cdb6c1b --- /dev/null +++ b/src/App.vue @@ -0,0 +1,129 @@ + + \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 11707b6..9d784e8 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,31 +1,15 @@ - -import { Yami } from '../lib/main' - -document.querySelector('#app')!.innerHTML = ` -
- - - -

Vite + TypeScript

-
- -
-
- -
-
-` - -document.getElementById('counter')?.addEventListener('click', async () => { - const yami = new Yami() - const track = await yami.createURLTrack('/bensound-actionable.mp3') - track.pitch = 1.6 - track.play() +import { createApp } from 'vue' +import App from './App.vue' +import '@mdi/font/css/materialdesignicons.css' +import 'vuetify/styles' +import { createVuetify } from 'vuetify' +import * as components from 'vuetify/components' +import * as directives from 'vuetify/directives' + +const vuetify = createVuetify({ + components, + directives }) -document.getElementById('counter2')?.addEventListener('click', async () => { - const yami = new Yami() - const track = await yami.createMicrophoneTrack() - track.pitch = 0.7 - track.play() -}) +const app = createApp(App) +app.use(vuetify).mount('#app') diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 11f02fe..c077905 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -1 +1,9 @@ /// + + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any> + export default component +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index c263356..ae7e860 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,21 +1,22 @@ import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' export default defineConfig(({ mode }) => { - const config = { - build: { - lib: { - entry: './lib/main.ts', - name: 'Yami', - fileName: 'Yami', - }, - }, - } - if (mode === 'development') { - return config - } else { - return { - publicDir: false, - ...config, - } - } + const config = { + build: { + lib: { + entry: './lib/main.ts', + name: 'Yami', + fileName: 'Yami' + } + } + } + if (mode === 'development') { + return { ...config, plugins: [vue()] } + } else { + return { + publicDir: false, + ...config + } + } }) diff --git a/yarn.lock b/yarn.lock index 43a45f5..b534c8a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,15 +2,25 @@ # yarn lockfile v1 -"@esbuild/android-arm@0.15.14": - version "0.15.14" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.14.tgz#5d0027f920eeeac313c01fd6ecb8af50c306a466" - integrity sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA== - -"@esbuild/linux-loong64@0.15.14": - version "0.15.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.14.tgz#1221684955c44385f8af34f7240088b7dc08d19d" - integrity sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg== +"@babel/parser@^7.16.4": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" + integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== + +"@esbuild/android-arm@0.15.17": + version "0.15.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.17.tgz#05162390ed2b0f2ae9647a809efb71fba14ddfe7" + integrity sha512-ay6Ken4u+JStjYmqIgh71jMT0bs/rXpCCDKaMfl78B20QYWJglT5P6Ejfm4hWf6Zi+uUWNe7ZmqakRs2BQYIeg== + +"@esbuild/linux-loong64@0.15.17": + version "0.15.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.17.tgz#870daa61c257dfa0ee4f0ed71704d55e9af8e20c" + integrity sha512-IA1O7f7qxw2DX8oqTpugHElr926phs7Rq8ULXleBMk4go5K05BU0mI8BfCkWcYAvcmVaMc13bv5W3LIUlU6Y9w== + +"@mdi/font@^7.0.96": + version "7.0.96" + resolved "https://registry.yarnpkg.com/@mdi/font/-/font-7.0.96.tgz#9853c222623072f5575b4039c8c195ea929b61fc" + integrity sha512-rzlxTfR64hqY8yiBzDjmANfcd8rv+T5C0Yedv/TWk2QyAQYdc66e0kaN1ipmnYU3RukHRTRcBARHzzm+tIhL7w== "@microsoft/api-extractor-model@7.25.2": version "7.25.2" @@ -96,6 +106,101 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== +"@vitejs/plugin-vue@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz#a1484089dd85d6528f435743f84cdd0d215bbb54" + integrity sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw== + +"@vue/compiler-core@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz#d9311207d96f6ebd5f4660be129fb99f01ddb41b" + integrity sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + source-map "^0.6.1" + +"@vue/compiler-dom@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz#c43cc15e50da62ecc16a42f2622d25dc5fd97dce" + integrity sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw== + dependencies: + "@vue/compiler-core" "3.2.45" + "@vue/shared" "3.2.45" + +"@vue/compiler-sfc@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz#7f7989cc04ec9e7c55acd406827a2c4e96872c70" + integrity sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.45" + "@vue/compiler-dom" "3.2.45" + "@vue/compiler-ssr" "3.2.45" + "@vue/reactivity-transform" "3.2.45" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" + +"@vue/compiler-ssr@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz#bd20604b6e64ea15344d5b6278c4141191c983b2" + integrity sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ== + dependencies: + "@vue/compiler-dom" "3.2.45" + "@vue/shared" "3.2.45" + +"@vue/reactivity-transform@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz#07ac83b8138550c83dfb50db43cde1e0e5e8124d" + integrity sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.45" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + magic-string "^0.25.7" + +"@vue/reactivity@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.45.tgz#412a45b574de601be5a4a5d9a8cbd4dee4662ff0" + integrity sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A== + dependencies: + "@vue/shared" "3.2.45" + +"@vue/runtime-core@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz#7ad7ef9b2519d41062a30c6fa001ec43ac549c7f" + integrity sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A== + dependencies: + "@vue/reactivity" "3.2.45" + "@vue/shared" "3.2.45" + +"@vue/runtime-dom@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz#1a2ef6ee2ad876206fbbe2a884554bba2d0faf59" + integrity sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA== + dependencies: + "@vue/runtime-core" "3.2.45" + "@vue/shared" "3.2.45" + csstype "^2.6.8" + +"@vue/server-renderer@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz#ca9306a0c12b0530a1a250e44f4a0abac6b81f3f" + integrity sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g== + dependencies: + "@vue/compiler-ssr" "3.2.45" + "@vue/shared" "3.2.45" + +"@vue/shared@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2" + integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg== + ajv@~6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -135,133 +240,143 @@ commander@^2.20.3: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -esbuild-android-64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.14.tgz#114e55b0d58fb7b45d7fa3d93516bd13fc8869cc" - integrity sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg== - -esbuild-android-arm64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.14.tgz#8541f38a9aacf88e574fb13f5ad4ca51a04c12bb" - integrity sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg== - -esbuild-darwin-64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.14.tgz#b40b334db81ff1e3677a6712b23761748a157c57" - integrity sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg== - -esbuild-darwin-arm64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.14.tgz#44b5c1477bb7bdb852dd905e906f68765e2828bc" - integrity sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A== - -esbuild-freebsd-64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.14.tgz#8c57315d238690f34b6ed0c94e5cfc04c858247a" - integrity sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA== - -esbuild-freebsd-arm64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.14.tgz#2e92acca09258daa849e635565f52469266f0b7b" - integrity sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg== - -esbuild-linux-32@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.14.tgz#ca5ed3e9dff82df486ddde362d7e00775a597dfd" - integrity sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA== - -esbuild-linux-64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.14.tgz#42952e1d08a299d5f573c567639fb37b033befbf" - integrity sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw== - -esbuild-linux-arm64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.14.tgz#0c0d788099703327ec0ae70758cb2639ef6c5d88" - integrity sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg== - -esbuild-linux-arm@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.14.tgz#751a5ca5042cd60f669b07c3bcec3dd6c4f8151c" - integrity sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q== - -esbuild-linux-mips64le@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.14.tgz#da8ac35f2704de0b52bf53a99c12f604fbe9b916" - integrity sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA== - -esbuild-linux-ppc64le@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.14.tgz#a315b5016917429080c3d32e03319f1ff876ac55" - integrity sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w== - -esbuild-linux-riscv64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.14.tgz#9f2e0a935e5086d398fc19c7ff5d217bfefe3e12" - integrity sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q== - -esbuild-linux-s390x@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.14.tgz#53108112faff5a4e1bad17f7b0b0ffa1df4b7efb" - integrity sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw== - -esbuild-netbsd-64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.14.tgz#5330efc41fe4f1c2bab5462bcfe7a4ffce7ba00a" - integrity sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ== - -esbuild-openbsd-64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.14.tgz#ee64944d863e937611fc31adf349e9bb4f5f7eac" - integrity sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA== - -esbuild-sunos-64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.14.tgz#29b0b20de6fe6ef50f9fbe533ec20dc4b595f9aa" - integrity sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q== - -esbuild-windows-32@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.14.tgz#05e9b159d664809f7a4a8a68ed048d193457b27d" - integrity sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg== - -esbuild-windows-64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.14.tgz#d5ae086728ab30b72969e40ed0a7a0d9082f2cdd" - integrity sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog== - -esbuild-windows-arm64@0.15.14: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.14.tgz#8eb50ab9a0ecaf058593fbad17502749306f801d" - integrity sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw== +csstype@^2.6.8: + version "2.6.21" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" + integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== + +esbuild-android-64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.17.tgz#3e639a064b275a5e9aaa02a2f4ea0e1d2d875fc9" + integrity sha512-sUs6cKMAuAyWnJ/66ezWVr9SMRGFSwoMagxzdhXYggSA12zF7krXSuc1Y9JwxHq56wtv/gFAVo97TFm7RBc1Ig== + +esbuild-android-arm64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.17.tgz#c863d99723e219bda5336352002530d3fdcc62bf" + integrity sha512-RLZuCgIx1rexwxwsXTEW40ZiZzdBI1MBphwDRFyms/iiJGwLxqCH7v75iSJk5s6AF6oa80KC6r/RmzyaX/uJNg== + +esbuild-darwin-64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.17.tgz#2c68c9cf85235a5e79b3936c12dfee1ce4aafa55" + integrity sha512-+6RTCZ0hfAb+RqTNq1uVsBcP441yZOSi6CyV9BIBryGGVg8RM3Bc6L45e5b68jdRloddN92ekS50e4ElI+cHQA== + +esbuild-darwin-arm64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.17.tgz#3d277785acea953e0bb23e21c5df536341055aad" + integrity sha512-ne4UWUHEKWLgYSE5SLr0/TBcID3k9LPnrzzRXzFLTfD+ygjnW1pMEgdMfmOKIe8jYBUYv8x/YoksriTdQb9r/Q== + +esbuild-freebsd-64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.17.tgz#d8727eada6b84ad27be448ec9da461497a497289" + integrity sha512-6my3DrwLOe1zhR8UzVRKeo9AFM9XkApJBcx0IE+qKaEbKKBxYAiDBtd2ZMtRA2agqIwRP0kuHofTiDEzpfA+ZA== + +esbuild-freebsd-arm64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.17.tgz#441ee277b908e068f5780f829c13d999328143ab" + integrity sha512-LQL7+f+bz+xmAu1FcDBB304Wm2CjONUcOeF4f3TqG7wYXMxjjYQZBFv+0OVapNXyYrM2vy9JMDbps+SheuOnHg== + +esbuild-linux-32@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.17.tgz#6109df781f8f5a02792d6aa457a727485b9972c7" + integrity sha512-7E9vZXMZhINQ4/KcxBxioJ2ao5gbXJ6Pa4/LEUd102g3gadSalpg0LrityFgw7ao6qmjcNWwdEYrXaDnOzyyYA== + +esbuild-linux-64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.17.tgz#67a9f35edcf45768d7f460c3981a2c8ec14274e2" + integrity sha512-TnedHtFQSUVlc0J0D4ZMMalYaQ0Zbt7HSwGy4sav7BlXVqDVc/rchJ/a9dathK51apzLgRyXQMseLf6bkloaSQ== + +esbuild-linux-arm64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.17.tgz#8f0277990429c0ded773d704ce94eec969d5eca6" + integrity sha512-oupYfh0lTHg+F/2ZoTNrioB+KLd6x0Zlhjz2Oa1jhl8wCGkNvwe25RytR2/SGPYpoNVcvCeoayWQRwwRuWGgfQ== + +esbuild-linux-arm@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.17.tgz#05470e182cfaa4677090a54db96253a2a319e5dc" + integrity sha512-+ugCmBTTDIlh+UuC7E/GvyJqjGTX2pNOA+g3isG78aYcfgswrHjvstTtIfljaU95AS30qrVNLgI5h/8TsRWTrg== + +esbuild-linux-mips64le@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.17.tgz#0e806ef7e0b7148fe9944d736e7e72c40f2bfec0" + integrity sha512-aUVyHwUXJF1hi9jsAT+At+cBxZh2yGICi/e757N6d/zzOD+eVK3PKQj68tAvIflx6/ZpnuCTKol1GpgGYrzERg== + +esbuild-linux-ppc64le@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.17.tgz#9c2b392efd372ddc2ac4e7d2cfd1d2b993a3031d" + integrity sha512-i7789iFTLfLccHPNADCbaZPx9CuQblsBqv2j4XqIBN1jKIJbpQ8iqCkWoHep4PLqqKLtBLtTWh919GsrFGdeJA== + +esbuild-linux-riscv64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.17.tgz#ac803768edebef91070891753565bf9ce25ece77" + integrity sha512-fEQ/8tnZ2sDniBlPfTXEdg+0OP1olps96HvYdwl8ywJdAlD7AK761EL3lRbRdfMHNOId2N6+CVca43/Fiu/0AQ== + +esbuild-linux-s390x@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.17.tgz#ac70e5326c16ef8b2b89d72b54c44c0c99d15401" + integrity sha512-ZBQekST4gYgTKHAvUJtR1kFFulHTDlRZSE8T0wRQCmQqydNkC1teWxlR31xS6MZevjZGfa7OMVJD24bBhei/2Q== + +esbuild-netbsd-64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.17.tgz#14eec8ded46e1d7ca564c81cf0ecd3cfbdeb89db" + integrity sha512-onNBFaZVN9GzGJMm3aZJJv74n/Q8FjW20G9OfSDhHjvamqJ5vbd42hNk6igQX4lgBCHTZvvBlWDJAMy+tbJAAw== + +esbuild-openbsd-64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.17.tgz#363e1a96e402ad1a8a35bf8a3f7b64b8703fa1de" + integrity sha512-QFxHmvjaRrmTCvH/A3EmzqKUSZHRQ7/pbrJeATsb/Q6qckCeL9e7zg/1A3HiZqDXeBUV3yNeBeV1GJBjY6yVyA== + +esbuild-sunos-64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.17.tgz#0d6def4f946f4b585845373010a8d35310356ed0" + integrity sha512-7dHZA8Kc6U8rBTKojJatXtzHTUKJ3CRYimvOGIQQ1yUDOqGx/zZkCH/HkEi3Zg5SWyDj/57E5e1YJPo4ySSw/w== + +esbuild-windows-32@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.17.tgz#3e5260f46c6a1cb0fafcb4c7c5aa1371ca0f525d" + integrity sha512-yDrNrwQ/0k4N3OZItZ6k6YnBUch8+of06YRYc3hFI8VDm7X1rkNZwhttZNAzF6+TtbnK4cIz7H2/EwdSoaGZ3g== + +esbuild-windows-64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.17.tgz#d313f92c3dcc191d14d5d06a6722ae250c158aeb" + integrity sha512-jPnXvB4zMMToNPpCBdt+OEQiYFVs9wlQ5G8vMoJkrYJBp1aEt070MRpBFa6pfBFrgXquqgUiNAohMcTdy+JVFg== + +esbuild-windows-arm64@0.15.17: + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.17.tgz#7ad50ae269a490c3b12c3128fb67d91ec2caf869" + integrity sha512-I5QeSsz0X66V8rxVhmw03Wzn8Tz63H3L9GrsA7C5wvBXMk3qahLWuEL+l7SZ2DleKkFeZZMu1dPxOak9f1TZ4A== esbuild@^0.15.9: - version "0.15.14" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.14.tgz#09202b811f1710363d5088a3401a351351c79875" - integrity sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ== + version "0.15.17" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.17.tgz#9a4e1e78898968afbdce4325e3b941cb7378ee42" + integrity sha512-8MbkDX+kh0kaeYGd6klMbn1uTOXHoDw7UYMd1dQYA5cqBZivf5+pzfaXZSL1RNamJfXW/uWC5+9wX5ejDgpSqg== optionalDependencies: - "@esbuild/android-arm" "0.15.14" - "@esbuild/linux-loong64" "0.15.14" - esbuild-android-64 "0.15.14" - esbuild-android-arm64 "0.15.14" - esbuild-darwin-64 "0.15.14" - esbuild-darwin-arm64 "0.15.14" - esbuild-freebsd-64 "0.15.14" - esbuild-freebsd-arm64 "0.15.14" - esbuild-linux-32 "0.15.14" - esbuild-linux-64 "0.15.14" - esbuild-linux-arm "0.15.14" - esbuild-linux-arm64 "0.15.14" - esbuild-linux-mips64le "0.15.14" - esbuild-linux-ppc64le "0.15.14" - esbuild-linux-riscv64 "0.15.14" - esbuild-linux-s390x "0.15.14" - esbuild-netbsd-64 "0.15.14" - esbuild-openbsd-64 "0.15.14" - esbuild-sunos-64 "0.15.14" - esbuild-windows-32 "0.15.14" - esbuild-windows-64 "0.15.14" - esbuild-windows-arm64 "0.15.14" + "@esbuild/android-arm" "0.15.17" + "@esbuild/linux-loong64" "0.15.17" + esbuild-android-64 "0.15.17" + esbuild-android-arm64 "0.15.17" + esbuild-darwin-64 "0.15.17" + esbuild-darwin-arm64 "0.15.17" + esbuild-freebsd-64 "0.15.17" + esbuild-freebsd-arm64 "0.15.17" + esbuild-linux-32 "0.15.17" + esbuild-linux-64 "0.15.17" + esbuild-linux-arm "0.15.17" + esbuild-linux-arm64 "0.15.17" + esbuild-linux-mips64le "0.15.17" + esbuild-linux-ppc64le "0.15.17" + esbuild-linux-riscv64 "0.15.17" + esbuild-linux-s390x "0.15.17" + esbuild-netbsd-64 "0.15.17" + esbuild-openbsd-64 "0.15.17" + esbuild-sunos-64 "0.15.17" + esbuild-windows-32 "0.15.17" + esbuild-windows-64 "0.15.17" + esbuild-windows-arm64 "0.15.17" + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== fast-deep-equal@^3.1.1: version "3.1.3" @@ -365,15 +480,22 @@ lunr@^2.3.9: resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + marked@^4.0.19: version "4.2.3" resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.3.tgz#bd76a5eb510ff1d8421bc6c3b2f0b93488c15bea" integrity sha512-slWRdJkbTZ+PjkyJnE30Uid64eHwbwa1Q25INCAYfZlK4o6ylagBy/Le9eWntqJFoFT93ikUKMv47GZ4gTwHkw== minimatch@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + version "5.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.1.tgz#6c9dffcf9927ff2a31e74b5af11adf8b9604b022" + integrity sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g== dependencies: brace-expansion "^2.0.1" @@ -392,7 +514,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -postcss@^8.4.18: +postcss@^8.1.10, postcss@^8.4.18: version "8.4.19" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== @@ -458,11 +580,16 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map@~0.6.1: +source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -493,7 +620,12 @@ typedoc@^0.23.21: minimatch "^5.1.0" shiki "^0.11.1" -typescript@^4.8.4, typescript@~4.8.4: +typescript@^4.8.4: + version "4.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== + +typescript@~4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== @@ -516,9 +648,9 @@ validator@^13.7.0: integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== vite@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.3.tgz#7a68d9ef73eff7ee6dc0718ad3507adfc86944a7" - integrity sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ== + version "3.2.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.4.tgz#d8c7892dd4268064e04fffbe7d866207dd24166e" + integrity sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw== dependencies: esbuild "^0.15.9" postcss "^8.4.18" @@ -537,6 +669,22 @@ vscode-textmate@^6.0.0: resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-6.0.0.tgz#a3777197235036814ac9a92451492f2748589210" integrity sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ== +vue@^3.2.45: + version "3.2.45" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.45.tgz#94a116784447eb7dbd892167784619fef379b3c8" + integrity sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA== + dependencies: + "@vue/compiler-dom" "3.2.45" + "@vue/compiler-sfc" "3.2.45" + "@vue/runtime-dom" "3.2.45" + "@vue/server-renderer" "3.2.45" + "@vue/shared" "3.2.45" + +vuetify@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-3.0.3.tgz#444968004dc413af9e7732cece0d56faed51c33a" + integrity sha512-ODqnS2ux/qUjn/E7W600mvy096nUSSf1mEgYN9o1IpfeNOC7RsakPD37t3zmtift54YTrE/upjSpILg3piYKmQ== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"