@lvce-editor/extension-management-worker 4.81.3 → 4.83.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.
@@ -3934,23 +3934,46 @@ const executeExtensionDiagnosticProvider = async (rpc, extension, textDocument,
3934
3934
  }
3935
3935
  return executeRpcDiagnosticProvider(rpc, textDocument, args);
3936
3936
  };
3937
- const executeMatchingDiagnosticProvider = async (extension, textDocument, args, assetDir, platform) => {
3937
+ const executeMatchingDiagnosticProvider = async (extension, textDocument, args, assetDir, platform, resultPort, providerIndex) => {
3938
+ const providerId = extension.id ?? extension.uri ?? extension.path ?? String(providerIndex);
3939
+ let diagnostics = [];
3938
3940
  try {
3939
3941
  const rpc = await getRpc$1(extension, assetDir, platform, `onDiagnostic:${textDocument.languageId}`);
3940
- return await executeExtensionDiagnosticProvider(rpc, extension, textDocument, args);
3942
+ diagnostics = await executeExtensionDiagnosticProvider(rpc, extension, textDocument, args);
3941
3943
  } catch {
3942
- return [];
3944
+ // A failing provider should not prevent results from other providers from being delivered.
3943
3945
  }
3946
+ resultPort?.postMessage({
3947
+ diagnostics,
3948
+ providerId,
3949
+ providerIndex,
3950
+ type: 'result'
3951
+ });
3952
+ return diagnostics;
3944
3953
  };
3945
- const executeDiagnosticProvider = async (extensionsState, textDocument, ...args) => {
3954
+ const executeDiagnosticProviders = async (extensionsState, textDocument, resultPort, ...args) => {
3946
3955
  const {
3947
3956
  assetDir,
3948
3957
  platform
3949
3958
  } = await getRuntimeContext('', extensionsState.platform);
3950
3959
  const extensions = await getMatchingExtensions$5(extensionsState, textDocument, assetDir, platform);
3951
- const results = await Promise.all(extensions.map(extension => executeMatchingDiagnosticProvider(extension, textDocument, args, assetDir, platform)));
3960
+ resultPort?.postMessage({
3961
+ providerCount: extensions.length,
3962
+ providerIds: extensions.map((extension, index) => extension.id ?? extension.uri ?? extension.path ?? String(index)),
3963
+ type: 'providers'
3964
+ });
3965
+ const results = await Promise.all(extensions.map((extension, providerIndex) => executeMatchingDiagnosticProvider(extension, textDocument, args, assetDir, platform, resultPort, providerIndex)));
3966
+ resultPort?.postMessage({
3967
+ type: 'done'
3968
+ });
3952
3969
  return results.flat();
3953
3970
  };
3971
+ const executeDiagnosticProvider = async (extensionsState, textDocument, ...args) => {
3972
+ return executeDiagnosticProviders(extensionsState, textDocument, undefined, ...args);
3973
+ };
3974
+ const streamDiagnosticProvider = async (extensionsState, textDocument, resultPort, ...args) => {
3975
+ await executeDiagnosticProviders(extensionsState, textDocument, resultPort, ...args);
3976
+ };
3954
3977
 
3955
3978
  /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
3956
3979
 
@@ -4588,6 +4611,24 @@ const executeOrganizeImportsProvider = async (extensionsState, textDocument) =>
4588
4611
  result
4589
4612
  };
4590
4613
  };
4614
+ const executeSourceActionProvider = async (extensionsState, textDocument, kind) => {
4615
+ const {
4616
+ assetDir,
4617
+ platform
4618
+ } = await getRuntimeContext('', extensionsState.platform);
4619
+ const extensions = await getMatchingExtensions$2(extensionsState, 'code action', textDocument, assetDir, platform);
4620
+ if (extensions.length === 0) {
4621
+ return {
4622
+ found: false
4623
+ };
4624
+ }
4625
+ const rpc = await getRpc$1(extensions[0], assetDir, platform);
4626
+ const result = await rpc.invoke('ExtensionApi.executeSourceActionProvider', textDocument, kind);
4627
+ return {
4628
+ found: true,
4629
+ result
4630
+ };
4631
+ };
4591
4632
 
4592
4633
  /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
4593
4634
 
@@ -6322,6 +6363,7 @@ const commandMap = {
6322
6363
  'Extensions.executeProvidersByEvent': wrapCommand(executeProvidersByEvent),
6323
6364
  'Extensions.executeResolveCompletionItemProvider': wrapCommand(executeResolveCompletionItemProvider),
6324
6365
  'Extensions.executeSignatureHelpProvider': wrapCommand(executeSignatureHelpProvider),
6366
+ 'Extensions.executeSourceActionProvider': wrapCommand(executeSourceActionProvider),
6325
6367
  'Extensions.executeSourceControlProvider': wrapCommand(executeSourceControlProvider),
6326
6368
  'Extensions.executeWorkspaceRequest': request,
6327
6369
  'Extensions.getAccessToken': getAccessToken,
@@ -6374,6 +6416,7 @@ const commandMap = {
6374
6416
  'Extensions.setViewInstanceState': setViewInstanceState,
6375
6417
  'Extensions.showNotification': (type, message) => createNotification('unknown.extension', type, message),
6376
6418
  'Extensions.showViewContextMenu': showViewContextMenu,
6419
+ 'Extensions.streamDiagnosticProvider': wrapCommand(streamDiagnosticProvider),
6377
6420
  'Extensions.uninstall': uninstallExtension,
6378
6421
  'StatusBar.handleChange': handleChange,
6379
6422
  'WebRtc.readMicLevels': readMicLevels,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-management-worker",
3
- "version": "4.81.3",
3
+ "version": "4.83.0",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"