@paroicms/server-image-cache-engine
Version:
The image variant engine that we use at Paroi.
64 lines (63 loc) • 1.72 kB
TypeScript
import type { ResizeRule, SizeName } from "@paroicms/public-anywhere-lib";
export interface ImageVariantStorage {
type: "sqlite";
file: string;
}
export type GetOriginalImage = (mediaId: string) => Promise<Buffer>;
export interface RequestedImageVariantWithSize extends RequestedImageVariant, ImageVariantSize {
}
export interface RequestedImageVariant {
rawSizeName: SizeName;
mediaType: string;
}
export interface NewVariantInput {
rawResizeR: ResizeRule;
autoCrop?: boolean;
mediaType?: string;
sourceImage: SourceImageRef;
}
export interface SourceImageRef {
mediaId: string;
rawHeight: number;
rawWidth: number;
mediaType: string;
slug: string | undefined;
avgRawWidth?: number;
avgRawHeight?: number;
}
export interface ImageVariantSize {
rawWidth: number;
rawHeight: number;
rawSizeName: SizeName;
}
export interface ImageVariant extends ImageVariantSize {
mediaId: string;
mediaType: string;
resourceVersion: string;
slug?: string;
}
export interface ImageVariantWithBinary extends ImageVariant {
weightB: number;
binaryFile: Buffer;
/**
* Timestamp as ISO string.
*/
lastModified: string;
}
export interface ImageCacheOwnerTransaction {
makeImageAvailable(inputs: NewVariantInput[], options?: {
optimizeForBatch?: {
getMoreInputsForBatch: (filter: (input: NewVariantInput) => boolean) => NewVariantInput[];
};
}): Promise<ImageVariant[]>;
flush(): Promise<void>;
close(): Promise<void>;
}
export interface RawSize {
rawWidth: number;
rawHeight: number;
}
export interface UsedRawSize {
rawResizeR: ResizeRule;
rawSizeName: SizeName;
}