@lvce-editor/extension-management-worker 4.23.0 → 4.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.
@@ -2320,7 +2320,7 @@ const getRpc$1 = async (extension, assetDir, platform) => {
2320
2320
  const contributesCompletionProvider = (extension, languageId) => {
2321
2321
  return Array.isArray(extension.completionProviders) && extension.completionProviders.some(provider => provider.languageId === languageId);
2322
2322
  };
2323
- const getMatchingExtensions$3 = async (extensionsState, textDocument, assetDir, platform) => {
2323
+ const getMatchingExtensions$4 = async (extensionsState, textDocument, assetDir, platform) => {
2324
2324
  const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform);
2325
2325
  return extensions.filter(extension => isExtensionIsolated(extension) && contributesCompletionProvider(extension, textDocument.languageId));
2326
2326
  };
@@ -2335,7 +2335,7 @@ const executeCompletionProvider = async (extensionsState, textDocument, ...args)
2335
2335
  assetDir,
2336
2336
  platform
2337
2337
  } = await getRuntimeContext('', extensionsState.platform);
2338
- const extensions = await getMatchingExtensions$3(extensionsState, textDocument, assetDir, platform);
2338
+ const extensions = await getMatchingExtensions$4(extensionsState, textDocument, assetDir, platform);
2339
2339
  const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
2340
2340
  const results = await Promise.all(rpcs.map(rpc => executeRpcCompletionProvider(rpc, textDocument, args)));
2341
2341
  return results[0] || [];
@@ -2345,7 +2345,7 @@ const executeResolveCompletionItemProvider = async (extensionsState, textDocumen
2345
2345
  assetDir,
2346
2346
  platform
2347
2347
  } = await getRuntimeContext('', extensionsState.platform);
2348
- const extensions = await getMatchingExtensions$3(extensionsState, textDocument, assetDir, platform);
2348
+ const extensions = await getMatchingExtensions$4(extensionsState, textDocument, assetDir, platform);
2349
2349
  const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
2350
2350
  const results = await Promise.all(rpcs.map(rpc => executeRpcResolveCompletionItemProvider(rpc, textDocument, args)));
2351
2351
  return results[0];
@@ -2356,7 +2356,7 @@ const executeResolveCompletionItemProvider = async (extensionsState, textDocumen
2356
2356
  const contributesDiagnosticProvider = (extension, languageId) => {
2357
2357
  return Array.isArray(extension.diagnosticProviders) && extension.diagnosticProviders.some(provider => provider.languageId === languageId);
2358
2358
  };
2359
- const getMatchingExtensions$2 = async (extensionsState, textDocument, assetDir, platform) => {
2359
+ const getMatchingExtensions$3 = async (extensionsState, textDocument, assetDir, platform) => {
2360
2360
  const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform);
2361
2361
  return extensions.filter(extension => isExtensionIsolated(extension) && contributesDiagnosticProvider(extension, textDocument.languageId));
2362
2362
  };
@@ -2368,7 +2368,7 @@ const executeDiagnosticProvider = async (extensionsState, textDocument, ...args)
2368
2368
  assetDir,
2369
2369
  platform
2370
2370
  } = await getRuntimeContext('', extensionsState.platform);
2371
- const extensions = await getMatchingExtensions$2(extensionsState, textDocument, assetDir, platform);
2371
+ const extensions = await getMatchingExtensions$3(extensionsState, textDocument, assetDir, platform);
2372
2372
  const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
2373
2373
  const results = await Promise.all(rpcs.map(rpc => executeRpcDiagnosticProvider(rpc, textDocument, args)));
2374
2374
  return results[0] || [];
@@ -2379,7 +2379,7 @@ const executeDiagnosticProvider = async (extensionsState, textDocument, ...args)
2379
2379
  const contributesFormattingProvider = (extension, languageId) => {
2380
2380
  return Array.isArray(extension.formattingProviders) && extension.formattingProviders.some(provider => provider.languageId === languageId);
2381
2381
  };
