recast
estree
recast | estree | |
---|---|---|
6 | 8 | |
4,825 | 4,962 | |
- | 0.6% | |
5.8 | 5.3 | |
29 days ago | 6 months ago | |
TypeScript | ||
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
recast
-
What is an Abstract Syntax Tree in Programming?
GitHub | Website
-
[AskJS] Any good shortcuts for migrating off of enzyme?
If jscodeshift is confusing, I recommend looking into using recast directly, along with ast-types for AST traversal and its node factories. Inside your visitors, write some conditionals that check for the patterns you want to detect, then mutate the node passed to the visitor, or otherwise mutate the AST. Keep going until tests are passing.
-
Evan you on Svelte migration from Vue
I ended up writing my own codemod tool based on recast to automate most of the repetitive, mindless grunt work. Even with the tool shaving hundreds of hours off of the migration effort, there's still a huge amount of work left, since we need to find or create Vue 3-compatible alternatives of all of our Vue 2-only dependencies. Some of these dependencies (e.g. vee-validate) are used pretty ubiquitously too
-
Which library to use for AST manipulation?
I had great results with a combination of babel + recast. Babel is doing the job and Recast is mostly here to preserve the original style when printing code again. I animated a workshop @ Node.JS Montréal 2019 that was recorded here. We cover the parse/transform/print of code using Babel (live coding starts around 45').
-
JARVIS – Write me a Codemod
recast
- Show HN: Monocle – bidirectional code generation library
estree
-
ESLint Understand By Doing Part 1: Abstract Syntax Trees
ESLint's AST format, ESTree, would represent this line of code as:
-
Eglot has landed on master: Emacs now has a built-in LSP client
That was a super interesting link, thank you.
For the ontological problem, I presume you're referring to how there are so many differing ideas of how to represent ASTs (apologies for mixing languages, these URLs were just handy):
* https://lisperator.net/uglifyjs/ast#nodes
* https://github.com/estree/estree#the-estree-spec
* ... likely others
which makes it hard for ls1 to ask ls2 about "the for-of iteration variable Node" because ls2 could be using UglifyJS or ESTree or their own(!) AST nomenclature?
And all of this is made worse by (e.g.) Java1.3 versus Java19 because languages are rarely static
-
Statements vs. Expressions
I find it better to actually look at the AST for javascript.
These are expressions:
https://github.com/estree/estree/blob/master/es5.md#expressi...
These are statements:
https://github.com/estree/estree/blob/master/es5.md#statemen...
I guess the confusing part for many is how an expression can also be a statement. But if you look at the ExpressionStatement you see that an expression is not also a statement. It's just the wrapper statement!
-
A technical tale of NodeSecure - Chapter 2
When I started the NodeSecure project I had almost no experience 🐤 with AST (Abstract Syntax Tree). My first time was on the SlimIO project to generate codes dynamically with the astring package (and I had also looked at the ESTree specification).
- Show HN: Monocle – bidirectional code generation library
-
Go is the future of Frontend infrastructure
ESTree compatible output, AST explorer on WASM
-
Introducing GraphQL-ESLint!
The parser we wrote transforms the GraphQL AST into ESTree structure, so it allows you to travel the GraphQL AST tree easily.
-
Revealing the magic of AST by writing babel plugins
For espree parser(the one eslint uses) we can refer here Eslint AST Node Types
What are some alternatives?
escodegen - ECMAScript code generator
esprima - ECMAScript parsing infrastructure for multipurpose analysis
espree - An Esprima-compatible JavaScript parser
babel-parser
Acorn - A small, fast, JavaScript-based JavaScript parser
jscodeshift - A JavaScript codemod toolkit.
kataw - An 100% spec compliant ES2022 JavaScript toolchain
ast-node-finder - AST Node Find api automatically generated from code
ts-lite - Compiled TypeScript. Generates Go, Swift, Kotlin, WASM, Binary
babel-handbook - :blue_book: A guided handbook on how to use Babel and how to create plugins for Babel.