UNPKG

imagetools-core

Version:
86 lines (85 loc) 2.51 kB
import type { Metadata, Sharp } from 'sharp'; import { kernelValues } from './transforms/kernel.js'; import { positionValues } from './transforms/position.js'; export interface ProcessedImageMetadata extends ImageMetadata { src: string; image: Sharp; } export interface ImageMetadata extends Metadata { allowUpscale?: boolean; aspect?: number | undefined; backgroundDirective?: string; blur?: number | boolean | undefined; brightness?: number | '' | undefined; fit?: string; flip?: true; flop?: true; flatten?: true; hue?: number | '' | undefined; invert?: true; grayscale?: true; kernel?: (typeof kernelValues)[number]; lossless?: true; median?: number; normalize?: true; pixelDensityDescriptor?: string | undefined; position?: (typeof positionValues)[number]; progressive?: true; quality?: number; saturation?: number | '' | undefined; tint?: string; rotate?: number; [key: string]: unknown; } export type ImageConfig = Record<string, string | string[]>; export interface Logger { info: (msg: string) => void; warn: (msg: string) => void; error: (msg: string) => void; } export interface TransformFactoryContext { useParam: (parameter: string) => void; manualSearchParams: URLSearchParams; logger: Logger; } export type TransformFactory<A = Record<string, unknown>> = (metadata: Partial<ImageConfig & A>, ctx: TransformFactoryContext) => ImageTransformation | undefined; export type TransformOption<A = Record<string, unknown>, T = unknown> = (metadata: Partial<ImageConfig & A>, image: Sharp) => T | undefined; export type ImageTransformation = (image: Sharp) => Sharp | Promise<Sharp>; export interface TransformResult { image: Sharp; metadata: ImageMetadata; } /** * The JS object returned by the image import. */ export type OutputFormat = (args?: string[]) => (metadata: ProcessedImageMetadata[]) => unknown; /** * The img output format. */ export interface Img { src: string; /** * The intrinsic width */ w: number; /** * The intrinsic height. May not be the rendered height. * Helps prevent reflow. See https://html.com/attributes/img-height/ */ h: number; srcset?: string; } /** * The picture output format. */ export interface Picture { /** * Key is format. Value is srcset. */ sources: Record<string, string>; img: { src: string; w: number; h: number; }; }