2382
- const getMatchingExtensions$1 = async (extensionsState, textDocument, assetDir, platform) => {
2382
+ const getMatchingExtensions$2 = async (extensionsState, textDocument, assetDir, platform) => {
2383
2383
  const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform);
2384
2384
  return extensions.filter(extension => isExtensionIsolated(extension) && contributesFormattingProvider(extension, textDocument.languageId));
2385
2385
  };
@@ -2391,7 +2391,7 @@ const executeFormattingProvider = async (extensionsState, textDocument, ...args)
2391
2391
  assetDir,
2392
2392
  platform
2393
2393
  } = await getRuntimeContext('', extensionsState.platform);
2394
- const extensions = await getMatchingExtensions$1(extensionsState, textDocument, assetDir, platform);
2394
+ const extensions = await getMatchingExtensions$2(extensionsState, textDocument, assetDir, platform);
2395
2395
  const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
2396
2396
  const results = await Promise.all(rpcs.map(rpc => executeRpcFormattingProvider(rpc, textDocument, args)));
2397
2397
  return results[0] || [];
@@ -2402,7 +2402,7 @@ const executeFormattingProvider = async (extensionsState, textDocument, ...args)
2402
2402
  const contributesHoverProvider = (extension, languageId) => {
2403
2403
  return Array.isArray(extension.hoverProviders) && extension.hoverProviders.some(provider => provider.languageId === languageId);
2404
2404
  };
2405
- const getMatchingExtensions = async (extensionsState, textDocument, assetDir, platform) => {
2405
+ const getMatchingExtensions$1 = async (extensionsState, textDocument, assetDir, platform) => {
2406
2406
  const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform);
2407
2407
  return extensions.filter(extension => isExtensionIsolated(extension) && contributesHoverProvider(extension, textDocument.languageId));
2408
2408
  };
@@ -2414,12 +2414,72 @@ const executeHoverProvider = async (extensionsState, textDocument, ...args) => {
2414
2414
  assetDir,
2415
2415
  platform
2416
2416
  } = await getRuntimeContext('', extensionsState.platform);
2417
- const extensions = await getMatchingExtensions(extensionsState, textDocument, assetDir, platform);
2417
+ const extensions = await getMatchingExtensions$1(extensionsState, textDocument, assetDir, platform);
2418
2418
  const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
2419
2419
  const results = await Promise.all(rpcs.map(rpc => executeRpcHoverProvider(rpc, textDocument, args)));
2420
2420
  return results[0];
2421
2421
  };
2422
2422
 
2423
+ /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
2424
+
2425
+ const activationEventByKind = {
2426
+ 'brace completion': 'onBraceCompletion',
2427
+ 'closing tag': 'onClosingTag',
2428
+ definition: 'onDefinition',
2429
+ implementation: 'onImplementation',
2430
+ reference: 'onReferences',
2431
+ rename: 'onRename',
2432
+ 'tab completion': 'onTabCompletion',
2433
+ 'type definition': 'onTypeDefinition'
2434
+ };
2435
+ const contributesLanguageProvider = (extension, kind, languageId) => {
2436
+ const activationEvent = activationEventByKind[kind] || 'onLanguage';
2437
+ return Array.isArray(extension.activation) && extension.activation.includes(`${activationEvent}:${languageId}`);
2438
+ };
2439
+ const getMatchingExtensions = async (extensionsState, kind, textDocument, assetDir, platform) => {
2440
+ const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform);
2441
+ return extensions.filter(extension => isExtensionIsolated(extension) && contributesLanguageProvider(extension, kind, textDocument.languageId));
2442
+ };
2443
+ const executeRpcLanguageProvider = async (rpc, kind, methodName, textDocument, args) => {
2444
+ return rpc.invoke('ExtensionApi.executeLanguageProvider', kind, methodName, textDocument, ...args);
2445
+ };
2446
+ const executeLanguageProvider = async (extensionsState, kind, methodName, textDocument, ...args) => {
2447
+ const {
2448
+ assetDir,
2449
+ platform
2450
+ } = await getRuntimeContext('', extensionsState.platform);
2451
+ const extensions = await getMatchingExtensions(extensionsState, kind, textDocument, assetDir, platform);
2452
+ if (extensions.length === 0) {
2453
+ return {
2454
+ found: false
2455
+ };
2456
+ }
2457
+ const rpc = await getRpc$1(extensions[0], assetDir, platform);
2458
+ const result = await executeRpcLanguageProvider(rpc, kind, methodName, textDocument, args);
2459
+ return {
2460
+ found: true,
2461
+ result
2462
+ };
2463
+ };
2464
+ const executeOrganizeImportsProvider = async (extensionsState, textDocument) => {
2465
+ const {
2466
+ assetDir,
2467
+ platform
2468
+ } = await getRuntimeContext('', extensionsState.platform);
2469
+ const extensions = await getMatchingExtensions(extensionsState, 'code action', textDocument, assetDir, platform);
2470
+ if (extensions.length === 0) {
2471
+ return {
2472
+ found: false
2473
+ };
2474
+ }
2475
+ const rpc = await getRpc$1(extensions[0], assetDir, platform);
2476
+ const result = await rpc.invoke('ExtensionApi.executeOrganizeImportsProvider', textDocument);
2477
+ return {
2478
+ found: true,
2479
+ result
2480
+ };
2481
+ };
2482
+
2423
2483
  const instances = Object.create(null);
