@lvce-editor/extension-host-worker 8.17.0 → 8.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extension-api/index.js +62 -0
- package/dist/extension-api/parts/ExecuteHoverProvider/ExecuteHoverProvider.js +4 -0
- package/dist/extension-api/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +3 -0
- package/dist/extension-api/parts/GetHoverProviderRegistrySnapshot/GetHoverProviderRegistrySnapshot.js +4 -0
- package/dist/extension-api/parts/Hover/Hover.js +10 -0
- package/dist/extension-api/parts/HoverProvider/HoverProvider.js +0 -0
- package/dist/extension-api/parts/HoverProviderRegistry/HoverProviderRegistry.js +64 -0
- package/dist/extension-api/parts/HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.js +0 -0
- package/dist/extension-api/parts/HoverResult/HoverResult.js +0 -0
- package/dist/extension-api/parts/HoverTextDocument/HoverTextDocument.js +0 -0
- package/dist/extension-api/parts/RegisterHoverProvider/RegisterHoverProvider.js +4 -0
- package/dist/extension-api/parts/RegisteredHoverProvider/RegisteredHoverProvider.js +0 -0
- package/dist/extension-api/parts/ResetHoverProviderRegistry/ResetHoverProviderRegistry.js +4 -0
- package/dist/extensionHostWorkerMain.js +31 -4
- package/extension-api/LICENSE +21 -0
- package/extension-api/README.md +23 -0
- package/extension-api/dist/index.d.ts +20 -0
- package/extension-api/dist/index.js +9 -0
- package/extension-api/dist/parts/Activation/Activation.d.ts +1 -0
- package/extension-api/dist/parts/Activation/Activation.js +10 -0
- package/extension-api/dist/parts/AssertCompletionProvider/AssertCompletionProvider.d.ts +2 -0
- package/extension-api/dist/parts/AssertCompletionProvider/AssertCompletionProvider.js +22 -0
- package/extension-api/dist/parts/AssertFormattingProvider/AssertFormattingProvider.d.ts +2 -0
- package/extension-api/dist/parts/AssertFormattingProvider/AssertFormattingProvider.js +19 -0
- package/extension-api/dist/parts/AssertStatusBarItemProvider/AssertStatusBarItemProvider.d.ts +2 -0
- package/extension-api/dist/parts/AssertStatusBarItemProvider/AssertStatusBarItemProvider.js +16 -0
- package/extension-api/dist/parts/Command/Command.d.ts +5 -0
- package/extension-api/dist/parts/Command/Command.js +1 -0
- package/extension-api/dist/parts/CommandCallback/CommandCallback.d.ts +1 -0
- package/extension-api/dist/parts/CommandCallback/CommandCallback.js +1 -0
- package/extension-api/dist/parts/CommandMap/CommandMap.d.ts +13 -0
- package/extension-api/dist/parts/CommandMap/CommandMap.js +11 -0
- package/extension-api/dist/parts/CommandRegistry/CommandRegistry.d.ts +7 -0
- package/extension-api/dist/parts/CommandRegistry/CommandRegistry.js +47 -0
- package/extension-api/dist/parts/CommandRegistrySnapshot/CommandRegistrySnapshot.d.ts +4 -0
- package/extension-api/dist/parts/CommandRegistrySnapshot/CommandRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/Completion/Completion.d.ts +9 -0
- package/extension-api/dist/parts/Completion/Completion.js +4 -0
- package/extension-api/dist/parts/CompletionItem/CompletionItem.d.ts +3 -0
- package/extension-api/dist/parts/CompletionItem/CompletionItem.js +1 -0
- package/extension-api/dist/parts/CompletionProvider/CompletionProvider.d.ts +8 -0
- package/extension-api/dist/parts/CompletionProvider/CompletionProvider.js +1 -0
- package/extension-api/dist/parts/CompletionProviderRegistry/CompletionProviderRegistry.d.ts +13 -0
- package/extension-api/dist/parts/CompletionProviderRegistry/CompletionProviderRegistry.js +66 -0
- package/extension-api/dist/parts/CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.d.ts +4 -0
- package/extension-api/dist/parts/CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/CompletionProviderState/CompletionProviderState.d.ts +1 -0
- package/extension-api/dist/parts/CompletionProviderState/CompletionProviderState.js +1 -0
- package/extension-api/dist/parts/CompletionTextDocument/CompletionTextDocument.d.ts +6 -0
- package/extension-api/dist/parts/CompletionTextDocument/CompletionTextDocument.js +1 -0
- package/extension-api/dist/parts/Disposable/Disposable.d.ts +3 -0
- package/extension-api/dist/parts/Disposable/Disposable.js +1 -0
- package/extension-api/dist/parts/ExecuteCommand/ExecuteCommand.d.ts +1 -0
- package/extension-api/dist/parts/ExecuteCommand/ExecuteCommand.js +4 -0
- package/extension-api/dist/parts/ExecuteCompletionProvider/ExecuteCompletionProvider.d.ts +1 -0
- package/extension-api/dist/parts/ExecuteCompletionProvider/ExecuteCompletionProvider.js +1 -0
- package/extension-api/dist/parts/ExecuteFormattingProvider/ExecuteFormattingProvider.d.ts +1 -0
- package/extension-api/dist/parts/ExecuteFormattingProvider/ExecuteFormattingProvider.js +1 -0
- package/extension-api/dist/parts/ExecuteHoverProvider/ExecuteHoverProvider.d.ts +1 -0
- package/extension-api/dist/parts/ExecuteHoverProvider/ExecuteHoverProvider.js +1 -0
- package/extension-api/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.d.ts +12 -0
- package/extension-api/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +17 -0
- package/extension-api/dist/parts/ExtensionApiError/ExtensionApiError.d.ts +3 -0
- package/extension-api/dist/parts/ExtensionApiError/ExtensionApiError.js +6 -0
- package/extension-api/dist/parts/ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.d.ts +14 -0
- package/extension-api/dist/parts/ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.js +12 -0
- package/extension-api/dist/parts/ExtensionApiWorkerHandleMessagePort/ExtensionApiWorkerHandleMessagePort.d.ts +1 -0
- package/extension-api/dist/parts/ExtensionApiWorkerHandleMessagePort/ExtensionApiWorkerHandleMessagePort.js +18 -0
- package/extension-api/dist/parts/ExtensionApiWorkerListen/ExtensionApiWorkerListen.d.ts +2 -0
- package/extension-api/dist/parts/ExtensionApiWorkerListen/ExtensionApiWorkerListen.js +8 -0
- package/extension-api/dist/parts/Formatting/Formatting.d.ts +9 -0
- package/extension-api/dist/parts/Formatting/Formatting.js +4 -0
- package/extension-api/dist/parts/FormattingEdit/FormattingEdit.d.ts +5 -0
- package/extension-api/dist/parts/FormattingEdit/FormattingEdit.js +1 -0
- package/extension-api/dist/parts/FormattingProvider/FormattingProvider.d.ts +7 -0
- package/extension-api/dist/parts/FormattingProvider/FormattingProvider.js +1 -0
- package/extension-api/dist/parts/FormattingProviderRegistry/FormattingProviderRegistry.d.ts +12 -0
- package/extension-api/dist/parts/FormattingProviderRegistry/FormattingProviderRegistry.js +34 -0
- package/extension-api/dist/parts/FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.d.ts +4 -0
- package/extension-api/dist/parts/FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/FormattingProviderState/FormattingProviderState.d.ts +1 -0
- package/extension-api/dist/parts/FormattingProviderState/FormattingProviderState.js +1 -0
- package/extension-api/dist/parts/FormattingTextDocument/FormattingTextDocument.d.ts +6 -0
- package/extension-api/dist/parts/FormattingTextDocument/FormattingTextDocument.js +1 -0
- package/extension-api/dist/parts/GetCompletionProviderRegistrySnapshot/GetCompletionProviderRegistrySnapshot.d.ts +1 -0
- package/extension-api/dist/parts/GetCompletionProviderRegistrySnapshot/GetCompletionProviderRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/GetFormattingProviderRegistrySnapshot/GetFormattingProviderRegistrySnapshot.d.ts +1 -0
- package/extension-api/dist/parts/GetFormattingProviderRegistrySnapshot/GetFormattingProviderRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/GetHoverProviderRegistrySnapshot/GetHoverProviderRegistrySnapshot.d.ts +1 -0
- package/extension-api/dist/parts/GetHoverProviderRegistrySnapshot/GetHoverProviderRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/GetStatusBarItemProviderRegistrySnapshot/GetStatusBarItemProviderRegistrySnapshot.d.ts +1 -0
- package/extension-api/dist/parts/GetStatusBarItemProviderRegistrySnapshot/GetStatusBarItemProviderRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/GetStatusBarItems/GetStatusBarItems.d.ts +1 -0
- package/extension-api/dist/parts/GetStatusBarItems/GetStatusBarItems.js +1 -0
- package/extension-api/dist/parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.d.ts +9 -0
- package/extension-api/dist/parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.js +10 -0
- package/extension-api/dist/parts/Hover/Hover.d.ts +9 -0
- package/extension-api/dist/parts/Hover/Hover.js +4 -0
- package/extension-api/dist/parts/HoverProvider/HoverProvider.d.ts +7 -0
- package/extension-api/dist/parts/HoverProvider/HoverProvider.js +1 -0
- package/extension-api/dist/parts/HoverProviderRegistry/HoverProviderRegistry.d.ts +12 -0
- package/extension-api/dist/parts/HoverProviderRegistry/HoverProviderRegistry.js +56 -0
- package/extension-api/dist/parts/HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.d.ts +4 -0
- package/extension-api/dist/parts/HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/HoverResult/HoverResult.d.ts +6 -0
- package/extension-api/dist/parts/HoverResult/HoverResult.js +1 -0
- package/extension-api/dist/parts/HoverTextDocument/HoverTextDocument.d.ts +6 -0
- package/extension-api/dist/parts/HoverTextDocument/HoverTextDocument.js +1 -0
- package/extension-api/dist/parts/NotifyStatusBarChange/NotifyStatusBarChange.d.ts +1 -0
- package/extension-api/dist/parts/NotifyStatusBarChange/NotifyStatusBarChange.js +4 -0
- package/extension-api/dist/parts/ProviderRegistry/ProviderRegistry.d.ts +21 -0
- package/extension-api/dist/parts/ProviderRegistry/ProviderRegistry.js +86 -0
- package/extension-api/dist/parts/QuickPick/QuickPick.d.ts +2 -0
- package/extension-api/dist/parts/QuickPick/QuickPick.js +4 -0
- package/extension-api/dist/parts/QuickPickItem/QuickPickItem.d.ts +5 -0
- package/extension-api/dist/parts/QuickPickItem/QuickPickItem.js +1 -0
- package/extension-api/dist/parts/RegisterCompletionProvider/RegisterCompletionProvider.d.ts +1 -0
- package/extension-api/dist/parts/RegisterCompletionProvider/RegisterCompletionProvider.js +1 -0
- package/extension-api/dist/parts/RegisterFormattingProvider/RegisterFormattingProvider.d.ts +1 -0
- package/extension-api/dist/parts/RegisterFormattingProvider/RegisterFormattingProvider.js +1 -0
- package/extension-api/dist/parts/RegisterHoverProvider/RegisterHoverProvider.d.ts +1 -0
- package/extension-api/dist/parts/RegisterHoverProvider/RegisterHoverProvider.js +1 -0
- package/extension-api/dist/parts/RegisterStatusBarItemProvider/RegisterStatusBarItemProvider.d.ts +1 -0
- package/extension-api/dist/parts/RegisterStatusBarItemProvider/RegisterStatusBarItemProvider.js +1 -0
- package/extension-api/dist/parts/RegisteredCommand/RegisteredCommand.d.ts +4 -0
- package/extension-api/dist/parts/RegisteredCommand/RegisteredCommand.js +1 -0
- package/extension-api/dist/parts/RegisteredCompletionProvider/RegisteredCompletionProvider.d.ts +8 -0
- package/extension-api/dist/parts/RegisteredCompletionProvider/RegisteredCompletionProvider.js +1 -0
- package/extension-api/dist/parts/RegisteredFormattingProvider/RegisteredFormattingProvider.d.ts +7 -0
- package/extension-api/dist/parts/RegisteredFormattingProvider/RegisteredFormattingProvider.js +1 -0
- package/extension-api/dist/parts/RegisteredHoverProvider/RegisteredHoverProvider.d.ts +7 -0
- package/extension-api/dist/parts/RegisteredHoverProvider/RegisteredHoverProvider.js +1 -0
- package/extension-api/dist/parts/RegisteredStatusBarItemProvider/RegisteredStatusBarItemProvider.d.ts +5 -0
- package/extension-api/dist/parts/RegisteredStatusBarItemProvider/RegisteredStatusBarItemProvider.js +1 -0
- package/extension-api/dist/parts/ResetCompletionProviderRegistry/ResetCompletionProviderRegistry.d.ts +1 -0
- package/extension-api/dist/parts/ResetCompletionProviderRegistry/ResetCompletionProviderRegistry.js +1 -0
- package/extension-api/dist/parts/ResetFormattingProviderRegistry/ResetFormattingProviderRegistry.d.ts +1 -0
- package/extension-api/dist/parts/ResetFormattingProviderRegistry/ResetFormattingProviderRegistry.js +1 -0
- package/extension-api/dist/parts/ResetHoverProviderRegistry/ResetHoverProviderRegistry.d.ts +1 -0
- package/extension-api/dist/parts/ResetHoverProviderRegistry/ResetHoverProviderRegistry.js +1 -0
- package/extension-api/dist/parts/ResetStatusBarItemProviderRegistry/ResetStatusBarItemProviderRegistry.d.ts +1 -0
- package/extension-api/dist/parts/ResetStatusBarItemProviderRegistry/ResetStatusBarItemProviderRegistry.js +1 -0
- package/extension-api/dist/parts/Rpc/Rpc.d.ts +3 -0
- package/extension-api/dist/parts/Rpc/Rpc.js +10 -0
- package/extension-api/dist/parts/ShowQuickPickOptions/ShowQuickPickOptions.d.ts +5 -0
- package/extension-api/dist/parts/ShowQuickPickOptions/ShowQuickPickOptions.js +1 -0
- package/extension-api/dist/parts/StatusBar/StatusBar.d.ts +8 -0
- package/extension-api/dist/parts/StatusBar/StatusBar.js +3 -0
- package/extension-api/dist/parts/StatusBarItem/StatusBarItem.d.ts +7 -0
- package/extension-api/dist/parts/StatusBarItem/StatusBarItem.js +1 -0
- package/extension-api/dist/parts/StatusBarItemProvider/StatusBarItemProvider.d.ts +5 -0
- package/extension-api/dist/parts/StatusBarItemProvider/StatusBarItemProvider.js +1 -0
- package/extension-api/dist/parts/StatusBarItemProviderHandle/StatusBarItemProviderHandle.d.ts +4 -0
- package/extension-api/dist/parts/StatusBarItemProviderHandle/StatusBarItemProviderHandle.js +1 -0
- package/extension-api/dist/parts/StatusBarItemProviderRegistry/StatusBarItemProviderRegistry.d.ts +11 -0
- package/extension-api/dist/parts/StatusBarItemProviderRegistry/StatusBarItemProviderRegistry.js +44 -0
- package/extension-api/dist/parts/StatusBarItemProviderRegistrySnapshot/StatusBarItemProviderRegistrySnapshot.d.ts +4 -0
- package/extension-api/dist/parts/StatusBarItemProviderRegistrySnapshot/StatusBarItemProviderRegistrySnapshot.js +1 -0
- package/extension-api/dist/parts/StatusBarItemProviderState/StatusBarItemProviderState.d.ts +1 -0
- package/extension-api/dist/parts/StatusBarItemProviderState/StatusBarItemProviderState.js +1 -0
- package/extension-api/package.json +32 -0
- package/extension-api/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CompletionItem } from '../CompletionItem/CompletionItem.ts';
|
|
2
|
+
import type { TextDocument } from '../CompletionTextDocument/CompletionTextDocument.ts';
|
|
3
|
+
export interface CompletionProvider {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly languageId: string;
|
|
6
|
+
readonly provideCompletions: (textDocument: TextDocument, offset: number, ...args: readonly unknown[]) => readonly CompletionItem[] | Promise<readonly CompletionItem[]>;
|
|
7
|
+
readonly resolveCompletionItem?: (textDocument: TextDocument, offset: number, name: string, completionItem: CompletionItem, ...args: readonly unknown[]) => CompletionItem | undefined | Promise<CompletionItem | undefined>;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CompletionItem } from '../CompletionItem/CompletionItem.ts';
|
|
2
|
+
import type { CompletionProvider } from '../CompletionProvider/CompletionProvider.ts';
|
|
3
|
+
import type { CompletionProviderRegistrySnapshot } from '../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts';
|
|
4
|
+
import type { TextDocument } from '../CompletionTextDocument/CompletionTextDocument.ts';
|
|
5
|
+
import type { Disposable } from '../Disposable/Disposable.ts';
|
|
6
|
+
import type { RegisteredCompletionProvider } from '../RegisteredCompletionProvider/RegisteredCompletionProvider.ts';
|
|
7
|
+
export declare const hasCompletionProvider: (id: string) => boolean;
|
|
8
|
+
export declare const registerCompletionProvider: (provider: CompletionProvider) => Disposable;
|
|
9
|
+
export declare const executeCompletionProvider: (textDocument: TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly CompletionItem[]>;
|
|
10
|
+
export declare const executeResolveCompletionItemProvider: (textDocument: TextDocument, offset: number, name: string, completionItem: CompletionItem, ...args: readonly unknown[]) => Promise<CompletionItem | undefined>;
|
|
11
|
+
export declare const getCompletionProviders: () => RegisteredCompletionProvider[];
|
|
12
|
+
export declare const getCompletionProviderRegistrySnapshot: () => CompletionProviderRegistrySnapshot;
|
|
13
|
+
export declare const resetCompletionProviderRegistry: () => void;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
2
|
+
import { createProviderRegistry } from "../ProviderRegistry/ProviderRegistry.js";
|
|
3
|
+
const getType = (value) => {
|
|
4
|
+
if (value === null) {
|
|
5
|
+
return 'null';
|
|
6
|
+
}
|
|
7
|
+
if (typeof value === 'string') {
|
|
8
|
+
return JSON.stringify(value);
|
|
9
|
+
}
|
|
10
|
+
return typeof value;
|
|
11
|
+
};
|
|
12
|
+
const validateCompletionResult = (completion) => {
|
|
13
|
+
if (!Array.isArray(completion)) {
|
|
14
|
+
throw new ExtensionApiError(`invalid completion result: completion must be of type array but is ${getType(completion)}`);
|
|
15
|
+
}
|
|
16
|
+
for (const item of completion) {
|
|
17
|
+
if (!item || typeof item !== 'object' || Array.isArray(item)) {
|
|
18
|
+
throw new ExtensionApiError(`invalid completion result: expected completion item to be of type object but was of type ${getType(item)}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return completion;
|
|
22
|
+
};
|
|
23
|
+
const registry = createProviderRegistry({
|
|
24
|
+
mapProvider(provider) {
|
|
25
|
+
return {
|
|
26
|
+
id: provider.id,
|
|
27
|
+
languageId: provider.languageId,
|
|
28
|
+
provideCompletions(textDocument, offset, ...args) {
|
|
29
|
+
return provider.provideCompletions(textDocument, offset, ...args);
|
|
30
|
+
},
|
|
31
|
+
resolveCompletionItem: provider.resolveCompletionItem
|
|
32
|
+
? (textDocument, offset, name, completionItem, ...args) => provider.resolveCompletionItem?.(textDocument, offset, name, completionItem, ...args)
|
|
33
|
+
: undefined,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
optionalMethods: ['resolveCompletionItem'],
|
|
37
|
+
providerName: 'completion provider',
|
|
38
|
+
requiredMethods: ['provideCompletions'],
|
|
39
|
+
requireLanguageId: true,
|
|
40
|
+
});
|
|
41
|
+
export const hasCompletionProvider = registry.hasProvider;
|
|
42
|
+
export const registerCompletionProvider = (provider) => {
|
|
43
|
+
const registeredProvider = registry.registerProvider(provider);
|
|
44
|
+
return {
|
|
45
|
+
dispose() {
|
|
46
|
+
registry.deleteProvider(registeredProvider.id);
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
export const executeCompletionProvider = async (textDocument, offset, ...args) => {
|
|
51
|
+
return registry.executeProviderByLanguageId(textDocument.languageId, 'provideCompletions', [textDocument, offset, ...args], validateCompletionResult);
|
|
52
|
+
};
|
|
53
|
+
export const executeResolveCompletionItemProvider = async (textDocument, offset, name, completionItem, ...args) => {
|
|
54
|
+
const provider = registry.getProviderByLanguageId(textDocument.languageId);
|
|
55
|
+
if (!provider) {
|
|
56
|
+
throw new ExtensionApiError(`No completion provider found for ${textDocument.languageId}`);
|
|
57
|
+
}
|
|
58
|
+
return provider.resolveCompletionItem?.(textDocument, offset, name, completionItem, ...args);
|
|
59
|
+
};
|
|
60
|
+
export const getCompletionProviders = registry.getProviders;
|
|
61
|
+
export const getCompletionProviderRegistrySnapshot = () => {
|
|
62
|
+
return {
|
|
63
|
+
providers: registry.getProviders(),
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
export const resetCompletionProviderRegistry = registry.reset;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getCompletionProviders, hasCompletionProvider, resetCompletionProviderRegistry as clearCompletionProviders, } from '../CompletionProviderRegistry/CompletionProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getCompletionProviders, hasCompletionProvider, resetCompletionProviderRegistry as clearCompletionProviders, } from "../CompletionProviderRegistry/CompletionProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const executeCommand: (id: string, ...args: readonly unknown[]) => Promise<unknown>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { executeCompletionProvider, executeResolveCompletionItemProvider } from '../CompletionProviderRegistry/CompletionProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { executeCompletionProvider, executeResolveCompletionItemProvider } from "../CompletionProviderRegistry/CompletionProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { executeFormattingProvider } from '../FormattingProviderRegistry/FormattingProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { executeFormattingProvider } from "../FormattingProviderRegistry/FormattingProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { executeHoverProvider } from '../HoverProviderRegistry/HoverProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { executeHoverProvider } from "../HoverProviderRegistry/HoverProviderRegistry.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const commandMap: {
|
|
2
|
+
'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
|
|
3
|
+
'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
|
|
4
|
+
'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
|
|
5
|
+
'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
|
|
6
|
+
'ExtensionApi.executeResolveCompletionItemProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, name: string, completionItem: import("../CompletionItem/CompletionItem.ts").CompletionItem, ...args: readonly unknown[]) => Promise<import("../CompletionItem/CompletionItem.ts").CompletionItem | undefined>;
|
|
7
|
+
'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
|
|
8
|
+
'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
|
|
9
|
+
'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
|
|
10
|
+
'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
|
|
11
|
+
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
12
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { executeCommand, getCommandRegistrySnapshot } from "../CommandRegistry/CommandRegistry.js";
|
|
2
|
+
import { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot } from "../Completion/Completion.js";
|
|
3
|
+
import { executeFormattingProvider, getFormattingProviderRegistrySnapshot } from "../Formatting/Formatting.js";
|
|
4
|
+
import { getStatusBarItems } from "../GetStatusBarItems/GetStatusBarItems.js";
|
|
5
|
+
import { executeHoverProvider, getHoverProviderRegistrySnapshot } from "../Hover/Hover.js";
|
|
6
|
+
export const commandMap = {
|
|
7
|
+
'ExtensionApi.executeCommand': executeCommand,
|
|
8
|
+
'ExtensionApi.executeCompletionProvider': executeCompletionProvider,
|
|
9
|
+
'ExtensionApi.executeFormattingProvider': executeFormattingProvider,
|
|
10
|
+
'ExtensionApi.executeHoverProvider': executeHoverProvider,
|
|
11
|
+
'ExtensionApi.executeResolveCompletionItemProvider': executeResolveCompletionItemProvider,
|
|
12
|
+
'ExtensionApi.getCommandRegistrySnapshot': getCommandRegistrySnapshot,
|
|
13
|
+
'ExtensionApi.getCompletionProviderRegistrySnapshot': getCompletionProviderRegistrySnapshot,
|
|
14
|
+
'ExtensionApi.getFormattingProviderRegistrySnapshot': getFormattingProviderRegistrySnapshot,
|
|
15
|
+
'ExtensionApi.getHoverProviderRegistrySnapshot': getHoverProviderRegistrySnapshot,
|
|
16
|
+
'ExtensionApi.getStatusBarItems': getStatusBarItems,
|
|
17
|
+
};
|
package/extension-api/dist/parts/ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const commandMap: {
|
|
2
|
+
'HandleMessagePort.handleExtensionManagementMessagePort': (port: MessagePort) => Promise<void>;
|
|
3
|
+
initialize(type: string, port: MessagePort): Promise<void>;
|
|
4
|
+
'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
|
|
5
|
+
'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
|
|
6
|
+
'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
|
|
7
|
+
'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
|
|
8
|
+
'ExtensionApi.executeResolveCompletionItemProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, name: string, completionItem: import("../CompletionItem/CompletionItem.ts").CompletionItem, ...args: readonly unknown[]) => Promise<import("../CompletionItem/CompletionItem.ts").CompletionItem | undefined>;
|
|
9
|
+
'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
|
|
10
|
+
'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
|
|
11
|
+
'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
|
|
12
|
+
'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
|
|
13
|
+
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
14
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { commandMap as extensionApiCommandMap } from "../ExtensionApiCommandMap/ExtensionApiCommandMap.js";
|
|
2
|
+
import { handleExtensionManagementMessagePort } from "../ExtensionApiWorkerHandleMessagePort/ExtensionApiWorkerHandleMessagePort.js";
|
|
3
|
+
export const commandMap = {
|
|
4
|
+
...extensionApiCommandMap,
|
|
5
|
+
'HandleMessagePort.handleExtensionManagementMessagePort': handleExtensionManagementMessagePort,
|
|
6
|
+
async initialize(type, port) {
|
|
7
|
+
if (type !== 'message-port') {
|
|
8
|
+
throw new Error(`unsupported initialize type ${type}`);
|
|
9
|
+
}
|
|
10
|
+
await handleExtensionManagementMessagePort(port);
|
|
11
|
+
},
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const handleExtensionManagementMessagePort: (port: MessagePort) => Promise<void>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PlainMessagePortRpc } from '@lvce-editor/rpc';
|
|
2
|
+
import * as ExtensionApiCommandMap from "../ExtensionApiCommandMap/ExtensionApiCommandMap.js";
|
|
3
|
+
const commandMap = {
|
|
4
|
+
...ExtensionApiCommandMap.commandMap,
|
|
5
|
+
async initialize(type, port) {
|
|
6
|
+
if (type !== 'message-port') {
|
|
7
|
+
throw new Error(`unsupported initialize type ${type}`);
|
|
8
|
+
}
|
|
9
|
+
await handleExtensionManagementMessagePort(port);
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export const handleExtensionManagementMessagePort = async (port) => {
|
|
13
|
+
await PlainMessagePortRpc.create({
|
|
14
|
+
commandMap,
|
|
15
|
+
isMessagePortOpen: true,
|
|
16
|
+
messagePort: port,
|
|
17
|
+
});
|
|
18
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { WebWorkerRpcClient } from '@lvce-editor/rpc';
|
|
2
|
+
import * as ExtensionApiWorkerCommandMap from "../ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.js";
|
|
3
|
+
export const listen = async () => {
|
|
4
|
+
const rpc = WebWorkerRpcClient.create({
|
|
5
|
+
commandMap: ExtensionApiWorkerCommandMap.commandMap,
|
|
6
|
+
});
|
|
7
|
+
return rpc;
|
|
8
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { executeFormattingProvider } from '../ExecuteFormattingProvider/ExecuteFormattingProvider.ts';
|
|
2
|
+
export { getFormattingProviderRegistrySnapshot } from '../GetFormattingProviderRegistrySnapshot/GetFormattingProviderRegistrySnapshot.ts';
|
|
3
|
+
export { registerFormattingProvider } from '../RegisterFormattingProvider/RegisterFormattingProvider.ts';
|
|
4
|
+
export { resetFormattingProviderRegistry } from '../ResetFormattingProviderRegistry/ResetFormattingProviderRegistry.ts';
|
|
5
|
+
export type { FormattingEdit } from '../FormattingEdit/FormattingEdit.ts';
|
|
6
|
+
export type { FormattingProvider } from '../FormattingProvider/FormattingProvider.ts';
|
|
7
|
+
export type { FormattingProviderRegistrySnapshot } from '../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts';
|
|
8
|
+
export type { TextDocument } from '../FormattingTextDocument/FormattingTextDocument.ts';
|
|
9
|
+
export type { RegisteredFormattingProvider } from '../RegisteredFormattingProvider/RegisteredFormattingProvider.ts';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { executeFormattingProvider } from "../ExecuteFormattingProvider/ExecuteFormattingProvider.js";
|
|
2
|
+
export { getFormattingProviderRegistrySnapshot } from "../GetFormattingProviderRegistrySnapshot/GetFormattingProviderRegistrySnapshot.js";
|
|
3
|
+
export { registerFormattingProvider } from "../RegisterFormattingProvider/RegisterFormattingProvider.js";
|
|
4
|
+
export { resetFormattingProviderRegistry } from "../ResetFormattingProviderRegistry/ResetFormattingProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FormattingEdit } from '../FormattingEdit/FormattingEdit.ts';
|
|
2
|
+
import type { TextDocument } from '../FormattingTextDocument/FormattingTextDocument.ts';
|
|
3
|
+
export interface FormattingProvider {
|
|
4
|
+
readonly format: (textDocument: TextDocument, ...args: readonly unknown[]) => readonly FormattingEdit[] | Promise<readonly FormattingEdit[]>;
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly languageId: string;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Disposable } from '../Disposable/Disposable.ts';
|
|
2
|
+
import type { FormattingEdit } from '../FormattingEdit/FormattingEdit.ts';
|
|
3
|
+
import type { FormattingProvider } from '../FormattingProvider/FormattingProvider.ts';
|
|
4
|
+
import type { FormattingProviderRegistrySnapshot } from '../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts';
|
|
5
|
+
import type { TextDocument } from '../FormattingTextDocument/FormattingTextDocument.ts';
|
|
6
|
+
import type { RegisteredFormattingProvider } from '../RegisteredFormattingProvider/RegisteredFormattingProvider.ts';
|
|
7
|
+
export declare const hasFormattingProvider: (id: string) => boolean;
|
|
8
|
+
export declare const registerFormattingProvider: (provider: FormattingProvider) => Disposable;
|
|
9
|
+
export declare const executeFormattingProvider: (textDocument: TextDocument, ...args: readonly unknown[]) => Promise<readonly FormattingEdit[]>;
|
|
10
|
+
export declare const getFormattingProviders: () => RegisteredFormattingProvider[];
|
|
11
|
+
export declare const getFormattingProviderRegistrySnapshot: () => FormattingProviderRegistrySnapshot;
|
|
12
|
+
export declare const resetFormattingProviderRegistry: () => void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createProviderRegistry } from "../ProviderRegistry/ProviderRegistry.js";
|
|
2
|
+
const registry = createProviderRegistry({
|
|
3
|
+
mapProvider(provider) {
|
|
4
|
+
return {
|
|
5
|
+
format(textDocument, ...args) {
|
|
6
|
+
return provider.format(textDocument, ...args);
|
|
7
|
+
},
|
|
8
|
+
id: provider.id,
|
|
9
|
+
languageId: provider.languageId,
|
|
10
|
+
};
|
|
11
|
+
},
|
|
12
|
+
providerName: 'formatting provider',
|
|
13
|
+
requiredMethods: ['format'],
|
|
14
|
+
requireLanguageId: true,
|
|
15
|
+
});
|
|
16
|
+
export const hasFormattingProvider = registry.hasProvider;
|
|
17
|
+
export const registerFormattingProvider = (provider) => {
|
|
18
|
+
const registeredProvider = registry.registerProvider(provider);
|
|
19
|
+
return {
|
|
20
|
+
dispose() {
|
|
21
|
+
registry.deleteProvider(registeredProvider.id);
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export const executeFormattingProvider = async (textDocument, ...args) => {
|
|
26
|
+
return registry.executeProviderByLanguageId(textDocument.languageId, 'format', [textDocument, ...args]);
|
|
27
|
+
};
|
|
28
|
+
export const getFormattingProviders = registry.getProviders;
|
|
29
|
+
export const getFormattingProviderRegistrySnapshot = () => {
|
|
30
|
+
return {
|
|
31
|
+
providers: registry.getProviders(),
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export const resetFormattingProviderRegistry = registry.reset;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getFormattingProviders, hasFormattingProvider, resetFormattingProviderRegistry as clearFormattingProviders, } from '../FormattingProviderRegistry/FormattingProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getFormattingProviders, hasFormattingProvider, resetFormattingProviderRegistry as clearFormattingProviders, } from "../FormattingProviderRegistry/FormattingProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getCompletionProviderRegistrySnapshot } from '../CompletionProviderRegistry/CompletionProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getCompletionProviderRegistrySnapshot } from "../CompletionProviderRegistry/CompletionProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getFormattingProviderRegistrySnapshot } from '../FormattingProviderRegistry/FormattingProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getFormattingProviderRegistrySnapshot } from "../FormattingProviderRegistry/FormattingProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getHoverProviderRegistrySnapshot } from '../HoverProviderRegistry/HoverProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getHoverProviderRegistrySnapshot } from "../HoverProviderRegistry/HoverProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getStatusBarItemProviderRegistrySnapshot } from '../StatusBarItemProviderRegistry/StatusBarItemProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getStatusBarItemProviderRegistrySnapshot } from "../StatusBarItemProviderRegistry/StatusBarItemProviderRegistry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getStatusBarItems } from '../StatusBarItemProviderRegistry/StatusBarItemProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getStatusBarItems } from "../StatusBarItemProviderRegistry/StatusBarItemProviderRegistry.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface HandleExtensionManagementMessagePortOptions {
|
|
2
|
+
readonly commandMap: Record<string, unknown>;
|
|
3
|
+
readonly createMessagePortRpcClient: (options: {
|
|
4
|
+
readonly commandMap: Record<string, unknown>;
|
|
5
|
+
readonly messagePort: MessagePort;
|
|
6
|
+
}) => Promise<unknown>;
|
|
7
|
+
readonly port: MessagePort;
|
|
8
|
+
}
|
|
9
|
+
export declare const handleExtensionManagementMessagePort: ({ commandMap, createMessagePortRpcClient, port, }: HandleExtensionManagementMessagePortOptions) => Promise<void>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { commandMap as extensionApiCommandMap } from "../CommandMap/CommandMap.js";
|
|
2
|
+
export const handleExtensionManagementMessagePort = async ({ commandMap, createMessagePortRpcClient, port, }) => {
|
|
3
|
+
await createMessagePortRpcClient({
|
|
4
|
+
commandMap: {
|
|
5
|
+
...extensionApiCommandMap,
|
|
6
|
+
...commandMap,
|
|
7
|
+
},
|
|
8
|
+
messagePort: port,
|
|
9
|
+
});
|
|
10
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { executeHoverProvider } from '../ExecuteHoverProvider/ExecuteHoverProvider.ts';
|
|
2
|
+
export { getHoverProviderRegistrySnapshot } from '../GetHoverProviderRegistrySnapshot/GetHoverProviderRegistrySnapshot.ts';
|
|
3
|
+
export { registerHoverProvider } from '../RegisterHoverProvider/RegisterHoverProvider.ts';
|
|
4
|
+
export { resetHoverProviderRegistry } from '../ResetHoverProviderRegistry/ResetHoverProviderRegistry.ts';
|
|
5
|
+
export type { HoverProvider } from '../HoverProvider/HoverProvider.ts';
|
|
6
|
+
export type { HoverProviderRegistrySnapshot } from '../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts';
|
|
7
|
+
export type { HoverResult } from '../HoverResult/HoverResult.ts';
|
|
8
|
+
export type { TextDocument } from '../HoverTextDocument/HoverTextDocument.ts';
|
|
9
|
+
export type { RegisteredHoverProvider } from '../RegisteredHoverProvider/RegisteredHoverProvider.ts';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { executeHoverProvider } from "../ExecuteHoverProvider/ExecuteHoverProvider.js";
|
|
2
|
+
export { getHoverProviderRegistrySnapshot } from "../GetHoverProviderRegistrySnapshot/GetHoverProviderRegistrySnapshot.js";
|
|
3
|
+
export { registerHoverProvider } from "../RegisterHoverProvider/RegisterHoverProvider.js";
|
|
4
|
+
export { resetHoverProviderRegistry } from "../ResetHoverProviderRegistry/ResetHoverProviderRegistry.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { HoverResult } from '../HoverResult/HoverResult.ts';
|
|
2
|
+
import type { TextDocument } from '../HoverTextDocument/HoverTextDocument.ts';
|
|
3
|
+
export interface HoverProvider {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly languageId: string;
|
|
6
|
+
readonly provideHover: (textDocument: TextDocument, offset: number, ...args: readonly unknown[]) => HoverResult | undefined | Promise<HoverResult | undefined>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Disposable } from '../Disposable/Disposable.ts';
|
|
2
|
+
import type { HoverProvider } from '../HoverProvider/HoverProvider.ts';
|
|
3
|
+
import type { HoverProviderRegistrySnapshot } from '../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts';
|
|
4
|
+
import type { HoverResult } from '../HoverResult/HoverResult.ts';
|
|
5
|
+
import type { TextDocument } from '../HoverTextDocument/HoverTextDocument.ts';
|
|
6
|
+
import type { RegisteredHoverProvider } from '../RegisteredHoverProvider/RegisteredHoverProvider.ts';
|
|
7
|
+
export declare const hasHoverProvider: (id: string) => boolean;
|
|
8
|
+
export declare const registerHoverProvider: (provider: HoverProvider) => Disposable;
|
|
9
|
+
export declare const executeHoverProvider: (textDocument: TextDocument, offset: number, ...args: readonly unknown[]) => Promise<HoverResult | undefined>;
|
|
10
|
+
export declare const getHoverProviders: () => RegisteredHoverProvider[];
|
|
11
|
+
export declare const getHoverProviderRegistrySnapshot: () => HoverProviderRegistrySnapshot;
|
|
12
|
+
export declare const resetHoverProviderRegistry: () => void;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
2
|
+
import { createProviderRegistry } from "../ProviderRegistry/ProviderRegistry.js";
|
|
3
|
+
const getType = (value) => {
|
|
4
|
+
if (value === null) {
|
|
5
|
+
return 'null';
|
|
6
|
+
}
|
|
7
|
+
if (typeof value === 'string') {
|
|
8
|
+
return JSON.stringify(value);
|
|
9
|
+
}
|
|
10
|
+
if (Array.isArray(value)) {
|
|
11
|
+
return 'array';
|
|
12
|
+
}
|
|
13
|
+
return typeof value;
|
|
14
|
+
};
|
|
15
|
+
const validateHoverResult = (hover) => {
|
|
16
|
+
if (hover === undefined) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
if (!hover || typeof hover !== 'object' || Array.isArray(hover)) {
|
|
20
|
+
throw new ExtensionApiError(`invalid hover result: hover must be of type object or undefined but is ${getType(hover)}`);
|
|
21
|
+
}
|
|
22
|
+
return hover;
|
|
23
|
+
};
|
|
24
|
+
const registry = createProviderRegistry({
|
|
25
|
+
mapProvider(provider) {
|
|
26
|
+
return {
|
|
27
|
+
id: provider.id,
|
|
28
|
+
languageId: provider.languageId,
|
|
29
|
+
provideHover(textDocument, offset, ...args) {
|
|
30
|
+
return provider.provideHover(textDocument, offset, ...args);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
providerName: 'hover provider',
|
|
35
|
+
requiredMethods: ['provideHover'],
|
|
36
|
+
requireLanguageId: true,
|
|
37
|
+
});
|
|
38
|
+
export const hasHoverProvider = registry.hasProvider;
|
|
39
|
+
export const registerHoverProvider = (provider) => {
|
|
40
|
+
const registeredProvider = registry.registerProvider(provider);
|
|
41
|
+
return {
|
|
42
|
+
dispose() {
|
|
43
|
+
registry.deleteProvider(registeredProvider.id);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export const executeHoverProvider = async (textDocument, offset, ...args) => {
|
|
48
|
+
return registry.executeProviderByLanguageId(textDocument.languageId, 'provideHover', [textDocument, offset, ...args], validateHoverResult);
|
|
49
|
+
};
|
|
50
|
+
export const getHoverProviders = registry.getProviders;
|
|
51
|
+
export const getHoverProviderRegistrySnapshot = () => {
|
|
52
|
+
return {
|
|
53
|
+
providers: registry.getProviders(),
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export const resetHoverProviderRegistry = registry.reset;
|
package/extension-api/dist/parts/HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const notifyStatusBarChange: (id: string) => Promise<void>;
|