evelodb
Version:
A high-performance native B-tree database for Node.js. Made by Evelocore.
45 lines (44 loc) • 1.41 kB
TypeScript
/**
* imageProcess.ts
*
* Performance architecture:
*
* 1. LRU cache (hash + config key → processed Buffer)
* → cache hit = zero Sharp involvement, zero decode
*
* 2. Metadata fast path: read dimensions from a tiny
* `sharp(buf).metadata()` call only when pixel-budget
* resize is needed. For all other paths, metadata is skipped.
*
* 3. AVIF concurrency limiter (default: 2 parallel encodes)
* → prevents CPU saturation under burst traffic
*
* 4. AVIF effort = 2 (was implicit 4-5)
* → 2–4× faster AVIF encode, ~5% larger file — fair trade
*
* 5. mozjpeg disabled
* → standard libjpeg is 3–5× faster
*/
export interface ImageProcessConfig {
returnBase64?: boolean;
quality?: number;
pixels?: number;
blackAndWhite?: boolean;
mirror?: boolean;
upToDown?: boolean;
invert?: boolean;
brightness?: number;
contrast?: number;
maxWidth?: number | null;
maxHeight?: number | null;
}
export default function processImage(imageBuffer: Buffer, fileExtension: string, config?: ImageProcessConfig): Promise<string | Buffer>;
/** Wipe the entire processed image cache */
export declare function clearImageCache(): void;
/** Current cache stats for monitoring */
export declare function imageCacheStats(): {
entryCount: number;
usedBytes: number;
maxBytes: number;
utilizationPct: number;
};