Files
oxc-guard 0389c4010e release(crates): oxc v0.146.0 (#25912)
### 🚀 Features

- 83cb516 minifier: Improve negation of expressions in boolean context (#25755) (Armano)

### 🐛 Bug Fixes

- 134fb22 isolated-declarations: Preserve unresolved parameter types (#25909) (Dunqing)
- 526c2b3 codegen: Remove deprecated test APIs (#25889) (camc314)
- 344a9b2 codegen: Align enum template sourcemaps (#25872) (camc314)

### ⚡ Performance

- 5ef0c93 minifier: Unwrap all unary exprs without creating dummy expressions (#25891) (Armano)
- 8783524 packages/codegen: Remove loop from `growMappingBuffer` (#25886) (overlookmotel)
- b6b14c0 packages/codegen: Remove redundant branch (#25885) (overlookmotel)
- be6adf0 packages/sourcemap: Make `location` passed to `recordSourceMapping` always a number (#25884) (overlookmotel)
- f720f15 packages/codegen: Take named-mapping only code off hot path in `recordSourceMapping` (#25883) (overlookmotel)
- a734af5 packages/codegen: Remove redundant setting of `last` in `printImportAttributes` and `printIf` (#25882) (overlookmotel)
- c6e44c6 packages/codegen: Combine 2 writes in `printJSXElement` (#25881) (overlookmotel)
- 8801662 packages/codegen: Remove redundant mapping from `printParams` (#25880) (overlookmotel)

### 📚 Documentation

- 5ad330e packages/codegen: Reformat comments (#25876) (overlookmotel)
2026-08-19 08:29:51 +00:00
..
…

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.