UNPKG

code-craft-studio

Version:

A comprehensive QR code and barcode scanning/generation library for React. Works with or without Capacitor. Supports 22+ QR data types and 14+ barcode formats (EAN, UPC, Code 128, etc.), with customizable designs, analytics, and React components. Provider

61 lines (60 loc) 2.06 kB
import type { QRCodeData, QRCodeOptions, ScanResult, BarcodeFormat, BarcodeOptions, HistoryItem, AnalyticsData, ValidationResult, ExportOptions } from '../definitions'; export interface PlatformCapabilities { hasNativeScanning: boolean; hasNativeGeneration: boolean; hasOfflineStorage: boolean; hasFileAccess: boolean; hasCameraAccess: boolean; supportedBarcodeFormats: BarcodeFormat[]; supportedExportFormats: string[]; } export interface StorageAdapter { get(key: string): Promise<string | null>; set(key: string, value: string): Promise<void>; remove(key: string): Promise<void>; clear(): Promise<void>; } export interface PlatformAdapter { readonly name: string; readonly capabilities: PlatformCapabilities; readonly storage: StorageAdapter; scanQRCode(options?: { formats?: string[]; }): Promise<ScanResult>; generateQRCode(data: QRCodeData, options?: QRCodeOptions): Promise<{ dataUrl: string; }>; validateQRData(data: QRCodeData): Promise<ValidationResult>; scanBarcode(options?: { formats?: BarcodeFormat[]; }): Promise<ScanResult>; generateBarcode(data: string, format: BarcodeFormat, options?: BarcodeOptions): Promise<{ dataUrl: string; }>; validateBarcode(data: string, format: BarcodeFormat): Promise<ValidationResult>; saveToHistory(item: HistoryItem): Promise<void>; getHistory(options?: { limit?: number; type?: string; }): Promise<HistoryItem[]>; clearHistory(): Promise<void>; getAnalytics(): Promise<AnalyticsData>; exportCode(dataUrl: string, options: ExportOptions): Promise<{ filePath?: string; blob?: Blob; }>; checkPermissions(): Promise<{ camera?: string; storage?: string; }>; requestPermissions(): Promise<{ camera?: string; storage?: string; }>; } export interface PlatformDetector { isCapacitor(): boolean; isWeb(): boolean; isNative(): boolean; getPlatformName(): string; }