id-scanner-lib
Version:
Browser-based ID card, QR code, and face recognition scanner with liveness detection
169 lines (144 loc) • 4.87 kB
text/typescript
/* eslint-disable */
/**
* @file 主入口文件
* @description ID Scanner库的主入口点,提供统一的API和模块导出
* @module index
*/
import { ModuleManager } from './core/module-manager';
import { IDCardModule } from './modules/id-card';
import { QRCodeModule } from './modules/qrcode';
import { FaceModule } from './modules/face';
import { VERSION, BUILD_DATE } from './version';
import { Logger, LoggerLevel } from './core/logger';
import { IDCardModuleOptions } from './modules/id-card/types';
import { QRCodeModuleOptions } from './modules/qrcode/types';
import { FaceModuleOptions } from './modules/face/types';
/**
* IDScanner配置选项
*/
export interface IDScannerOptions {
/** 日志级别 */
logLevel?: LoggerLevel;
/** 是否启用身份证识别模块 */
enableIDCard?: boolean;
/** 是否启用二维码识别模块 */
enableQRCode?: boolean;
/** 是否启用人脸识别模块 */
enableFace?: boolean;
/** 身份证模块配置 */
idCard?: IDCardModuleOptions;
/** 二维码模块配置 */
qrCode?: QRCodeModuleOptions;
/** 人脸识别模块配置 */
face?: FaceModuleOptions;
}
/**
* IDScanner类
* 提供整合的身份证、二维码和人脸识别功能
*/
export class IDScanner {
/** 版本号 */
public static readonly VERSION = VERSION;
/** 构建日期 */
public static readonly BUILD_DATE = BUILD_DATE;
/** 模块管理器 */
private moduleManager: ModuleManager;
/** 是否已经初始化 */
private initialized = false;
/** 日志工具 */
private logger: Logger;
/**
* 构造函数
* @param options 配置选项
*/
constructor(options: IDScannerOptions = {}) {
// 配置日志级别
this.logger = Logger.getInstance();
if (options.logLevel !== undefined) {
this.logger.setLevel(options.logLevel);
}
this.moduleManager = ModuleManager.getInstance();
// 注册模块
if (options.enableIDCard === true) {
this.moduleManager.register(new IDCardModule(options.idCard));
}
if (options.enableQRCode === true) {
this.moduleManager.register(new QRCodeModule(options.qrCode));
}
if (options.enableFace === true) {
this.moduleManager.register(new FaceModule(options.face));
}
}
/**
* 初始化库
*/
public async initialize(): Promise<void> {
if (this.initialized) {
return;
}
this.logger.info('IDScanner', `初始化 IDScanner v${VERSION}`);
try {
// 初始化所有模块
await this.moduleManager.initialize();
this.initialized = true;
this.logger.info('IDScanner', 'IDScanner初始化完成');
} catch (error) {
this.logger.error('IDScanner', 'IDScanner初始化失败', error as Error);
throw new Error(`IDScanner初始化失败: ${error instanceof Error ? error.message : String(error)}`);
}
}
/**
* 获取身份证模块实例
* @returns 身份证模块
*/
public getIDCardModule(): IDCardModule | undefined {
return this.moduleManager.getModule<IDCardModule>('id-card');
}
/**
* 获取二维码模块实例
* @returns 二维码模块
*/
public getQRCodeModule(): QRCodeModule | undefined {
return this.moduleManager.getModule<QRCodeModule>('qrcode');
}
/**
* 获取人脸识别模块实例
* @returns 人脸识别模块
*/
public getFaceModule(): FaceModule | undefined {
return this.moduleManager.getModule<FaceModule>('face');
}
/**
* 释放所有资源
*/
public async dispose(): Promise<void> {
if (!this.initialized) {
return;
}
this.logger.info('IDScanner', '释放IDScanner资源');
try {
await this.moduleManager.dispose();
this.initialized = false;
this.logger.info('IDScanner', 'IDScanner资源已释放');
} catch (error) {
this.logger.error('IDScanner', 'IDScanner资源释放失败', error as Error);
throw new Error(`IDScanner资源释放失败: ${error instanceof Error ? error.message : String(error)}`);
}
}
}
// 导出核心模块
export * from './core/loading-state';
export * from './core/module-manager';
export * from './core/logger';
export * from './core/errors';
// 导出功能模块 (明确导出以避免命名冲突)
export { IDCardModule } from './modules/id-card';
export { QRCodeModule } from './modules/qrcode';
export { FaceModule } from './modules/face';
// 导出类型
export * from './utils/types';
export { IDCardModuleOptions, IDCardInfo, IDCardType, IDCardVerificationResult } from './modules/id-card/types';
export { QRCodeModuleOptions, QRCodeResult, BarcodeFormat, DEFAULT_FORMATS } from './modules/qrcode/types';
export { FaceModuleOptions, FaceDetectionResult, FaceComparisonResult } from './modules/face/types';
// 默认导出IDScanner类
export default IDScanner;