id-scanner-lib
Version:
Browser-based ID card, QR code, and face recognition scanner with liveness detection
125 lines (114 loc) • 2.52 kB
text/typescript
/**
* @file Scanner Errors
* @description Error classes for Scanner
* @module core/errors
*/
/**
* Scanner specific error
*/
export class ScannerError extends Error {
/**
* Error code
*/
public code: string;
/**
* Module that threw the error
*/
public module?: string;
/**
* Create a ScannerError
* @param message Error message
* @param code Error code
* @param module Module name
*/
constructor(message: string, code: string, module?: string) {
super(message);
this.name = 'ScannerError';
this.code = code;
this.module = module;
}
}
/**
* Camera access error
*/
export class CameraAccessError extends Error {
constructor(message = 'Camera access denied') {
super(message);
this.name = 'CameraAccessError';
}
}
/**
* Device error
*/
export class DeviceError extends Error {
constructor(message = 'Device error') {
super(message);
this.name = 'DeviceError';
}
}
/**
* Resource load error
*/
export class ResourceLoadError extends Error {
public readonly id?: string;
constructor(message = 'Failed to load resource', id?: string) {
super(message);
this.name = 'ResourceLoadError';
this.id = id;
}
}
/**
* Face detection error
*/
export class FaceDetectionError extends Error {
constructor(message = 'Face detection failed') {
super(message);
this.name = 'FaceDetectionError';
}
}
/**
* Face comparison error
*/
export class FaceComparisonError extends Error {
constructor(message = 'Face comparison failed') {
super(message);
this.name = 'FaceComparisonError';
}
}
/**
* Initialization error
*/
export class InitializationError extends Error {
constructor(message = 'Initialization failed') {
super(message);
this.name = 'InitializationError';
}
}
/**
* Liveness detection error
*/
export class LivenessDetectionError extends Error {
constructor(message = 'Liveness detection failed') {
super(message);
this.name = 'LivenessDetectionError';
}
}
/**
* Error codes for Scanner
*/
export const ErrorCodes = {
/** Scanner not initialized */
NOT_INITIALIZED: 'SCANNER_001',
/** Module not found */
MODULE_NOT_FOUND: 'SCANNER_002',
/** Detection failed */
DETECTION_FAILED: 'SCANNER_003',
/** Camera access denied */
CAMERA_ACCESS_DENIED: 'CAMERA_001',
/** Camera not available */
CAMERA_NOT_AVAILABLE: 'CAMERA_002',
} as const;
/**
* Type for error codes
*/
export type ErrorCode = typeof ErrorCodes[keyof typeof ErrorCodes];