@lvce-editor/api 9.36.0 → 9.37.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.
@@ -26,6 +26,9 @@ export interface DocumentSymbolProvider extends LanguageProvider {
26
26
  export declare const executeLanguageProvider: (kind: string, methodName: string, textDocument: {
27
27
  readonly languageId: string;
28
28
  }, ...args: readonly unknown[]) => Promise<unknown>;
29
+ export declare const executeSourceActionProvider: (textDocument: {
30
+ readonly languageId: string;
31
+ }, kind: string) => Promise<unknown>;
29
32
  export declare const executeOrganizeImportsProvider: (textDocument: {
30
33
  readonly languageId: string;
31
34
  }) => Promise<unknown>;
@@ -45,7 +45,7 @@ export const executeLanguageProvider = async (kind, methodName, textDocument, ..
45
45
  }
46
46
  return method(textDocument, ...args);
47
47
  };
48
- export const executeOrganizeImportsProvider = async (textDocument) => {
48
+ export const executeSourceActionProvider = async (textDocument, kind) => {
49
49
  const provider = getProvider('code action', textDocument.languageId);
50
50
  if (!provider) {
51
51
  throw new ExtensionApiError(`No code action provider found for ${textDocument.languageId}`);
@@ -55,12 +55,13 @@ export const executeOrganizeImportsProvider = async (textDocument) => {
55
55
  if (!Array.isArray(actions)) {
56
56
  throw new ExtensionApiError('invalid code action result: code actions must be of type array');
57
57
  }
58
- const action = actions.find((candidate) => candidate && typeof candidate === 'object' && candidate.kind === 'source.organizeImports');
58
+ const action = actions.find((candidate) => candidate && typeof candidate === 'object' && candidate.kind === kind);
59
59
  if (!action || typeof action.execute !== 'function') {
60
60
  return [];
61
61
  }
62
62
  return action.execute(textDocument);
63
63
  };
64
+ export const executeOrganizeImportsProvider = (textDocument) => executeSourceActionProvider(textDocument, 'source.organizeImports');
64
65
  export const registerBraceCompletionProvider = (provider) => registerProvider('brace completion', provider, ['provideBraceCompletion']);
65
66
  export const registerClosingTagProvider = (provider) => registerProvider('closing tag', provider, ['provideClosingTag']);
66
67
  export const registerCodeActionsProvider = (provider) => registerProvider('code action', provider, ['provideCodeActions']);
@@ -76,6 +77,7 @@ export const registerTypeDefinitionProvider = (provider) => registerProvider('ty
76
77
  const commandMap = {
77
78
  'ExtensionApi.executeLanguageProvider': executeLanguageProvider,
78
79
  'ExtensionApi.executeOrganizeImportsProvider': executeOrganizeImportsProvider,
80
+ 'ExtensionApi.executeSourceActionProvider': executeSourceActionProvider,
79
81
  };
80
82
  export const resetLanguageProviderRegistry = () => {
81
83
  for (const kind of Object.keys(providers)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/api",
3
- "version": "9.36.0",
3
+ "version": "9.37.0",
4
4
  "description": "Tree-shakeable extension API for Lvce Editor extensions.",
5
5
  "keywords": [
6
6
  "lvce-editor",