@lvce-editor/extension-management-worker 4.82.0 → 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
 
@@ -6393,6 +6416,7 @@ const commandMap = {
6393
6416
  'Extensions.setViewInstanceState': setViewInstanceState,
6394
6417
  'Extensions.showNotification': (type, message) => createNotification('unknown.extension', type, message),
6395
6418
  'Extensions.showViewContextMenu': showViewContextMenu,
6419
+ 'Extensions.streamDiagnosticProvider': wrapCommand(streamDiagnosticProvider),
6396
6420
  'Extensions.uninstall': uninstallExtension,
6397
6421
  'StatusBar.handleChange': handleChange,
6398
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.82.0",
3
+ "version": "4.83.0",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"