@seshuk/payload-storage-bunny
Version:
Payload storage adapter for Bunny.net
55 lines (54 loc) • 1.62 kB
TypeScript
import type { CollectionOptions } from '@payloadcms/plugin-cloud-storage/types';
import type { Plugin, UploadCollectionSlug } from 'payload';
export type AdminThumbnailOptions = {
appendTimestamp?: boolean;
queryParams?: Record<string, string>;
};
export type BunnyAdapterOptions = {
adminThumbnail?: AdminThumbnailOptions | boolean;
purge?: {
apiKey: string;
async?: boolean;
enabled: boolean;
};
storage: {
apiKey: string;
hostname: string;
region?: 'br' | 'jh' | 'la' | 'ny' | 'se' | 'sg' | 'syd' | 'uk' | ({} & string);
zoneName: string;
};
stream?: {
apiKey: string;
hostname: string;
libraryId: string;
mp4Fallback?: {
enabled: boolean;
};
/**
* @deprecated Use mp4Fallback with enabled: true instead.
*
* Example: mp4Fallback: { enabled: true }
*/
mp4FallbackQuality?: '240p' | '360p' | '480p' | '720p';
thumbnailTime?: number;
};
};
export type BunnyPlugin = (bunnyStorageOptions: BunnyStorageOptions) => Plugin;
export type BunnyStorageOptions = {
collections: Partial<Record<UploadCollectionSlug, Omit<CollectionOptions, 'adapter'> | true>>;
enabled?: boolean;
options: BunnyAdapterOptions;
};
export interface BunnyVideoMeta {
availableMp4Resolutions?: string[];
highestMp4Resolution?: string;
}
export interface BunnyResolutionsResponse {
data: {
mp4Resolutions: Array<{
path: string;
resolution: string;
}>;
};
success: boolean;
}