id-scanner-lib 1.3.3 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -460
- package/dist/id-scanner-lib.esm.js +4641 -0
- package/dist/id-scanner-lib.esm.js.map +1 -0
- package/dist/id-scanner-lib.js +14755 -0
- package/dist/id-scanner-lib.js.map +1 -0
- package/dist/types/core/base-module.d.ts +44 -0
- package/dist/types/core/camera-manager.d.ts +258 -0
- package/dist/types/core/config.d.ts +88 -0
- package/dist/types/core/errors.d.ts +111 -0
- package/dist/types/core/event-emitter.d.ts +55 -0
- package/dist/types/core/logger.d.ts +277 -0
- package/dist/types/core/module-manager.d.ts +78 -0
- package/dist/types/core/plugin-manager.d.ts +158 -0
- package/dist/types/core/resource-manager.d.ts +246 -0
- package/dist/types/core/result.d.ts +83 -0
- package/dist/types/core/scanner-factory.d.ts +93 -0
- package/dist/types/index.bundle.d.ts +1303 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/interfaces/external-types.d.ts +174 -0
- package/dist/types/interfaces/face-detection.d.ts +293 -0
- package/dist/types/interfaces/scanner-module.d.ts +280 -0
- package/dist/types/modules/face/face-detector.d.ts +170 -0
- package/dist/types/modules/face/index.d.ts +56 -0
- package/dist/types/modules/face/liveness-detector.d.ts +177 -0
- package/dist/types/modules/face/types.d.ts +136 -0
- package/dist/types/modules/id-card/anti-fake-detector.d.ts +170 -0
- package/dist/types/modules/id-card/id-card-detector.d.ts +131 -0
- package/dist/types/modules/id-card/index.d.ts +89 -0
- package/dist/types/modules/id-card/ocr-processor.d.ts +110 -0
- package/dist/types/modules/id-card/ocr-worker.d.ts +31 -0
- package/dist/types/modules/id-card/types.d.ts +181 -0
- package/dist/types/modules/qrcode/index.d.ts +51 -0
- package/dist/types/modules/qrcode/qr-code-scanner.d.ts +64 -0
- package/dist/types/modules/qrcode/types.d.ts +67 -0
- package/dist/types/utils/camera.d.ts +81 -0
- package/dist/types/utils/image-processing.d.ts +176 -0
- package/dist/types/utils/index.d.ts +175 -0
- package/dist/types/utils/performance.d.ts +81 -0
- package/dist/types/utils/resource-manager.d.ts +53 -0
- package/dist/types/utils/types.d.ts +166 -0
- package/dist/types/utils/worker.d.ts +52 -0
- package/dist/types/version.d.ts +7 -0
- package/package.json +76 -75
- package/src/core/base-module.ts +78 -0
- package/src/core/camera-manager.ts +798 -0
- package/src/core/config.ts +268 -0
- package/src/core/errors.ts +174 -0
- package/src/core/event-emitter.ts +110 -0
- package/src/core/logger.ts +549 -0
- package/src/core/module-manager.ts +165 -0
- package/src/core/plugin-manager.ts +429 -0
- package/src/core/resource-manager.ts +762 -0
- package/src/core/result.ts +163 -0
- package/src/core/scanner-factory.ts +237 -0
- package/src/index.ts +113 -936
- package/src/interfaces/external-types.ts +200 -0
- package/src/interfaces/face-detection.ts +309 -0
- package/src/interfaces/scanner-module.ts +384 -0
- package/src/modules/face/face-detector.ts +931 -0
- package/src/modules/face/index.ts +208 -0
- package/src/modules/face/liveness-detector.ts +908 -0
- package/src/modules/face/types.ts +133 -0
- package/src/{id-recognition → modules/id-card}/anti-fake-detector.ts +273 -239
- package/src/modules/id-card/id-card-detector.ts +474 -0
- package/src/modules/id-card/index.ts +425 -0
- package/src/{id-recognition → modules/id-card}/ocr-processor.ts +149 -92
- package/src/modules/id-card/ocr-worker.ts +259 -0
- package/src/modules/id-card/types.ts +178 -0
- package/src/modules/qrcode/index.ts +175 -0
- package/src/modules/qrcode/qr-code-scanner.ts +230 -0
- package/src/modules/qrcode/types.ts +65 -0
- package/src/types/tesseract.d.ts +265 -22
- package/src/utils/image-processing.ts +68 -49
- package/src/utils/index.ts +426 -0
- package/src/utils/performance.ts +168 -131
- package/src/utils/resource-manager.ts +65 -146
- package/src/utils/types.ts +90 -2
- package/src/utils/worker.ts +123 -84
- package/src/version.ts +11 -0
- package/tools/scaffold.js +543 -0
- package/dist/id-scanner-core.esm.js +0 -11349
- package/dist/id-scanner-core.js +0 -11361
- package/dist/id-scanner-core.min.js +0 -1
- package/dist/id-scanner-ocr.esm.js +0 -2319
- package/dist/id-scanner-ocr.js +0 -2328
- package/dist/id-scanner-ocr.min.js +0 -1
- package/dist/id-scanner-qr.esm.js +0 -1296
- package/dist/id-scanner-qr.js +0 -1305
- package/dist/id-scanner-qr.min.js +0 -1
- package/dist/id-scanner.js +0 -4561
- package/dist/id-scanner.min.js +0 -1
- package/src/core.ts +0 -138
- package/src/demo/demo.ts +0 -204
- package/src/id-recognition/data-extractor.ts +0 -262
- package/src/id-recognition/id-detector.ts +0 -510
- package/src/id-recognition/ocr-worker.ts +0 -156
- package/src/index-umd.ts +0 -477
- package/src/ocr-module.ts +0 -187
- package/src/qr-module.ts +0 -179
- package/src/scanner/barcode-scanner.ts +0 -251
- package/src/scanner/qr-scanner.ts +0 -167
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 基础模块
|
|
3
|
+
* @description 提供基础模块实现,作为所有功能模块的基类
|
|
4
|
+
* @module core/base-module
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from './event-emitter';
|
|
7
|
+
import { Logger } from './logger';
|
|
8
|
+
import { Module } from './module-manager';
|
|
9
|
+
/**
|
|
10
|
+
* 基础模块类
|
|
11
|
+
* 提供模块的基本功能和生命周期管理
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class BaseModule extends EventEmitter implements Module {
|
|
14
|
+
/** 模块名称 */
|
|
15
|
+
abstract readonly name: string;
|
|
16
|
+
/** 模块版本 */
|
|
17
|
+
readonly version: string;
|
|
18
|
+
/** 模块是否已初始化 */
|
|
19
|
+
protected _isInitialized: boolean;
|
|
20
|
+
/** 日志工具 */
|
|
21
|
+
protected logger: Logger;
|
|
22
|
+
/**
|
|
23
|
+
* 构造函数
|
|
24
|
+
*/
|
|
25
|
+
constructor();
|
|
26
|
+
/**
|
|
27
|
+
* 获取模块是否已初始化
|
|
28
|
+
*/
|
|
29
|
+
get isInitialized(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* 初始化模块
|
|
32
|
+
* 子类必须实现此方法
|
|
33
|
+
*/
|
|
34
|
+
abstract initialize(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* 释放模块资源
|
|
37
|
+
* 子类可以覆盖此方法以添加额外的资源释放逻辑
|
|
38
|
+
*/
|
|
39
|
+
dispose(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* 检查模块是否已初始化,如果未初始化则抛出错误
|
|
42
|
+
*/
|
|
43
|
+
protected ensureInitialized(): void;
|
|
44
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 摄像头管理器
|
|
3
|
+
* @description 提供摄像头控制和视频流管理功能
|
|
4
|
+
* @module core/camera-manager
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from './event-emitter';
|
|
7
|
+
import { Result } from './result';
|
|
8
|
+
/**
|
|
9
|
+
* 摄像头设备信息
|
|
10
|
+
*/
|
|
11
|
+
export interface CameraDevice {
|
|
12
|
+
/** 设备ID */
|
|
13
|
+
deviceId: string;
|
|
14
|
+
/** 设备标签(名称) */
|
|
15
|
+
label: string;
|
|
16
|
+
/** 是否为前置摄像头 */
|
|
17
|
+
isFront: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 摄像头状态
|
|
21
|
+
*/
|
|
22
|
+
export declare enum CameraStatus {
|
|
23
|
+
/** 未初始化 */
|
|
24
|
+
NOT_INITIALIZED = "not_initialized",
|
|
25
|
+
/** 初始化中 */
|
|
26
|
+
INITIALIZING = "initializing",
|
|
27
|
+
/** 就绪 */
|
|
28
|
+
READY = "ready",
|
|
29
|
+
/** 活动中 */
|
|
30
|
+
ACTIVE = "active",
|
|
31
|
+
/** 暂停 */
|
|
32
|
+
PAUSED = "paused",
|
|
33
|
+
/** 已停止 */
|
|
34
|
+
STOPPED = "stopped",
|
|
35
|
+
/** 错误状态 */
|
|
36
|
+
ERROR = "error"
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 摄像头事件
|
|
40
|
+
*/
|
|
41
|
+
export declare enum CameraEvent {
|
|
42
|
+
/** 摄像头初始化开始 */
|
|
43
|
+
INITIALIZING = "camera:initializing",
|
|
44
|
+
/** 摄像头初始化完成 */
|
|
45
|
+
READY = "camera:ready",
|
|
46
|
+
/** 摄像头开始 */
|
|
47
|
+
START = "camera:start",
|
|
48
|
+
/** 摄像头暂停 */
|
|
49
|
+
PAUSE = "camera:pause",
|
|
50
|
+
/** 摄像头恢复 */
|
|
51
|
+
RESUME = "camera:resume",
|
|
52
|
+
/** 摄像头停止 */
|
|
53
|
+
STOP = "camera:stop",
|
|
54
|
+
/** 摄像头错误 */
|
|
55
|
+
ERROR = "camera:error",
|
|
56
|
+
/** 摄像头切换 */
|
|
57
|
+
SWITCH = "camera:switch",
|
|
58
|
+
/** 媒体流轨道结束 */
|
|
59
|
+
TRACK_ENDED = "camera:track:ended",
|
|
60
|
+
/** 摄像头分辨率变化 */
|
|
61
|
+
RESOLUTION_CHANGE = "camera:resolution:change",
|
|
62
|
+
/** 摄像头帧处理 */
|
|
63
|
+
FRAME = "camera:frame"
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 摄像头初始化选项
|
|
67
|
+
*/
|
|
68
|
+
export interface CameraOptions {
|
|
69
|
+
/** 目标视频元素 */
|
|
70
|
+
videoElement?: HTMLVideoElement;
|
|
71
|
+
/** 自动开始 */
|
|
72
|
+
autoStart?: boolean;
|
|
73
|
+
/** 宽度 */
|
|
74
|
+
width?: number;
|
|
75
|
+
/** 高度 */
|
|
76
|
+
height?: number;
|
|
77
|
+
/** 帧率 */
|
|
78
|
+
frameRate?: number;
|
|
79
|
+
/** 摄像头朝向 */
|
|
80
|
+
facingMode?: 'user' | 'environment';
|
|
81
|
+
/** 摄像头设备ID */
|
|
82
|
+
deviceId?: string;
|
|
83
|
+
/** 启用帧处理 */
|
|
84
|
+
enableFrameProcessing?: boolean;
|
|
85
|
+
/** 帧处理间隔(ms) */
|
|
86
|
+
frameProcessingInterval?: number;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 摄像头管理类
|
|
90
|
+
* 提供摄像头控制和视频流管理功能
|
|
91
|
+
*/
|
|
92
|
+
export declare class CameraManager extends EventEmitter {
|
|
93
|
+
/** 单例实例 */
|
|
94
|
+
private static instance;
|
|
95
|
+
/** 日志记录器 */
|
|
96
|
+
private readonly logger;
|
|
97
|
+
/** 配置管理器 */
|
|
98
|
+
private readonly config;
|
|
99
|
+
/** 视频元素 */
|
|
100
|
+
private videoElement;
|
|
101
|
+
/** 媒体流 */
|
|
102
|
+
private mediaStream;
|
|
103
|
+
/** 摄像头状态 */
|
|
104
|
+
private status;
|
|
105
|
+
/** 可用的摄像头设备列表 */
|
|
106
|
+
private devices;
|
|
107
|
+
/** 当前活动的摄像头设备 */
|
|
108
|
+
private activeDeviceId;
|
|
109
|
+
/** 帧处理计时器ID */
|
|
110
|
+
private frameProcessingTimerId;
|
|
111
|
+
/** 是否启用帧处理 */
|
|
112
|
+
private frameProcessingEnabled;
|
|
113
|
+
/** 帧处理间隔(ms) */
|
|
114
|
+
private frameProcessingInterval;
|
|
115
|
+
/** 视频准备就绪的Promise */
|
|
116
|
+
private videoReadyPromise;
|
|
117
|
+
/** 视频准备就绪的Promise解析函数 */
|
|
118
|
+
private videoReadyResolver;
|
|
119
|
+
/** Canvas元素,用于帧处理 */
|
|
120
|
+
private canvas;
|
|
121
|
+
/** Canvas 2D上下文 */
|
|
122
|
+
private canvasCtx;
|
|
123
|
+
/**
|
|
124
|
+
* 私有构造函数
|
|
125
|
+
*/
|
|
126
|
+
private constructor();
|
|
127
|
+
/**
|
|
128
|
+
* 获取单例实例
|
|
129
|
+
*/
|
|
130
|
+
static getInstance(): CameraManager;
|
|
131
|
+
/**
|
|
132
|
+
* 初始化摄像头
|
|
133
|
+
* @param options 初始化选项
|
|
134
|
+
*/
|
|
135
|
+
init(options?: CameraOptions): Promise<Result<boolean>>;
|
|
136
|
+
/**
|
|
137
|
+
* 开始摄像头
|
|
138
|
+
* @param options 摄像头选项
|
|
139
|
+
*/
|
|
140
|
+
start(options?: {
|
|
141
|
+
deviceId?: string;
|
|
142
|
+
width?: number;
|
|
143
|
+
height?: number;
|
|
144
|
+
frameRate?: number;
|
|
145
|
+
facingMode?: 'user' | 'environment';
|
|
146
|
+
}): Promise<Result<boolean>>;
|
|
147
|
+
/**
|
|
148
|
+
* 暂停摄像头
|
|
149
|
+
*/
|
|
150
|
+
pause(): boolean;
|
|
151
|
+
/**
|
|
152
|
+
* 恢复摄像头
|
|
153
|
+
*/
|
|
154
|
+
resume(): Promise<boolean>;
|
|
155
|
+
/**
|
|
156
|
+
* 停止摄像头
|
|
157
|
+
*/
|
|
158
|
+
stop(): boolean;
|
|
159
|
+
/**
|
|
160
|
+
* 切换摄像头
|
|
161
|
+
*/
|
|
162
|
+
switchCamera(): Promise<Result<boolean>>;
|
|
163
|
+
/**
|
|
164
|
+
* 加载可用的摄像头设备列表
|
|
165
|
+
*/
|
|
166
|
+
loadDevices(): Promise<CameraDevice[]>;
|
|
167
|
+
/**
|
|
168
|
+
* 获取前置摄像头
|
|
169
|
+
*/
|
|
170
|
+
getFrontCamera(): CameraDevice | undefined;
|
|
171
|
+
/**
|
|
172
|
+
* 获取后置摄像头
|
|
173
|
+
*/
|
|
174
|
+
getBackCamera(): CameraDevice | undefined;
|
|
175
|
+
/**
|
|
176
|
+
* 获取所有摄像头设备
|
|
177
|
+
*/
|
|
178
|
+
getDevices(): CameraDevice[];
|
|
179
|
+
/**
|
|
180
|
+
* 获取当前活动的设备ID
|
|
181
|
+
*/
|
|
182
|
+
getActiveDeviceId(): string | null;
|
|
183
|
+
/**
|
|
184
|
+
* 获取当前活动的摄像头设备
|
|
185
|
+
*/
|
|
186
|
+
getActiveDevice(): CameraDevice | undefined;
|
|
187
|
+
/**
|
|
188
|
+
* 获取当前媒体流
|
|
189
|
+
*/
|
|
190
|
+
getMediaStream(): MediaStream | null;
|
|
191
|
+
/**
|
|
192
|
+
* 获取视频元素
|
|
193
|
+
*/
|
|
194
|
+
getVideoElement(): HTMLVideoElement | null;
|
|
195
|
+
/**
|
|
196
|
+
* 设置视频元素
|
|
197
|
+
* @param element 视频元素
|
|
198
|
+
*/
|
|
199
|
+
setVideoElement(element: HTMLVideoElement): void;
|
|
200
|
+
/**
|
|
201
|
+
* 创建视频元素
|
|
202
|
+
*/
|
|
203
|
+
private createVideoElement;
|
|
204
|
+
/**
|
|
205
|
+
* 捕获当前画面
|
|
206
|
+
* @param format 图像格式
|
|
207
|
+
* @param quality 图像质量(0-1)
|
|
208
|
+
*/
|
|
209
|
+
captureFrame(format?: 'image/png' | 'image/jpeg', quality?: number): string | null;
|
|
210
|
+
/**
|
|
211
|
+
* 捕获帧并返回ImageData
|
|
212
|
+
*/
|
|
213
|
+
captureFrameData(): ImageData | null;
|
|
214
|
+
/**
|
|
215
|
+
* 获取当前状态
|
|
216
|
+
*/
|
|
217
|
+
getStatus(): CameraStatus;
|
|
218
|
+
/**
|
|
219
|
+
* 检查摄像头是否活动
|
|
220
|
+
*/
|
|
221
|
+
isActive(): boolean;
|
|
222
|
+
/**
|
|
223
|
+
* 初始化Canvas
|
|
224
|
+
*/
|
|
225
|
+
private initCanvas;
|
|
226
|
+
/**
|
|
227
|
+
* 释放资源
|
|
228
|
+
*/
|
|
229
|
+
dispose(): void;
|
|
230
|
+
/**
|
|
231
|
+
* 停止媒体流并释放轨道
|
|
232
|
+
*/
|
|
233
|
+
private stopMediaStream;
|
|
234
|
+
/**
|
|
235
|
+
* 处理媒体流轨道结束事件
|
|
236
|
+
*/
|
|
237
|
+
private handleTrackEnded;
|
|
238
|
+
/**
|
|
239
|
+
* 创建视频准备就绪的Promise
|
|
240
|
+
*/
|
|
241
|
+
private createVideoReadyPromise;
|
|
242
|
+
/**
|
|
243
|
+
* 等待视频准备就绪
|
|
244
|
+
*/
|
|
245
|
+
private waitForVideoReady;
|
|
246
|
+
/**
|
|
247
|
+
* 开始帧处理
|
|
248
|
+
*/
|
|
249
|
+
private startFrameProcessing;
|
|
250
|
+
/**
|
|
251
|
+
* 停止帧处理
|
|
252
|
+
*/
|
|
253
|
+
private stopFrameProcessing;
|
|
254
|
+
/**
|
|
255
|
+
* 处理当前帧
|
|
256
|
+
*/
|
|
257
|
+
private processFrame;
|
|
258
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 配置管理器
|
|
3
|
+
* @description 提供全局配置管理功能
|
|
4
|
+
* @module core/config
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 配置管理器
|
|
8
|
+
* 负责存储和管理应用程序的配置
|
|
9
|
+
*/
|
|
10
|
+
export declare class ConfigManager {
|
|
11
|
+
/** 单例实例 */
|
|
12
|
+
private static instance;
|
|
13
|
+
/** 配置存储 */
|
|
14
|
+
private config;
|
|
15
|
+
/** 配置变更回调 */
|
|
16
|
+
private changeCallbacks;
|
|
17
|
+
/**
|
|
18
|
+
* 私有构造函数
|
|
19
|
+
*/
|
|
20
|
+
private constructor();
|
|
21
|
+
/**
|
|
22
|
+
* 获取单例实例
|
|
23
|
+
*/
|
|
24
|
+
static getInstance(): ConfigManager;
|
|
25
|
+
/**
|
|
26
|
+
* 获取配置值
|
|
27
|
+
* @param key 配置键,支持点号分隔的路径
|
|
28
|
+
* @param defaultValue 默认值
|
|
29
|
+
*/
|
|
30
|
+
get<T = any>(key: string, defaultValue?: T): T;
|
|
31
|
+
/**
|
|
32
|
+
* 设置配置值
|
|
33
|
+
* @param key 配置键,支持点号分隔的路径
|
|
34
|
+
* @param value 配置值
|
|
35
|
+
*/
|
|
36
|
+
set<T = any>(key: string, value: T): void;
|
|
37
|
+
/**
|
|
38
|
+
* 批量更新配置
|
|
39
|
+
* @param config 配置对象
|
|
40
|
+
*/
|
|
41
|
+
updateConfig(config: Record<string, any>): void;
|
|
42
|
+
/**
|
|
43
|
+
* 重置为默认配置
|
|
44
|
+
*/
|
|
45
|
+
reset(): void;
|
|
46
|
+
/**
|
|
47
|
+
* 注册配置变更回调
|
|
48
|
+
* @param key 配置键
|
|
49
|
+
* @param callback 回调函数
|
|
50
|
+
*/
|
|
51
|
+
onConfigChange<T = any>(key: string, callback: (value: T, oldValue: T) => void): void;
|
|
52
|
+
/**
|
|
53
|
+
* 移除配置变更回调
|
|
54
|
+
* @param key 配置键
|
|
55
|
+
* @param callback 特定回调函数,如不提供则移除所有
|
|
56
|
+
*/
|
|
57
|
+
offConfigChange<T = any>(key: string, callback?: (value: T, oldValue: T) => void): void;
|
|
58
|
+
/**
|
|
59
|
+
* 获取嵌套值
|
|
60
|
+
* @param obj 对象
|
|
61
|
+
* @param path 路径
|
|
62
|
+
*/
|
|
63
|
+
private getNestedValue;
|
|
64
|
+
/**
|
|
65
|
+
* 设置嵌套值
|
|
66
|
+
* @param obj 对象
|
|
67
|
+
* @param path 路径
|
|
68
|
+
* @param value 值
|
|
69
|
+
*/
|
|
70
|
+
private setNestedValue;
|
|
71
|
+
/**
|
|
72
|
+
* 触发变更回调
|
|
73
|
+
* @param key 配置键
|
|
74
|
+
* @param value 新值
|
|
75
|
+
* @param oldValue 旧值
|
|
76
|
+
*/
|
|
77
|
+
private triggerChangeCallbacks;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 模块配置接口
|
|
81
|
+
* 定义所有模块共享的基础配置属性
|
|
82
|
+
*/
|
|
83
|
+
export interface ModuleConfig {
|
|
84
|
+
/** 是否启用该模块 */
|
|
85
|
+
enabled: boolean;
|
|
86
|
+
/** 其他模块特定配置 */
|
|
87
|
+
[key: string]: any;
|
|
88
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 错误处理模块
|
|
3
|
+
* @description 定义ID-Scanner-Lib的错误类层次结构
|
|
4
|
+
* @module core/errors
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* ID-Scanner-Lib 基础错误类
|
|
8
|
+
* 所有库特定错误的基类
|
|
9
|
+
*/
|
|
10
|
+
export declare class IDScannerError extends Error {
|
|
11
|
+
/** 错误代码 */
|
|
12
|
+
code: string;
|
|
13
|
+
/** 错误原因 */
|
|
14
|
+
cause?: Error;
|
|
15
|
+
/**
|
|
16
|
+
* 构造函数
|
|
17
|
+
* @param message 错误消息
|
|
18
|
+
* @param options 错误选项
|
|
19
|
+
*/
|
|
20
|
+
constructor(message: string, options?: {
|
|
21
|
+
code?: string;
|
|
22
|
+
cause?: Error;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 初始化错误
|
|
27
|
+
* 当库初始化失败时抛出
|
|
28
|
+
*/
|
|
29
|
+
export declare class InitializationError extends IDScannerError {
|
|
30
|
+
constructor(message: string, details?: string);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 设备错误
|
|
34
|
+
* 当访问硬件设备(如摄像头)失败时抛出
|
|
35
|
+
*/
|
|
36
|
+
export declare class DeviceError extends IDScannerError {
|
|
37
|
+
constructor(message: string);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 摄像头访问错误
|
|
41
|
+
* 当无法访问或启动摄像头时抛出
|
|
42
|
+
*/
|
|
43
|
+
export declare class CameraAccessError extends IDScannerError {
|
|
44
|
+
constructor(message: string, options?: {
|
|
45
|
+
code?: string;
|
|
46
|
+
cause?: Error;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 人脸检测错误
|
|
51
|
+
* 当人脸检测过程失败时抛出
|
|
52
|
+
*/
|
|
53
|
+
export declare class FaceDetectionError extends IDScannerError {
|
|
54
|
+
constructor(message: string);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 人脸比对错误
|
|
58
|
+
* 当人脸比对过程失败时抛出
|
|
59
|
+
*/
|
|
60
|
+
export declare class FaceComparisonError extends IDScannerError {
|
|
61
|
+
constructor(message: string);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 活体检测错误
|
|
65
|
+
* 当活体检测过程失败时抛出
|
|
66
|
+
*/
|
|
67
|
+
export declare class LivenessDetectionError extends IDScannerError {
|
|
68
|
+
constructor(message: string);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* OCR识别错误
|
|
72
|
+
* 当OCR文字识别失败时抛出
|
|
73
|
+
*/
|
|
74
|
+
export declare class OCRProcessingError extends IDScannerError {
|
|
75
|
+
constructor(message: string);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 二维码扫描错误
|
|
79
|
+
* 当二维码扫描失败时抛出
|
|
80
|
+
*/
|
|
81
|
+
export declare class QRScanError extends IDScannerError {
|
|
82
|
+
constructor(message: string);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 身份证检测错误
|
|
86
|
+
* 当身份证检测失败时抛出
|
|
87
|
+
*/
|
|
88
|
+
export declare class IDCardDetectionError extends IDScannerError {
|
|
89
|
+
constructor(message: string);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 资源加载错误
|
|
93
|
+
* 当无法加载必要资源(如模型)时抛出
|
|
94
|
+
*/
|
|
95
|
+
export declare class ResourceLoadError extends IDScannerError {
|
|
96
|
+
constructor(resource: string, reason: string);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 参数错误
|
|
100
|
+
* 当提供的参数无效时抛出
|
|
101
|
+
*/
|
|
102
|
+
export declare class InvalidArgumentError extends IDScannerError {
|
|
103
|
+
constructor(paramName: string, reason: string);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 不支持错误
|
|
107
|
+
* 当尝试使用不支持的功能或当前环境无法使用的功能时抛出
|
|
108
|
+
*/
|
|
109
|
+
export declare class NotSupportedError extends IDScannerError {
|
|
110
|
+
constructor(feature: string);
|
|
111
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 事件发射器
|
|
3
|
+
* @description 提供基础的事件发射和订阅功能
|
|
4
|
+
* @module core/event-emitter
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 事件处理器类型
|
|
8
|
+
*/
|
|
9
|
+
type EventHandler = (data?: any) => void;
|
|
10
|
+
/**
|
|
11
|
+
* 事件发射器基类
|
|
12
|
+
* 提供基础的事件发射和订阅功能
|
|
13
|
+
*/
|
|
14
|
+
export declare class EventEmitter {
|
|
15
|
+
/** 事件处理器映射 */
|
|
16
|
+
private eventHandlers;
|
|
17
|
+
/**
|
|
18
|
+
* 订阅事件
|
|
19
|
+
* @param eventName 事件名称
|
|
20
|
+
* @param handler 事件处理器
|
|
21
|
+
*/
|
|
22
|
+
on(eventName: string, handler: EventHandler): void;
|
|
23
|
+
/**
|
|
24
|
+
* 取消订阅事件
|
|
25
|
+
* @param eventName 事件名称
|
|
26
|
+
* @param handler 事件处理器,如果不提供则移除该事件的所有处理器
|
|
27
|
+
*/
|
|
28
|
+
off(eventName: string, handler?: EventHandler): void;
|
|
29
|
+
/**
|
|
30
|
+
* 订阅事件,但只触发一次
|
|
31
|
+
* @param eventName 事件名称
|
|
32
|
+
* @param handler 事件处理器
|
|
33
|
+
*/
|
|
34
|
+
once(eventName: string, handler: EventHandler): void;
|
|
35
|
+
/**
|
|
36
|
+
* 发射事件
|
|
37
|
+
* @param eventName 事件名称
|
|
38
|
+
* @param data 事件数据
|
|
39
|
+
*/
|
|
40
|
+
emit(eventName: string, data?: any): void;
|
|
41
|
+
/**
|
|
42
|
+
* 获取某个事件的处理器数量
|
|
43
|
+
* @param eventName 事件名称
|
|
44
|
+
*/
|
|
45
|
+
listenerCount(eventName: string): number;
|
|
46
|
+
/**
|
|
47
|
+
* 移除所有事件处理器
|
|
48
|
+
*/
|
|
49
|
+
removeAllListeners(): void;
|
|
50
|
+
/**
|
|
51
|
+
* 获取所有事件名称
|
|
52
|
+
*/
|
|
53
|
+
eventNames(): string[];
|
|
54
|
+
}
|
|
55
|
+
export {};
|