p42ai / js-assistant

120+ refactorings and code-assists for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=p42ai.refactor
MIT License
119 stars 7 forks source link
codemod javascript legacy-code lint refactor technical-debt typescript visual-studio-code vscode vscode-extension

The P42 JS Assistant adds over 120 code actions and a suggestion panel for JavaScript, TypeScript, React, and Vue.js to Visual Studio Code.

@p42ai makes refactoring a ton of fun ❤️   — John Reilly

Give it a try, it's awesome!  — Kasper Mikiewicz

P42 JS Assistant

Report Bug · Request Feature · Follow @p42ai

Documentation

You can find the actions in the quick fix and refactoring context menus. They depend on the cursor position, the selected text (if any), the source code, the language type, and any available type information. Underlining with three dots suggests beneficial refactorings that you can perform. The suggestion panel shows you recommended refactorings for your whole file.

Keyboard Shortcuts

Action Type Mac Shortcut Windows/Linux Shortcut
Quick Fix context menu + . Ctrl + .
Refactor context menu + + R Ctrl + Alt + R
Source Action context menu + + S Ctrl + Alt + S
Extract direct + + X Ctrl + Alt + X
Inline direct + + I Ctrl + Alt + I
Toggle Braces {} direct + + B Ctrl + Alt + B
Move Up direct + + Ctrl + Alt + U
Move Down direct + + Ctrl + Alt + J
Other Action context menu + + A Ctrl + Alt + A

Touch Bar

The P42 JS Assistant adds the following buttons to the MacOS touch bar:

Code Assists by Category

Code assists that belong to several categories appear more than once.

Core Refactorings

Visual Study Code already contains basic refactorings such as Rename and Extract Function. The JS Assistant adds additional refactorings or extended functionality such as safety checking:

Code Assists for Logical Expressions

Boolean logic can be challenging to read, especially as expressions get more complex. The JS Assistant provides several refactorings that can help you simplify and tease apart logical expressions to make them easier to understand:

Code Assists for Branching Statements

Branching statements such as if-else and switch are central elements in many programs. Restructuring them can increase the readability of your programs, often in combination with refactoring their conditions:

Code Assists for Arrays and Loops

JavaScript has several ways of defining loops and many array methods that work on the whole array. The JS Assistant provides several code actions for converting between different types of for loops and for converting to more idiomatic array methods such as array.includes().

Code Assists for Functions and Methods

Functions and methods are essential building blocks of any non-trivial program. The following code actions make it easier to work with functions, methods, and their parameters:

Code Assists for Classes

Code Assists for Strings and Template Literals

Text manipulation has become more powerful with the introduction of template literals in JavaScript. The JS Assistant offers several code actions to help you work with text, be it strings or template literals:

Code Assists for Variables

Code Assists for Object and Array Destructuring

Code Assists for Syntax Conversion

It is often annoying to make small syntactical changes by editing text. Often more than one position needs to be edited, and the code is broken during the edit, leading to incorrect errors and auto-completions that get in the way. You can execute the following syntax conversions with code assists:

JavaScript Modernizations

The Javascript ecosystem is progressing rapidly. However, it is hard to keep codebases up-to-date with the newer JavaScript features, and codemods are not always an option due to their significant churn and potential for breakages. The JS Assistant supports both codemod-like mass code refactoring and more opportunistic code modernization for the following upgrades:

Code Assists for TypeScript

Code Assists for React

In React, components often contain JSX, a syntax extension for JavaScript. The JS Assistant provides code assists that make working with JSX and React easier:

Lodash Modernizations

With the introduction of various collection helpers and new syntax in ES6 and more recent JavaScript versions, some Lodash functions have become somewhat redundant.

Code Assists for Moving Semantic Blocks

Code Cleanups

Code cleanups remove unnecessary code. Such code can result from code churn, e.g., by applying other refactorings, adding new features, or fixing bugs. The JS Assistant shows hints and automates the cleanup for the following situations:

AI Actions

Actions that use the P42 Cloud AI (which needs to be enabled in the settings).

Other Actions

Report Bugs and Suggest Features

Please report any bugs or feature suggestions in the JS Assistant issue tracker.

License & Used Open Source Libraries

See DISCLAIMER.txt.