import { v4 as uuidv4 } from "uuid"; export enum ContentType { Text = "text", Image = "image", File = "file", Link = "link", Color = "color", Code = "code", } export class HistoryItem { id: string; source: string; source_icon?: string; content_type: ContentType; content: string; favicon?: string; timestamp: Date; language?: string; constructor( source: string, content_type: ContentType, content: string, favicon?: string, source_icon?: string, language?: string ) { this.id = uuidv4(); this.source = source; this.source_icon = source_icon; this.content_type = content_type; this.content = content; this.favicon = favicon; this.timestamp = new Date(); this.language = language; } toRow(): [ string, string, string | undefined, string, string, string | undefined, Date, string | undefined ] { return [ this.id, this.source, this.source_icon, this.content_type, this.content, this.favicon, this.timestamp, this.language, ]; } } export interface Settings { key: string; value: string; } export interface InfoText { source: string; content_type: ContentType.Text; characters: number; words: number; copied: Date; } export interface InfoImage { source: string; content_type: ContentType.Image; dimensions: string; size: number; copied: Date; } export interface InfoFile { source: string; content_type: ContentType.File; path: string; filesize: number; copied: Date; } export interface InfoLink { source: string; content_type: ContentType.Link; title?: string; url: string; characters: number; copied: Date; } export interface InfoColor { source: string; content_type: ContentType.Color; hex: string; rgb: string; hsl: string; copied: Date; } export interface InfoCode { source: string; content_type: ContentType.Code; language: string; lines: number; copied: Date; }