2424
2484
  const set$1 = (uid, instance) => {
2425
2485
  instances[uid] = instance;
@@ -2909,6 +2969,28 @@ const getRpcInfo = rpcId => {
2909
2969
  return info;
2910
2970
  };
2911
2971
 
2972
+ const getRunningExtensionsFromState = (extensions, runtimeStatuses) => {
2973
+ return extensions.flatMap(extension => {
2974
+ const runtimeStatus = runtimeStatuses[extension.id];
2975
+ if (!runtimeStatus || runtimeStatus.status !== Activated) {
2976
+ return [];
2977
+ }
2978
+ return [{
2979
+ ...extension,
2980
+ activationEvent: runtimeStatus.activationEvent,
2981
+ activationTime: runtimeStatus.activationTime
2982
+ }];
2983
+ }).toSorted((a, b) => b.activationTime - a.activationTime);
2984
+ };
2985
+
2986
+ const getRunningExtensions = async (assetDir, platform) => {
2987
+ const extensions = await getAllExtensions(assetDir, platform);
2988
+ const {
2989
+ runtimeStatuses
2990
+ } = get$4();
2991
+ return getRunningExtensionsFromState(extensions, runtimeStatuses);
2992
+ };
2993
+
2912
2994
  const emptyStatus = {
2913
2995
  activationEndTime: 0,
2914
2996
  activationEvent: '',
@@ -3195,6 +3277,8 @@ const commandMap = {
3195
3277
  'Extensions.executeExtensionCommand': wrapCommand(executeExtensionCommand),
3196
3278
  'Extensions.executeFormattingProvider': wrapCommand(executeFormattingProvider),
3197
3279
  'Extensions.executeHoverProvider': wrapCommand(executeHoverProvider),
3280
+ 'Extensions.executeLanguageProvider': wrapCommand(executeLanguageProvider),
3281
+ 'Extensions.executeOrganizeImportsProvider': wrapCommand(executeOrganizeImportsProvider),
3198
3282
  'Extensions.executeResolveCompletionItemProvider': wrapCommand(executeResolveCompletionItemProvider),
3199
3283
  'Extensions.getAllExtensions': getAllExtensions,
3200
3284
  'Extensions.getColorThemeCss': getColorThemeCss,
@@ -3208,6 +3292,7 @@ const commandMap = {
3208
3292
  'Extensions.getPreference': getPreference,
3209
3293
  'Extensions.getRemoteUrlForWebView': getRemoteUrlForWebView,
3210
3294
  'Extensions.getRpcInfo': getRpcInfo,
3295
+ 'Extensions.getRunningExtensions': getRunningExtensions,
3211
3296
  'Extensions.getRuntimeStatus': getRuntimeStatus,
3212
3297
  'Extensions.getStatusBarItems': getStatusBarItems,
3213
3298
  'Extensions.getViewActions': getViewActions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-management-worker",
3
- "version": "4.23.0",
3
+ "version": "4.24.0",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"