@lvce-editor/api 9.22.0 → 9.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/README.md +2 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/parts/ElectronWebContentsView/ElectronWebContentsView.d.ts +1 -0
- package/dist/parts/ElectronWebContentsView/ElectronWebContentsView.js +3 -0
- package/dist/parts/LanguageProvider/LanguageProvider.d.ts +20 -0
- package/dist/parts/LanguageProvider/LanguageProvider.js +1 -0
- package/dist/parts/Rpc/Rpc.d.ts +0 -2
- package/dist/parts/Rpc/Rpc.js +2 -42
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -30,12 +30,13 @@ import { getUserDataDir } from '@lvce-editor/api'
|
|
|
30
30
|
const userDataDir = await getUserDataDir()
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
Electron extensions can create
|
|
33
|
+
Electron extensions can create a web contents view, hide it from the editor window, and continue using its web contents. Disposing the handle destroys its web contents.
|
|
34
34
|
|
|
35
35
|
```ts
|
|
36
36
|
import { createElectronWebContentsView } from '@lvce-editor/api'
|
|
37
37
|
|
|
38
38
|
const view = await createElectronWebContentsView({ url: 'https://example.com' })
|
|
39
|
+
await view.hide()
|
|
39
40
|
const title = await view.executeJavaScript<string>('document.title')
|
|
40
41
|
await view.dispose()
|
|
41
42
|
```
|
package/dist/index.d.ts
CHANGED
|
@@ -23,8 +23,8 @@ export { focusNextTab, focusPreviousTab } from './parts/MainArea/MainArea.ts';
|
|
|
23
23
|
export { openProcessExplorer } from './parts/ProcessExplorer/ProcessExplorer.ts';
|
|
24
24
|
export { openDebugConsole, openOutputView, openProblemsView, type OpenDebugConsoleOptions, type OpenOutputViewOptions, type OpenProblemsViewOptions, } from './parts/Panel/Panel.ts';
|
|
25
25
|
export { getLanguageServerRegistrySnapshot, registerLanguageServer, resetLanguageServerRegistry } from './parts/LanguageServer/LanguageServer.ts';
|
|
26
|
-
export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from './parts/LanguageProvider/LanguageProvider.ts';
|
|
27
|
-
export type { LanguageProvider } from './parts/LanguageProvider/LanguageProvider.ts';
|
|
26
|
+
export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerDocumentSymbolProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from './parts/LanguageProvider/LanguageProvider.ts';
|
|
27
|
+
export type { DocumentSymbol, DocumentSymbolProvider, DocumentSymbolTextDocument, LanguageProvider, } from './parts/LanguageProvider/LanguageProvider.ts';
|
|
28
28
|
export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from './parts/SourceControl/SourceControl.ts';
|
|
29
29
|
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, setViewInstanceActive, } from './parts/ViewRegistry/ViewRegistry.ts';
|
|
30
30
|
export { createOutputChannel, getOutputChannelLogs, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry, } from './parts/OutputChannel/OutputChannel.ts';
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ export { focusNextTab, focusPreviousTab } from "./parts/MainArea/MainArea.js";
|
|
|
23
23
|
export { openProcessExplorer } from "./parts/ProcessExplorer/ProcessExplorer.js";
|
|
24
24
|
export { openDebugConsole, openOutputView, openProblemsView, } from "./parts/Panel/Panel.js";
|
|
25
25
|
export { getLanguageServerRegistrySnapshot, registerLanguageServer, resetLanguageServerRegistry } from "./parts/LanguageServer/LanguageServer.js";
|
|
26
|
-
export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from "./parts/LanguageProvider/LanguageProvider.js";
|
|
26
|
+
export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerDocumentSymbolProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from "./parts/LanguageProvider/LanguageProvider.js";
|
|
27
27
|
export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "./parts/SourceControl/SourceControl.js";
|
|
28
28
|
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, setViewInstanceActive, } from "./parts/ViewRegistry/ViewRegistry.js";
|
|
29
29
|
export { createOutputChannel, getOutputChannelLogs, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry, } from "./parts/OutputChannel/OutputChannel.js";
|
|
@@ -12,6 +12,7 @@ export interface ElectronWebContentsView {
|
|
|
12
12
|
readonly dispose: () => Promise<void>;
|
|
13
13
|
readonly executeJavaScript: <T = unknown>(code: string, userGesture?: boolean) => Promise<T>;
|
|
14
14
|
readonly getStats: () => Promise<ElectronWebContentsViewStats>;
|
|
15
|
+
readonly hide: () => Promise<void>;
|
|
15
16
|
readonly loadUrl: (url: string) => Promise<void>;
|
|
16
17
|
readonly reload: () => Promise<void>;
|
|
17
18
|
}
|
|
@@ -54,6 +54,9 @@ export const createElectronWebContentsView = async ({ url } = {}) => {
|
|
|
54
54
|
async getStats() {
|
|
55
55
|
return (await rpc.invoke('ElectronWebContentsView.getStats', id));
|
|
56
56
|
},
|
|
57
|
+
async hide() {
|
|
58
|
+
await rpc.invoke('ElectronWebContentsView.hide', id);
|
|
59
|
+
},
|
|
57
60
|
loadUrl,
|
|
58
61
|
async reload() {
|
|
59
62
|
await rpc.invoke('ElectronWebContentsView.reload', id);
|
|
@@ -4,6 +4,25 @@ export interface LanguageProvider {
|
|
|
4
4
|
readonly languageId: string;
|
|
5
5
|
readonly [key: string]: unknown;
|
|
6
6
|
}
|
|
7
|
+
export interface DocumentSymbol {
|
|
8
|
+
readonly children?: readonly DocumentSymbol[];
|
|
9
|
+
readonly detail?: string;
|
|
10
|
+
readonly endOffset: number;
|
|
11
|
+
readonly kind: number | string;
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly selectionEndOffset: number;
|
|
14
|
+
readonly selectionStartOffset: number;
|
|
15
|
+
readonly startOffset: number;
|
|
16
|
+
}
|
|
17
|
+
export interface DocumentSymbolTextDocument {
|
|
18
|
+
readonly documentId?: number;
|
|
19
|
+
readonly languageId: string;
|
|
20
|
+
readonly text: string;
|
|
21
|
+
readonly uri: string;
|
|
22
|
+
}
|
|
23
|
+
export interface DocumentSymbolProvider extends LanguageProvider {
|
|
24
|
+
readonly provideDocumentSymbols: (textDocument: DocumentSymbolTextDocument) => Promise<readonly DocumentSymbol[]> | readonly DocumentSymbol[];
|
|
25
|
+
}
|
|
7
26
|
export declare const executeLanguageProvider: (kind: string, methodName: string, textDocument: {
|
|
8
27
|
readonly languageId: string;
|
|
9
28
|
}, ...args: readonly unknown[]) => Promise<unknown>;
|
|
@@ -15,6 +34,7 @@ export declare const registerClosingTagProvider: (provider: LanguageProvider) =>
|
|
|
15
34
|
export declare const registerCodeActionsProvider: (provider: LanguageProvider) => Disposable;
|
|
16
35
|
export declare const registerCommentProvider: (provider: LanguageProvider) => Disposable;
|
|
17
36
|
export declare const registerDefinitionProvider: (provider: LanguageProvider) => Disposable;
|
|
37
|
+
export declare const registerDocumentSymbolProvider: (provider: DocumentSymbolProvider) => Disposable;
|
|
18
38
|
export declare const registerImplementationProvider: (provider: LanguageProvider) => Disposable;
|
|
19
39
|
export declare const registerReferenceProvider: (provider: LanguageProvider) => Disposable;
|
|
20
40
|
export declare const registerRenameProvider: (provider: LanguageProvider) => Disposable;
|
|
@@ -66,6 +66,7 @@ export const registerClosingTagProvider = (provider) => registerProvider('closin
|
|
|
66
66
|
export const registerCodeActionsProvider = (provider) => registerProvider('code action', provider, ['provideCodeActions']);
|
|
67
67
|
export const registerCommentProvider = (provider) => registerProvider('comment', provider, ['provideComment']);
|
|
68
68
|
export const registerDefinitionProvider = (provider) => registerProvider('definition', provider, ['provideDefinition']);
|
|
69
|
+
export const registerDocumentSymbolProvider = (provider) => registerProvider('document symbol', provider, ['provideDocumentSymbols']);
|
|
69
70
|
export const registerImplementationProvider = (provider) => registerProvider('implementation', provider, ['provideImplementations']);
|
|
70
71
|
export const registerReferenceProvider = (provider) => registerProvider('reference', provider, ['provideReferences']);
|
|
71
72
|
export const registerRenameProvider = (provider) => registerProvider('rename', provider, ['provideRename']);
|
package/dist/parts/Rpc/Rpc.d.ts
CHANGED
|
@@ -13,8 +13,6 @@ interface CreateLegacyRpcOptions extends CreateRpcBaseOptions {
|
|
|
13
13
|
export type CreateRpcOptions = CreateDeclaredRpcOptions | CreateLegacyRpcOptions;
|
|
14
14
|
export interface CreateNodeRpcOptions {
|
|
15
15
|
readonly id: string;
|
|
16
|
-
readonly legacyName?: string;
|
|
17
|
-
readonly legacyPath?: string;
|
|
18
16
|
}
|
|
19
17
|
export declare const createRpc: (options: CreateRpcOptions) => Promise<Rpc>;
|
|
20
18
|
export declare const createNodeRpc: (options: CreateNodeRpcOptions) => Promise<Rpc>;
|
package/dist/parts/Rpc/Rpc.js
CHANGED
|
@@ -38,45 +38,11 @@ export const createRpc = async (options) => {
|
|
|
38
38
|
const { contentSecurityPolicy, name, traceId, url } = await resolveRpcOptions(options);
|
|
39
39
|
return createMessagePortRpc(commandMap, (port) => sendMessagePortToWebWorker(port, contentSecurityPolicy, name, traceId, url));
|
|
40
40
|
};
|
|
41
|
-
const
|
|
42
|
-
return error instanceof Error && error.message.includes(command) && /command not found|not found/i.test(error.message);
|
|
43
|
-
};
|
|
44
|
-
const getNodeRpcConnection = async ({ id, legacyName = '', legacyPath }) => {
|
|
41
|
+
const getNodeRpcConnection = async ({ id }) => {
|
|
45
42
|
if (!id) {
|
|
46
43
|
throw new TypeError('createNodeRpc requires an id');
|
|
47
44
|
}
|
|
48
|
-
|
|
49
|
-
const connectionInfo = (await ExtensionManagementWorker.invoke('Extensions.createNodeRpcConnection', id));
|
|
50
|
-
return connectionInfo;
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
if (!isMissingCommand(error, 'Extensions.createNodeRpcConnection')) {
|
|
54
|
-
throw error;
|
|
55
|
-
}
|
|
56
|
-
if (legacyPath) {
|
|
57
|
-
return { name: legacyName, path: legacyPath, type: 'old-legacy-proxy' };
|
|
58
|
-
}
|
|
59
|
-
const { name, path } = (await ExtensionManagementWorker.invoke('Extensions.getNodeRpcInfo', id));
|
|
60
|
-
return { name, path, type: 'old-legacy-proxy' };
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
const createProxyRpc = (invoke, dispose) => {
|
|
64
|
-
return {
|
|
65
|
-
dispose,
|
|
66
|
-
invoke,
|
|
67
|
-
invokeAndTransfer: invoke,
|
|
68
|
-
send(method, ...params) {
|
|
69
|
-
void invoke(method, ...params);
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
const createLegacyProxyRpc = async (id) => {
|
|
74
|
-
const rpcId = await ExtensionManagementWorker.invoke('Extensions.createLegacyNodeRpc', id);
|
|
75
|
-
return createProxyRpc((method, ...params) => ExtensionManagementWorker.invoke('Extensions.invokeLegacyNodeRpc', rpcId, method, ...params), () => ExtensionManagementWorker.invoke('Extensions.disposeLegacyNodeRpc', rpcId));
|
|
76
|
-
};
|
|
77
|
-
const createOldLegacyProxyRpc = async (name, path) => {
|
|
78
|
-
const rpcId = await ExtensionManagementWorker.invoke('Extensions.executeCommand', 'ExtensionNodeRpc.create', name, path);
|
|
79
|
-
return createProxyRpc((method, ...params) => ExtensionManagementWorker.invoke('Extensions.executeCommand', 'ExtensionNodeRpc.invoke', rpcId, method, ...params), () => ExtensionManagementWorker.invoke('Extensions.executeCommand', 'ExtensionNodeRpc.dispose', rpcId));
|
|
45
|
+
return ExtensionManagementWorker.invoke('Extensions.createNodeRpcConnection', id);
|
|
80
46
|
};
|
|
81
47
|
export const createNodeRpc = async (options) => {
|
|
82
48
|
const { id } = options;
|
|
@@ -84,12 +50,6 @@ export const createNodeRpc = async (options) => {
|
|
|
84
50
|
if (connectionInfo.type === 'message-port') {
|
|
85
51
|
return createMessagePortRpc({}, (port) => ExtensionManagementWorker.invokeAndTransfer('Extensions.createNodeRpcMessagePort', id, port));
|
|
86
52
|
}
|
|
87
|
-
if (connectionInfo.type === 'legacy-proxy') {
|
|
88
|
-
return createLegacyProxyRpc(id);
|
|
89
|
-
}
|
|
90
|
-
if (connectionInfo.type === 'old-legacy-proxy') {
|
|
91
|
-
return createOldLegacyProxyRpc(connectionInfo.name, connectionInfo.path);
|
|
92
|
-
}
|
|
93
53
|
const { protocols, url } = connectionInfo;
|
|
94
54
|
const webSocket = new WebSocket(url, protocols);
|
|
95
55
|
return WebSocketRpcParent.create({
|