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
TypeScript
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;
}