@lvce-editor/extension-management-worker 4.23.0 → 4.24.1

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.
@@ -1310,7 +1310,7 @@ const {
1310
1310
  invoke: invoke$4,
1311
1311
  set: set$7
1312
1312
  } = create$1(FileSystemWorker);
1313
- const readFile = async uri => {
1313
+ const readFile$1 = async uri => {
1314
1314
  return invoke$4('FileSystem.readFile', uri);
1315
1315
  };
1316
1316
  const writeFile = async (uri, content) => {
@@ -1842,7 +1842,7 @@ const readDisabledExtensionIdsFromUri = async uri => {
1842
1842
  if (!exists$1) {
1843
1843
  return [];
1844
1844
  }
1845
- const content = await readFile(uri);
1845
+ const content = await readFile$1(uri);
1846
1846
  return parseDisabledExtensions(content);
1847
1847
  };
1848
1848
  const readDisabledExtensionIds = async () => {
@@ -2214,7 +2214,7 @@ const enableExtension2 = async (id, platform) => {
2214
2214
  if (!exists$1) {
2215
2215
  return undefined;
2216
2216
  }
2217
- const content = await readFile(disabledExtensionsJsonPath);
2217
+ const content = await readFile$1(disabledExtensionsJsonPath);
2218
2218
  const parsed = JSON.parse(content);
2219
2219
  const oldDisabled = parsed.disabledExtensions || [];
2220
2220
  const newDisabled = oldDisabled.filter(item => item !== id);
@@ -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,76 @@ 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
+
2483
+ const readFile = uri => {
2484
+ return readFile$1(uri);
2485
+ };
2486
+
2423
2487
  const instances = Object.create(null);
2424
2488
  const set$1 = (uid, instance) => {
2425
2489
  instances[uid] = instance;
@@ -2909,6 +2973,28 @@ const getRpcInfo = rpcId => {
2909
2973
  return info;
2910
2974
  };
2911
2975
 
2976
+ const getRunningExtensionsFromState = (extensions, runtimeStatuses) => {
2977
+ return extensions.flatMap(extension => {
2978
+ const runtimeStatus = runtimeStatuses[extension.id];
2979
+ if (!runtimeStatus || runtimeStatus.status !== Activated) {
2980
+ return [];
2981
+ }
2982
+ return [{
2983
+ ...extension,
2984
+ activationEvent: runtimeStatus.activationEvent,
2985
+ activationTime: runtimeStatus.activationTime
2986
+ }];
2987
+ }).toSorted((a, b) => b.activationTime - a.activationTime);
2988
+ };
2989
+
2990
+ const getRunningExtensions = async (assetDir, platform) => {
2991
+ const extensions = await getAllExtensions(assetDir, platform);
2992
+ const {
2993
+ runtimeStatuses
2994
+ } = get$4();
2995
+ return getRunningExtensionsFromState(extensions, runtimeStatuses);
2996
+ };
2997
+
2912
2998
  const emptyStatus = {
2913
2999
  activationEndTime: 0,
2914
3000
  activationEvent: '',
@@ -3174,6 +3260,7 @@ const wrapCommand = command => {
3174
3260
  };
3175
3261
  };
3176
3262
  const commandMap = {
3263
+ 'ExtensionApi.readFile': readFile,
3177
3264
  'Extensions.activate2': activateExtension2,
3178
3265
  'Extensions.activate3': activateExtension3,
3179
3266
  'Extensions.activateByEvent': activateByEvent,
@@ -3195,6 +3282,8 @@ const commandMap = {
3195
3282
  'Extensions.executeExtensionCommand': wrapCommand(executeExtensionCommand),
3196
3283
  'Extensions.executeFormattingProvider': wrapCommand(executeFormattingProvider),
3197
3284
  'Extensions.executeHoverProvider': wrapCommand(executeHoverProvider),
3285
+ 'Extensions.executeLanguageProvider': wrapCommand(executeLanguageProvider),
3286
+ 'Extensions.executeOrganizeImportsProvider': wrapCommand(executeOrganizeImportsProvider),
3198
3287
  'Extensions.executeResolveCompletionItemProvider': wrapCommand(executeResolveCompletionItemProvider),
3199
3288
  'Extensions.getAllExtensions': getAllExtensions,
3200
3289
  'Extensions.getColorThemeCss': getColorThemeCss,
@@ -3208,6 +3297,7 @@ const commandMap = {
3208
3297
  'Extensions.getPreference': getPreference,
3209
3298
  'Extensions.getRemoteUrlForWebView': getRemoteUrlForWebView,
3210
3299
  'Extensions.getRpcInfo': getRpcInfo,
3300
+ 'Extensions.getRunningExtensions': getRunningExtensions,
3211
3301
  'Extensions.getRuntimeStatus': getRuntimeStatus,
3212
3302
  'Extensions.getStatusBarItems': getStatusBarItems,
3213
3303
  '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.1",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"