macroforge
v0.1.80
Published
TypeScript macro expansion engine powered by Rust, Oxc, and WebAssembly
Downloads
314
Maintainers
Readme
macroforge_ts
TypeScript macro expansion engine - write compile-time macros in Rust
Overview
This crate provides a TypeScript macro expansion engine that brings Rust-like derive macros to TypeScript. It supports multiple output targets via feature flags:
wasm: (Default) Universal WebAssembly module via wasm-bindgen for browser and edge environments.node: Optional native Node.js bindings via NAPI-RS.
Overview
Macroforge processes TypeScript source files containing @derive decorators and expands them into
concrete implementations. For example, a class decorated with @derive(Debug, Clone) will have
toString() and clone() methods automatically generated.
Architecture
The crate is organized into several key components:
- Unified API (
apimodule): An output-agnostic trait-based interface (MacroforgeApi) that defines all macro operations. - Target Bindings:
bindings_napi: Node.js specific entry points using NAPI-RS.bindings_wasm: Universal entry points usingwasm-bindgen.
- Position Mapping (
api_types::SourceMappingResult): Bidirectional source mapping for IDE integration. - Macro Host (
hostmodule): Core expansion engine with registry and dispatcher. - Built-in Macros (
builtinmodule): Standard derive macros (Debug, Clone, Serialize, etc.).
Usage
From Node.js
const { expandSync } = require('macroforge');
const result = expandSync(code, filepath, { keep_decorators: false });From WASM
import init, { expand_sync } from './pkg/macroforge_ts.js';
await init();
const result = expand_sync(code, filepath, { keep_decorators: false });Re-exports for Macro Authors
This crate re-exports several dependencies for convenience when writing custom macros:
ts_syn: TypeScript syntax types for AST manipulationmacros: Macro attributes and quote templatesswc_core,swc_common,swc_ecma_ast: SWC compatibility infrastructure
Installation
Add this to your Cargo.toml:
[dependencies]
macroforge_ts = "0.1.79"Key Exports
Functions
__macroforge_ffi_free- Free a buffer allocated by an FFI function.__macroforge_ffi_get_manifest- Returns the full MacroManifest as JSON via FFI.
API Reference
See the full API documentation on the Macroforge website.
License
MIT
