UNPKG

@paroicms/server-image-cache-engine

Version:

The image variant engine that we use at Paroi.

58 lines (57 loc) 2.31 kB
import type { AppLogger } from "@paroicms/internal-server-lib"; import type { ResizeRule, ScImageCompressionQualityPolicyStep } from "@paroicms/public-anywhere-lib"; import type { GetOriginalImage, ImageCacheOwnerTransaction, ImageVariant, ImageVariantStorage, ImageVariantWithBinary, NewVariantInput } from "./engine-types.js"; export interface ImageCacheEngine { getImageVariantWithBinary(options: { mediaId: string; mediaType: string; rawWidth: number; rawHeight: number; }): Promise<ImageVariantWithBinary | undefined>; getImageVariantWithBinaryByOwner(options: { mediaId: string; mediaType: string; ownerHandle: string; rawResizeR: ResizeRule; }): Promise<ImageVariantWithBinary | undefined>; makeImageAvailable(input: NewVariantAndOwnerInput): Promise<ImageVariant>; createOwnerTransaction(ownerHandle: string): ImageCacheOwnerTransaction; invalidate(options: { mediaId: string; } | { mediaIds: string[]; } | { ownerHandles: string[]; }): Promise<void>; /** * Delete the images that have no ownerHandle and that have not been used recently. */ cleanUnusedValues(): Promise<void>; clearCache(): Promise<void>; getUsedRawSizesByMedia(mediaId: string): Promise<import("./engine-types.js").UsedRawSize[]>; close(): Promise<void>; } export interface NewVariantAndOwnerInput extends NewVariantInput { ownerHandle: string; isHandleReusable: boolean; /** * If `true`, the `ownerHandle` is used for a single variant with the same `mediaType` and * `mediaId`. Also, `getImageVariantWithBinaryByOwner` can be safely used to fetch the image * variant even when the variant is still being processed. */ canBeRetrievedByOwner: boolean; } export interface CreateImageCacheEngineOptions { storage: ImageVariantStorage; getOriginalImage: GetOriginalImage; logger?: AppLogger; qualityPolicy: ScImageCompressionQualityPolicyStep[]; /** * For example: `"14d"`. Leave `undefined` to keep cache data undefinitely. */ timeToIdle?: string; } export declare function createImageCacheEngine(options: CreateImageCacheEngineOptions): Promise<{ imageCache: ImageCacheEngine; isCleared: boolean; }>;