Oxc NAPI
Node.js Native API bindings for oxc tools.
Overview
This crate provides Node.js bindings for oxc tools, enabling JavaScript/TypeScript applications to use oxc's high-performance parsing, linting, and transformation capabilities through native Node.js modules.
Key Features
- Native performance: Direct access to oxc's Rust implementation
- UTF-16 compatibility: Automatic span conversion for JavaScript strings
- Error handling: Proper JavaScript error propagation
- Comment preservation: Maintains comments during processing
- Type safety: TypeScript definitions for all APIs
Architecture
UTF-8 to UTF-16 Conversion
JavaScript uses UTF-16 string encoding, while Rust uses UTF-8. This crate handles the conversion:
- Span conversion: Updates all source positions to UTF-16 offsets
- Comment handling: Preserves comment positions during conversion
- Error mapping: Ensures error positions are correct in JavaScript
Node.js Integration
The bindings are designed for:
- npm packages: Used by
@oxc-project/
npm packages
- Build tools: Integration with Webpack, Vite, and other bundlers
- Editor support: Language server and editor extension features
- CLI tools: Command-line interfaces for Node.js environments
Error Handling
Provides JavaScript-friendly error handling:
- OxcError: Rust errors converted to JavaScript exceptions
- Diagnostic integration: Rich error messages with source context
- Stack traces: Proper error propagation to JavaScript
Performance Considerations
- Zero-copy: Minimizes data copying between Rust and JavaScript
- Efficient conversion: Optimized UTF-8 to UTF-16 conversion
- Memory management: Proper cleanup of Rust resources
- Async support: Non-blocking operations where appropriate
This crate enables the broader JavaScript ecosystem to benefit from oxc's performance while maintaining familiar JavaScript APIs.