8000 oxc/crates/oxc_napi at main · colinhacks/oxc · GitHub
[go: up one dir, main page]

Skip to content

Latest commit

 

History

History
 
 

oxc_napi

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

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.

0