UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

277 lines • 8.44 kB
import type { ResizeOptions, Sharp } from 'sharp'; import type { TypeWithID } from '../collections/config/types.js'; import type { PayloadRequest } from '../types/index.js'; import type { WithMetadata } from './optionallyAppendMetadata.js'; export type FileSize = { filename: null | string; filesize: null | number; height: null | number; mimeType: null | string; width: null | number; }; /** * FileSizeImproved is a more precise type, and will replace FileSize in Payload v4. * This type is for internal use only as it will be deprecated in the future. * @internal */ export type FileSizeImproved = { url: null | string; } & FileSize; export type FileSizes = { [size: string]: FileSize; }; export type FileData = { filename: string; filesize: number; focalX?: number; focalY?: number; height: number; mimeType: string; sizes: FileSizes; tempFilePath?: string; url?: string; width: number; }; export type ProbedImageSize = { height: number; width: number; }; /** * Params sent to the sharp `toFormat()` function * @link https://sharp.pixelplumbing.com/api-output#toformat */ export type ImageUploadFormatOptions = { format: Parameters<Sharp['toFormat']>[0]; options?: Parameters<Sharp['toFormat']>[1]; }; /** * Params sent to the sharp trim() function * @link https://sharp.pixelplumbing.com/api-resize#trim */ export type ImageUploadTrimOptions = Parameters<Sharp['trim']>[0]; export type GenerateImageName = (args: { extension: string; height: number; originalName: string; sizeName: string; width: number; }) => string; export type ImageSize = { /** * @deprecated prefer position */ crop?: string; formatOptions?: ImageUploadFormatOptions; /** * Generate a custom name for the file of this image size. */ generateImageName?: GenerateImageName; name: string; trimOptions?: ImageUploadTrimOptions; /** * When an uploaded image is smaller than the defined image size, we have 3 options: * * `undefined | false | true` * * 1. `undefined` [default]: uploading images with smaller width AND height than the image size will return null * 2. `false`: always enlarge images to the image size * 3. `true`: if the image is smaller than the image size, return the original image */ withoutEnlargement?: ResizeOptions['withoutEnlargement']; } & Omit<ResizeOptions, 'withoutEnlargement'>; export type GetAdminThumbnail = (args: { doc: Record<string, unknown>; }) => false | null | string; export type AllowList = Array<{ hostname: string; pathname?: string; port?: string; protocol?: 'http' | 'https'; search?: string; }>; export type UploadConfig = { /** * The adapter name to use for uploads. Used for storage adapter telemetry. * @default undefined */ adapter?: string; /** * Represents an admin thumbnail, which can be either a React component or a string. * - If a string, it should be one of the image size names. * - A function that generates a fully qualified URL for the thumbnail, receives the doc as the only argument. **/ adminThumbnail?: GetAdminThumbnail | string; /** * Enables bulk upload of files from the list view. * @default true */ bulkUpload?: boolean; /** * Appends a cache tag to the image URL when fetching the thumbnail in the admin panel. It may be desirable to disable this when hosting via CDNs with strict parameters. * * @default true */ cacheTags?: boolean; /** * Enables cropping of images. * @default true */ crop?: boolean; /** * Disable the ability to save files to disk. * @default false */ disableLocalStorage?: boolean; /** * Enable displaying preview of the uploaded file in Upload fields related to this Collection. * Can be locally overridden by `displayPreview` option in Upload field. * @default false */ displayPreview?: boolean; /** * Ability to filter/modify Request Headers when fetching a file. * * Useful for adding custom headers to fetch from external providers. * @default undefined */ externalFileHeaderFilter?: (headers: Record<string, string>) => Record<string, string>; /** * Field slugs to use for a compount index instead of the default filename index. */ filenameCompoundIndex?: string[]; /** * Require files to be uploaded when creating a document. * @default true */ filesRequiredOnCreate?: boolean; /** * Enables focal point positioning for image manipulation. * @default false */ focalPoint?: boolean; /** * Format options for the uploaded file. Formatting image sizes needs to be done within each formatOptions individually. */ formatOptions?: ImageUploadFormatOptions; /** * Custom handlers to run when a file is fetched. * * - If a handler returns a Response, the response will be sent to the client and no further handlers will be run. * - If a handler returns null, the next handler will be run. * - If no handlers return a response the file will be returned by default. * * @default undefined */ handlers?: ((req: PayloadRequest, args: { doc: TypeWithID; params: { clientUploadContext?: unknown; collection: string; filename: string; }; }) => Promise<Response> | Promise<void> | Response | void)[]; /** * Set to `true` to prevent the admin UI from showing file inputs during document creation, useful for programmatic file generation. */ hideFileInputOnCreate?: boolean; /** * Set to `true` to prevent the admin UI having a way to remove an existing file while editing. */ hideRemoveFile?: boolean; imageSizes?: ImageSize[]; /** * Restrict mimeTypes in the file picker. Array of valid mime types or mimetype wildcards * @example ['image/*', 'application/pdf'] * @default undefined */ mimeTypes?: string[]; /** * Ability to modify the response headers fetching a file. * @default undefined */ modifyResponseHeaders?: ({ headers }: { headers: Headers; }) => Headers; /** * Controls the behavior of pasting/uploading files from URLs. * If set to `false`, fetching from remote URLs is disabled. * If an allowList is provided, server-side fetching will be enabled for specified URLs. * @default true (client-side fetching enabled) */ pasteURL?: { allowList: AllowList; } | false; /** * Sharp resize options for the original image. * @link https://sharp.pixelplumbing.com/api-resize#resize * @default undefined */ resizeOptions?: ResizeOptions; /** * The directory to serve static files from. Defaults to collection slug. * @default undefined */ staticDir?: string; trimOptions?: ImageUploadTrimOptions; /** * Optionally append metadata to the image during processing. * * Can be a boolean or a function. * * If true, metadata will be appended to the image. * If false, no metadata will be appended. * If a function, it will receive an object containing the metadata and should return a boolean indicating whether to append the metadata. * @default false */ withMetadata?: WithMetadata; }; export type SanitizedUploadConfig = { staticDir: UploadConfig['staticDir']; } & UploadConfig; export type File = { /** * The buffer of the file. */ data: Buffer; /** * The mimetype of the file. */ mimetype: string; /** * The name of the file. */ name: string; /** * The size of the file in bytes. */ size: number; }; export type FileToSave = { /** * The buffer of the file. */ buffer: Buffer; /** * The path to save the file. */ path: string; }; type Crop = { height: number; unit: '%' | 'px'; width: number; x: number; y: number; }; type FocalPoint = { x: number; y: number; }; export type UploadEdits = { crop?: Crop; focalPoint?: FocalPoint; heightInPixels?: number; widthInPixels?: number; }; export {}; //# sourceMappingURL=types.d.ts.map