/** * Image Processor Main Class * Provides image processing capabilities using WorkerAdapter */ import { EventEmitter } from "eventemitter3"; import { CacheStorageType, ImageProcessingOptions, ProcessingResult, ImageFormat, ImageSource, CacheOptions } from "./types.js"; /** * Discrete Scale Constants - Limit to most commonly used sizes for cache optimization */ export declare const DISCRETE_SCALES: { ORIGINAL: number; MEDIUM: number; SMALL: number; TINY: number; }; /** * Image Processor Options */ export interface ImageProcessorOptions { /** Worker script URL (default: built-in URL) */ workerUrl?: string; /** Task timeout (ms) */ timeout?: number; /** Ready callback */ onReady?: () => void; /** Error callback */ onError?: (error: Error) => void; /** Whether to use cache (default: true) */ useCache?: boolean; /** Cache storage type (default: MEMORY) */ cacheStorageType?: CacheStorageType; /** Cache options */ cacheOptions?: CacheOptions; /** Whether to use discrete scales */ useDiscreteScales?: boolean; /** Custom discrete scale values */ discreteScales?: Record; /** Maximum retry count for timeouts */ maxRetries?: number; /** Base delay for retry backoff (ms) */ retryDelayBase?: number; /** Max jitter for retry delay (ms) */ maxJitter?: number; /** Maximum backoff delay (ms) */ maxBackoffDelay?: number; } /** * Image Processor Class * Provides image processing functionality using worker threads */ export declare class ImageProcessor extends EventEmitter { /** Worker URL */ private workerUrl; /** Worker */ private worker; /** Ready state */ private isReady; /** Task ID counter */ private taskIdCounter; /** Task timeout */ private timeout; /** Maximum retry count */ private maxRetries; /** Base delay for retry */ private retryDelayBase; /** Max jitter for retry delay */ private maxJitter; /** Maximum backoff delay */ private maxBackoffDelay; /** Timeout manager */ private timeoutManager; /** Running tasks and their timeouts */ private runningTasks; /** Image cache */ private cache; /** Whether to use cache */ private useCache; /** Cache storage type */ private cacheStorageType; /** Whether to use discrete scales */ private useDiscreteScales; /** Discrete scale values */ private discreteScales; /** * Image processor constructor * @param options Initialization options */ constructor(options?: ImageProcessorOptions); /** * 타임아웃 값 가져오기 * @returns 현재 설정된 타임아웃 값(ms) */ getTimeout(): number; /** * 타임아웃 값 설정하기 * @param value 새 타임아웃 값(ms) */ setTimeout(value: number): void; /** * 타임아웃 매니저 통계 가져오기 * @returns 타임아웃 관련 통계 */ getTimeoutStats(): any; /** * Generate default worker URL * @returns Default worker URL */ private getDefaultWorkerUrl; /** * Handles messages received from the worker * Processes different message types and emits corresponding events * * @param event - Message event from worker containing data payload */ private handleWorkerMessage; /** * 워커 오류 핸들러 * @param error 오류 객체 */ private handleWorkerError; /** * 새 작업 ID 생성 * @returns 고유 작업 ID */ private generateTaskId; /** * 작업 타임아웃 설정 (재시도 기능 포함) * @param taskId 작업 ID */ private setTaskTimeout; /** * 작업 타임아웃 갱신 * @param taskId 작업 ID */ private resetTaskTimeout; /** * 작업 타임아웃 제거 * @param taskId 작업 ID */ private clearTaskTimeout; /** * 이미지 크기 및 형식에 따라 타임아웃 동적 조정 * @param imageSize 이미지 크기(바이트) * @param format 이미지 형식 * @returns 조정된 타임아웃 값(ms) */ adjustTimeoutBasedOnImageSize(imageSize: number, format?: ImageFormat): number; /** * 모든 진행 중인 작업의 타임아웃 정리 */ private clearAllTimeouts; /** * 이미지 데이터에서 해시 식별자 생성 * @param imageData 이미지 데이터 * @param sourceUrl 이미지 소스 URL (선택사항) - 캐시 키 생성에 사용 * @returns 해시 문자열 */ private generateImageId; /** * 이미지 스케일링 (비동기) * @param imageData 원본 이미지 데이터 (Blob, ArrayBuffer, ImageData) * @param options 처리 옵션 * @param sourceUrl 이미지 소스 URL (선택사항) - 캐시 키 생성에 사용 * @returns Promise */ scaleImage(imageData: ImageSource, options?: ImageProcessingOptions, sourceUrl?: string): Promise; /** * Blob에서 이미지 로드 (크기 정보 추출용) * @param blob 이미지 Blob * @returns Promise<{width: number, height: number}> */ private loadImageFromBlob; /** * 캐시 통계 정보 반환 * @returns 캐시 통계 또는, 캐시 비활성화 시 null */ getCacheStats(): { size: number; memoryHits: number; memoryMisses: number; dbHits: number; dbMisses: number; evictions: number; totalHits: number; totalMisses: number; } | null; /** * 캐시 스토리지 타입 변경 * @param storageType 새 스토리지 타입 */ setCacheStorageType(storageType: CacheStorageType): Promise; /** * 캐시 활성화 여부 설정 * @param enabled 캐시 활성화 여부 * @param options 캐시 옵션 (기존 옵션 대체) */ setCacheEnabled(enabled: boolean, options?: CacheOptions): Promise; /** * 캐시 초기화 */ clearCache(): Promise; /** * 리소스 정리 */ terminate(): void; /** * 작업 재시도 처리 핸들러 * @param data 재시도 이벤트 데이터 * @private */ private _handleTaskRetry; } /** * Discrete Scale Calculation Function * Returns the most suitable discrete scale based on given size and original size * * @param originalWidth Original image width * @param originalHeight Original image height * @param targetWidth Target width * @param targetHeight Target height * @param discreteScales Discrete scale values * @param devicePixelRatio Device pixel ratio * @returns Calculated discrete scale value */ export declare function calculateDiscreteScale(originalWidth: number, originalHeight: number, targetWidth?: number, targetHeight?: number, discreteScales?: Record, devicePixelRatio?: number): number;