UNPKG

@replyke/core

Version:

Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.

75 lines (74 loc) 2.13 kB
export interface ImageVariant { path: string; publicPath: string; width: number; height: number; size: number; format: string; } export interface Image { fileId: string; imageId: string; status: "completed" | "failed"; original: ImageVariant; variants: Record<string, ImageVariant>; metadata: { originalFormat: string; originalSize: number; exifStripped: boolean; processingTime: number; }; createdAt: string; } interface BaseImageOptions { quality?: number; format?: "webp" | "jpeg" | "png" | "original"; stripExif?: boolean; pathParts?: string[]; entityId?: string; commentId?: string; spaceId?: string; onProgress?: (progress: number) => void; } export interface ExactDimensionsMode extends BaseImageOptions { mode: "exact-dimensions"; dimensions: Record<string, { width: number; height: number; }>; fit?: "cover" | "contain" | "inside" | "outside"; } export interface AspectRatioWidthMode extends BaseImageOptions { mode: "aspect-ratio-width-based"; aspectRatio: { width: number; height: number; }; widths: Record<string, number>; fit?: "cover" | "contain" | "inside" | "outside"; } export interface AspectRatioHeightMode extends BaseImageOptions { mode: "aspect-ratio-height-based"; aspectRatio: { width: number; height: number; }; heights: Record<string, number>; fit?: "cover" | "contain" | "inside" | "outside"; } export interface OriginalAspectMode extends BaseImageOptions { mode: "original-aspect"; sizes: Record<string, number>; fit?: "inside" | "outside"; } export interface MultiAspectRatioMode extends BaseImageOptions { mode: "multi-aspect-ratio"; aspectRatios: Array<{ width: number; height: number; }>; sizes: Record<string, number>; fit?: "cover" | "contain" | "inside" | "outside"; } export type UploadImageOptions = ExactDimensionsMode | AspectRatioWidthMode | AspectRatioHeightMode | OriginalAspectMode | MultiAspectRatioMode; export {};