30 open-source projects similar to fkling/astexplorer, ranked by how many features they have in common. Compare stars, activity and what each one does to find the best Astexplorer alternative.
This project is a unified toolchain for JavaScript and TypeScript development, providing a suite of specialized tools for bundling, parsing, linting, and formatting source code. The toolchain is implemented in Rust and utilizes a shared internal representation to allow multiple tools to operate on the same parsed source code. It employs a parallelized analysis pipeline and single-pass parsing with error recovery to process files across CPU cores. The suite covers several core capability areas, including static analysis for identifying programmatic errors, automated style standardization, and
ESTree is a formal schema and set of object interfaces used to represent JavaScript source code as a standardized abstract syntax tree. It serves as a common tree format and parser standard to ensure interoperability between different JavaScript parsers and transformation tools. The specification provides a consistent way to model language constructs, including statements, expressions, and module declarations. It includes detailed representations for modern language features such as classes, private identifiers, and short-circuiting logic like nullish coalescing and optional chaining. The pr
Recast is a JavaScript AST parser and printer designed for automated code refactoring. It converts source code into abstract syntax trees that can be modified and then printed back into source code. The project focuses on formatting-preserving transformations, storing original whitespace and indentation metadata within syntax tree nodes to reconstruct code without losing its original layout. It also generates character-level source maps to maintain precise correspondences between original input and transformed output. The toolkit includes utilities for syntax tree manipulation using a visito
Babel is a pluggable JavaScript compiler and transpiler that converts modern ECMAScript syntax into backwards-compatible versions of the language. It functions as an abstract syntax tree manipulator, parsing source code into a hierarchical structure to traverse and modify nodes for custom code transformations. The system utilizes a plugin-driven architecture to apply specific transformation rules and supports presets that bundle multiple plugins into named configuration groups. This enables the transformation of experimental syntax and the injection of non-global polyfills to ensure consisten
ts-morph is a TypeScript AST manipulation library and a high-level wrapper for the TypeScript compiler API. It provides a programmatic interface for analyzing, modifying, and generating TypeScript source code, serving as a tool for automated code refactoring and source code generation. The library simplifies the process of navigating and inspecting project structures by offering an object-oriented abstraction over the underlying compiler API. It allows for the programmatic transformation of existing codebases to automate structural updates and bulk code migrations. Its capabilities cover sta
Nearley is a JavaScript parser toolkit and context-free grammar compiler. It functions as an Earley parser generator that transforms BNF-like grammar definitions into executable code capable of analyzing text and generating abstract syntax trees. The project is distinguished by its ability to handle any context-free grammar, including those with left recursion and ambiguity, by maintaining multiple valid derivations for a single input. It further supports incremental parsing, allowing input strings to be processed in chunks to provide partial results and real-time feedback. Beyond core parsi
Acorn is a JavaScript parser that converts source text into a structured abstract syntax tree. It follows the ESTree specification to produce a standardized JSON tree format, enabling consistent analysis of code structure and language versions. The project features a plugin-based grammar extension system that allows the base parser to be extended with custom rules for experimental or non-standard language features. It also includes syntax error recovery, which inserts placeholder nodes into the tree when encountering invalid code to allow parsing to continue. The toolset covers static analys
Markdig is a high-performance Markdown processor for .NET applications that converts Markdown text into HTML or other target formats. It is a CommonMark compliant parser and extensible engine that can transform Markdown into a searchable and manipulatable abstract syntax tree. The library provides a framework for adding custom syntax and rendering logic through a modular pipeline of parsers and renderers. It supports native ahead-of-time compilation and trimming to minimize binary size. Capabilities include the generation of structured HTML with custom attributes and styling, the extraction
Comby is a command-line utility designed for structural code search and transformation across diverse programming languages. It functions as a code transformation engine that identifies and modifies source code patterns by utilizing syntax-aware templates, ensuring that operations respect language boundaries such as nested blocks, strings, and comments. The tool distinguishes itself by mapping various programming languages to a unified structural representation, allowing for consistent pattern matching that ignores irrelevant whitespace and formatting. It performs these operations by executin
GritQL is an AST-based code transformation engine and structural search tool. It uses a declarative query language to identify and rewrite source code patterns across multiple programming languages by matching abstract syntax tree nodes rather than literal text. The system functions as an automated refactoring framework for large-scale migrations and API updates. It distinguishes itself by utilizing sequential transformation pipelines and reusable blueprints that can be synced between local environments and remote repositories. The tool covers a broad range of capabilities including static a
ast-grep is a command-line utility and static analysis engine designed for searching, linting, and refactoring source code. It operates by identifying and transforming code blocks based on their underlying syntactic structure rather than relying on text-based or regular expression matching. The tool utilizes a language-agnostic abstraction to normalize diverse programming grammars into a unified tree structure. By employing a rule-driven engine, it allows users to define complex patterns that capture syntax nodes as variables, enabling consistent and syntactically valid modifications across e
Prepack is a build-time code evaluator and JavaScript bundle optimizer. It functions as a static analysis compiler that pre-evaluates static code and precalculates function results and global assignments during the build phase to accelerate startup times and reduce bundle size. The project specifically targets JSX optimization by processing syntax and node serialization to improve user interface rendering efficiency. It utilizes a partial evaluation engine and static execution analysis to replace runtime computations with precalculated constants. The tool covers a range of capabilities inclu
Hy is a Lisp implementation for Python that allows for writing Lisp syntax which compiles to Python bytecode. It operates as a Python-based Lisp dialect and S-expression language, providing full access to the Python standard library and ecosystem. The language focuses on macro-based metaprogramming, featuring an AST-walking macro system and reader macros that allow for custom syntax transformations and parsing rules. It enables the manipulation of the abstract syntax tree to extend language capabilities. The project includes a read-eval-print loop for interactive development and supports sta
syn is a Rust syntax tree parser and token stream converter. It serves as a toolkit for procedural macro development, providing a framework to parse Rust source code into structured syntax trees for analysis and transformation. The project enables the manipulation of Rust abstract syntax trees through specialized visitor and folder patterns for traversing and mutating nodes. It provides a bidirectional mapping that allows developers to convert token streams into structured trees and print those trees back into tokens for code generation. The library covers a broad range of syntax analysis ca
Unified is a syntax tree processing engine and content ecosystem designed to parse, transform, and serialize text content. It functions as a plugin-based content pipeline that converts raw text into structured abstract syntax trees using plain JavaScript objects for programmatic inspection and modification. The project distinguishes itself through a modular architecture that enables cross-ecosystem translation, allowing syntax trees to be converted between different specifications such as HTML and Markdown. It utilizes a system of immutable processor cloning and shared state containers, ensur
Rector is an automated PHP refactoring and modernization tool designed to upgrade language versions and modernize syntax using predefined rules. It functions as a static analysis engine that inspects code structures and types to identify refactoring targets without executing the code. The project provides a framework for defining custom transformation logic to automate project-specific changes. It distinguishes itself by offering specialized capabilities for migrating legacy or custom frameworks to modern alternatives and converting docblock annotations into native language attributes. The s
Markdig is a markdown parser library that converts text into structured HTML, plain text, or other formats using a configurable pipeline. It functions as a CommonMark compliant parser and an abstract syntax tree generator that transforms markdown into a hierarchical tree of block and inline nodes with precise source location mapping. The project is distinguished by a decoupled renderer architecture that separates parsing logic from output generation, enabling the transformation of the syntax tree into non-HTML formats such as LaTeX or XAML. It also serves as a lossless markdown processor by t
unplugin-auto-import is a build-time import automation plugin and AST-based code transformer. It analyzes source code to identify missing identifiers and automatically injects the required import statements during the bundling process. The project functions as a cross-bundler build plugin, providing a unified abstraction layer that ensures consistent behavior across Vite, Webpack, and Rollup. It utilizes a pattern-based module resolver to scan local directories via glob patterns and employs a TypeScript declaration generator to maintain type definition files for IDE autocompletion. Its capab
Optimize-js is a JavaScript parsing optimizer designed to reduce the time browsers spend pre-parsing scripts to improve initial execution speed. It transforms source code to minimize the overhead associated with browser parsing. The project implements a technique that wraps function calls in parentheses to bypass initial pre-parsing and reduce double-parsing overhead. To maintain the utility of the transformed code, it includes a source map generator that links the optimized output back to the original source. The toolset also includes performance benchmarking capabilities to measure the exa
Gumbo-parser is a high-performance HTML5 parsing library written in pure C99. It transforms raw markup into a structured document tree by implementing the formal state-machine tokenization and error recovery rules defined in the HTML5 specification. The project serves as an HTML source mapping tool, linking parsed nodes back to their original byte offsets and pointers within the input buffer. This allows for the precise tracking of source locations for elements within the resulting parse tree. Beyond full document processing, the library handles isolated HTML fragments and provides a C-based
Checkstyle is a Java static analysis tool and linter designed to identify and enforce coding standards and best practices. It functions as a code quality auditor and Javadoc validation tool, checking source code against configurable rulesets to ensure structural and stylistic consistency. The project allows for the creation of custom linting rules by extending a core API to inspect the abstract syntax tree. It further enables specialized validation through the use of XPath expressions to query the syntax tree for specific code patterns and violations. Capability areas include the enforcement
go-ast-book is a collection of educational and technical resources focused on abstract syntax tree analysis, compiler development, and static code verification. It provides guides and manuals for parsing, traversing, and analyzing Go source code to extract semantic meaning. The project serves as a reference for building compiler frontends, covering the translation of high-level code into intermediate representations and single static assignment forms. It also provides instructions for using these techniques to develop language tooling and perform static code analysis. The resources cover a b
Oxc is a high-performance toolchain designed for the analysis, linting, formatting, and transformation of JavaScript and TypeScript codebases. It functions as a comprehensive static analysis engine and compiler-based utility, providing the infrastructure necessary to parse source code into high-performance abstract syntax trees and map complex module dependency graphs across entire projects. The project distinguishes itself through its use of multi-core parallel processing to maximize throughput during intensive tasks like linting and minification. It offers deep, type-aware static analysis t
react-responsive is a set of utility tools and hooks for evaluating CSS media queries within React components. It functions as a viewport state manager that detects screen dimensions and triggers user interface changes based on defined breakpoints. The project includes a helper for server-side rendering and automated testing that allows device properties to be overridden via context. This ensures consistent rendering when browser-native detection is unavailable. The library covers adaptive component rendering, viewport change monitoring, and responsive layout detection. It uses the native ma
InstantSearch is a JavaScript search framework and UI library designed for building instant search and discovery interfaces using the Algolia API. It provides a toolkit for implementing search logic, state synchronization, and result rendering across various environments, including dedicated component libraries for React and Vue.js. The framework decouples search data processing from the UI layer through a connector-based logic abstraction and a provider pattern for state distribution. This allows developers to build custom search behaviors by transforming connectors into hooks and assembling
Beautiful React Diagrams is a component library for building interactive node-based visualizations and flowcharts within React applications. It provides a framework for rendering custom visual schemas where nodes and links are managed through a centralized state, ensuring a single source of truth for complex layouts. The library distinguishes itself through a flexible rendering pattern that allows for the injection of custom user-defined components into node and port placeholders. It enforces structural integrity by validating connections against predefined schemas and provides granular contr
history.js is a cross-browser URL state manager and HTML5 History API polyfill. It functions as a single page application router that manages browser URL and history state consistently across HTML5 and HTML4 browsers, enabling navigation without triggering full page reloads. The project provides a JavaScript framework adapter that integrates history management with the event systems of jQuery, MooTools, and Prototype. It ensures compatibility through a fallback mechanism that switches to hash-based navigation and hashbang URLs when the native HTML5 History API is unavailable. The system cove
ts-migrate is an automated migration tool designed to transform JavaScript source code into compiling TypeScript files. It functions as a code migration framework that uses abstract syntax trees to perform large-scale refactoring and structural changes across a project. The tool provides a customizable framework for defining plugin-based transformation rules, allowing for the automation of specific code changes. It includes specialized engines for converting JSDoc type definitions into native TypeScript annotations and a utility for suppressing compiler errors by inserting type assertions or
SketchyBar is a shell-scriptable system user interface and status bar replacement for macOS. It replaces the native menu bar with a customizable overlay that uses scriptable widgets and dynamic visual blocks to display real-time data. The tool is distinguished by its use of external shell scripts to update visual elements and state. It supports a declarative configuration system that allows for the creation of multi-instance bars and the execution of batched commands to minimize flickering during startup. The system provides capabilities for dynamic system monitoring through graphs and visua
This project is a cross-window 3D visualization system that maintains a consistent scene state across multiple open browser instances. It utilizes a local storage state synchronizer to share real-time application data between different browser tabs. The system coordinates Three.js environments by syncing the internal scene graph, camera angles, and object positions. It achieves this through event-driven state propagation, allowing updates in one window to be reflected in all others without a dedicated backend server. The implementation includes window lifecycle management to track the creati