Files
oh-my-pi/packages/natives
can1357 c8f106c58c feat(text): refactored text processing with UTF-16 optimization and ANSI state bitflags
- Added `visibleWidth()` function to measure visible text width while excluding ANSI codes.
- Optimized text processing from UTF-8 to UTF-16 implementation with direct JsString handling for improved performance.
- Refactored ANSI state tracking to use bitflags-based SgrState struct instead of individual boolean fields for more efficient storage.
- Introduced ColorCode enum to represent color codes (Basic, Indexed, Rgb) for better type safety.
- Added comprehensive test coverage for UTF-16 text processing, ANSI detection, and width calculations.
- Updated napi feature from 'napi8' to 'napi10' and added unicode-segmentation dependency.
2026-02-01 09:34:54 +01:00
..
2026-02-01 08:20:08 +01:00
2026-02-01 09:06:05 +01:00

@oh-my-pi/pi-natives

Native Rust functionality via N-API.

What's Inside

  • Grep: Regex-based search powered by ripgrep's engine with native file walking and matching
  • Find: Glob-based file/directory discovery with gitignore support (pure TypeScript via globPaths)
  • Image: Image processing via photon-rs (resize, format conversion) exposed through N-API

Usage

import { grep, find, PhotonImage, resize, SamplingFilter } from "@oh-my-pi/pi-natives";

// Grep for a pattern
const results = await grep({
	pattern: "TODO",
	path: "/path/to/project",
	glob: "*.ts",
	context: 2,
});

// Find files
const files = await find({
	pattern: "*.rs",
	path: "/path/to/project",
	fileType: "file",
});

// Image processing
using image = await PhotonImage.new_from_byteslice(bytes);
using resized = await resize(image, 800, 600, SamplingFilter.Lanczos3);
const pngBytes = await resized.get_bytes();

Building

# Build native addon from workspace root (requires Rust)
bun run build:native

# Type check
bun run check

Architecture

crates/pi-natives/       # Rust source (workspace member)
  src/lib.rs             # N-API exports
  src/image.rs           # Image processing (photon-rs)
  Cargo.toml             # Rust dependencies
native/                  # Native addon binaries
  pi_natives.<platform>-<arch>.node
  pi_natives.node
src/                     # TypeScript wrappers
  native.ts              # Native addon loader
  index.ts               # Public API