@jrmc/adonis-attachment
Version:
Turn any field on your Lucid model to an attachment data type
141 lines • 3.59 kB
TypeScript
/**
* @jrmc/adonis-attachment
*
* @license MIT
* @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
*/
import type { RecordWithAttachment } from './service.js';
import type { BinPaths } from './config.js';
import type { Input } from './input.js';
import type { LucidOptions } from './attachment.js';
export type Converter = {
options?: ConverterOptions;
binPaths?: BinPaths;
handle?: (attributes: ConverterAttributes) => Promise<Input | undefined>;
};
export type ConverterInitializeAttributes = {
record: RecordWithAttachment;
attributeName: string;
options: LucidOptions;
filters?: {
variants?: string[];
};
};
export type ConverterAttributes = {
input: Input;
options: ConverterOptions;
};
export type BlurhashOptions = {
enabled: boolean;
componentX: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
componentY: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
};
type jpeg = {
format: 'jpeg';
options: {
quality?: number;
progressive?: boolean;
chromaSubsampling?: string;
optimiseCoding?: boolean;
optimizeCoding?: boolean;
mozjpeg?: boolean;
trellisQuantisation?: boolean;
overshootDeringing?: boolean;
optimiseScans?: boolean;
optimizeScans?: boolean;
quantisationTable?: number;
quantizationTable?: number;
force?: boolean;
};
};
type png = {
format: 'png';
options: {
quality?: number;
progressive?: boolean;
compressionLevel?: number;
adaptiveFiltering?: boolean;
palette?: boolean;
effort?: number;
colours?: number;
colors?: number;
dither?: number;
force?: boolean;
};
};
type gif = {
format: 'gif';
options: {
reuse?: boolean;
progressive?: boolean;
colours?: number;
colors?: number;
effort?: number;
dither?: number;
interFrameMaxError?: number;
interPaletteMaxError?: number;
loop?: number;
delay?: number | number[];
force?: boolean;
};
};
type webp = {
format: 'webp';
options: {
quality?: number;
alphaQuality?: number;
lossless?: boolean;
nearLossless?: boolean;
smartSubsample?: boolean;
preset?: string;
effort?: number;
loop?: number;
delay?: number | number[];
minSize?: boolean;
mixed?: boolean;
force?: boolean;
};
};
type avif = {
format: 'avif';
options: {
quality?: number;
lossless?: boolean;
effort?: number;
chromaSubsampling?: string;
bitdepth?: number;
};
};
type heif = {
format: 'heif';
options: {
compression?: string;
quality?: number;
lossless?: boolean;
effort?: number;
chromaSubsampling?: string;
bitdepth?: number;
};
};
export type ConverterOptions = {
resize?: number | {
width?: number;
height?: number;
fit?: string;
position?: string;
background?: string | {
r: number;
g: number;
b: number;
alpha: number;
};
kernel?: string;
withoutEnlargement?: boolean;
withoutReduction?: boolean;
fastShrinkOnLoad?: boolean;
};
format?: 'jpeg' | 'jpg' | 'png' | 'gif' | 'webp' | 'avif' | 'heif' | 'tiff' | 'raw' | jpeg | png | gif | webp | avif | heif;
blurhash?: boolean | BlurhashOptions;
};
export {};
//# sourceMappingURL=converter.d.ts.map