@lvce-editor/extension-host-worker 8.17.0 → 8.18.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
|
@@ -1244,15 +1244,73 @@ var getStatusBarItemProviderRegistrySnapshot = () => {
|
|
|
1244
1244
|
};
|
|
1245
1245
|
var resetStatusBarItemProviderRegistry = registry3.reset;
|
|
1246
1246
|
|
|
1247
|
+
// packages/extension-api/src/parts/HoverProviderRegistry/HoverProviderRegistry.ts
|
|
1248
|
+
var getType2 = (value) => {
|
|
1249
|
+
if (value === null) {
|
|
1250
|
+
return "null";
|
|
1251
|
+
}
|
|
1252
|
+
if (typeof value === "string") {
|
|
1253
|
+
return JSON.stringify(value);
|
|
1254
|
+
}
|
|
1255
|
+
if (Array.isArray(value)) {
|
|
1256
|
+
return "array";
|
|
1257
|
+
}
|
|
1258
|
+
return typeof value;
|
|
1259
|
+
};
|
|
1260
|
+
var validateHoverResult = (hover) => {
|
|
1261
|
+
if (hover === void 0) {
|
|
1262
|
+
return void 0;
|
|
1263
|
+
}
|
|
1264
|
+
if (!hover || typeof hover !== "object" || Array.isArray(hover)) {
|
|
1265
|
+
throw new ExtensionApiError(`invalid hover result: hover must be of type object or undefined but is ${getType2(hover)}`);
|
|
1266
|
+
}
|
|
1267
|
+
return hover;
|
|
1268
|
+
};
|
|
1269
|
+
var registry4 = createProviderRegistry({
|
|
1270
|
+
mapProvider(provider) {
|
|
1271
|
+
return {
|
|
1272
|
+
id: provider.id,
|
|
1273
|
+
languageId: provider.languageId,
|
|
1274
|
+
provideHover(textDocument, offset, ...args) {
|
|
1275
|
+
return provider.provideHover(textDocument, offset, ...args);
|
|
1276
|
+
}
|
|
1277
|
+
};
|
|
1278
|
+
},
|
|
1279
|
+
providerName: "hover provider",
|
|
1280
|
+
requiredMethods: ["provideHover"],
|
|
1281
|
+
requireLanguageId: true
|
|
1282
|
+
});
|
|
1283
|
+
var hasHoverProvider = registry4.hasProvider;
|
|
1284
|
+
var registerHoverProvider = (provider) => {
|
|
1285
|
+
const registeredProvider = registry4.registerProvider(provider);
|
|
1286
|
+
return {
|
|
1287
|
+
dispose() {
|
|
1288
|
+
registry4.deleteProvider(registeredProvider.id);
|
|
1289
|
+
}
|
|
1290
|
+
};
|
|
1291
|
+
};
|
|
1292
|
+
var executeHoverProvider = async (textDocument, offset, ...args) => {
|
|
1293
|
+
return registry4.executeProviderByLanguageId(textDocument.languageId, "provideHover", [textDocument, offset, ...args], validateHoverResult);
|
|
1294
|
+
};
|
|
1295
|
+
var getHoverProviders = registry4.getProviders;
|
|
1296
|
+
var getHoverProviderRegistrySnapshot = () => {
|
|
1297
|
+
return {
|
|
1298
|
+
providers: registry4.getProviders()
|
|
1299
|
+
};
|
|
1300
|
+
};
|
|
1301
|
+
var resetHoverProviderRegistry = registry4.reset;
|
|
1302
|
+
|
|
1247
1303
|
// packages/extension-api/src/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.ts
|
|
1248
1304
|
var commandMap = {
|
|
1249
1305
|
"ExtensionApi.executeCommand": executeCommand,
|
|
1250
1306
|
"ExtensionApi.executeCompletionProvider": executeCompletionProvider,
|
|
1251
1307
|
"ExtensionApi.executeFormattingProvider": executeFormattingProvider,
|
|
1308
|
+
"ExtensionApi.executeHoverProvider": executeHoverProvider,
|
|
1252
1309
|
"ExtensionApi.executeResolveCompletionItemProvider": executeResolveCompletionItemProvider,
|
|
1253
1310
|
"ExtensionApi.getCommandRegistrySnapshot": getCommandRegistrySnapshot,
|
|
1254
1311
|
"ExtensionApi.getCompletionProviderRegistrySnapshot": getCompletionProviderRegistrySnapshot,
|
|
1255
1312
|
"ExtensionApi.getFormattingProviderRegistrySnapshot": getFormattingProviderRegistrySnapshot,
|
|
1313
|
+
"ExtensionApi.getHoverProviderRegistrySnapshot": getHoverProviderRegistrySnapshot,
|
|
1256
1314
|
"ExtensionApi.getStatusBarItems": getStatusBarItems
|
|
1257
1315
|
};
|
|
1258
1316
|
|
|
@@ -1344,17 +1402,21 @@ export {
|
|
|
1344
1402
|
executeCommand2 as executeCommand,
|
|
1345
1403
|
executeCompletionProvider,
|
|
1346
1404
|
executeFormattingProvider,
|
|
1405
|
+
executeHoverProvider,
|
|
1347
1406
|
executeResolveCompletionItemProvider,
|
|
1348
1407
|
getCompletionProviderRegistrySnapshot,
|
|
1349
1408
|
getFormattingProviderRegistrySnapshot,
|
|
1409
|
+
getHoverProviderRegistrySnapshot,
|
|
1350
1410
|
getStatusBarItemProviderRegistrySnapshot,
|
|
1351
1411
|
handleExtensionManagementMessagePort2 as handleExtensionManagementMessagePort,
|
|
1352
1412
|
registerCommand,
|
|
1353
1413
|
registerCompletionProvider,
|
|
1354
1414
|
registerFormattingProvider,
|
|
1415
|
+
registerHoverProvider,
|
|
1355
1416
|
registerStatusBarItemProvider,
|
|
1356
1417
|
resetCompletionProviderRegistry,
|
|
1357
1418
|
resetFormattingProviderRegistry,
|
|
1419
|
+
resetHoverProviderRegistry,
|
|
1358
1420
|
resetStatusBarItemProviderRegistry,
|
|
1359
1421
|
showQuickPick
|
|
1360
1422
|
};
|
|
@@ -2,14 +2,17 @@ import { executeCommand, getCommandRegistrySnapshot } from "../CommandRegistry/C
|
|
|
2
2
|
import { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot } from "../Completion/Completion.js";
|
|
3
3
|
import { executeFormattingProvider, getFormattingProviderRegistrySnapshot } from "../Formatting/Formatting.js";
|
|
4
4
|
import { getStatusBarItems } from "../GetStatusBarItems/GetStatusBarItems.js";
|
|
5
|
+
import { executeHoverProvider, getHoverProviderRegistrySnapshot } from "../Hover/Hover.js";
|
|
5
6
|
const commandMap = {
|
|
6
7
|
"ExtensionApi.executeCommand": executeCommand,
|
|
7
8
|
"ExtensionApi.executeCompletionProvider": executeCompletionProvider,
|
|
8
9
|
"ExtensionApi.executeFormattingProvider": executeFormattingProvider,
|
|
10
|
+
"ExtensionApi.executeHoverProvider": executeHoverProvider,
|
|
9
11
|
"ExtensionApi.executeResolveCompletionItemProvider": executeResolveCompletionItemProvider,
|
|
10
12
|
"ExtensionApi.getCommandRegistrySnapshot": getCommandRegistrySnapshot,
|
|
11
13
|
"ExtensionApi.getCompletionProviderRegistrySnapshot": getCompletionProviderRegistrySnapshot,
|
|
12
14
|
"ExtensionApi.getFormattingProviderRegistrySnapshot": getFormattingProviderRegistrySnapshot,
|
|
15
|
+
"ExtensionApi.getHoverProviderRegistrySnapshot": getHoverProviderRegistrySnapshot,
|
|
13
16
|
"ExtensionApi.getStatusBarItems": getStatusBarItems
|
|
14
17
|
};
|
|
15
18
|
export {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { executeHoverProvider } from "../ExecuteHoverProvider/ExecuteHoverProvider.js";
|
|
2
|
+
import { getHoverProviderRegistrySnapshot } from "../GetHoverProviderRegistrySnapshot/GetHoverProviderRegistrySnapshot.js";
|
|
3
|
+
import { registerHoverProvider } from "../RegisterHoverProvider/RegisterHoverProvider.js";
|
|
4
|
+
import { resetHoverProviderRegistry } from "../ResetHoverProviderRegistry/ResetHoverProviderRegistry.js";
|
|
5
|
+
export {
|
|
6
|
+
executeHoverProvider,
|
|
7
|
+
getHoverProviderRegistrySnapshot,
|
|
8
|
+
registerHoverProvider,
|
|
9
|
+
resetHoverProviderRegistry
|
|
10
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,64 @@
|
|
|
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 === void 0) {
|
|
17
|
+
return void 0;
|
|
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
|
+
const hasHoverProvider = registry.hasProvider;
|
|
39
|
+
const registerHoverProvider = (provider) => {
|
|
40
|
+
const registeredProvider = registry.registerProvider(provider);
|
|
41
|
+
return {
|
|
42
|
+
dispose() {
|
|
43
|
+
registry.deleteProvider(registeredProvider.id);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
const executeHoverProvider = async (textDocument, offset, ...args) => {
|
|
48
|
+
return registry.executeProviderByLanguageId(textDocument.languageId, "provideHover", [textDocument, offset, ...args], validateHoverResult);
|
|
49
|
+
};
|
|
50
|
+
const getHoverProviders = registry.getProviders;
|
|
51
|
+
const getHoverProviderRegistrySnapshot = () => {
|
|
52
|
+
return {
|
|
53
|
+
providers: registry.getProviders()
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
const resetHoverProviderRegistry = registry.reset;
|
|
57
|
+
export {
|
|
58
|
+
executeHoverProvider,
|
|
59
|
+
getHoverProviderRegistrySnapshot,
|
|
60
|
+
getHoverProviders,
|
|
61
|
+
hasHoverProvider,
|
|
62
|
+
registerHoverProvider,
|
|
63
|
+
resetHoverProviderRegistry
|
|
64
|
+
};
|
package/dist/extension-api/parts/HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.js
ADDED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1991,7 +1991,7 @@ const {
|
|
|
1991
1991
|
const {
|
|
1992
1992
|
executeCompletionProvider,
|
|
1993
1993
|
executeresolveCompletionItemProvider,
|
|
1994
|
-
getProviders: getProviders$
|
|
1994
|
+
getProviders: getProviders$2,
|
|
1995
1995
|
registerCompletionProvider} = create$6({
|
|
1996
1996
|
additionalMethodNames: [
|
|
1997
1997
|
// @ts-ignore
|
|
@@ -2012,7 +2012,7 @@ const {
|
|
|
2012
2012
|
}
|
|
2013
2013
|
});
|
|
2014
2014
|
const getRegisteredCompletionProviderIds$1 = () => {
|
|
2015
|
-
return getProviders$
|
|
2015
|
+
return getProviders$2().map(provider => provider.id);
|
|
2016
2016
|
};
|
|
2017
2017
|
|
|
2018
2018
|
const state$9 = {
|
|
@@ -2388,7 +2388,7 @@ const getPathSeparator = protocol => {
|
|
|
2388
2388
|
const {
|
|
2389
2389
|
executeFormattingProvider: executeRegisteredFormattingProvider,
|
|
2390
2390
|
getProvider: getProvider$3,
|
|
2391
|
-
getProviders,
|
|
2391
|
+
getProviders: getProviders$1,
|
|
2392
2392
|
registerFormattingProvider} = create$6({
|
|
2393
2393
|
executeKey: 'format',
|
|
2394
2394
|
name: 'Formatting',
|
|
@@ -2424,7 +2424,7 @@ const executeFormattingProvider = async (textDocumentId, ...params) => {
|
|
|
2424
2424
|
return executeRegisteredFormattingProviderWithParams(textDocumentId, ...params);
|
|
2425
2425
|
};
|
|
2426
2426
|
const getRegisteredFormattingProviderIds$1 = () => {
|
|
2427
|
-
return getProviders().map(provider => provider.id);
|
|
2427
|
+
return getProviders$1().map(provider => provider.id);
|
|
2428
2428
|
};
|
|
2429
2429
|
|
|
2430
2430
|
const getOffset = (textDocument, position) => {
|
|
@@ -2465,6 +2465,7 @@ const getPosition = (textDocument, offset) => {
|
|
|
2465
2465
|
|
|
2466
2466
|
const {
|
|
2467
2467
|
executeHoverProvider,
|
|
2468
|
+
getProviders,
|
|
2468
2469
|
registerHoverProvider} = create$6({
|
|
2469
2470
|
name: 'Hover',
|
|
2470
2471
|
resultShape: {
|
|
@@ -2473,6 +2474,9 @@ const {
|
|
|
2473
2474
|
type: Object$1
|
|
2474
2475
|
}
|
|
2475
2476
|
});
|
|
2477
|
+
const getRegisteredHoverProviderIds$1 = () => {
|
|
2478
|
+
return getProviders().map(provider => provider.id);
|
|
2479
|
+
};
|
|
2476
2480
|
|
|
2477
2481
|
const {
|
|
2478
2482
|
executeImplementationProvider,
|
|
@@ -4245,6 +4249,12 @@ const getManifestCompletionProviderIds = extension => {
|
|
|
4245
4249
|
}
|
|
4246
4250
|
return extension.completionProviders.map(provider => provider.id).filter(id => typeof id === 'string');
|
|
4247
4251
|
};
|
|
4252
|
+
const getManifestHoverProviderIds = extension => {
|
|
4253
|
+
if (!Array.isArray(extension.hoverProviders)) {
|
|
4254
|
+
return [];
|
|
4255
|
+
}
|
|
4256
|
+
return extension.hoverProviders.map(provider => provider.id).filter(id => typeof id === 'string');
|
|
4257
|
+
};
|
|
4248
4258
|
const assertUniqueIds = (ids, label) => {
|
|
4249
4259
|
const seen = new Set();
|
|
4250
4260
|
for (const id of ids) {
|
|
@@ -4266,6 +4276,10 @@ const getNewRegisteredCompletionProviderIds = beforeCompletionProviderIds => {
|
|
|
4266
4276
|
const before = new Set(beforeCompletionProviderIds);
|
|
4267
4277
|
return getRegisteredCompletionProviderIds$1().filter(providerId => !before.has(providerId));
|
|
4268
4278
|
};
|
|
4279
|
+
const getNewRegisteredHoverProviderIds = beforeHoverProviderIds => {
|
|
4280
|
+
const before = new Set(beforeHoverProviderIds);
|
|
4281
|
+
return getRegisteredHoverProviderIds$1().filter(providerId => !before.has(providerId));
|
|
4282
|
+
};
|
|
4269
4283
|
const getRegisteredCommandIds = () => {
|
|
4270
4284
|
return getRegisteredCommandIds$1();
|
|
4271
4285
|
};
|
|
@@ -4275,6 +4289,9 @@ const getRegisteredCompletionProviderIds = () => {
|
|
|
4275
4289
|
const getRegisteredFormattingProviderIds = () => {
|
|
4276
4290
|
return getRegisteredFormattingProviderIds$1();
|
|
4277
4291
|
};
|
|
4292
|
+
const getRegisteredHoverProviderIds = () => {
|
|
4293
|
+
return getRegisteredHoverProviderIds$1();
|
|
4294
|
+
};
|
|
4278
4295
|
const validateIsolatedExtensionContribution = (label, manifestIds, registeredIds) => {
|
|
4279
4296
|
assertUniqueIds(manifestIds, label);
|
|
4280
4297
|
const manifestIdSet = new Set(manifestIds);
|
|
@@ -4314,6 +4331,14 @@ const validateIsolatedExtensionFormattingProviders = (extension, beforeFormattin
|
|
|
4314
4331
|
const registeredFormattingProviderIds = getNewRegisteredFormattingProviderIds(beforeFormattingProviderIds);
|
|
4315
4332
|
validateIsolatedExtensionContribution('formatting provider', manifestFormattingProviderIds, registeredFormattingProviderIds);
|
|
4316
4333
|
};
|
|
4334
|
+
const validateIsolatedExtensionHoverProviders = (extension, beforeHoverProviderIds) => {
|
|
4335
|
+
if (!extension.isolated) {
|
|
4336
|
+
return;
|
|
4337
|
+
}
|
|
4338
|
+
const manifestHoverProviderIds = getManifestHoverProviderIds(extension);
|
|
4339
|
+
const registeredHoverProviderIds = getNewRegisteredHoverProviderIds(beforeHoverProviderIds);
|
|
4340
|
+
validateIsolatedExtensionContribution('hover provider', manifestHoverProviderIds, registeredHoverProviderIds);
|
|
4341
|
+
};
|
|
4317
4342
|
|
|
4318
4343
|
// TODO make activation timeout configurable or remove it.
|
|
4319
4344
|
// some extension might do workspace indexing which could take some time
|
|
@@ -4338,10 +4363,12 @@ const activateExtension2 = async (extensionId, extension, absolutePath) => {
|
|
|
4338
4363
|
const beforeCommandIds = getRegisteredCommandIds();
|
|
4339
4364
|
const beforeCompletionProviderIds = getRegisteredCompletionProviderIds();
|
|
4340
4365
|
const beforeFormattingProviderIds = getRegisteredFormattingProviderIds();
|
|
4366
|
+
const beforeHoverProviderIds = getRegisteredHoverProviderIds();
|
|
4341
4367
|
await Promise.race([activate(extension), rejectAfterTimeout$1(activationTimeout$1, token)]);
|
|
4342
4368
|
validateIsolatedExtensionCommands(extension, beforeCommandIds);
|
|
4343
4369
|
validateIsolatedExtensionCompletionProviders(extension, beforeCompletionProviderIds);
|
|
4344
4370
|
validateIsolatedExtensionFormattingProviders(extension, beforeFormattingProviderIds);
|
|
4371
|
+
validateIsolatedExtensionHoverProviders(extension, beforeHoverProviderIds);
|
|
4345
4372
|
const endTime = performance.now();
|
|
4346
4373
|
const time = endTime - startTime;
|
|
4347
4374
|
update(extensionId, {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Lvce Editor
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# @lvce-editor/api
|
|
2
|
+
|
|
3
|
+
Extension API for Lvce Editor extensions.
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
npm install @lvce-editor/api
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { activate, registerCommand } from '@lvce-editor/api'
|
|
11
|
+
|
|
12
|
+
export const main = () => {
|
|
13
|
+
activate()
|
|
14
|
+
registerCommand({
|
|
15
|
+
id: 'example.hello',
|
|
16
|
+
execute() {
|
|
17
|
+
console.log('Hello from an extension')
|
|
18
|
+
},
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The package is published as unbundled ESM with TypeScript declaration files, so extensions can bundle it with their own build tooling.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { activate } from './parts/Activation/Activation.ts';
|
|
2
|
+
export { executeCommand } from './parts/ExecuteCommand/ExecuteCommand.ts';
|
|
3
|
+
export { showQuickPick } from './parts/QuickPick/QuickPick.ts';
|
|
4
|
+
export { registerCommand } from './parts/CommandRegistry/CommandRegistry.ts';
|
|
5
|
+
export { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot, registerCompletionProvider, resetCompletionProviderRegistry, } from './parts/Completion/Completion.ts';
|
|
6
|
+
export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from './parts/Formatting/Formatting.ts';
|
|
7
|
+
export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from './parts/Hover/Hover.ts';
|
|
8
|
+
export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from './parts/StatusBar/StatusBar.ts';
|
|
9
|
+
export { handleExtensionManagementMessagePort } from './parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.ts';
|
|
10
|
+
export type { Command } from './parts/Command/Command.ts';
|
|
11
|
+
export type { CommandCallback } from './parts/CommandCallback/CommandCallback.ts';
|
|
12
|
+
export type { CommandRegistrySnapshot } from './parts/CommandRegistrySnapshot/CommandRegistrySnapshot.ts';
|
|
13
|
+
export type { CompletionItem, CompletionProvider, CompletionProviderRegistrySnapshot, RegisteredCompletionProvider, } from './parts/Completion/Completion.ts';
|
|
14
|
+
export type { Disposable } from './parts/Disposable/Disposable.ts';
|
|
15
|
+
export type { FormattingEdit, FormattingProvider, FormattingProviderRegistrySnapshot, RegisteredFormattingProvider, } from './parts/Formatting/Formatting.ts';
|
|
16
|
+
export type { HandleExtensionManagementMessagePortOptions } from './parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.ts';
|
|
17
|
+
export type { HoverProvider, HoverProviderRegistrySnapshot, HoverResult, RegisteredHoverProvider } from './parts/Hover/Hover.ts';
|
|
18
|
+
export type { QuickPickItem } from './parts/QuickPickItem/QuickPickItem.ts';
|
|
19
|
+
export type { ShowQuickPickOptions } from './parts/ShowQuickPickOptions/ShowQuickPickOptions.ts';
|
|
20
|
+
export type { StatusBarItem, StatusBarItemProvider, StatusBarItemProviderHandle, StatusBarItemProviderRegistrySnapshot, } from './parts/StatusBar/StatusBar.ts';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { activate } from "./parts/Activation/Activation.js";
|
|
2
|
+
export { executeCommand } from "./parts/ExecuteCommand/ExecuteCommand.js";
|
|
3
|
+
export { showQuickPick } from "./parts/QuickPick/QuickPick.js";
|
|
4
|
+
export { registerCommand } from "./parts/CommandRegistry/CommandRegistry.js";
|
|
5
|
+
export { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot, registerCompletionProvider, resetCompletionProviderRegistry, } from "./parts/Completion/Completion.js";
|
|
6
|
+
export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from "./parts/Formatting/Formatting.js";
|
|
7
|
+
export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from "./parts/Hover/Hover.js";
|
|
8
|
+
export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from "./parts/StatusBar/StatusBar.js";
|
|
9
|
+
export { handleExtensionManagementMessagePort } from "./parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const activate: () => Promise<void>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { listen } from "../ExtensionApiWorkerListen/ExtensionApiWorkerListen.js";
|
|
2
|
+
import * as Rpc from "../Rpc/Rpc.js";
|
|
3
|
+
let rpcPromise;
|
|
4
|
+
export const activate = async () => {
|
|
5
|
+
if (!rpcPromise) {
|
|
6
|
+
rpcPromise = listen();
|
|
7
|
+
}
|
|
8
|
+
const rpc = await rpcPromise;
|
|
9
|
+
Rpc.set(rpc);
|
|
10
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { hasCompletionProvider } from "../CompletionProviderState/CompletionProviderState.js";
|
|
2
|
+
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
3
|
+
export const assertCompletionProvider = (provider) => {
|
|
4
|
+
if (!provider) {
|
|
5
|
+
throw new ExtensionApiError('completion provider is not defined');
|
|
6
|
+
}
|
|
7
|
+
if (!provider.id) {
|
|
8
|
+
throw new ExtensionApiError('completion provider is missing id');
|
|
9
|
+
}
|
|
10
|
+
if (!provider.languageId) {
|
|
11
|
+
throw new ExtensionApiError(`completion provider ${provider.id} is missing languageId`);
|
|
12
|
+
}
|
|
13
|
+
if (typeof provider.provideCompletions !== 'function') {
|
|
14
|
+
throw new ExtensionApiError(`completion provider ${provider.id} is missing provideCompletions function`);
|
|
15
|
+
}
|
|
16
|
+
if (provider.resolveCompletionItem !== undefined && typeof provider.resolveCompletionItem !== 'function') {
|
|
17
|
+
throw new ExtensionApiError(`completion provider ${provider.id} has invalid resolveCompletionItem function`);
|
|
18
|
+
}
|
|
19
|
+
if (hasCompletionProvider(provider.id)) {
|
|
20
|
+
throw new ExtensionApiError(`completion provider ${provider.id} is already registered`);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
2
|
+
import { hasFormattingProvider } from "../FormattingProviderState/FormattingProviderState.js";
|
|
3
|
+
export const assertFormattingProvider = (provider) => {
|
|
4
|
+
if (!provider) {
|
|
5
|
+
throw new ExtensionApiError('formatting provider is not defined');
|
|
6
|
+
}
|
|
7
|
+
if (typeof provider.id !== 'string' || provider.id.length === 0) {
|
|
8
|
+
throw new ExtensionApiError('formatting provider is missing id');
|
|
9
|
+
}
|
|
10
|
+
if (typeof provider.languageId !== 'string' || provider.languageId.length === 0) {
|
|
11
|
+
throw new ExtensionApiError(`formatting provider ${provider.id} is missing languageId`);
|
|
12
|
+
}
|
|
13
|
+
if (typeof provider.format !== 'function') {
|
|
14
|
+
throw new ExtensionApiError(`formatting provider ${provider.id} is missing format function`);
|
|
15
|
+
}
|
|
16
|
+
if (hasFormattingProvider(provider.id)) {
|
|
17
|
+
throw new ExtensionApiError(`formatting provider ${provider.id} is already registered`);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
2
|
+
import { hasStatusBarItemProvider } from "../StatusBarItemProviderState/StatusBarItemProviderState.js";
|
|
3
|
+
export const assertStatusBarItemProvider = (provider) => {
|
|
4
|
+
if (!provider) {
|
|
5
|
+
throw new ExtensionApiError('status bar item provider is not defined');
|
|
6
|
+
}
|
|
7
|
+
if (typeof provider.id !== 'string' || provider.id.length === 0) {
|
|
8
|
+
throw new ExtensionApiError('status bar item provider is missing id');
|
|
9
|
+
}
|
|
10
|
+
if (typeof provider.getStatusBarItem !== 'function') {
|
|
11
|
+
throw new ExtensionApiError(`status bar item provider ${provider.id} is missing getStatusBarItem function`);
|
|
12
|
+
}
|
|
13
|
+
if (hasStatusBarItemProvider(provider.id)) {
|
|
14
|
+
throw new ExtensionApiError(`status bar item provider ${provider.id} is already registered`);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type CommandCallback<TArgs extends readonly unknown[] = readonly unknown[], TResult = unknown> = (...args: TArgs) => TResult | Promise<TResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const commandMap: {
|
|
2
|
+
initialize(type: string, port: MessagePort): Promise<void>;
|
|
3
|
+
'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
|
|
4
|
+
'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
|
|
5
|
+
'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
|
|
6
|
+
'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
|
|
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.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
|
|
9
|
+
'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
|
|
10
|
+
'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
|
|
11
|
+
'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
|
|
12
|
+
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
13
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { commandMap as extensionApiCommandMap } from "../ExtensionApiCommandMap/ExtensionApiCommandMap.js";
|
|
2
|
+
import { handleExtensionManagementMessagePort } from "../ExtensionApiWorkerHandleMessagePort/ExtensionApiWorkerHandleMessagePort.js";
|
|
3
|
+
export const commandMap = {
|
|
4
|
+
...extensionApiCommandMap,
|
|
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
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Command } from '../Command/Command.ts';
|
|
2
|
+
import type { CommandRegistrySnapshot } from '../CommandRegistrySnapshot/CommandRegistrySnapshot.ts';
|
|
3
|
+
import type { Disposable } from '../Disposable/Disposable.ts';
|
|
4
|
+
export declare const registerCommand: <TArgs extends readonly unknown[], TResult>(command: Command<TArgs, TResult>) => Disposable;
|
|
5
|
+
export declare const getCommandRegistrySnapshot: () => CommandRegistrySnapshot;
|
|
6
|
+
export declare const executeCommand: (id: string, ...args: readonly unknown[]) => Promise<unknown>;
|
|
7
|
+
export declare const resetCommandRegistry: () => void;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
2
|
+
const commands = Object.create(null);
|
|
3
|
+
const assertCommand = (command) => {
|
|
4
|
+
if (!command) {
|
|
5
|
+
throw new ExtensionApiError('command is not defined');
|
|
6
|
+
}
|
|
7
|
+
if (typeof command.id !== 'string' || command.id.length === 0) {
|
|
8
|
+
throw new ExtensionApiError('command is missing id');
|
|
9
|
+
}
|
|
10
|
+
if (typeof command.execute !== 'function') {
|
|
11
|
+
throw new ExtensionApiError(`command ${command.id} is missing execute function`);
|
|
12
|
+
}
|
|
13
|
+
if (command.id in commands) {
|
|
14
|
+
throw new ExtensionApiError(`command ${command.id} is already registered`);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export const registerCommand = (command) => {
|
|
18
|
+
assertCommand(command);
|
|
19
|
+
commands[command.id] = {
|
|
20
|
+
execute(...args) {
|
|
21
|
+
return command.execute(...args);
|
|
22
|
+
},
|
|
23
|
+
id: command.id,
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
dispose() {
|
|
27
|
+
delete commands[command.id];
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export const getCommandRegistrySnapshot = () => {
|
|
32
|
+
return {
|
|
33
|
+
commands: Object.values(commands),
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export const executeCommand = async (id, ...args) => {
|
|
37
|
+
const command = commands[id];
|
|
38
|
+
if (!command) {
|
|
39
|
+
throw new ExtensionApiError(`command ${id} not found`);
|
|
40
|
+
}
|
|
41
|
+
return command.execute(...args);
|
|
42
|
+
};
|
|
43
|
+
export const resetCommandRegistry = () => {
|
|
44
|
+
for (const id of Object.keys(commands)) {
|
|
45
|
+
delete commands[id];
|
|
46
|
+
}
|
|
47
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { executeCompletionProvider, executeResolveCompletionItemProvider } from '../ExecuteCompletionProvider/ExecuteCompletionProvider.ts';
|
|
2
|
+
export { getCompletionProviderRegistrySnapshot } from '../GetCompletionProviderRegistrySnapshot/GetCompletionProviderRegistrySnapshot.ts';
|
|
3
|
+
export { registerCompletionProvider } from '../RegisterCompletionProvider/RegisterCompletionProvider.ts';
|
|
4
|
+
export { resetCompletionProviderRegistry } from '../ResetCompletionProviderRegistry/ResetCompletionProviderRegistry.ts';
|
|
5
|
+
export type { CompletionItem } from '../CompletionItem/CompletionItem.ts';
|
|
6
|
+
export type { CompletionProvider } from '../CompletionProvider/CompletionProvider.ts';
|
|
7
|
+
export type { CompletionProviderRegistrySnapshot } from '../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts';
|
|
8
|
+
export type { TextDocument } from '../CompletionTextDocument/CompletionTextDocument.ts';
|
|
9
|
+
export type { RegisteredCompletionProvider } from '../RegisteredCompletionProvider/RegisteredCompletionProvider.ts';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { executeCompletionProvider, executeResolveCompletionItemProvider } from "../ExecuteCompletionProvider/ExecuteCompletionProvider.js";
|
|
2
|
+
export { getCompletionProviderRegistrySnapshot } from "../GetCompletionProviderRegistrySnapshot/GetCompletionProviderRegistrySnapshot.js";
|
|
3
|
+
export { registerCompletionProvider } from "../RegisterCompletionProvider/RegisterCompletionProvider.js";
|
|
4
|
+
export { resetCompletionProviderRegistry } from "../ResetCompletionProviderRegistry/ResetCompletionProviderRegistry.js";
|