mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
0389c4010e
### 🚀 Features -83cb516minifier: Improve negation of expressions in boolean context (#25755) (Armano) ### 🐛 Bug Fixes -134fb22isolated-declarations: Preserve unresolved parameter types (#25909) (Dunqing) -526c2b3codegen: Remove deprecated test APIs (#25889) (camc314) -344a9b2codegen: Align enum template sourcemaps (#25872) (camc314) ### ⚡ Performance -5ef0c93minifier: Unwrap all unary exprs without creating dummy expressions (#25891) (Armano) -8783524packages/codegen: Remove loop from `growMappingBuffer` (#25886) (overlookmotel) -b6b14c0packages/codegen: Remove redundant branch (#25885) (overlookmotel) -be6adf0packages/sourcemap: Make `location` passed to `recordSourceMapping` always a number (#25884) (overlookmotel) -f720f15packages/codegen: Take named-mapping only code off hot path in `recordSourceMapping` (#25883) (overlookmotel) -a734af5packages/codegen: Remove redundant setting of `last` in `printImportAttributes` and `printIf` (#25882) (overlookmotel) -c6e44c6packages/codegen: Combine 2 writes in `printJSXElement` (#25881) (overlookmotel) -8801662packages/codegen: Remove redundant mapping from `printParams` (#25880) (overlookmotel) ### 📚 Documentation -5ad330epackages/codegen: Reformat comments (#25876) (overlookmotel)
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.