Relocate the ~6k-file docs tree from the repo root into plugins/document-navigator/docs/ so the plugin is self-contained and portable. docs/superpowers/ (specs and plans) stays at the repo root. Moved via cp+rm rather than git mv because directory rename() fails with EPERM on this WSL /mnt DrvFs mount; git rename-detection pairs the identical-content files at commit time. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.7 KiB
3.7 KiB
@suaveplan/compress-image - Runtime-agnostic image compression utilities: resize, quality reduction, format conversion, and metadata stripping via pluggable adapters
Runtime-agnostic image compression utilities with pluggable adapters for Node.js (Sharp) and testing (MemoryAdapter). Supports resize, quality reduction, format conversion (JPEG, PNG, WebP, AVIF), and metadata stripping. The compressor core is pure TypeScript with zero runtime dependencies; only the Sharp adapter requires the native sharp library.
Documentation tree
- memory — (no submodules)
- memory — (no submodules)
- sharp — (no submodules)
- sharp — (no submodules)
- compressor — (no submodules)
- compressor — (no submodules)
- errors — (no submodules)
- compress-image-error — (no submodules)
- schemas — (no submodules)
- compress-options.schema — (no submodules)
- utils — (no submodules)
- image-utils — (no submodules)
Installation
bun add @suaveplan/compress-image
Quick Start
import { createCompressor } from "@suaveplan/compress-image/compressor";
import { SharpAdapter } from "@suaveplan/compress-image/adapters/sharp";
import sharp from "sharp";
const compressor = createCompressor(new SharpAdapter(sharp));
const result = await compressor.compress(imageBuffer, {
format: "webp",
quality: 75,
width: 1280,
height: 720,
resizeMode: "cover",
stripMetadata: true,
});
console.log(result.compressionRatio, result.compressedSize);
Modules
src/core/compressor/compressor.md—ImageCompressorcore andcreateCompressorsrc/adapters/memory/memory.md—MemoryAdapterfor testing without native depssrc/adapters/sharp/sharp.md—SharpAdapterfor Node.js production compressionsrc/errors/compress-image-error.md—CompressImageErrorand error codessrc/schemas/compress-options.schema.md— Zod schemas for compression optionssrc/types/compress-image.types.md— TypeScript interfaces for results and adapterssrc/utils/image-utils.md— Pure TypeScript image utilities
Subpath Exports
.— All public types, errors, utilities, adapters, and the compressor./compressor—ImageCompressor,createCompressor./adapters/memory—MemoryAdapter./adapters/sharp—SharpAdapter,SharpLike,SharpInstance./errors—CompressImageError,COMPRESS_IMAGE_CODES