@lvce-editor/api 8.19.0 → 8.24.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/index.d.ts +8 -0
- package/dist/index.js +3 -0
- package/dist/parts/Activation/Activation.js +4 -2
- package/dist/parts/CommandMap/CommandMap.d.ts +5 -0
- package/dist/parts/Diagnostic/Diagnostic.d.ts +9 -0
- package/dist/parts/Diagnostic/Diagnostic.js +4 -0
- package/dist/parts/DiagnosticProvider/DiagnosticProvider.d.ts +7 -0
- package/dist/parts/DiagnosticProvider/DiagnosticProvider.js +1 -0
- package/dist/parts/DiagnosticProviderRegistry/DiagnosticProviderRegistry.d.ts +12 -0
- package/dist/parts/DiagnosticProviderRegistry/DiagnosticProviderRegistry.js +58 -0
- package/dist/parts/DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.d.ts +4 -0
- package/dist/parts/DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.js +1 -0
- package/dist/parts/DiagnosticResult/DiagnosticResult.d.ts +11 -0
- package/dist/parts/DiagnosticResult/DiagnosticResult.js +1 -0
- package/dist/parts/DiagnosticTextDocument/DiagnosticTextDocument.d.ts +6 -0
- package/dist/parts/DiagnosticTextDocument/DiagnosticTextDocument.js +1 -0
- package/dist/parts/ExecuteCommand/ExecuteCommand.js +2 -2
- package/dist/parts/ExecuteDiagnosticProvider/ExecuteDiagnosticProvider.d.ts +1 -0
- package/dist/parts/ExecuteDiagnosticProvider/ExecuteDiagnosticProvider.js +1 -0
- package/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.d.ts +5 -0
- package/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +8 -0
- package/dist/parts/ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.d.ts +5 -0
- package/dist/parts/GetDiagnosticProviderRegistrySnapshot/GetDiagnosticProviderRegistrySnapshot.d.ts +1 -0
- package/dist/parts/GetDiagnosticProviderRegistrySnapshot/GetDiagnosticProviderRegistrySnapshot.js +1 -0
- package/dist/parts/NotifyStatusBarChange/NotifyStatusBarChange.js +2 -2
- package/dist/parts/OutputChannel/OutputChannel.d.ts +9 -0
- package/dist/parts/OutputChannel/OutputChannel.js +64 -0
- package/dist/parts/OutputChannelHandle/OutputChannelHandle.d.ts +6 -0
- package/dist/parts/OutputChannelHandle/OutputChannelHandle.js +1 -0
- package/dist/parts/OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.d.ts +4 -0
- package/dist/parts/OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.js +1 -0
- package/dist/parts/QuickPick/QuickPick.js +2 -2
- package/dist/parts/RegisterDiagnosticProvider/RegisterDiagnosticProvider.d.ts +1 -0
- package/dist/parts/RegisterDiagnosticProvider/RegisterDiagnosticProvider.js +1 -0
- package/dist/parts/RegisteredDiagnosticProvider/RegisteredDiagnosticProvider.d.ts +7 -0
- package/dist/parts/RegisteredDiagnosticProvider/RegisteredDiagnosticProvider.js +1 -0
- package/dist/parts/RegisteredOutputChannel/RegisteredOutputChannel.d.ts +3 -0
- package/dist/parts/RegisteredOutputChannel/RegisteredOutputChannel.js +1 -0
- package/dist/parts/ResetDiagnosticProviderRegistry/ResetDiagnosticProviderRegistry.d.ts +1 -0
- package/dist/parts/ResetDiagnosticProviderRegistry/ResetDiagnosticProviderRegistry.js +1 -0
- package/dist/parts/View/View.d.ts +14 -0
- package/dist/parts/View/View.js +1 -0
- package/dist/parts/ViewRegistry/ViewRegistry.d.ts +6 -0
- package/dist/parts/ViewRegistry/ViewRegistry.js +49 -0
- package/package.json +3 -2
- package/dist/parts/Rpc/Rpc.d.ts +0 -3
- package/dist/parts/Rpc/Rpc.js +0 -10
package/dist/index.d.ts
CHANGED
|
@@ -3,18 +3,26 @@ export { executeCommand } from './parts/ExecuteCommand/ExecuteCommand.ts';
|
|
|
3
3
|
export { showQuickPick } from './parts/QuickPick/QuickPick.ts';
|
|
4
4
|
export { registerCommand } from './parts/CommandRegistry/CommandRegistry.ts';
|
|
5
5
|
export { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot, registerCompletionProvider, resetCompletionProviderRegistry, } from './parts/Completion/Completion.ts';
|
|
6
|
+
export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, registerDiagnosticProvider, resetDiagnosticProviderRegistry, } from './parts/Diagnostic/Diagnostic.ts';
|
|
6
7
|
export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from './parts/Formatting/Formatting.ts';
|
|
7
8
|
export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from './parts/Hover/Hover.ts';
|
|
9
|
+
export { executeViewProvider, getViewRegistrySnapshot, registerView, resetViewRegistry } from './parts/ViewRegistry/ViewRegistry.ts';
|
|
10
|
+
export { createOutputChannel, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry } from './parts/OutputChannel/OutputChannel.ts';
|
|
8
11
|
export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from './parts/StatusBar/StatusBar.ts';
|
|
12
|
+
export type { RegisteredView, View, ViewRegistrySnapshot } from './parts/View/View.ts';
|
|
9
13
|
export { handleExtensionManagementMessagePort } from './parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.ts';
|
|
10
14
|
export type { Command } from './parts/Command/Command.ts';
|
|
11
15
|
export type { CommandCallback } from './parts/CommandCallback/CommandCallback.ts';
|
|
12
16
|
export type { CommandRegistrySnapshot } from './parts/CommandRegistrySnapshot/CommandRegistrySnapshot.ts';
|
|
13
17
|
export type { CompletionItem, CompletionProvider, CompletionProviderRegistrySnapshot, RegisteredCompletionProvider, } from './parts/Completion/Completion.ts';
|
|
18
|
+
export type { Diagnostic, DiagnosticProvider, DiagnosticProviderRegistrySnapshot, RegisteredDiagnosticProvider, } from './parts/Diagnostic/Diagnostic.ts';
|
|
14
19
|
export type { Disposable } from './parts/Disposable/Disposable.ts';
|
|
15
20
|
export type { FormattingEdit, FormattingProvider, FormattingProviderRegistrySnapshot, RegisteredFormattingProvider, } from './parts/Formatting/Formatting.ts';
|
|
16
21
|
export type { HandleExtensionManagementMessagePortOptions } from './parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.ts';
|
|
17
22
|
export type { HoverProvider, HoverProviderRegistrySnapshot, HoverResult, RegisteredHoverProvider } from './parts/Hover/Hover.ts';
|
|
23
|
+
export type { OutputChannel } from './parts/OutputChannelHandle/OutputChannelHandle.ts';
|
|
24
|
+
export type { OutputChannelRegistrySnapshot } from './parts/OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts';
|
|
25
|
+
export type { RegisteredOutputChannel } from './parts/RegisteredOutputChannel/RegisteredOutputChannel.ts';
|
|
18
26
|
export type { QuickPickItem } from './parts/QuickPickItem/QuickPickItem.ts';
|
|
19
27
|
export type { ShowQuickPickOptions } from './parts/ShowQuickPickOptions/ShowQuickPickOptions.ts';
|
|
20
28
|
export type { StatusBarItem, StatusBarItemProvider, StatusBarItemProviderHandle, StatusBarItemProviderRegistrySnapshot, } from './parts/StatusBar/StatusBar.ts';
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,10 @@ export { executeCommand } from "./parts/ExecuteCommand/ExecuteCommand.js";
|
|
|
3
3
|
export { showQuickPick } from "./parts/QuickPick/QuickPick.js";
|
|
4
4
|
export { registerCommand } from "./parts/CommandRegistry/CommandRegistry.js";
|
|
5
5
|
export { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot, registerCompletionProvider, resetCompletionProviderRegistry, } from "./parts/Completion/Completion.js";
|
|
6
|
+
export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, registerDiagnosticProvider, resetDiagnosticProviderRegistry, } from "./parts/Diagnostic/Diagnostic.js";
|
|
6
7
|
export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from "./parts/Formatting/Formatting.js";
|
|
7
8
|
export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from "./parts/Hover/Hover.js";
|
|
9
|
+
export { executeViewProvider, getViewRegistrySnapshot, registerView, resetViewRegistry } from "./parts/ViewRegistry/ViewRegistry.js";
|
|
10
|
+
export { createOutputChannel, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry } from "./parts/OutputChannel/OutputChannel.js";
|
|
8
11
|
export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from "./parts/StatusBar/StatusBar.js";
|
|
9
12
|
export { handleExtensionManagementMessagePort } from "./parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.js";
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { ExtensionManagementWorker } from '@lvce-editor/rpc-registry';
|
|
1
2
|
import { listen } from "../ExtensionApiWorkerListen/ExtensionApiWorkerListen.js";
|
|
2
|
-
import
|
|
3
|
+
import { activateOutputChannels } from "../OutputChannel/OutputChannel.js";
|
|
3
4
|
let rpcPromise;
|
|
4
5
|
export const activate = async () => {
|
|
5
6
|
if (!rpcPromise) {
|
|
6
7
|
rpcPromise = listen();
|
|
7
8
|
}
|
|
8
9
|
const rpc = await rpcPromise;
|
|
9
|
-
|
|
10
|
+
ExtensionManagementWorker.set(rpc);
|
|
11
|
+
activateOutputChannels();
|
|
10
12
|
};
|
|
@@ -2,12 +2,17 @@ export declare const commandMap: {
|
|
|
2
2
|
initialize(type: string, port: MessagePort): Promise<void>;
|
|
3
3
|
'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
|
|
4
4
|
'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
|
|
5
|
+
'ExtensionApi.executeDiagnosticProvider': (textDocument: import("../DiagnosticTextDocument/DiagnosticTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../DiagnosticResult/DiagnosticResult.ts").Diagnostic[]>;
|
|
5
6
|
'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
|
|
6
7
|
'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
|
|
7
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.executeViewProvider': (id: string) => unknown;
|
|
8
10
|
'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
|
|
9
11
|
'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
|
|
12
|
+
'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
|
|
10
13
|
'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
|
|
11
14
|
'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
|
|
15
|
+
'ExtensionApi.getOutputChannelRegistrySnapshot': () => import("../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts").OutputChannelRegistrySnapshot;
|
|
12
16
|
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
17
|
+
'ExtensionApi.getViewRegistrySnapshot': () => import("../View/View.ts").ViewRegistrySnapshot;
|
|
13
18
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { executeDiagnosticProvider } from '../ExecuteDiagnosticProvider/ExecuteDiagnosticProvider.ts';
|
|
2
|
+
export { getDiagnosticProviderRegistrySnapshot } from '../GetDiagnosticProviderRegistrySnapshot/GetDiagnosticProviderRegistrySnapshot.ts';
|
|
3
|
+
export { registerDiagnosticProvider } from '../RegisterDiagnosticProvider/RegisterDiagnosticProvider.ts';
|
|
4
|
+
export { resetDiagnosticProviderRegistry } from '../ResetDiagnosticProviderRegistry/ResetDiagnosticProviderRegistry.ts';
|
|
5
|
+
export type { Diagnostic } from '../DiagnosticResult/DiagnosticResult.ts';
|
|
6
|
+
export type { DiagnosticProvider } from '../DiagnosticProvider/DiagnosticProvider.ts';
|
|
7
|
+
export type { DiagnosticProviderRegistrySnapshot } from '../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts';
|
|
8
|
+
export type { RegisteredDiagnosticProvider } from '../RegisteredDiagnosticProvider/RegisteredDiagnosticProvider.ts';
|
|
9
|
+
export type { TextDocument } from '../DiagnosticTextDocument/DiagnosticTextDocument.ts';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { executeDiagnosticProvider } from "../ExecuteDiagnosticProvider/ExecuteDiagnosticProvider.js";
|
|
2
|
+
export { getDiagnosticProviderRegistrySnapshot } from "../GetDiagnosticProviderRegistrySnapshot/GetDiagnosticProviderRegistrySnapshot.js";
|
|
3
|
+
export { registerDiagnosticProvider } from "../RegisterDiagnosticProvider/RegisterDiagnosticProvider.js";
|
|
4
|
+
export { resetDiagnosticProviderRegistry } from "../ResetDiagnosticProviderRegistry/ResetDiagnosticProviderRegistry.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Diagnostic } from '../DiagnosticResult/DiagnosticResult.ts';
|
|
2
|
+
import type { TextDocument } from '../DiagnosticTextDocument/DiagnosticTextDocument.ts';
|
|
3
|
+
export interface DiagnosticProvider {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly languageId: string;
|
|
6
|
+
readonly provideDiagnostics: (textDocument: TextDocument, ...args: readonly unknown[]) => readonly Diagnostic[] | Promise<readonly Diagnostic[]>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DiagnosticProvider } from '../DiagnosticProvider/DiagnosticProvider.ts';
|
|
2
|
+
import type { DiagnosticProviderRegistrySnapshot } from '../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts';
|
|
3
|
+
import type { Diagnostic } from '../DiagnosticResult/DiagnosticResult.ts';
|
|
4
|
+
import type { TextDocument } from '../DiagnosticTextDocument/DiagnosticTextDocument.ts';
|
|
5
|
+
import type { Disposable } from '../Disposable/Disposable.ts';
|
|
6
|
+
import type { RegisteredDiagnosticProvider } from '../RegisteredDiagnosticProvider/RegisteredDiagnosticProvider.ts';
|
|
7
|
+
export declare const hasDiagnosticProvider: (id: string) => boolean;
|
|
8
|
+
export declare const registerDiagnosticProvider: (provider: DiagnosticProvider) => Disposable;
|
|
9
|
+
export declare const executeDiagnosticProvider: (textDocument: TextDocument, ...args: readonly unknown[]) => Promise<readonly Diagnostic[]>;
|
|
10
|
+
export declare const getDiagnosticProviders: () => RegisteredDiagnosticProvider[];
|
|
11
|
+
export declare const getDiagnosticProviderRegistrySnapshot: () => DiagnosticProviderRegistrySnapshot;
|
|
12
|
+
export declare const resetDiagnosticProviderRegistry: () => void;
|
|
@@ -0,0 +1,58 @@
|
|
|
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 validateDiagnosticResult = (diagnostics) => {
|
|
16
|
+
if (!Array.isArray(diagnostics)) {
|
|
17
|
+
throw new ExtensionApiError(`invalid diagnostic result: diagnostic must be of type array but is ${getType(diagnostics)}`);
|
|
18
|
+
}
|
|
19
|
+
for (const item of diagnostics) {
|
|
20
|
+
if (!item || typeof item !== 'object' || Array.isArray(item)) {
|
|
21
|
+
throw new ExtensionApiError(`invalid diagnostic result: expected diagnostic item to be of type object but was of type ${getType(item)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return diagnostics;
|
|
25
|
+
};
|
|
26
|
+
const registry = createProviderRegistry({
|
|
27
|
+
mapProvider(provider) {
|
|
28
|
+
return {
|
|
29
|
+
id: provider.id,
|
|
30
|
+
languageId: provider.languageId,
|
|
31
|
+
provideDiagnostics(textDocument, ...args) {
|
|
32
|
+
return provider.provideDiagnostics(textDocument, ...args);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
providerName: 'diagnostic provider',
|
|
37
|
+
requiredMethods: ['provideDiagnostics'],
|
|
38
|
+
requireLanguageId: true,
|
|
39
|
+
});
|
|
40
|
+
export const hasDiagnosticProvider = registry.hasProvider;
|
|
41
|
+
export const registerDiagnosticProvider = (provider) => {
|
|
42
|
+
const registeredProvider = registry.registerProvider(provider);
|
|
43
|
+
return {
|
|
44
|
+
dispose() {
|
|
45
|
+
registry.deleteProvider(registeredProvider.id);
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export const executeDiagnosticProvider = async (textDocument, ...args) => {
|
|
50
|
+
return registry.executeProviderByLanguageId(textDocument.languageId, 'provideDiagnostics', [textDocument, ...args], validateDiagnosticResult);
|
|
51
|
+
};
|
|
52
|
+
export const getDiagnosticProviders = registry.getProviders;
|
|
53
|
+
export const getDiagnosticProviderRegistrySnapshot = () => {
|
|
54
|
+
return {
|
|
55
|
+
providers: registry.getProviders(),
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export const resetDiagnosticProviderRegistry = registry.reset;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface Diagnostic {
|
|
2
|
+
readonly code?: number | string;
|
|
3
|
+
readonly columnIndex: number;
|
|
4
|
+
readonly endColumnIndex: number;
|
|
5
|
+
readonly endRowIndex: number;
|
|
6
|
+
readonly message: string;
|
|
7
|
+
readonly rowIndex: number;
|
|
8
|
+
readonly source?: string;
|
|
9
|
+
readonly type: string;
|
|
10
|
+
readonly uri?: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ExtensionManagementWorker } from '@lvce-editor/rpc-registry';
|
|
2
2
|
export const executeCommand = async (id, ...args) => {
|
|
3
|
-
return
|
|
3
|
+
return ExtensionManagementWorker.invoke('Extensions.executeCommand', id, ...args);
|
|
4
4
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { executeDiagnosticProvider } from '../DiagnosticProviderRegistry/DiagnosticProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { executeDiagnosticProvider } from "../DiagnosticProviderRegistry/DiagnosticProviderRegistry.js";
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
export declare const commandMap: {
|
|
2
2
|
'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
|
|
3
3
|
'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
|
|
4
|
+
'ExtensionApi.executeDiagnosticProvider': (textDocument: import("../DiagnosticTextDocument/DiagnosticTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../DiagnosticResult/DiagnosticResult.ts").Diagnostic[]>;
|
|
4
5
|
'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
|
|
5
6
|
'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
|
|
6
7
|
'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>;
|
|
8
|
+
'ExtensionApi.executeViewProvider': (id: string) => unknown;
|
|
7
9
|
'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
|
|
8
10
|
'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
|
|
11
|
+
'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
|
|
9
12
|
'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
|
|
10
13
|
'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
|
|
14
|
+
'ExtensionApi.getOutputChannelRegistrySnapshot': () => import("../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts").OutputChannelRegistrySnapshot;
|
|
11
15
|
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
16
|
+
'ExtensionApi.getViewRegistrySnapshot': () => import("../View/View.ts").ViewRegistrySnapshot;
|
|
12
17
|
};
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import { executeCommand, getCommandRegistrySnapshot } from "../CommandRegistry/CommandRegistry.js";
|
|
2
2
|
import { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot } from "../Completion/Completion.js";
|
|
3
|
+
import { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot } from "../Diagnostic/Diagnostic.js";
|
|
3
4
|
import { executeFormattingProvider, getFormattingProviderRegistrySnapshot } from "../Formatting/Formatting.js";
|
|
4
5
|
import { getStatusBarItems } from "../GetStatusBarItems/GetStatusBarItems.js";
|
|
5
6
|
import { executeHoverProvider, getHoverProviderRegistrySnapshot } from "../Hover/Hover.js";
|
|
7
|
+
import { getOutputChannelRegistrySnapshot } from "../OutputChannel/OutputChannel.js";
|
|
8
|
+
import { executeViewProvider, getViewRegistrySnapshot } from "../ViewRegistry/ViewRegistry.js";
|
|
6
9
|
export const commandMap = {
|
|
7
10
|
'ExtensionApi.executeCommand': executeCommand,
|
|
8
11
|
'ExtensionApi.executeCompletionProvider': executeCompletionProvider,
|
|
12
|
+
'ExtensionApi.executeDiagnosticProvider': executeDiagnosticProvider,
|
|
9
13
|
'ExtensionApi.executeFormattingProvider': executeFormattingProvider,
|
|
10
14
|
'ExtensionApi.executeHoverProvider': executeHoverProvider,
|
|
11
15
|
'ExtensionApi.executeResolveCompletionItemProvider': executeResolveCompletionItemProvider,
|
|
16
|
+
'ExtensionApi.executeViewProvider': executeViewProvider,
|
|
12
17
|
'ExtensionApi.getCommandRegistrySnapshot': getCommandRegistrySnapshot,
|
|
13
18
|
'ExtensionApi.getCompletionProviderRegistrySnapshot': getCompletionProviderRegistrySnapshot,
|
|
19
|
+
'ExtensionApi.getDiagnosticProviderRegistrySnapshot': getDiagnosticProviderRegistrySnapshot,
|
|
14
20
|
'ExtensionApi.getFormattingProviderRegistrySnapshot': getFormattingProviderRegistrySnapshot,
|
|
15
21
|
'ExtensionApi.getHoverProviderRegistrySnapshot': getHoverProviderRegistrySnapshot,
|
|
22
|
+
'ExtensionApi.getOutputChannelRegistrySnapshot': getOutputChannelRegistrySnapshot,
|
|
16
23
|
'ExtensionApi.getStatusBarItems': getStatusBarItems,
|
|
24
|
+
'ExtensionApi.getViewRegistrySnapshot': getViewRegistrySnapshot,
|
|
17
25
|
};
|
|
@@ -3,12 +3,17 @@ export declare const commandMap: {
|
|
|
3
3
|
initialize(type: string, port: MessagePort): Promise<void>;
|
|
4
4
|
'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
|
|
5
5
|
'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
|
|
6
|
+
'ExtensionApi.executeDiagnosticProvider': (textDocument: import("../DiagnosticTextDocument/DiagnosticTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../DiagnosticResult/DiagnosticResult.ts").Diagnostic[]>;
|
|
6
7
|
'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
|
|
7
8
|
'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
|
|
8
9
|
'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>;
|
|
10
|
+
'ExtensionApi.executeViewProvider': (id: string) => unknown;
|
|
9
11
|
'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
|
|
10
12
|
'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
|
|
13
|
+
'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
|
|
11
14
|
'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
|
|
12
15
|
'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
|
|
16
|
+
'ExtensionApi.getOutputChannelRegistrySnapshot': () => import("../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts").OutputChannelRegistrySnapshot;
|
|
13
17
|
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
18
|
+
'ExtensionApi.getViewRegistrySnapshot': () => import("../View/View.ts").ViewRegistrySnapshot;
|
|
14
19
|
};
|
package/dist/parts/GetDiagnosticProviderRegistrySnapshot/GetDiagnosticProviderRegistrySnapshot.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getDiagnosticProviderRegistrySnapshot } from '../DiagnosticProviderRegistry/DiagnosticProviderRegistry.ts';
|
package/dist/parts/GetDiagnosticProviderRegistrySnapshot/GetDiagnosticProviderRegistrySnapshot.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getDiagnosticProviderRegistrySnapshot } from "../DiagnosticProviderRegistry/DiagnosticProviderRegistry.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ExtensionManagementWorker } from '@lvce-editor/rpc-registry';
|
|
2
2
|
export const notifyStatusBarChange = async (id) => {
|
|
3
|
-
await
|
|
3
|
+
await ExtensionManagementWorker.invoke('StatusBar.handleChange', id);
|
|
4
4
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { OutputChannel } from '../OutputChannelHandle/OutputChannelHandle.ts';
|
|
2
|
+
import type { OutputChannelRegistrySnapshot } from '../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts';
|
|
3
|
+
export declare const activateOutputChannels: () => void;
|
|
4
|
+
export declare const createOutputChannel: (id: string) => OutputChannel;
|
|
5
|
+
export declare const getOutputChannelRegistrySnapshot: () => OutputChannelRegistrySnapshot;
|
|
6
|
+
export declare const resetOutputChannelRegistry: () => void;
|
|
7
|
+
export type { OutputChannel } from '../OutputChannelHandle/OutputChannelHandle.ts';
|
|
8
|
+
export type { OutputChannelRegistrySnapshot } from '../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts';
|
|
9
|
+
export type { RegisteredOutputChannel } from '../RegisteredOutputChannel/RegisteredOutputChannel.ts';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ExtensionManagementWorker } from '@lvce-editor/rpc-registry';
|
|
2
|
+
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
3
|
+
const outputChannels = Object.create(null);
|
|
4
|
+
let isActivated = false;
|
|
5
|
+
const RE_DASH_CASE = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
6
|
+
const assertOutputChannelId = (id) => {
|
|
7
|
+
if (typeof id !== 'string' || id.length === 0) {
|
|
8
|
+
throw new ExtensionApiError('output channel id is required');
|
|
9
|
+
}
|
|
10
|
+
if (!RE_DASH_CASE.test(id)) {
|
|
11
|
+
throw new ExtensionApiError(`output channel id ${id} must be dash-case`);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const assertCanWrite = (id) => {
|
|
15
|
+
if (!isActivated) {
|
|
16
|
+
throw new ExtensionApiError(`output channel ${id} cannot be written before activate`);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
class ExtensionOutputChannel {
|
|
20
|
+
#id;
|
|
21
|
+
constructor(id) {
|
|
22
|
+
this.#id = id;
|
|
23
|
+
}
|
|
24
|
+
async append(text) {
|
|
25
|
+
assertCanWrite(this.#id);
|
|
26
|
+
await ExtensionManagementWorker.invoke('ExtensionApi.appendOutputChannel', this.#id, text);
|
|
27
|
+
}
|
|
28
|
+
async appendLine(text) {
|
|
29
|
+
assertCanWrite(this.#id);
|
|
30
|
+
await ExtensionManagementWorker.invoke('ExtensionApi.appendOutputChannel', this.#id, `${text}\n`);
|
|
31
|
+
}
|
|
32
|
+
async clear() {
|
|
33
|
+
assertCanWrite(this.#id);
|
|
34
|
+
await ExtensionManagementWorker.invoke('ExtensionApi.clearOutputChannel', this.#id);
|
|
35
|
+
}
|
|
36
|
+
async replace(text) {
|
|
37
|
+
assertCanWrite(this.#id);
|
|
38
|
+
await ExtensionManagementWorker.invoke('ExtensionApi.replaceOutputChannel', this.#id, text);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export const activateOutputChannels = () => {
|
|
42
|
+
isActivated = true;
|
|
43
|
+
};
|
|
44
|
+
export const createOutputChannel = (id) => {
|
|
45
|
+
assertOutputChannelId(id);
|
|
46
|
+
if (id in outputChannels) {
|
|
47
|
+
throw new ExtensionApiError(`output channel ${id} is already created`);
|
|
48
|
+
}
|
|
49
|
+
outputChannels[id] = {
|
|
50
|
+
id,
|
|
51
|
+
};
|
|
52
|
+
return new ExtensionOutputChannel(id);
|
|
53
|
+
};
|
|
54
|
+
export const getOutputChannelRegistrySnapshot = () => {
|
|
55
|
+
return {
|
|
56
|
+
outputChannels: Object.values(outputChannels),
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
export const resetOutputChannelRegistry = () => {
|
|
60
|
+
for (const id of Object.keys(outputChannels)) {
|
|
61
|
+
delete outputChannels[id];
|
|
62
|
+
}
|
|
63
|
+
isActivated = false;
|
|
64
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ExtensionManagementWorker } from '@lvce-editor/rpc-registry';
|
|
2
2
|
export const showQuickPick = async (options) => {
|
|
3
|
-
return
|
|
3
|
+
return ExtensionManagementWorker.invoke('ExtensionHostQuickPick.showQuickPick', options);
|
|
4
4
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { registerDiagnosticProvider } from '../DiagnosticProviderRegistry/DiagnosticProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { registerDiagnosticProvider } from "../DiagnosticProviderRegistry/DiagnosticProviderRegistry.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Diagnostic } from '../DiagnosticResult/DiagnosticResult.ts';
|
|
2
|
+
import type { TextDocument } from '../DiagnosticTextDocument/DiagnosticTextDocument.ts';
|
|
3
|
+
export interface RegisteredDiagnosticProvider {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly languageId: string;
|
|
6
|
+
readonly provideDiagnostics: (textDocument: TextDocument, ...args: readonly unknown[]) => readonly Diagnostic[] | Promise<readonly Diagnostic[]>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { resetDiagnosticProviderRegistry } from '../DiagnosticProviderRegistry/DiagnosticProviderRegistry.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { resetDiagnosticProviderRegistry } from "../DiagnosticProviderRegistry/DiagnosticProviderRegistry.js";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface View {
|
|
2
|
+
readonly create: () => unknown;
|
|
3
|
+
readonly icon?: string;
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly title?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface RegisteredView {
|
|
8
|
+
readonly icon?: string;
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly title?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ViewRegistrySnapshot {
|
|
13
|
+
readonly views: readonly RegisteredView[];
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Disposable } from '../Disposable/Disposable.ts';
|
|
2
|
+
import type { View, ViewRegistrySnapshot } from '../View/View.ts';
|
|
3
|
+
export declare const registerView: (view: View) => Disposable;
|
|
4
|
+
export declare const executeViewProvider: (id: string) => unknown;
|
|
5
|
+
export declare const getViewRegistrySnapshot: () => ViewRegistrySnapshot;
|
|
6
|
+
export declare const resetViewRegistry: () => void;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
2
|
+
const views = Object.create(null);
|
|
3
|
+
const assertView = (view) => {
|
|
4
|
+
if (!view) {
|
|
5
|
+
throw new ExtensionApiError('view is not defined');
|
|
6
|
+
}
|
|
7
|
+
if (typeof view.id !== 'string' || view.id.length === 0) {
|
|
8
|
+
throw new ExtensionApiError('view is missing id');
|
|
9
|
+
}
|
|
10
|
+
if (typeof view.create !== 'function') {
|
|
11
|
+
throw new ExtensionApiError(`view ${view.id} is missing create function`);
|
|
12
|
+
}
|
|
13
|
+
if (view.id in views) {
|
|
14
|
+
throw new ExtensionApiError(`view ${view.id} is already registered`);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const toRegisteredView = (view) => {
|
|
18
|
+
return {
|
|
19
|
+
icon: view.icon,
|
|
20
|
+
id: view.id,
|
|
21
|
+
title: view.title,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export const registerView = (view) => {
|
|
25
|
+
assertView(view);
|
|
26
|
+
views[view.id] = view;
|
|
27
|
+
return {
|
|
28
|
+
dispose() {
|
|
29
|
+
delete views[view.id];
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export const executeViewProvider = (id) => {
|
|
34
|
+
const view = views[id];
|
|
35
|
+
if (!view) {
|
|
36
|
+
throw new ExtensionApiError(`view ${id} not found`);
|
|
37
|
+
}
|
|
38
|
+
return view.create();
|
|
39
|
+
};
|
|
40
|
+
export const getViewRegistrySnapshot = () => {
|
|
41
|
+
return {
|
|
42
|
+
views: Object.values(views).map(toRegisteredView),
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export const resetViewRegistry = () => {
|
|
46
|
+
for (const id of Object.keys(views)) {
|
|
47
|
+
delete views[id];
|
|
48
|
+
}
|
|
49
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/api",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.24.0",
|
|
4
4
|
"description": "Tree-shakeable extension API for Lvce Editor extensions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lvce-editor",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
],
|
|
28
28
|
"sideEffects": false,
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@lvce-editor/rpc": "^6.4.0"
|
|
30
|
+
"@lvce-editor/rpc": "^6.4.0",
|
|
31
|
+
"@lvce-editor/rpc-registry": "^9.24.0"
|
|
31
32
|
}
|
|
32
33
|
}
|
package/dist/parts/Rpc/Rpc.d.ts
DELETED