id-scanner-lib 1.3.2 → 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.
Files changed (115) hide show
  1. package/README.md +55 -460
  2. package/dist/id-scanner-lib.esm.js +4641 -0
  3. package/dist/id-scanner-lib.esm.js.map +1 -0
  4. package/dist/id-scanner-lib.js +14755 -0
  5. package/dist/id-scanner-lib.js.map +1 -0
  6. package/dist/types/core/base-module.d.ts +44 -0
  7. package/dist/types/core/camera-manager.d.ts +258 -0
  8. package/dist/types/core/config.d.ts +88 -0
  9. package/dist/types/core/errors.d.ts +111 -0
  10. package/dist/types/core/event-emitter.d.ts +55 -0
  11. package/dist/types/core/logger.d.ts +277 -0
  12. package/dist/types/core/module-manager.d.ts +78 -0
  13. package/dist/types/core/plugin-manager.d.ts +158 -0
  14. package/dist/types/core/resource-manager.d.ts +246 -0
  15. package/dist/types/core/result.d.ts +83 -0
  16. package/dist/types/core/scanner-factory.d.ts +93 -0
  17. package/dist/types/index.bundle.d.ts +1303 -0
  18. package/dist/types/index.d.ts +86 -0
  19. package/dist/types/interfaces/external-types.d.ts +174 -0
  20. package/dist/types/interfaces/face-detection.d.ts +293 -0
  21. package/dist/types/interfaces/scanner-module.d.ts +280 -0
  22. package/dist/types/modules/face/face-detector.d.ts +170 -0
  23. package/dist/types/modules/face/index.d.ts +56 -0
  24. package/dist/types/modules/face/liveness-detector.d.ts +177 -0
  25. package/dist/types/modules/face/types.d.ts +136 -0
  26. package/dist/types/modules/id-card/anti-fake-detector.d.ts +170 -0
  27. package/dist/types/modules/id-card/id-card-detector.d.ts +131 -0
  28. package/dist/types/modules/id-card/index.d.ts +89 -0
  29. package/dist/types/modules/id-card/ocr-processor.d.ts +110 -0
  30. package/dist/types/modules/id-card/ocr-worker.d.ts +31 -0
  31. package/dist/types/modules/id-card/types.d.ts +181 -0
  32. package/dist/types/modules/qrcode/index.d.ts +51 -0
  33. package/dist/types/modules/qrcode/qr-code-scanner.d.ts +64 -0
  34. package/dist/types/modules/qrcode/types.d.ts +67 -0
  35. package/dist/types/utils/camera.d.ts +81 -0
  36. package/dist/types/utils/image-processing.d.ts +176 -0
  37. package/dist/types/utils/index.d.ts +175 -0
  38. package/dist/types/utils/performance.d.ts +81 -0
  39. package/dist/types/utils/resource-manager.d.ts +53 -0
  40. package/dist/types/utils/types.d.ts +166 -0
  41. package/dist/types/utils/worker.d.ts +52 -0
  42. package/dist/types/version.d.ts +7 -0
  43. package/package.json +76 -77
  44. package/src/core/base-module.ts +78 -0
  45. package/src/core/camera-manager.ts +798 -0
  46. package/src/core/config.ts +268 -0
  47. package/src/core/errors.ts +174 -0
  48. package/src/core/event-emitter.ts +110 -0
  49. package/src/core/logger.ts +549 -0
  50. package/src/core/module-manager.ts +165 -0
  51. package/src/core/plugin-manager.ts +429 -0
  52. package/src/core/resource-manager.ts +762 -0
  53. package/src/core/result.ts +163 -0
  54. package/src/core/scanner-factory.ts +237 -0
  55. package/src/index.ts +113 -936
  56. package/src/interfaces/external-types.ts +200 -0
  57. package/src/interfaces/face-detection.ts +309 -0
  58. package/src/interfaces/scanner-module.ts +384 -0
  59. package/src/modules/face/face-detector.ts +931 -0
  60. package/src/modules/face/index.ts +208 -0
  61. package/src/modules/face/liveness-detector.ts +908 -0
  62. package/src/modules/face/types.ts +133 -0
  63. package/src/modules/id-card/anti-fake-detector.ts +732 -0
  64. package/src/modules/id-card/id-card-detector.ts +474 -0
  65. package/src/modules/id-card/index.ts +425 -0
  66. package/src/modules/id-card/ocr-processor.ts +538 -0
  67. package/src/modules/id-card/ocr-worker.ts +259 -0
  68. package/src/modules/id-card/types.ts +178 -0
  69. package/src/modules/qrcode/index.ts +175 -0
  70. package/src/modules/qrcode/qr-code-scanner.ts +230 -0
  71. package/src/modules/qrcode/types.ts +65 -0
  72. package/src/types/browser-image-compression.d.ts +19 -0
  73. package/src/types/tesseract.d.ts +280 -0
  74. package/src/utils/image-processing.ts +432 -49
  75. package/src/utils/index.ts +426 -0
  76. package/src/utils/performance.ts +168 -131
  77. package/src/utils/resource-manager.ts +65 -146
  78. package/src/utils/types.ts +90 -2
  79. package/src/utils/worker.ts +123 -84
  80. package/src/version.ts +11 -0
  81. package/tools/scaffold.js +543 -0
  82. package/dist/id-scanner-core.esm.js +0 -11076
  83. package/dist/id-scanner-core.esm.js.map +0 -1
  84. package/dist/id-scanner-core.js +0 -11088
  85. package/dist/id-scanner-core.js.map +0 -1
  86. package/dist/id-scanner-core.min.js +0 -1
  87. package/dist/id-scanner-core.min.js.map +0 -1
  88. package/dist/id-scanner-ocr.esm.js +0 -1802
  89. package/dist/id-scanner-ocr.esm.js.map +0 -1
  90. package/dist/id-scanner-ocr.js +0 -1811
  91. package/dist/id-scanner-ocr.js.map +0 -1
  92. package/dist/id-scanner-ocr.min.js +0 -1
  93. package/dist/id-scanner-ocr.min.js.map +0 -1
  94. package/dist/id-scanner-qr.esm.js +0 -1023
  95. package/dist/id-scanner-qr.esm.js.map +0 -1
  96. package/dist/id-scanner-qr.js +0 -1032
  97. package/dist/id-scanner-qr.js.map +0 -1
  98. package/dist/id-scanner-qr.min.js +0 -1
  99. package/dist/id-scanner-qr.min.js.map +0 -1
  100. package/dist/id-scanner.js +0 -3740
  101. package/dist/id-scanner.js.map +0 -1
  102. package/dist/id-scanner.min.js +0 -1
  103. package/dist/id-scanner.min.js.map +0 -1
  104. package/src/core.ts +0 -138
  105. package/src/demo/demo.ts +0 -204
  106. package/src/id-recognition/anti-fake-detector.ts +0 -317
  107. package/src/id-recognition/data-extractor.ts +0 -262
  108. package/src/id-recognition/id-detector.ts +0 -363
  109. package/src/id-recognition/ocr-processor.ts +0 -334
  110. package/src/id-recognition/ocr-worker.ts +0 -156
  111. package/src/index-umd.ts +0 -477
  112. package/src/ocr-module.ts +0 -187
  113. package/src/qr-module.ts +0 -179
  114. package/src/scanner/barcode-scanner.ts +0 -251
  115. package/src/scanner/qr-scanner.ts +0 -167
