Skip to content

⬅️ Back to Table of Contents

📄 createProvideCodeActions.ts

📊 Analysis Summary

Metric Count
🔧 Functions 1
📦 Imports 4
📊 Variables & Constants 2

📚 Table of Contents

🛠️ File Location:

📂 packages/website/src/components/editor/createProvideCodeActions.ts

📦 Imports

Name Source
Monaco monaco-editor
LintCodeAction ../linter/utils
createEditOperation ../linter/utils
createURI ../linter/utils

Variables & Constants

Name Type Kind Value Exported
actions Monaco.languages.CodeAction[] const []
messages LintCodeAction[] const fixes.get(createURI(marker)) ?? []

Functions

createProvideCodeActions(fixes: Map<string, LintCodeAction[]>): Monaco.languages.CodeActionProvider

Code
export function createProvideCodeActions(
  fixes: Map<string, LintCodeAction[]>,
): Monaco.languages.CodeActionProvider {
  return {
    provideCodeActions(
      model,
      _range,
      context,
    ): Monaco.languages.ProviderResult<Monaco.languages.CodeActionList> {
      if (context.only !== 'quickfix') {
        return {
          actions: [],
          dispose(): void {
            /* nop */
          },
        };
      }
      const actions: Monaco.languages.CodeAction[] = [];
      for (const marker of context.markers) {
        const messages = fixes.get(createURI(marker)) ?? [];
        for (const message of messages) {
          const editOperation = createEditOperation(model, message);
          actions.push({
            diagnostics: [marker],
            edit: {
              edits: [
                {
                  resource: model.uri,
                  // monaco for ts >= 4.8
                  textEdit: editOperation,
                  // @ts-expect-error monaco for ts < 4.8
                  edit: editOperation,
                },
              ],
            },
            isPreferred: message.isPreferred,
            kind: 'quickfix',
            title: message.message + (message.code ? ` (${message.code})` : ''),
          });
        }
      }
      return {
        actions,
        dispose(): void {
          /* nop */
        },
      };
    },
  };
}
  • Parameters:
  • fixes: Map<string, LintCodeAction[]>
  • Return Type: Monaco.languages.CodeActionProvider
  • Calls:
  • fixes.get
  • createURI (from ../linter/utils)
  • createEditOperation (from ../linter/utils)
  • actions.push
  • Internal Comments:
    // monaco for ts >= 4.8 (x2)
    // @ts-expect-error monaco for ts < 4.8 (x2)