UNPKG

discord-image-utils

Version:

A powerful library for generating and modifying images with Discord.js - includes meme generation, filters, effects and animations

214 lines (213 loc) 5.57 kB
/** @format */ export type ImageInput = string | Buffer; export type HexColor = `#${string}`; export type RGBColor = `rgb(${number}, ${number}, ${number})`; export type RGBAColor = `rgba(${number}, ${number}, ${number}, ${number})`; export type Color = HexColor | RGBColor | RGBAColor | string; export interface Position { x: number; y: number; } export interface Dimensions { width: number; height: number; } export interface Rectangle extends Position, Dimensions { } export type FilterLevel = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10; export interface FilterOptions { level?: FilterLevel; quality?: number; } export interface ProgressBarOptions { color?: Color; backgroundColor?: Color; borderColor?: Color; borderWidth?: number; height?: number; } export interface TimeOptions { currentTime: number; totalTime: number; } export interface MusicImageOptions { title: string; artist: string; album?: string; image: ImageInput; time?: TimeOptions; progressBar?: ProgressBarOptions; } export type GradientType = "linear" | "radial"; export type PatternType = "dots" | "lines" | "grid" | "waves" | "chevron"; export interface GradientOptions { type: GradientType; colors: Color[]; } export interface PatternOptions { type: PatternType; opacity?: number; scale?: number; } export interface QuoteResponse { quote: string; author: string; gradient?: GradientOptions; pattern?: PatternOptions; } export type WelcomeTheme = 'default' | 'dark' | 'light' | 'colorful' | 'minimal' | 'tech'; export interface WelcomeCardCustomization { textColor?: Color; borderColor?: Color; backgroundColor?: Color; avatarBorderColor?: Color; font?: string; fontSize?: number; } export interface WelcomeCardOptions { username: string; avatar: ImageInput; servername?: string; memberCount?: number; background?: ImageInput; theme?: WelcomeTheme; message?: string; customization?: WelcomeCardCustomization; } export interface LevelCardOptions { username: string; avatar: ImageInput; level: number; currentXP: number; requiredXP: number; rank?: number; background?: ImageInput; theme?: WelcomeTheme; customization?: WelcomeCardCustomization; } export interface GifOptions { frameDelay?: number; quality?: number; frameCount?: number; } export interface TriggeredOptions extends GifOptions { intensity?: FilterLevel; } export interface BlinkOptions extends GifOptions { blinkDuration?: number; } export interface WantedOptions { currency?: string; amount?: number; } export interface MemeTextOptions { text: string; font?: string; fontSize?: number; color?: Color; strokeColor?: Color; strokeWidth?: number; position?: Position; } export interface MemeOptions { topText?: string | MemeTextOptions; bottomText?: string | MemeTextOptions; font?: string; fontSize?: number; textColor?: Color; strokeColor?: Color; strokeWidth?: number; } export interface CanvasOptions { width: number; height: number; backgroundColor?: Color; quality?: number; } export interface AnimationOptions { duration?: number; fps?: number; loop?: boolean; easing?: 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out'; } export interface BlurOptions extends FilterOptions { radius?: number; sigma?: number; } export interface PixelateOptions extends FilterOptions { size?: number; } export interface WaveOptions extends FilterOptions { amplitude?: number; frequency?: number; direction?: 'horizontal' | 'vertical' | 'both'; } export interface GlitchOptions extends FilterOptions { iterations?: number; quality?: number; seed?: number; } export interface TextOptions { text: string; font?: string; fontSize?: number; color?: Color; backgroundColor?: Color; padding?: number; borderRadius?: number; maxWidth?: number; lineHeight?: number; align?: 'left' | 'center' | 'right'; verticalAlign?: 'top' | 'middle' | 'bottom'; } export interface ValidationOptions { required?: boolean; type?: string; min?: number; max?: number; minLength?: number; maxLength?: number; pattern?: RegExp; custom?: (value: any) => boolean | string; } export interface ErrorDetails { [key: string]: any; } export interface ErrorOptions { code?: string; statusCode?: number; details?: ErrorDetails; } export interface NetworkOptions { timeout?: number; retries?: number; retryDelay?: number; headers?: Record<string, string>; userAgent?: string; } export interface ProcessingOptions { quality?: number; format?: 'png' | 'jpg' | 'jpeg' | 'gif' | 'webp'; progressive?: boolean; optimize?: boolean; } export type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]; }; export type RequiredFields<T, K extends keyof T> = T & Required<Pick<T, K>>; export type OptionalFields<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>; export interface OperationResult<T = Buffer> { success: boolean; data?: T; error?: string; details?: ErrorDetails; } export interface AsyncOperationResult<T = Buffer> extends Promise<OperationResult<T>> { } export interface ModuleConfig { logLevel?: 'debug' | 'info' | 'warn' | 'error'; defaultTimeout?: number; maxRetries?: number; cacheEnabled?: boolean; cacheTTL?: number; }