transform

module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2026 License: MIT

README

go-fAST Transformers

Go Reference

JavaScript AST transformation library for Go, built for go-fast.

Installation

go get github.com/nukilabs/transform

Packages

deadcode

Dead code elimination for JavaScript. Removes unused functions, classes, and variable declarations through iterative scope-aware analysis. Correctly handles circular dependencies and preserves expressions with side effects.

import (
	"github.com/nukilabs/transform/deadcode"
	"github.com/t14raptor/go-fast/parser"
	"github.com/t14raptor/go-fast/generator"
)

p, _ := parser.ParseFile(`
	function a() { return "a"; }
	function b() { return "b"; }
	b();
`)

deadcode.Eliminate(p, true)

fmt.Println(generator.Generate(p))
// function b() { return "b"; } b();
simplifier

Constant folding and expression simplification for JavaScript. Evaluates constant expressions, folds comparisons, simplifies logical operators, optimizes member access on literals, and handles JavaScript type coercion semantics.

import (
	"github.com/nukilabs/transform/simplifier"
	"github.com/t14raptor/go-fast/parser"
	"github.com/t14raptor/go-fast/generator"
)

p, _ := parser.ParseFile(`!+[]+!+[]`)

simplifier.Simplify(p, true)

fmt.Println(generator.Generate(p))
// 2

Selected simplifications:

Input Output
![] false
+!+[] 1
"hello".length 5
[1, 2, 3][0] 1
true ? a : b a
true && x x
typeof undefined "undefined"

API

Both packages expose a single entry point:

func deadcode.Eliminate(p ast.VisitableNode, resolve bool)
func simplifier.Simplify(p ast.VisitableNode, resolve bool)

The resolve parameter controls whether symbol resolution is performed before the transformation. Set it to true unless you have already called resolver.Resolve on the AST.

Directories

Path Synopsis
internal
cfg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL