iiif-processor
Version:
IIIF 2.1 & 3.0 Image API modules for NodeJS
99 lines (96 loc) • 2.34 kB
TypeScript
type BoundingBox = {
left: number;
top: number;
width: number;
height: number;
};
type Dimensions = {
width: number;
height: number;
};
type Format = 'jpg' | 'jpeg' | 'tif' | 'tiff' | 'png' | 'webp';
type IIIFSpec = {
id: string;
info?: boolean;
region?: string;
size?: string;
rotation?: string;
quality?: string;
format?: string;
density?: number;
};
type ImageGeometry = {
width?: number;
height?: number;
pages?: number;
sizes?: Dimensions[];
tileWidth?: number;
tileHeight?: number;
};
type MaxDimensions = {
width?: number;
height?: number;
area?: number;
};
type Quality = 'color' | 'gray' | 'bitonal' | 'default';
type ContentResult = {
type: 'content';
canonicalLink?: string;
profileLink?: string;
contentType: string;
body: Buffer | string;
};
type RedirectResult = {
type: 'redirect';
location: string;
};
type ErrorResult = {
type: 'error';
message: string;
statusCode: number;
};
type ProcessorResult = ContentResult | RedirectResult | ErrorResult;
interface Calculated {
region: BoundingBox;
size: Dimensions & {
fit?: 'fill' | 'inside';
};
rotation: {
flop: boolean;
degree: number;
};
quality: Quality;
format: {
type: Format;
density?: number;
};
fullSize: Dimensions;
}
interface CalculatorLike {
region(s: string): this;
size(s: string): this;
rotation(s: string): this;
quality(q: string): this;
format(f: string, density?: number): this;
info(): Calculated;
canonicalPath(): string;
}
type CalculatorOptions = {
max?: MaxDimensions;
};
type CalculatorCtor = {
new (dims: Dimensions, opts?: CalculatorOptions): CalculatorLike;
parsePath(path: string): IIIFSpec | null;
};
interface InfoDocInput {
id: string;
geometry: ImageGeometry;
max?: MaxDimensions;
}
type InfoDoc = Record<string, unknown>;
interface VersionModule {
profileLink: string;
infoDoc(input: InfoDocInput): InfoDoc;
Calculator: CalculatorCtor;
}
export type { BoundingBox as B, CalculatorOptions as C, Dimensions as D, ErrorResult as E, ImageGeometry as I, MaxDimensions as M, ProcessorResult as P, RedirectResult as R, VersionModule as V, Calculated as a, ContentResult as b };