@@ -0,0 +1,277 @@
1
+ /**
2
+ * @file 日志系统
3
+ * @description 提供统一的日志记录与管理功能
4
+ * @module core/logger
5
+ */
6
+ /**
7
+ * 日志级别枚举
8
+ */
9
+ export declare enum LogLevel {
10
+ DEBUG = "debug",
11
+ INFO = "info",
12
+ WARN = "warn",
13
+ ERROR = "error"
14
+ }
15
+ /**
16
+ * 日志条目接口
17
+ */
18
+ export interface LogEntry {
19
+ /** 日志级别 */
20
+ level: LogLevel;
21
+ /** 日志标签 */
22
+ tag: string;
23
+ /** 日志消息 */
24
+ message: string;
25
+ /** 时间戳 */
26
+ timestamp: number;
27
+ /** 额外数据 */
28
+ data?: any;
29
+ /** 错误 */
30
+ error?: Error;
31
+ }
32
+ /**
33
+ * 日志处理器接口
34
+ */
35
+ export interface LogHandler {
36
+ /**
37
+ * 处理日志条目
38
+ * @param entry 日志条目
39
+ */
40
+ handle(entry: LogEntry): void;
41
+ }
42
+ /**
43
+ * 控制台日志处理器
44
+ * 将日志输出到浏览器控制台
45
+ */
46
+ export declare class ConsoleLogHandler implements LogHandler {
47
+ /**
48
+ * 处理日志条目
49
+ * @param entry 日志条目
50
+ */
51
+ handle(entry: LogEntry): void;
52
+ }
53
+ /**
54
+ * 内存日志处理器
55
+ * 将日志保存在内存中,用于后续分析或显示
56
+ */
57
+ export declare class MemoryLogHandler implements LogHandler {
58
+ /** 日志条目数组 */
59
+ private entries;
60
+ /** 最大日志条目数 */
61
+ private maxEntries;
62
+ /**
63
+ * 构造函数
64
+ * @param maxEntries 最大日志条目数,默认为1000
65
+ */
66
+ constructor(maxEntries?: number);
67
+ /**
68
+ * 处理日志条目
69
+ * @param entry 日志条目
70
+ */
71
+ handle(entry: LogEntry): void;
72
+ /**
73
+ * 获取所有日志条目
74
+ */
75
+ getEntries(): LogEntry[];
76
+ /**
77
+ * 根据级别过滤日志条目
78
+ * @param level 日志级别
79
+ */
80
+ getEntriesByLevel(level: LogLevel): LogEntry[];
81
+ /**
82
+ * 根据标签过滤日志条目
83
+ * @param tag 日志标签
84
+ */
85
+ getEntriesByTag(tag: string): LogEntry[];
86
+ /**
87
+ * 清空日志
88
+ */
89
+ clear(): void;
90
+ }
91
+ /**
92
+ * 远程日志处理器
93
+ * 将日志发送到远程服务器
94
+ */
95
+ export declare class RemoteLogHandler implements LogHandler {
96
+ /** 远程服务器URL */
97
+ private endpoint;
98
+ /** 批量发送的队列 */
99
+ private queue;
100
+ /** 最大队列长度 */
101
+ private maxQueueSize;
102
+ /** 发送间隔(毫秒) */
103
+ private flushInterval;
104
+ /** 定时发送的计时器ID */
105
+ private timerId;
106
+ /**
107
+ * 构造函数
108
+ * @param endpoint 远程服务器URL
109
+ * @param maxQueueSize 最大队列长度,默认为100
110
+ * @param flushInterval 发送间隔(毫秒),默认为5000
111
+ */
112
+ constructor(endpoint: string, maxQueueSize?: number, flushInterval?: number);
113
+ /**
114
+ * 处理日志条目
115
+ * @param entry 日志条目
116
+ */
117
+ handle(entry: LogEntry): void;
118
+ /**
119
+ * 发送队列中的日志
120
+ */
121
+ flush(): void;
122
+ /**
123
+ * 开始定时发送
124
+ */
125
+ startTimer(): void;
126
+ /**
127
+ * 停止定时发送
128
+ */
129
+ stopTimer(): void;
130
+ }
131
+ /**
132
+ * 日志管理类
133
+ * 中央日志管理器,提供统一的日志记录接口
134
+ */
135
+ export declare class Logger {
136
+ /** 单例实例 */
137
+ private static instance;
138
+ /** 配置管理器 */
139
+ private config;
140
+ /** 日志处理器 */
141
+ private handlers;
142
+ /** 默认标签 */
143
+ private defaultTag;
144
+ /** 日志级别 */
145
+ private logLevel;
146
+ /**
147
+ * 私有构造函数,防止直接实例化
148
+ */
149
+ private constructor();
150
+ /**
151
+ * 获取单例实例
152
+ */
153
+ static getInstance(): Logger;
154
+ /**
155
+ * 添加日志处理器
156
+ * @param handler 日志处理器
157
+ */
158
+ addHandler(handler: LogHandler): void;
159
+ /**
160
+ * 移除日志处理器
161
+ * @param handler 要移除的处理器
162
+ */
163
+ removeHandler(handler: LogHandler): void;
164
+ /**
165
+ * 移除所有处理器
166
+ */
167
+ clearHandlers(): void;
168
+ /**
169
+ * 设置默认标签
170
+ * @param tag 默认标签
171
+ */
172
+ setDefaultTag(tag: string): void;
173
+ /**
174
+ * 记录调试级别日志
175
+ * @param tag 标签
176
+ * @param message 消息
177
+ * @param error 错误
178
+ */
179
+ debug(tag: string, message: string, error?: Error): void;
180
+ /**
181
+ * 记录信息级别日志
182
+ * @param tag 标签
183
+ * @param message 消息
184
+ * @param error 错误
185
+ */
186
+ info(tag: string, message: string, error?: Error): void;
187
+ /**
188
+ * 记录警告级别日志
189
+ * @param tag 标签
190
+ * @param message 消息
191
+ * @param error 错误
192
+ */
193
+ warn(tag: string, message: string, error?: Error): void;
194
+ /**
195
+ * 记录错误级别日志
196
+ * @param tag 标签
197
+ * @param message 消息
198
+ * @param error 错误
199
+ */
200
+ error(tag: string, message: string, error?: Error): void;
201
+ /**
202
+ * 创建标记了特定标签的日志记录器
203
+ * @param tag 标签
204
+ */
205
+ getTaggedLogger(tag: string): TaggedLogger;
206
+ /**
207
+ * 记录日志
208
+ * @param level 日志级别
209
+ * @param tag 标签
210
+ * @param message 消息
211
+ * @param error 错误
212
+ */
213
+ private log;
214
+ /**
215
+ * 控制台输出
216
+ * @param entry 日志条目
217
+ */
218
+ private consoleOutput;
219
+ /**
220
+ * 获取日志级别值
221
+ * @param level 日志级别
222
+ */
223
+ private getLevelValue;
224
+ /**
225
+ * 设置日志级别
226
+ * @param level 日志级别
227
+ */
228
+ setLevel(level: LogLevel | string): void;
229
+ /**
230
+ * 获取当前日志级别
231
+ * @returns 当前日志级别
232
+ */
233
+ getLevel(): LogLevel;
234
+ }
235
+ /**
236
+ * 带标签的日志记录器
237
+ * 提供特定标签的简易日志接口
238
+ */
239
+ export declare class TaggedLogger {
240
+ /** 所属的主日志记录器 */
241
+ private logger;
242
+ /** 标签 */
243
+ private tag;
244
+ /**
245
+ * 构造函数
246
+ * @param logger 所属的主日志记录器
247
+ * @param tag 标签
248
+ */
249
+ constructor(logger: Logger, tag: string);
250
+ /**
251
+ * 记录调试级别日志
252
+ * @param message 消息
253
+ * @param error 错误
254
+ */
255
+ debug(message: string, error?: Error): void;
256
+ /**
257
+ * 记录信息级别日志
258
+ * @param message 消息
259
+ * @param error 错误
260
+ */
261
+ info(message: string, error?: Error): void;
262
+ /**
263
+ * 记录警告级别日志
264
+ * @param message 消息
265
+ * @param error 错误
266
+ */
267
+ warn(message: string, error?: Error): void;
268
+ /**
269
+ * 记录错误级别日志
270
+ * @param message 消息
271
+ * @param error 错误
272
+ */
273
+ error(message: string, error?: Error): void;
274
+ }
275
+ /**
276
+ * 日志级别枚举
277
+ */
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @file 模块管理器
3
+ * @description 统一管理库的各功能模块,提供模块的注册、初始化和卸载功能
4
+ * @module core/module-manager
5
+ */
6
+ import { EventEmitter } from './event-emitter';
7
+ /**
8
+ * 模块接口
9
+ * 所有功能模块必须实现此接口
10
+ */
11
+ export interface Module {
12
+ /** 模块名称 */
13
+ name: string;
14
+ /** 模块版本 */
15
+ version: string;
16
+ /** 模块是否已初始化 */
17
+ isInitialized: boolean;
18
+ /** 初始化模块 */
19
+ initialize(): Promise<void>;
20
+ /** 释放模块资源 */
21
+ dispose(): Promise<void>;
22
+ }
23
+ /**
24
+ * 模块配置接口
25
+ */
26
+ export interface ModuleOptions {
27
+ /** 是否启用该模块 */
28
+ enabled?: boolean;
29
+ /** 模块特定配置 */
30
+ [key: string]: any;
31
+ }
32
+ /**
33
+ * 模块管理器类
34
+ * 负责管理所有功能模块的生命周期
35
+ */
36
+ export declare class ModuleManager extends EventEmitter {
37
+ private static instance;
38
+ private modules;
39
+ private logger;
40
+ private initialized;
41
+ /**
42
+ * 获取模块管理器单例
43
+ */
44
+ static getInstance(): ModuleManager;
45
+ /**
46
+ * 私有构造函数,确保单例模式
47
+ */
48
+ private constructor();
49
+ /**
50
+ * 注册模块
51
+ * @param module 要注册的模块
52
+ * @returns 模块管理器实例,支持链式调用
53
+ */
54
+ register(module: Module): ModuleManager;
55
+ /**
56
+ * 获取模块
57
+ * @param name 模块名称
58
+ * @returns 模块实例
59
+ */
60
+ getModule<T extends Module>(name: string): T | undefined;
61
+ /**
62
+ * 初始化所有注册的模块
63
+ */
64
+ initialize(): Promise<void>;
65
+ /**
66
+ * 卸载所有模块并释放资源
67
+ */
68
+ dispose(): Promise<void>;
69
+ /**
70
+ * 获取所有已注册的模块名称
71
+ */
72
+ getRegisteredModules(): string[];
73
+ /**
74
+ * 检查模块是否已注册
75
+ * @param name 模块名称
76
+ */
77
+ hasModule(name: string): boolean;
78
+ }
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @file 插件管理器
3
+ * @description 提供插件的注册、初始化和管理功能
4
+ * @module core/plugin-manager
5
+ */
6
+ /// <reference types="node" />
7
+ import { EventEmitter } from 'events';
8
+ import { Logger } from './logger';
9
+ import { ConfigManager } from './config';
10
+ /**
11
+ * 插件优先级枚举
12
+ */
13
+ export declare enum PluginPriority {
14
+ /** 高优先级,最先初始化和激活 */
15
+ HIGH = "high",
16
+ /** 中等优先级 */
17
+ NORMAL = "normal",
18
+ /** 低优先级,最后初始化和激活 */
19
+ LOW = "low"
20
+ }
21
+ /**
22
+ * 插件状态枚举
23
+ */
24
+ export declare enum PluginStatus {
25
+ /** 已注册 */
26
+ REGISTERED = "registered",
27
+ /** 初始化中 */
28
+ INITIALIZING = "initializing",
29
+ /** 已初始化 */
30
+ INITIALIZED = "initialized",
31
+ /** 激活中 */
32
+ ACTIVATING = "activating",
33
+ /** 已激活 */
34
+ ACTIVE = "active",
35
+ /** 已停用 */
36
+ INACTIVE = "inactive",
37
+ /** 错误状态 */
38
+ ERROR = "error"
39
+ }
40
+ /**
41
+ * 插件接口
42
+ */
43
+ export interface Plugin {
44
+ /** 插件ID */
45
+ id: string;
46
+ /** 插件名称 */
47
+ name: string;
48
+ /** 插件版本 */
49
+ version: string;
50
+ /** 插件描述 */
51
+ description?: string;
52
+ /** 插件优先级 */
53
+ priority?: PluginPriority;
54
+ /** 依赖的插件ID列表 */
55
+ dependencies?: string[];
56
+ /** 初始化方法 */
57
+ initialize?: (api: PluginAPI) => Promise<void>;
58
+ /** 激活方法 */
59
+ activate?: (api: PluginAPI) => Promise<void>;
60
+ /** 停用方法 */
61
+ deactivate?: (api: PluginAPI) => Promise<void>;
62
+ }
63
+ /**
64
+ * 插件API接口
65
+ * 提供给插件使用的API
66
+ */
67
+ export interface PluginAPI {
68
+ /** 日志记录器 */
69
+ logger: Logger;
70
+ /** 配置管理器 */
71
+ config: ConfigManager;
72
+ /** 事件发射器 */
73
+ eventBus: EventEmitter;
74
+ /** 获取插件 */
75
+ getPlugin: (id: string) => Plugin | undefined;
76
+ /** 获取所有插件 */
77
+ getAllPlugins: () => Map<string, Plugin>;
78
+ }
79
+ /**
80
+ * 插件管理器
81
+ * 提供插件的注册、初始化和管理功能
82
+ */
83
+ export declare class PluginManager extends EventEmitter {
84
+ /** 单例实例 */
85
+ private static instance;
86
+ /** 日志记录器 */
87
+ private logger;
88
+ /** 配置管理器 */
89
+ private config;
90
+ /** 插件映射表 */
91
+ private plugins;
92
+ /** 插件状态 */
93
+ private pluginStatus;
94
+ /** 插件API */
95
+ private pluginAPI;
96
+ /** 初始化状态 */
97
+ private initialized;
98
+ /**
99
+ * 私有构造函数
100
+ */
101
+ private constructor();
102
+ /**
103
+ * 获取单例实例
104
+ */
105
+ static getInstance(): PluginManager;
106
+ /**
107
+ * 初始化插件管理器
108
+ */
109
+ initialize(): Promise<void>;
110
+ /**
111
+ * 注册插件
112
+ * @param plugin 插件
113
+ */
114
+ registerPlugin(plugin: Plugin): void;
115
+ /**
116
+ * 卸载插件
117
+ * @param id 插件ID
118
+ */
119
+ unregisterPlugin(id: string): boolean;
120
+ /**
121
+ * 初始化插件
122
+ * @param id 插件ID
123
+ */
124
+ initializePlugin(id: string): Promise<boolean>;
125
+ /**
126
+ * 激活插件
127
+ * @param id 插件ID
128
+ */
129
+ activatePlugin(id: string): Promise<boolean>;
130
+ /**
131
+ * 停用插件
132
+ * @param id 插件ID
133
+ */
134
+ deactivatePlugin(id: string): Promise<boolean>;
135
+ /**
136
+ * 获取插件
137
+ * @param id 插件ID
138
+ */
139
+ getPlugin(id: string): Plugin | undefined;
140
+ /**
141
+ * 获取所有插件
142
+ */
143
+ getAllPlugins(): Map<string, Plugin>;
144
+ /**
145
+ * 获取插件状态
146
+ * @param id 插件ID
147
+ */
148
+ getPluginStatus(id: string): PluginStatus | undefined;
149
+ /**
150
+ * 按优先级获取插件
151
+ * @param priority 优先级
152
+ */
153
+ getPluginsByPriority(priority: PluginPriority): Plugin[];
154
+ /**
155
+ * 获取按优先级排序的所有插件
156
+ */
157
+ getSortedPlugins(): Plugin[];
158
+ }