@khoohaoyit/image-size
Version:
A stream based image size extractor in Node
46 lines • 2.08 kB
TypeScript
/// <reference types="node" />
import { formats } from "../formats";
import { StreamReader } from "./streamReader";
import { StreamParser } from "./streamParser";
import { TransformOptions } from "stream";
interface Event<TName extends string, TValues extends unknown[]> {
addListener(event: TName, listener: (...args: TValues) => void): this;
emit(event: TName, ...args: TValues): boolean;
on(event: TName, listener: (...args: TValues) => void): this;
once(event: TName, listener: (...args: TValues) => void): this;
prependListener(event: TName, listener: (...args: TValues) => void): this;
prependOnceListener(event: TName, listener: (...args: TValues) => void): this;
removeListener(event: TName, listener: (...args: TValues) => void): this;
}
export interface ExtractSize {
(stream: StreamParser): AsyncGenerator<{
width: number;
height: number;
}, void, void>;
}
type TExtracted<TFormat extends typeof formats = typeof formats> = {
[K in keyof TFormat]: [data: ReturnType<TFormat[K][1]> extends AsyncGenerator<infer TResult> ? TResult : any, format: TFormat[K][0]];
}[any];
export type ExtractedSize = TExtracted;
type SizeExtractorEvent = Event<'parseError', [error: unknown, format: ExtractedSize[1]]> & Event<'parseDone', [format: ExtractedSize[1]]> & Event<'parseAllDone', []> & Event<'size', ExtractedSize>;
export interface ISize {
width: number | undefined;
height: number | undefined;
orientation?: number;
type?: string;
}
export interface ISizeCalculationResult extends ISize {
images?: ISize[];
}
declare const SizeExtractor_base: (abstract new (...args: any) => SizeExtractorEvent) & typeof StreamReader;
export declare class SizeExtractor extends SizeExtractor_base {
imageSize?: ISizeCalculationResult;
sizes: ExtractedSize[];
constructor(options: {
passthrough: boolean;
whitelistFormats?: ExtractedSize[1][];
blacklistFormats?: ExtractedSize[1][];
}, transformOptions?: TransformOptions);
}
export {};
//# sourceMappingURL=sizeExtractor.d.ts.map