mirror of
https://github.com/visioncortex/vtracer.git
synced 2026-09-25 05:25:57 -07:00
Add nodejs: WebAssembly Node package with no native dependency
New nodejs/ package: a wasm-bindgen crate (vtracer-wasm) built with wasm-pack that wraps the vtracer framework, plus a thin JS layer for file I/O. Image decoding (png/jpeg/gif/bmp via the image crate) runs in wasm too, so the package has zero native dependencies — no sharp, no node-gyp. No separate general-purpose wasm crate: the Node package directly owns and wraps the wasm. Excluded from the cargo workspace (wasm-bindgen cdylib), built with wasm-pack. JS API (camelCase options): convertBuffer, convertPixels, convertFile, convertFileSync — each taking an Options object (preset, colorMode, hierarchical/cutout mosaic, mode, palette, maxColors, optimize, ...). Ships index.d.ts types and a node smoke test. README updated. Verified: builds to wasm32-unknown-unknown; `node test.js` passes; output matches the CLI/Python bindings (253 paths on the tank sample).
This commit is contained in:
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
/** Conversion options. Any field may be omitted; omitted fields use the framework default. */
|
||||
export interface Options {
|
||||
/** Applied before other fields: "bw" | "poster" | "photo". */
|
||||
preset?: 'bw' | 'poster' | 'photo';
|
||||
colorMode?: 'color' | 'bw';
|
||||
hierarchical?: 'stacked' | 'cutout';
|
||||
mode?: 'pixel' | 'polygon' | 'spline';
|
||||
filterSpeckle?: number;
|
||||
colorPrecision?: number;
|
||||
layerDifference?: number;
|
||||
cornerThreshold?: number;
|
||||
lengthThreshold?: number;
|
||||
maxIterations?: number;
|
||||
spliceThreshold?: number;
|
||||
pathPrecision?: number;
|
||||
/** Fixed palette: `#rrggbb` strings. */
|
||||
palette?: string[];
|
||||
/** Auto-quantize target color count. */
|
||||
maxColors?: number;
|
||||
/** 0 = off, 1 = quantize+simplify, 2 = + shorthands/grouping. */
|
||||
optimize?: number;
|
||||
}
|
||||
|
||||
/** Vectorize an encoded image (PNG/JPEG/GIF/BMP) buffer to an SVG string. */
|
||||
export function convertBuffer(buffer: Uint8Array, options?: Options): string;
|
||||
|
||||
/** Vectorize a raw RGBA8 buffer (`width * height * 4` bytes) to an SVG string. */
|
||||
export function convertPixels(rgba: Uint8Array, width: number, height: number, options?: Options): string;
|
||||
|
||||
/** Read an image file, vectorize it, and write the SVG to disk. */
|
||||
export function convertFile(inputPath: string, outputPath: string, options?: Options): Promise<void>;
|
||||
|
||||
/** Synchronous {@link convertFile}. */
|
||||
export function convertFileSync(inputPath: string, outputPath: string, options?: Options): void;
|
||||
Reference in New Issue
Block a user