UNPKG

id-scanner-lib

Version:

Browser-based ID card, QR code, and face recognition scanner with liveness detection

169 lines (144 loc) 4.87 kB
/* 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;