import { CodeAction, CodeActionKind, CodeActionProvider, Command, ProviderResult, } from 'vscode'; import type { TriggeredFrom } from './types'; const CODE_ACTIONS = [ { title: 'Sort Imports/Exports', // Correspond to `SortActionProvider.ACTION_ID` kind: CodeActionKind.SourceOrganizeImports.append('sortImports'), command: 'tsImportSorter.command.sortImports', }, ]; export default class SortActionProvider implements CodeActionProvider { static readonly ACTION_ID = 'source.organizeImports.sortImports'; static readonly ACTION_KINDS = CODE_ACTIONS.map(action => action.kind); static readonly ACTION_COMMANDS = CODE_ACTIONS.map(({ title, kind, command }) => { const action = new CodeAction(title, kind); const from: TriggeredFrom = 'codeAction'; action.command = { command, title, arguments: [from] }; return action; }); provideCodeActions(): ProviderResult<(CodeAction | Command)[]> { return SortActionProvider.ACTION_COMMANDS; } }