diff --git a/packages/vscode/src/commands.ts b/packages/vscode/src/commands.ts index 0f3db2fc98..08f128370d 100644 --- a/packages/vscode/src/commands.ts +++ b/packages/vscode/src/commands.ts @@ -4,15 +4,15 @@ import { useCommand } from 'reactive-vscode' import { ConfigurationTarget, window, workspace } from 'vscode' import { useDevServer } from './composables/useDevServer' import { useFocusedSlide } from './composables/useFocusedSlide' -import { configuredPort, forceEnabled, include, previewSync } from './configs' +import { config } from './configs' import { activeEntry, activeProject, addProject, projects, rescanProjects } from './projects' import { findPossibleEntries } from './utils/findPossibleEntries' import { getSlidesTitle } from './utils/getSlidesTitle' import { usePreviewWebview } from './views/previewWebview' export function useCommands() { - useCommand('slidev.enable-extension', () => forceEnabled.value = true) - useCommand('slidev.disable-extension', () => forceEnabled.value = false) + useCommand('slidev.enable-extension', () => config.update('force-enabled', true, ConfigurationTarget.Workspace)) + useCommand('slidev.disable-extension', () => config.update('force-enabled', false, ConfigurationTarget.Workspace)) useCommand('slidev.rescan-projects', rescanProjects) @@ -55,7 +55,7 @@ export function useCommands() { const workspaceRoot = workspace.workspaceFolders[0].uri.fsPath const relatives = selected.map(s => slash(relative(workspaceRoot, s))) // write back to settings.json - await include.update([...include.value, ...relatives]) + await config.update('include', [...config.include, ...relatives]) } } return !!selected @@ -102,7 +102,7 @@ export function useCommands() { } const port = await window.showInputBox({ prompt: `Slidev Preview Port for ${getSlidesTitle(activeProject.value.data)}`, - value: configuredPort.value.toString(), + value: config.port.toString(), validateInput: (v) => { if (!v.match(/^\d+$/)) return 'Port should be a number' @@ -123,9 +123,9 @@ export function useCommands() { return } - const { start, showTerminal } = useDevServer(project) + const { start, terminal } = useDevServer(project) start() - showTerminal() + terminal.value?.show() }) useCommand('slidev.open-in-browser', () => usePreviewWebview().openExternal()) @@ -135,6 +135,6 @@ export function useCommands() { useCommand('slidev.preview-prev-slide', () => usePreviewWebview().prevSlide()) useCommand('slidev.preview-next-slide', () => usePreviewWebview().nextSlide()) - useCommand('slidev.enable-preview-sync', () => (previewSync.update(true, ConfigurationTarget.Global))) - useCommand('slidev.disable-preview-sync', () => (previewSync.update(false, ConfigurationTarget.Global))) + useCommand('slidev.enable-preview-sync', () => (config.update('preview-sync', true, ConfigurationTarget.Global))) + useCommand('slidev.disable-preview-sync', () => (config.update('preview-sync', false, ConfigurationTarget.Global))) } diff --git a/packages/vscode/src/composables/useDevServer.ts b/packages/vscode/src/composables/useDevServer.ts index 176496a46f..9d51632e15 100644 --- a/packages/vscode/src/composables/useDevServer.ts +++ b/packages/vscode/src/composables/useDevServer.ts @@ -1,18 +1,17 @@ -import type { EffectScope, Ref } from 'reactive-vscode' +import type { EffectScope, ShallowRef } from 'reactive-vscode' import type { Terminal } from 'vscode' import type { SlidevProject } from '../projects' import { basename } from 'node:path' -import { effectScope, onScopeDispose, useAbsolutePath, useControlledTerminal } from 'reactive-vscode' -import { env, Uri } from 'vscode' -import { devCommand } from '../configs' +import { effectScope, onScopeDispose, shallowRef, useAbsoluteUri, useDisposable } from 'reactive-vscode' +import { env, window } from 'vscode' +import { config } from '../configs' import { getSlidesTitle } from '../utils/getSlidesTitle' import { useServerDetector } from './useServerDetector' export interface SlidevServer { scope: EffectScope - terminal: Ref + terminal: ShallowRef start: () => void - showTerminal: () => void } export function useDevServer(project: SlidevProject) { @@ -24,19 +23,22 @@ export function useDevServer(project: SlidevProject) { const scope = effectScope(true) return server.value = scope.run(() => { - const { terminal, getIsActive, show: showTerminal, sendText, close } = useControlledTerminal({ - name: getSlidesTitle(project.data), - cwd: project.userRoot, - iconPath: { - light: Uri.file(useAbsolutePath('dist/res/logo-mono.svg').value), - dark: Uri.file(useAbsolutePath('dist/res/logo-mono-dark.svg').value), - }, - isTransient: true, - }) + const terminal = shallowRef(null) async function start() { - if (getIsActive()) + if (terminal.value && terminal.value.exitStatus == null) return + + terminal.value = useDisposable(window.createTerminal({ + name: getSlidesTitle(project.data), + cwd: project.userRoot, + iconPath: { + light: useAbsoluteUri('dist/res/logo-mono.svg').value, + dark: useAbsoluteUri('dist/res/logo-mono-dark.svg').value, + }, + isTransient: true, + })) + const p = port.value ??= await allocPort() const args = [ JSON.stringify(basename(project.entry)), @@ -44,7 +46,7 @@ export function useDevServer(project: SlidevProject) { env.remoteName != null ? '--remote' : '', ].filter(Boolean).join(' ') // eslint-disable-next-line no-template-curly-in-string - sendText(devCommand.value.replaceAll('${args}', args).replaceAll('${port}', `${p}`)) + terminal.value.sendText(config['dev-command'].replaceAll('${args}', args).replaceAll('${port}', `${p}`)) let intervalCount = 0 const maxIntervals = 100 @@ -66,7 +68,6 @@ export function useDevServer(project: SlidevProject) { scope, terminal, start, - showTerminal, } })! } diff --git a/packages/vscode/src/composables/useFocusedSlide.ts b/packages/vscode/src/composables/useFocusedSlide.ts index ab12dc88db..e942e690e2 100644 --- a/packages/vscode/src/composables/useFocusedSlide.ts +++ b/packages/vscode/src/composables/useFocusedSlide.ts @@ -16,7 +16,7 @@ export const useFocusedSlide = defineService(() => { const focusedSourceSlide = useDebouncedComputed( () => { const md = focusedMarkdown.value - if (!md || !debouncedEditor.value) { + if (!md || !debouncedEditor.value || !selection.value) { return null } const line = selection.value.active.line + 1 diff --git a/packages/vscode/src/composables/useServerDetector.ts b/packages/vscode/src/composables/useServerDetector.ts index b09c66f80e..3600f2148b 100644 --- a/packages/vscode/src/composables/useServerDetector.ts +++ b/packages/vscode/src/composables/useServerDetector.ts @@ -2,7 +2,7 @@ import type { SlidevProject } from '../projects' import { createControlledPromise } from '@antfu/utils' import { getPort as getPortPlease } from 'get-port-please' import { computed, defineService, onScopeDispose, reactive, watch } from 'reactive-vscode' -import { configuredPort } from '../configs' +import { config } from '../configs' import { activeProject, askAddProject, projects, scannedProjects } from '../projects' import { logger } from '../views/logger' @@ -68,7 +68,7 @@ export const useServerDetector = defineService(() => { } const portsToDetect = computed(() => { - const ports = new Set([configuredPort.value]) + const ports = new Set([config.port]) for (const project of projects.values()) { if (project.port.value) ports.add(project.port.value) @@ -92,7 +92,7 @@ export const useServerDetector = defineService(() => { onScopeDispose(() => clearInterval(interval)) function getDetected(project: SlidevProject) { - const port = project.port.value || configuredPort.value + const port = project.port.value || config.port const detected = detectedPorts.get(port) if (detected?.entry === project.entry) return detected diff --git a/packages/vscode/src/configs.ts b/packages/vscode/src/configs.ts index 43a2f0edc9..7fe6cb00cf 100644 --- a/packages/vscode/src/configs.ts +++ b/packages/vscode/src/configs.ts @@ -1,22 +1,12 @@ -import type { ConfigType } from 'reactive-vscode' -import { defineConfigs } from 'reactive-vscode' +import { defineConfig } from 'reactive-vscode' -export const { - 'force-enabled': forceEnabled, - 'port': configuredPort, - 'annotations': displayAnnotations, - 'annotations-line-numbers': displayCodeBlockLineNumbers, - 'preview-sync': previewSync, - include, - exclude, - 'dev-command': devCommand, -} = defineConfigs('slidev', { - 'force-enabled': Boolean, - 'port': Number, - 'annotations': Boolean, - 'annotations-line-numbers': Boolean, - 'preview-sync': Boolean, - 'include': Object as ConfigType, - 'exclude': String, - 'dev-command': String, -}) +export const config = defineConfig<{ + 'force-enabled': boolean + 'port': number + 'annotations': boolean + 'annotations-line-numbers': boolean + 'preview-sync': boolean + 'include': string[] + 'exclude': string + 'dev-command': string +}>('slidev') diff --git a/packages/vscode/src/projects.ts b/packages/vscode/src/projects.ts index 72ca1bd2ba..56d6d033d6 100644 --- a/packages/vscode/src/projects.ts +++ b/packages/vscode/src/projects.ts @@ -7,10 +7,10 @@ import { basename, dirname } from 'node:path' import { debounce, slash } from '@antfu/utils' import { load } from '@slidev/parser/fs' import { isMatch } from 'picomatch' -import { computed, effectScope, extensionContext, markRaw, onScopeDispose, ref, shallowReactive, shallowRef, useDisposable, useFsWatcher, useVscodeContext, watch, watchEffect } from 'reactive-vscode' +import { computed, effectScope, extensionContext, markRaw, onScopeDispose, ref, shallowReactive, shallowRef, useDisposable, useFileSystemWatcher, useVscodeContext, watch, watchEffect } from 'reactive-vscode' import { FileSystemError, Uri, window, workspace } from 'vscode' import { useServerDetector } from './composables/useServerDetector' -import { exclude, forceEnabled, include } from './configs' +import { config } from './configs' import { findShallowestPath } from './utils/findShallowestPath' import { logger } from './views/logger' @@ -31,18 +31,20 @@ export const activeProject = computed(() => activeEntry.value ? projects.get(act export const activeData = computed(() => activeProject.value?.data) export function useProjects() { - const watcher = useFsWatcher(include, false, true, false) - watcher.onDidCreate(async (uri) => { - const path = slash(uri.fsPath) - if (!isMatch(path, exclude.value)) - await addProject(path) - }) - watcher.onDidDelete(async (uri) => { - removeProject(slash(uri.fsPath)) + useFileSystemWatcher(() => config.include, { + async onDidCreate(uri) { + const path = slash(uri.fsPath) + if (!isMatch(path, config.exclude)) + await addProject(path) + }, + onDidChange: false, + async onDidDelete(uri) { + removeProject(slash(uri.fsPath)) + }, }) rescanProjects() - watch([include, exclude], debounce(200, rescanProjects)) + watch(() => [config.include, config.exclude], debounce(200, rescanProjects)) // In case all the projects are removed manually, and the user may not want to disable the extension. const everHadProjects = ref(false) @@ -80,7 +82,8 @@ export function useProjects() { }, { immediate: true }) useVscodeContext('slidev:enabled', () => { - const enabled = forceEnabled.value == null ? everHadProjects.value : forceEnabled.value + const forceEnabled = config['force-enabled'] + const enabled = forceEnabled == null ? everHadProjects.value : forceEnabled logger.info(`Slidev ${enabled ? 'enabled' : 'disabled'}.`) return enabled }) @@ -102,8 +105,8 @@ export async function rescanProjects() { scanningProjects = true try { const entries = new Set() - for (const glob of include.value) { - (await workspace.findFiles(glob, exclude.value)) + for (const glob of config.include) { + (await workspace.findFiles(glob, config.exclude)) .forEach(file => entries.add(file.fsPath)) } for (const entry of entries) { diff --git a/packages/vscode/src/views/annotations.ts b/packages/vscode/src/views/annotations.ts index 8b8699bbad..3863487507 100644 --- a/packages/vscode/src/views/annotations.ts +++ b/packages/vscode/src/views/annotations.ts @@ -1,10 +1,10 @@ import type { SourceSlideInfo } from '@slidev/types' import type { DecorationOptions } from 'vscode' -import { clamp, debounce, ensurePrefix } from '@antfu/utils' -import { computed, defineService, onScopeDispose, useActiveTextEditor, watch } from 'reactive-vscode' -import { Position, Range, ThemeColor, window, workspace } from 'vscode' +import { clamp, ensurePrefix } from '@antfu/utils' +import { computed, defineService, useActiveTextEditor, watch } from 'reactive-vscode' +import { Position, Range, ThemeColor, window } from 'vscode' import { useProjectFromDoc } from '../composables/useProjectFromDoc' -import { displayAnnotations, displayCodeBlockLineNumbers } from '../configs' +import { config } from '../configs' import { activeProject } from '../projects' import { toRelativePath } from '../utils/toRelativePath' @@ -94,7 +94,7 @@ function findCodeBlocks(docText: string): CodeBlockInfo[] { } function updateCodeBlockLineNumbers(editor: ReturnType['value'], docText: string) { - if (!editor || !displayCodeBlockLineNumbers.value) + if (!editor || !config['annotations-line-numbers']) return const codeBlockLineNumbers: DecorationOptions[] = [] @@ -141,44 +141,13 @@ export const useAnnotations = defineService(() => { const doc = computed(() => editor.value?.document) const projectInfo = useProjectFromDoc(doc) - let debouncedUpdateLineNumbers: ((docText: string) => void) | null = null - - watch( - [editor, displayCodeBlockLineNumbers], - ([currentEditor, lineNumbersEnabled]) => { - debouncedUpdateLineNumbers = null - - if (!currentEditor || !lineNumbersEnabled) { - if (currentEditor) - currentEditor.setDecorations(codeBlockLineNumberDecoration, []) - return - } - - debouncedUpdateLineNumbers = debounce(150, (docText: string) => { - if (editor.value === currentEditor) - updateCodeBlockLineNumbers(currentEditor, docText) - }) - }, - { immediate: true }, - ) - - const textChangeDisposable = workspace.onDidChangeTextDocument((e) => { - if (editor.value?.document === e.document && displayCodeBlockLineNumbers.value && debouncedUpdateLineNumbers) { - debouncedUpdateLineNumbers(e.document.getText()) - } - }) - - onScopeDispose(() => { - textChangeDisposable.dispose() - }) - watch( - [editor, doc, projectInfo, activeProject, displayAnnotations, displayCodeBlockLineNumbers], + [editor, doc, projectInfo, activeProject, () => config.annotations, () => config['annotations-line-numbers']], ([editor, doc, projectInfo, activeProject, enabled, lineNumbersEnabled]) => { - if (!editor || !doc || !projectInfo) + if (!editor || !doc) return - if (!enabled) { + if (!projectInfo || !enabled) { editor.setDecorations(firstLineDecoration, []) editor.setDecorations(dividerDecoration, []) editor.setDecorations(frontmatterContentDecoration, []) diff --git a/packages/vscode/src/views/logger.ts b/packages/vscode/src/views/logger.ts index 4c4afd07ad..25f53fd96e 100644 --- a/packages/vscode/src/views/logger.ts +++ b/packages/vscode/src/views/logger.ts @@ -1,3 +1,3 @@ -import { useLogger } from 'reactive-vscode' +import { defineLogger } from 'reactive-vscode' -export const logger = useLogger('Slidev') +export const logger = defineLogger('Slidev') diff --git a/packages/vscode/src/views/previewWebview.ts b/packages/vscode/src/views/previewWebview.ts index 12b9bb1ad1..96db667d46 100644 --- a/packages/vscode/src/views/previewWebview.ts +++ b/packages/vscode/src/views/previewWebview.ts @@ -2,7 +2,7 @@ import { computed, defineService, extensionContext, reactive, ref, useIsDarkThem import { commands, env, Uri, window } from 'vscode' import { useFocusedSlide } from '../composables/useFocusedSlide' import { useServerDetector } from '../composables/useServerDetector' -import { configuredPort, previewSync } from '../configs' +import { config } from '../configs' import { generateErrorHtml } from '../html/error' import { generateReadyHtml } from '../html/ready' import { activeData, activeProject } from '../projects' @@ -13,7 +13,7 @@ export const usePreviewWebview = defineService(() => { const isDarkTheme = useIsDarkTheme() const { redetect } = useServerDetector() - const port = computed(() => activeProject.value?.port.value || configuredPort.value) + const port = computed(() => activeProject.value?.port.value || config.port) const detected = computed(() => activeProject.value ? activeProject.value.detected.value : null) const message = computed(() => detected.value?.message ?? '') const compatMode = useVscodeContext('slidev:preview:compat', () => !!detected.value?.compatMode) @@ -22,7 +22,7 @@ export const usePreviewWebview = defineService(() => { ? generateReadyHtml(port.value) : generateErrorHtml(message.value), ) - useVscodeContext('slidev:preview:sync', previewSync) + useVscodeContext('slidev:preview:sync', () => config['preview-sync']) const previewNavState = reactive({ no: 0, @@ -38,7 +38,7 @@ export const usePreviewWebview = defineService(() => { const initializedClientId = ref('') - const { view, postMessage, forceRefresh } = useWebviewView( + const { view, postMessage, forceReload } = useWebviewView( 'slidev-preview', html, { @@ -57,7 +57,7 @@ export const usePreviewWebview = defineService(() => { } else { initializedClientId.value = data.clientId - if (previewSync.value && initializedClientId.value === data.clientId) + if (config['preview-sync'] && initializedClientId.value === data.clientId) postSlidevMessage('navigate', { no: focusedSlideNo.value }) } } @@ -71,7 +71,7 @@ export const usePreviewWebview = defineService(() => { await redetect(port.value) if (!view.value) return - forceRefresh() + forceReload() logger.info(`Webview refreshed. Current URL: http://localhost:${port.value}`) setTimeout(() => pageId.value++, 300) } @@ -108,13 +108,13 @@ export const usePreviewWebview = defineService(() => { watch( () => previewNavState.no, (no) => { - if (ready.value && previewSync.value && activeProject.value) { + if (ready.value && config['preview-sync'] && activeProject.value) { focusSlide(activeProject.value, no) } }, ) watch( - () => [previewSync.value, focusedSlideNo.value] as const, + [() => config['preview-sync'], focusedSlideNo], ([enabled, no]) => { if (enabled && no != null && previewNavState.no !== no) { postSlidevMessage('navigate', { no, clicks: 999999 }) diff --git a/packages/vscode/src/views/slidesTree.ts b/packages/vscode/src/views/slidesTree.ts index f3ed46f730..ebfd96078e 100644 --- a/packages/vscode/src/views/slidesTree.ts +++ b/packages/vscode/src/views/slidesTree.ts @@ -2,7 +2,7 @@ import type { SlidevMarkdown, SourceSlideInfo } from '@slidev/types' import type { TreeViewNode } from 'reactive-vscode' import { isDeepEqual } from '@antfu/utils' import { stringify } from '@slidev/parser/core' -import { computed, defineService, shallowRef, useTreeView, useViewVisibility, watch, watchEffect } from 'reactive-vscode' +import { computed, defineService, shallowRef, useTreeView, watch, watchEffect } from 'reactive-vscode' import { DataTransferItem, ThemeIcon, TreeItemCollapsibleState, Uri, window, workspace } from 'vscode' import { useFocusedSlide } from '../composables/useFocusedSlide' import { activeData } from '../projects' @@ -166,7 +166,6 @@ export const useSlidesTree = defineService(() => { }, ) - const visible = useViewVisibility(treeView) const focusedNode = computed(() => { if (!focusedSourceSlide.value) return null @@ -174,7 +173,7 @@ export const useSlidesTree = defineService(() => { return sourceToNode.value.get(`${filepath}:${index}`) }) watchEffect(() => { - if (visible.value && focusedNode.value) { + if (treeView.visible.value && focusedNode.value) { treeView.reveal(focusedNode.value, { select: true }) } }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4761ebd1aa..8bd25f953b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -180,7 +180,7 @@ catalogs: version: 1.2.4 '@iconify/json': specifier: ^2.2.416 - version: 2.2.416 + version: 2.2.421 monaco: '@shikijs/monaco': specifier: ^3.20.0 @@ -412,8 +412,8 @@ catalogs: specifier: ^2.8.8 version: 2.8.8 reactive-vscode: - specifier: ^0.4.1 - version: 0.4.1 + specifier: ^1.0.0-beta.1 + version: 1.0.0-beta.1 ts-json-schema-generator: specifier: ^2.4.0 version: 2.4.0 @@ -657,7 +657,7 @@ importers: version: 9.3.0 '@iconify/json': specifier: catalog:icons - version: 2.2.416 + version: 2.2.421 '@shikijs/vitepress-twoslash': specifier: catalog:prod version: 3.20.0(@nuxt/kit@3.13.0(rollup@4.44.1))(typescript@5.9.3) @@ -1193,7 +1193,7 @@ importers: version: 2.8.8 reactive-vscode: specifier: catalog:vscode - version: 0.4.1(@types/vscode@1.101.0) + version: 1.0.0-beta.1(@types/vscode@1.101.0) tm-grammars: specifier: catalog:frontend version: 1.26.0 @@ -1820,8 +1820,8 @@ packages: '@iconify-json/vscode-icons@1.2.32': resolution: {integrity: sha512-UzZmL6hF02YGu/qEbpskEVnstlNJG+c+0PNzNYTIBf/dXylWHLUVufhOXqAzuGRjkUZ2q7rPpOEwLUPkhkFHUA==} - '@iconify/json@2.2.416': - resolution: {integrity: sha512-9cD842bd/unmBJhM79Vo+x2LNpc9aN29VYSlsa2i6hKJFB6u6bvSgr3XPCcqht1SRv3kSdcWlbMjSeJ8xSc1Mw==} + '@iconify/json@2.2.421': + resolution: {integrity: sha512-jc0BOjmdVz4DxfYlvJWEBl8FIdOtgRCDZkyOEDFlHqCnfw6Yyr41fDaiECU/FSzkqjwNuKu5H10N7bLN+JPQGA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -1931,28 +1931,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@node-rs/crc32-linux-arm64-musl@1.10.6': resolution: {integrity: sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@node-rs/crc32-linux-x64-gnu@1.10.6': resolution: {integrity: sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@node-rs/crc32-linux-x64-musl@1.10.6': resolution: {integrity: sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@node-rs/crc32-wasm32-wasi@1.10.6': resolution: {integrity: sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==} @@ -2023,8 +2019,8 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@reactive-vscode/reactivity@0.4.1': - resolution: {integrity: sha512-ThNXTkTNK9LHvdlBcyzqSywlfF61FIQDlVDqv12+rkRQCCUjWsD+oilbIYYi5uAJkQ2h/yLyowx3f0YVEY1bxQ==} + '@reactive-vscode/reactivity@1.0.0-beta.1': + resolution: {integrity: sha512-OFf4fxdj85BSD7irWlhDAN92q37A1c79FsTwfwq6CrQBzGMtMBDeoFxM0JUq1woL5ET0px36v51bsBpj8G2hVw==} '@rolldown/binding-android-arm64@1.0.0-beta.55': resolution: {integrity: sha512-5cPpHdO+zp+klznZnIHRO1bMHDq5hS9cqXodEKAaa/dQTPDjnE91OwAsy3o1gT2x4QaY8NzdBXAvutYdaw0WeA==} @@ -2061,28 +2057,24 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.0.0-beta.55': resolution: {integrity: sha512-QbNncvqAXziya5wleI+OJvmceEE15vE4yn4qfbI/hwT/+8ZcqxyfRZOOh62KjisXxp4D0h3JZspycXYejxAU3w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] '@rolldown/binding-linux-x64-gnu@1.0.0-beta.55': resolution: {integrity: sha512-YZCTZZM+rujxwVc6A+QZaNMJXVtmabmFYLG2VGQTKaBfYGvBKUgtbMEttnp/oZ88BMi2DzadBVhOmfQV8SuHhw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-musl@1.0.0-beta.55': resolution: {integrity: sha512-28q9OQ/DDpFh2keS4BVAlc3N65/wiqKbk5K1pgLdu/uWbKa8hgUJofhXxqO+a+Ya2HVTUuYHneWsI2u+eu3N5Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] '@rolldown/binding-openharmony-arm64@1.0.0-beta.55': resolution: {integrity: sha512-LiCA4BjCnm49B+j1lFzUtlC+4ZphBv0d0g5VqrEJua/uyv9Ey1v9tiaMql1C8c0TVSNDUmrkfHQ71vuQC7YfpQ==} @@ -2162,67 +2154,56 @@ packages: resolution: {integrity: sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.44.1': resolution: {integrity: sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.44.1': resolution: {integrity: sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.44.1': resolution: {integrity: sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.44.1': resolution: {integrity: sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-powerpc64le-gnu@4.44.1': resolution: {integrity: sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.44.1': resolution: {integrity: sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.44.1': resolution: {integrity: sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.44.1': resolution: {integrity: sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.44.1': resolution: {integrity: sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.44.1': resolution: {integrity: sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.44.1': resolution: {integrity: sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==} @@ -2920,9 +2901,6 @@ packages: peerDependencies: vue: 3.5.26 - '@vue/shared@3.5.24': - resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} - '@vue/shared@3.5.25': resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} @@ -4928,28 +4906,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.30.1: resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.30.1: resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.30.1: resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.30.1: resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} @@ -5811,8 +5785,8 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - reactive-vscode@0.4.1: - resolution: {integrity: sha512-meh1p9cF3A0kRKQARo84PASHwa27cFMD3bLWfV7DypERf51678f420my8btKAyMHl3P6pI7LcivrrwbfrIgmNg==} + reactive-vscode@1.0.0-beta.1: + resolution: {integrity: sha512-MEAIaheJ70Cz//ewuV3bQzp4xvkaOJqJdfZNWIbRQi6An7kNi1XEWGNek4ZMJp7mH50b7VJu9ZKEBEgoguNcKA==} peerDependencies: '@types/vscode': ^1.101.0 @@ -7754,7 +7728,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify/json@2.2.416': + '@iconify/json@2.2.421': dependencies: '@iconify/types': 2.0.0 pathe: 2.0.3 @@ -7993,7 +7967,7 @@ snapshots: dependencies: quansync: 1.0.0 - '@reactive-vscode/reactivity@0.4.1': {} + '@reactive-vscode/reactivity@1.0.0-beta.1': {} '@rolldown/binding-android-arm64@1.0.0-beta.55': optional: true @@ -8954,7 +8928,7 @@ snapshots: '@babel/types': 7.28.5 '@vue/babel-helper-vue-transform-on': 2.0.1 '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.28.5) - '@vue/shared': 3.5.24 + '@vue/shared': 3.5.26 optionalDependencies: '@babel/core': 7.28.5 transitivePeerDependencies: @@ -9055,7 +9029,7 @@ snapshots: dependencies: '@volar/language-core': 2.4.26 '@vue/compiler-dom': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/shared': 3.5.26 alien-signals: 3.0.0 muggle-string: 0.4.1 path-browserify: 1.0.1 @@ -9085,8 +9059,6 @@ snapshots: '@vue/shared': 3.5.26 vue: 3.5.26(typescript@5.9.3) - '@vue/shared@3.5.24': {} - '@vue/shared@3.5.25': {} '@vue/shared@3.5.26': {} @@ -12287,9 +12259,9 @@ snapshots: strip-json-comments: 2.0.1 optional: true - reactive-vscode@0.4.1(@types/vscode@1.101.0): + reactive-vscode@1.0.0-beta.1(@types/vscode@1.101.0): dependencies: - '@reactive-vscode/reactivity': 0.4.1 + '@reactive-vscode/reactivity': 1.0.0-beta.1 '@types/vscode': 1.101.0 read@1.0.7: @@ -13364,7 +13336,7 @@ snapshots: '@types/markdown-it': 14.1.2 '@vitejs/plugin-vue': 6.0.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) '@vue/devtools-api': 8.0.5 - '@vue/shared': 3.5.24 + '@vue/shared': 3.5.26 '@vueuse/core': 14.1.0(vue@3.5.26(typescript@5.9.3)) '@vueuse/integrations': 14.1.0(axios@1.7.8)(change-case@5.4.4)(drauu@0.4.3)(focus-trap@7.6.6)(fuse.js@7.1.0)(vue@3.5.26(typescript@5.9.3)) focus-trap: 7.6.6 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1e9e429a8d..2cc0cbf776 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -163,7 +163,7 @@ catalogs: '@volar/vscode': ^2.4.27 picomatch: ^4.0.3 prettier: ^2.8.8 - reactive-vscode: ^0.4.1 + reactive-vscode: ^1.0.0-beta.1 ts-json-schema-generator: ^2.4.0 volar-service-prettier: ^0.0.64 volar-service-yaml: ^0.0.64