UNPKG

@restnfeel/agentc-starter-kit

Version:

한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템

337 lines 8.16 kB
export interface MediaFile { id: string; filename: string; originalName: string; mimeType: string; size: number; url: string; path: string; processed: boolean; processingStatus: ProcessingStatus; optimizedUrl?: string; thumbnailUrl?: string; webpUrl?: string; width?: number; height?: number; aspectRatio?: number; colorProfile?: string; checksum?: string; virusScanned: boolean; scanResult?: ScanResult; isPublic: boolean; accessLevel: AccessLevel; folderId?: string; folder?: MediaFolder; collections: MediaCollection[]; tags: MediaTag[]; alt?: string; caption?: string; title?: string; description?: string; metadata?: Record<string, unknown>; downloadCount: number; viewCount: number; lastAccessed?: Date; cdnUrl?: string; cdnProvider?: string; cacheStatus?: CacheStatus; userId?: string; siteId?: string; createdAt: Date; updatedAt: Date; } export interface MediaFolder { id: string; name: string; slug: string; description?: string; path: string; parentId?: string; parent?: MediaFolder; children: MediaFolder[]; isPublic: boolean; permissions?: Record<string, unknown>; siteId?: string; userId: string; uploads: MediaFile[]; createdAt: Date; updatedAt: Date; } export interface MediaCollection { id: string; name: string; slug: string; description?: string; color?: string; isPublic: boolean; isFeatured: boolean; siteId?: string; userId: string; uploads: MediaFile[]; createdAt: Date; updatedAt: Date; } export interface MediaTag { id: string; name: string; slug: string; color?: string; description?: string; siteId?: string; usageCount: number; uploads: MediaFile[]; createdAt: Date; updatedAt: Date; } export interface MediaProcessingJob { id: string; uploadId: string; upload: MediaFile; type: ProcessingJobType; status: JobStatus; priority: number; params?: Record<string, unknown>; result?: Record<string, unknown>; error?: string; startedAt?: Date; completedAt?: Date; attempts: number; maxAttempts: number; workerId?: string; createdAt: Date; updatedAt: Date; } export interface MediaUsageAnalytics { id: string; uploadId: string; upload: MediaFile; referrer?: string; userAgent?: string; ipAddress?: string; country?: string; action: UsageAction; siteId?: string; timestamp: Date; } export declare enum ProcessingStatus { PENDING = "pending", PROCESSING = "processing", COMPLETED = "completed", FAILED = "failed" } export declare enum ScanResult { CLEAN = "clean", INFECTED = "infected", ERROR = "error" } export declare enum AccessLevel { PUBLIC = "public", PRIVATE = "private", RESTRICTED = "restricted" } export declare enum CacheStatus { CACHED = "cached", PURGED = "purged", PENDING = "pending" } export declare enum ProcessingJobType { RESIZE = "resize", OPTIMIZE = "optimize", CONVERT = "convert", SCAN = "scan", THUMBNAIL = "thumbnail", WEBP_CONVERSION = "webp_conversion", WATERMARK = "watermark" } export declare enum JobStatus { PENDING = "pending", PROCESSING = "processing", COMPLETED = "completed", FAILED = "failed", CANCELLED = "cancelled" } export declare enum UsageAction { VIEW = "view", DOWNLOAD = "download", EMBED = "embed", THUMBNAIL = "thumbnail", PREVIEW = "preview" } export interface UploadRequest { file: File; folderId?: string; collections?: string[]; tags?: string[]; alt?: string; caption?: string; title?: string; description?: string; isPublic?: boolean; accessLevel?: AccessLevel; } export interface UploadResponse { success: boolean; data?: MediaFile; error?: string; jobId?: string; } export interface UploadProgress { uploadId: string; progress: number; status: "uploading" | "processing" | "completed" | "error"; message?: string; bytesUploaded: number; totalBytes: number; speed?: number; eta?: number; } export interface BatchUploadRequest { files: File[]; folderId?: string; collections?: string[]; tags?: string[]; defaultMetadata?: { alt?: string; caption?: string; title?: string; description?: string; }; isPublic?: boolean; accessLevel?: AccessLevel; } export interface BatchUploadProgress { totalFiles: number; completedFiles: number; failedFiles: number; currentFile?: string; overallProgress: number; fileProgresses: Record<string, UploadProgress>; } export interface MediaSearchFilters { query?: string; mimeTypes?: string[]; tags?: string[]; collections?: string[]; folderId?: string; dateRange?: { start: Date; end: Date; }; sizeRange?: { min: number; max: number; }; dimensions?: { minWidth?: number; maxWidth?: number; minHeight?: number; maxHeight?: number; }; processed?: boolean; isPublic?: boolean; accessLevel?: AccessLevel; } export interface MediaSearchOptions { limit?: number; offset?: number; sortBy?: "createdAt" | "updatedAt" | "size" | "name" | "viewCount" | "downloadCount"; sortOrder?: "asc" | "desc"; includeFolders?: boolean; includeCollections?: boolean; includeTags?: boolean; } export interface MediaSearchResult { files: MediaFile[]; folders?: MediaFolder[]; collections?: MediaCollection[]; tags?: MediaTag[]; total: number; hasMore: boolean; facets?: { mimeTypes: Record<string, number>; tags: Record<string, number>; collections: Record<string, number>; folders: Record<string, number>; }; } export interface MediaLibraryProps { siteId?: string; multiSelect?: boolean; allowUpload?: boolean; allowFolders?: boolean; allowCollections?: boolean; allowTags?: boolean; maxSelections?: number; acceptedTypes?: string[]; onSelect?: (files: MediaFile[]) => void; onUpload?: (files: MediaFile[]) => void; className?: string; } export interface MediaPickerProps { isOpen: boolean; onClose: () => void; onSelect: (files: MediaFile[]) => void; multiSelect?: boolean; acceptedTypes?: string[]; maxSelections?: number; siteId?: string; } export interface MediaGridProps { files: MediaFile[]; selectedFiles?: MediaFile[]; onSelect?: (files: MediaFile[]) => void; onPreview?: (file: MediaFile) => void; multiSelect?: boolean; viewMode?: "grid" | "list"; className?: string; } export interface MediaUploadZoneProps { onUpload: (files: File[]) => void; onProgress?: (progress: BatchUploadProgress) => void; acceptedTypes?: string[]; maxFileSize?: number; maxFiles?: number; disabled?: boolean; className?: string; } export interface MediaConfig { storage: { provider: "local" | "aws" | "gcp" | "azure"; bucket?: string; region?: string; path?: string; maxFileSize: number; allowedTypes: string[]; }; processing: { enabled: boolean; thumbnailSizes: number[]; webpConversion: boolean; qualitySettings: { jpeg: number; webp: number; png: number; }; }; cdn: { enabled: boolean; provider?: "cloudflare" | "aws" | "gcp"; domain?: string; cacheHeaders: Record<string, string>; }; security: { virusScanning: boolean; checksumValidation: boolean; signedUrls: boolean; maxQuotaPerSite: number; maxQuotaPerUser: number; }; features: { folders: boolean; collections: boolean; tags: boolean; analytics: boolean; watermarking: boolean; }; } //# sourceMappingURL=media.d.ts.map