@samlab-corp/sfm-node 0.4.0 → 0.4.1

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.
@@ -4,9 +4,6 @@
4
4
  import { SFM_FLAG } from "../constants/index.js";
5
5
  import type { SfmClient } from "../core/index.js";
6
6
  import type { SystemCommands, CommandResult } from "./system.js";
7
- interface LogOptions {
8
- onLog?: (msg: string) => void;
9
- }
10
7
  export interface EnrollResult {
11
8
  success: boolean;
12
9
  step: number;
@@ -46,26 +43,26 @@ export declare class FingerprintCommands {
46
43
  /**
47
44
  * 등록 스캔 1 - ES 명령 전송 + 0x62 (스캔 성공) + 0x61 (템플릿 1 저장) 수신
48
45
  */
49
- enrollScan1(userId: number, flag?: 0, { onLog }?: LogOptions): Promise<EnrollResult>;
46
+ enrollScan1(userId: number, flag?: 0): Promise<EnrollResult>;
50
47
  /**
51
48
  * 등록 스캔 2 - 0x62 (스캔 성공) + 0x61 (템플릿 2 저장) 수신
52
49
  */
53
- enrollScan2({ onLog }?: LogOptions): Promise<EnrollResult>;
50
+ enrollScan2(): Promise<EnrollResult>;
54
51
  /**
55
52
  * 등록 (현재 ENROLL_MODE 설정에 자동 적응)
56
53
  *
57
54
  * - SCAN1 (0x30): 1회 스캔만
58
55
  * - SCAN2_MERGE (0x31) / SCAN2_DUAL (0x41): 스캔 1 + 스캔 2
59
56
  */
60
- enroll(userId: number, flag?: 0, { onLog }?: LogOptions): Promise<EnrollResult>;
57
+ enroll(userId: number, flag?: 0): Promise<EnrollResult>;
61
58
  /**
62
59
  * 1:1 검증 (VS: 0x08)
63
60
  */
64
- verify(userId: number, { onLog }?: LogOptions): Promise<VerifyResult>;
61
+ verify(userId: number): Promise<VerifyResult>;
65
62
  /**
66
63
  * 1:N 식별 (IS: 0x11)
67
64
  */
68
- identify({ onLog }?: LogOptions): Promise<IdentifyResult>;
65
+ identify(): Promise<IdentifyResult>;
69
66
  /**
70
67
  * 특정 템플릿 삭제 (DT: 0x16)
71
68
  */
@@ -77,7 +74,7 @@ export declare class FingerprintCommands {
77
74
  /**
78
75
  * 등록된 사용자 ID 목록 조회 (LT: 0x18)
79
76
  */
80
- listUserIds({ onLog }?: LogOptions): Promise<ListUserIdsResult>;
77
+ listUserIds(): Promise<ListUserIdsResult>;
81
78
  /**
82
79
  * 디바이스에서 템플릿 읽기 (RTX: 0x89, 핑퐁 프로토콜)
83
80
  *
@@ -87,7 +84,7 @@ export declare class FingerprintCommands {
87
84
  * 흐름: RTX 전송 → 384B 데이터 수신 → ACK (RTX) 전송 → 384B 데이터 수신 → ...
88
85
  * 디바이스 flag: 0x74 (CONTINUE) = 추가 청크 있음, 0x61 (SUCCESS) = 마지막 청크.
89
86
  */
90
- readTemplate(userId: number, { onLog }?: LogOptions): Promise<{
87
+ readTemplate(userId: number): Promise<{
91
88
  success: boolean;
92
89
  templateData: Buffer | null;
93
90
  error: string | null;
@@ -102,7 +99,7 @@ export declare class FingerprintCommands {
102
99
  * Size field = templateData.length (원본 크기 그대로)
103
100
  * 384B 단위 chunk를 각각 별도의 ET 호출로 전송
104
101
  */
105
- writeTemplate(userId: number, templateData: Buffer, flag?: (typeof SFM_FLAG)[keyof typeof SFM_FLAG], { onLog }?: LogOptions): Promise<{
102
+ writeTemplate(userId: number, templateData: Buffer, flag?: (typeof SFM_FLAG)[keyof typeof SFM_FLAG]): Promise<{
106
103
  success: boolean;
107
104
  userId?: number;
108
105
  error: string | null;
@@ -119,7 +116,7 @@ export declare class FingerprintCommands {
119
116
  * 데이터 패킷 헤더(13B) + 데이터 본문(384B) + 데이터 체크섬(4B)
120
117
  * → DATA_OK(0x83) 응답 수신
121
118
  */
122
- writeTemplateMulti(userId: number, templateData: Buffer, flag?: (typeof SFM_FLAG)[keyof typeof SFM_FLAG], { onLog }?: LogOptions): Promise<{
119
+ writeTemplateMulti(userId: number, templateData: Buffer, flag?: (typeof SFM_FLAG)[keyof typeof SFM_FLAG]): Promise<{
123
120
  success: boolean;
124
121
  userId?: number;
125
122
  error: string | null;
@@ -127,6 +124,6 @@ export declare class FingerprintCommands {
127
124
  /**
128
125
  * 지문 이미지 캡처 (SI: 0x15)
129
126
  */
130
- captureImage({ onLog }?: LogOptions): Promise<CaptureImageResult>;
127
+ captureImage(): Promise<CaptureImageResult>;
131
128
  }
132
129
  //# sourceMappingURL=fingerprint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/commands/fingerprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/commands/fingerprint.ts"],"names":[],"mappings":"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"}
@@ -18,16 +18,11 @@ class FingerprintCommands {
18
18
  /**
19
19
  * 등록 스캔 1 - ES 명령 전송 + 0x62 (스캔 성공) + 0x61 (템플릿 1 저장) 수신
20
20
  */
21
- async enrollScan1(userId, flag = index_js_1.SFM_FLAG.NONE, { onLog } = {}) {
21
+ async enrollScan1(userId, flag = index_js_1.SFM_FLAG.NONE) {
22
22
  if (userId == null) {
23
23
  return { success: false, step: 1, error: "userId is required" };
24
24
  }
25
- const log = (msg) => {
26
- onLog?.(msg);
27
- };
28
- log(`[ENROLL] 스캔 1 시작 - userId: ${userId}`);
29
25
  const response = await this.client.sendCommand(index_js_1.SFM_CMD.ES, userId, 0, flag);
30
- log(`[ENROLL] 응답: flag=0x${response.flag?.toString(16)}, param=${response.param}, valid=${response.valid}`);
31
26
  if (!response.valid) {
32
27
  return { success: false, step: 1, error: response.error || "unknown error" };
33
28
  }
@@ -38,9 +33,7 @@ class FingerprintCommands {
38
33
  error: `스캔 1 실패: 0x${response.flag?.toString(16) ?? "??"}`,
39
34
  };
40
35
  }
41
- log(`[ENROLL] 스캔 1 성공 (0x62), 템플릿 저장 대기 중...`);
42
36
  const saveResponse = await this.client.receiveResponse(this.client.commandTimeout);
43
- log(`[ENROLL] 저장 1 응답: flag=0x${saveResponse.flag?.toString(16)}, valid=${saveResponse.valid}`);
44
37
  if (!saveResponse.valid || saveResponse.flag !== index_js_1.SFM_ERROR.SUCCESS) {
45
38
  return {
46
39
  success: false,
@@ -49,19 +42,13 @@ class FingerprintCommands {
49
42
  `저장 1 실패: 0x${saveResponse.flag?.toString(16)}`,
50
43
  };
51
44
  }
52
- log(`[ENROLL] 템플릿 1 저장 완료`);
53
45
  return { success: true, step: 1, userId: saveResponse.param ?? 0 };
54
46
  }
55
47
  /**
56
48
  * 등록 스캔 2 - 0x62 (스캔 성공) + 0x61 (템플릿 2 저장) 수신
57
49
  */
58
- async enrollScan2({ onLog } = {}) {
59
- const log = (msg) => {
60
- onLog?.(msg);
61
- };
62
- log(`[ENROLL] 스캔 2 대기 중...`);
50
+ async enrollScan2() {
63
51
  const scanResponse = await this.client.receiveResponse(this.client.commandTimeout);
64
- log(`[ENROLL] 스캔 2 응답: flag=0x${scanResponse.flag?.toString(16)}, valid=${scanResponse.valid}`);
65
52
  if (!scanResponse.valid) {
66
53
  return { success: false, step: 2, error: scanResponse.error || "unknown error" };
67
54
  }
@@ -72,9 +59,7 @@ class FingerprintCommands {
72
59
  error: `스캔 2 실패: 0x${scanResponse.flag?.toString(16) ?? "??"}`,
73
60
  };
74
61
  }
75
- log(`[ENROLL] 스캔 2 성공 (0x62), 템플릿 저장 대기 중...`);
76
62
  const saveResponse = await this.client.receiveResponse(this.client.commandTimeout);
77
- log(`[ENROLL] 저장 2 응답: flag=0x${saveResponse.flag?.toString(16)}, valid=${saveResponse.valid}`);
78
63
  if (!saveResponse.valid || saveResponse.flag !== index_js_1.SFM_ERROR.SUCCESS) {
79
64
  return {
80
65
  success: false,
@@ -83,7 +68,6 @@ class FingerprintCommands {
83
68
  `저장 2 실패: 0x${saveResponse.flag?.toString(16)}`,
84
69
  };
85
70
  }
86
- log(`[ENROLL] 템플릿 2 저장 완료 - 등록 완료`);
87
71
  return { success: true, step: 2, userId: saveResponse.param ?? 0 };
88
72
  }
89
73
  /**
@@ -92,53 +76,41 @@ class FingerprintCommands {
92
76
  * - SCAN1 (0x30): 1회 스캔만
93
77
  * - SCAN2_MERGE (0x31) / SCAN2_DUAL (0x41): 스캔 1 + 스캔 2
94
78
  */
95
- async enroll(userId, flag = index_js_1.SFM_FLAG.NONE, { onLog } = {}) {
96
- const log = (msg) => {
97
- onLog?.(msg);
98
- };
79
+ async enroll(userId, flag = index_js_1.SFM_FLAG.NONE) {
99
80
  // 디바이스에서 현재 ENROLL_MODE 읽기
100
81
  let enrollMode = 0x31; // 기본값: SCAN2_MERGE
101
82
  if (this.system) {
102
83
  const param = await this.system.getParam("ENROLL_MODE");
103
84
  if (!param.error && param.value != null) {
104
85
  enrollMode = param.value;
105
- log(`[ENROLL] ENROLL_MODE: 0x${enrollMode.toString(16)}`);
106
86
  }
107
87
  }
108
- const result1 = await this.enrollScan1(userId, flag, { onLog });
88
+ const result1 = await this.enrollScan1(userId, flag);
109
89
  if (!result1.success)
110
90
  return result1;
111
91
  // SCAN1 모드: 1회 스캔으로 충분
112
92
  if (enrollMode === 0x30) {
113
- log("[ENROLL] SCAN1 모드 — 등록 완료");
114
93
  return result1;
115
94
  }
116
95
  // SCAN2_MERGE / SCAN2_DUAL: 2차 스캔 필요
117
- return this.enrollScan2({ onLog });
96
+ return this.enrollScan2();
118
97
  }
119
98
  /**
120
99
  * 1:1 검증 (VS: 0x08)
121
100
  */
122
- async verify(userId, { onLog } = {}) {
101
+ async verify(userId) {
123
102
  if (userId == null) {
124
103
  return { success: false, error: "userId is required" };
125
104
  }
126
- const log = (msg) => {
127
- onLog?.(msg);
128
- };
129
- log(`[VERIFY] 1:1 검증 시작 - userId: ${userId}`);
130
105
  const response = await this.client.sendCommand(index_js_1.SFM_CMD.VS, userId, 0, 0);
131
- log(`[VERIFY] 응답: flag=0x${response.flag?.toString(16)}, param=${response.param}, valid=${response.valid}`);
132
106
  if (!response.valid) {
133
107
  return { success: false, error: response.error || "unknown error" };
134
108
  }
135
109
  let lastResponse = response;
136
110
  let scanCount = 1;
137
111
  while (lastResponse.flag === index_js_1.SFM_ERROR.SCAN_SUCCESS) {
138
- log(`[VERIFY] 스캔 #${scanCount} 성공 (0x62), 매칭 대기 중...`);
139
112
  lastResponse = await this.client.receiveResponse(this.client.commandTimeout);
140
113
  scanCount++;
141
- log(`[VERIFY] 응답 #${scanCount}: flag=0x${lastResponse.flag?.toString(16)}, param=${lastResponse.param}, valid=${lastResponse.valid}`);
142
114
  if (!lastResponse.valid) {
143
115
  return { success: false, error: lastResponse.error || "unknown error" };
144
116
  }
@@ -154,23 +126,16 @@ class FingerprintCommands {
154
126
  /**
155
127
  * 1:N 식별 (IS: 0x11)
156
128
  */
157
- async identify({ onLog } = {}) {
158
- const log = (msg) => {
159
- onLog?.(msg);
160
- };
161
- log(`[IDENTIFY] 1:N 식별 시작`);
129
+ async identify() {
162
130
  const response = await this.client.sendCommand(index_js_1.SFM_CMD.IS, 0, 0, 0);
163
- log(`[IDENTIFY] 응답: flag=0x${response.flag?.toString(16)}, param=${response.param}, valid=${response.valid}`);
164
131
  if (!response.valid) {
165
132
  return { success: false, userId: 0, error: response.error || "unknown error" };
166
133
  }
167
134
  let lastResponse = response;
168
135
  let scanCount = 1;
169
136
  while (lastResponse.flag === index_js_1.SFM_ERROR.SCAN_SUCCESS) {
170
- log(`[IDENTIFY] 스캔 #${scanCount} 성공 (0x62), 매칭 대기 중...`);
171
137
  lastResponse = await this.client.receiveResponse(this.client.commandTimeout);
172
138
  scanCount++;
173
- log(`[IDENTIFY] 응답 #${scanCount}: flag=0x${lastResponse.flag?.toString(16)}, param=${lastResponse.param}, valid=${lastResponse.valid}`);
174
139
  if (!lastResponse.valid) {
175
140
  return { success: false, userId: 0, error: lastResponse.error || "unknown error" };
176
141
  }
@@ -217,11 +182,7 @@ class FingerprintCommands {
217
182
  /**
218
183
  * 등록된 사용자 ID 목록 조회 (LT: 0x18)
219
184
  */
220
- async listUserIds({ onLog } = {}) {
221
- const log = (msg) => {
222
- onLog?.(msg);
223
- };
224
- log("[LIST] 사용자 ID 목록 조회 중");
185
+ async listUserIds() {
225
186
  const response = await this.client.sendCommand(index_js_1.SFM_CMD.LT, 0, 0, 0);
226
187
  if (!response.valid) {
227
188
  return { success: false, userIds: [], count: 0, error: response.error || "unknown error" };
@@ -236,7 +197,6 @@ class FingerprintCommands {
236
197
  }
237
198
  const count = response.param ?? 0;
238
199
  const dataSize = response.size ?? 0;
239
- log(`[LIST] 등록 사용자: ${count}, 데이터 크기: ${dataSize}`);
240
200
  if (count === 0 || dataSize === 0) {
241
201
  return { success: true, userIds: [], count: 0, error: null };
242
202
  }
@@ -244,13 +204,11 @@ class FingerprintCommands {
244
204
  if (rawData.length < dataSize) {
245
205
  return { success: false, userIds: [], count: 0, error: `불완전한 데이터: ${rawData.length}/${dataSize} 바이트 수신` };
246
206
  }
247
- log(`[LIST] 원시 데이터 (hex): ${Buffer.from(rawData).toString("hex").match(/../g)?.join(" ") ?? ""}`);
248
207
  const allIds = [];
249
208
  for (let i = 0; i + 4 <= rawData.length; i += 4) {
250
209
  allIds.push(rawData.readUInt32LE(i));
251
210
  }
252
211
  const userIds = [...new Set(allIds)];
253
- log(`[LIST] 템플릿: ${count}, 고유 사용자: ${userIds.length}, ID: [${userIds.join(", ")}]`);
254
212
  return { success: true, userIds, count, error: null };
255
213
  }
256
214
  /**
@@ -262,17 +220,11 @@ class FingerprintCommands {
262
220
  * 흐름: RTX 전송 → 384B 데이터 수신 → ACK (RTX) 전송 → 384B 데이터 수신 → ...
263
221
  * 디바이스 flag: 0x74 (CONTINUE) = 추가 청크 있음, 0x61 (SUCCESS) = 마지막 청크.
264
222
  */
265
- async readTemplate(userId, { onLog } = {}) {
223
+ async readTemplate(userId) {
266
224
  if (userId == null) {
267
225
  return { success: false, templateData: null, error: "userId is required" };
268
226
  }
269
- const log = (msg) => {
270
- onLog?.(msg);
271
- };
272
- // Flag=0: 해당 userId의 모든 템플릿 읽기
273
- log(`[RTX] userId: ${userId} 템플릿 읽기`);
274
227
  const response = await this.client.sendCommand(index_js_1.SFM_CMD.RTX, userId, 384, 0);
275
- log(`[RTX] 응답: flag=0x${response.flag?.toString(16)}, param=${response.param}, size=${response.size}, valid=${response.valid}`);
276
228
  if (!response.valid) {
277
229
  return { success: false, templateData: null, error: response.error || "unknown error" };
278
230
  }
@@ -287,7 +239,6 @@ class FingerprintCommands {
287
239
  const rawSize = response.size ?? 0;
288
240
  const templateCount = (rawSize >>> 16) & 0xffff;
289
241
  const templateSize = rawSize & 0xffff;
290
- log(`[RTX] templateCount=${templateCount}, templateSize=${templateSize}B`);
291
242
  if (templateSize === 0) {
292
243
  return { success: false, templateData: null, error: "템플릿 데이터 없음 (size=0)" };
293
244
  }
@@ -298,12 +249,10 @@ class FingerprintCommands {
298
249
  return { success: false, templateData: null, error: `비정상적인 청크 수: ${totalChunks} (최대 ${MAX_TEMPLATE_CHUNKS})` };
299
250
  }
300
251
  for (let i = 0; i < totalChunks; i++) {
301
- log(`[RTX] 청크 ${i + 1}/${totalChunks} 수신 중...`);
302
252
  const readTimeout = Math.max(this.client.commandTimeout, Math.ceil(templateSize / 100) + 5000);
303
253
  // 확장 데이터 전송 프로토콜:
304
254
  // 데이터 패킷 헤더(13B) + 데이터 본문(templateSize) + 데이터 체크섬(4B)
305
255
  const dataPacketHeader = await this.client.serial.read(13, readTimeout);
306
- log(`[RTX] 데이터 패킷 헤더: ${Buffer.from(dataPacketHeader).toString("hex")}`);
307
256
  const chunkData = await this.client.serial.read(templateSize, readTimeout);
308
257
  if (!chunkData || chunkData.length < templateSize) {
309
258
  return {
@@ -320,7 +269,6 @@ class FingerprintCommands {
320
269
  calculatedChecksum += chunkData[j];
321
270
  }
322
271
  calculatedChecksum = calculatedChecksum >>> 0;
323
- log(`[RTX] 청크 ${i + 1} 수신: ${chunkData.length}B, 체크섬: received=0x${receivedChecksum.toString(16)}, calculated=0x${calculatedChecksum.toString(16)}`);
324
272
  if (receivedChecksum !== calculatedChecksum) {
325
273
  return {
326
274
  success: false,
@@ -331,13 +279,10 @@ class FingerprintCommands {
331
279
  chunks.push(chunkData.subarray(0, templateSize));
332
280
  // DATA_OK(0x83) ACK 전송하여 다음 데이터 패킷 트리거
333
281
  const DATA_OK = 0x83;
334
- log(`[RTX] DATA_OK ACK 전송 중...`);
335
282
  const ackPacket = (0, packet_js_1.buildNormalPacket)(index_js_1.SFM_CMD.RTX, 0, 0, DATA_OK);
336
283
  await this.client._writePacket(ackPacket);
337
- log(`[RTX] ACK 전송: ${Buffer.from(ackPacket).toString("hex")}`);
338
284
  }
339
285
  const templateData = Buffer.concat(chunks);
340
- log(`[RTX] 템플릿 수신 완료: ${templateData.length}B (${chunks.length}개 청크)`);
341
286
  return { success: true, templateData, error: null };
342
287
  }
343
288
  /**
@@ -350,40 +295,32 @@ class FingerprintCommands {
350
295
  * Size field = templateData.length (원본 크기 그대로)
351
296
  * 384B 단위 chunk를 각각 별도의 ET 호출로 전송
352
297
  */
353
- async writeTemplate(userId, templateData, flag = index_js_1.SFM_FLAG.ADD_NEW, { onLog } = {}) {
298
+ async writeTemplate(userId, templateData, flag = index_js_1.SFM_FLAG.ADD_NEW) {
354
299
  if (userId == null) {
355
300
  return { success: false, error: "userId is required" };
356
301
  }
357
- const log = (msg) => {
358
- onLog?.(msg);
359
- };
360
302
  const CHUNK = 384;
361
303
  const totalSize = templateData.length;
362
304
  const chunkCount = Math.ceil(totalSize / CHUNK);
363
- log(`[ET] userId: ${userId} 템플릿 쓰기, totalSize: ${totalSize}B, chunks: ${chunkCount}`);
364
305
  let lastResponseParam = userId;
365
306
  for (let i = 0; i < chunkCount; i++) {
366
307
  const offset = i * CHUNK;
367
308
  const currentChunkSize = Math.min(CHUNK, totalSize - offset);
368
309
  const chunkData = templateData.subarray(offset, offset + currentChunkSize);
369
- log(`[ET] 청크 ${i + 1}/${chunkCount} 전송: ${currentChunkSize}B`);
370
310
  // 명령 패킷 생성 (13B)
371
311
  const cmdPacket = (0, packet_js_1.buildNormalPacket)(index_js_1.SFM_CMD.ET, userId, currentChunkSize, flag);
372
312
  // ET 프로토콜: [Command 13B] + [Template Data] + [END 0x0A]
373
313
  const endByte = Buffer.from([0x0a]);
374
314
  const combined = Buffer.concat([cmdPacket, chunkData, endByte]);
375
- log(`[ET] 패킷: ${Buffer.from(combined).toString("hex")}`);
376
315
  await this.client.serial.write(combined);
377
316
  // ET는 2개 응답을 수신
378
317
  // 응답 1: 처리 중간 응답
379
318
  const response1 = await this.client.receiveResponse(this.client.commandTimeout);
380
- log(`[ET] 응답 1: flag=0x${response1.flag?.toString(16)}, param=${response1.param}, valid=${response1.valid}`);
381
319
  if (!response1.valid) {
382
320
  return { success: false, error: `ET 청크 ${i + 1} 응답 1 무효: ${response1.error}` };
383
321
  }
384
322
  // 응답 2: 최종 결과
385
323
  const response2 = await this.client.receiveResponse(this.client.commandTimeout);
386
- log(`[ET] 응답 2: flag=0x${response2.flag?.toString(16)}, param=${response2.param}, valid=${response2.valid}`);
387
324
  if (!response2.valid) {
388
325
  return { success: false, error: `ET 청크 ${i + 1} 응답 2 무효: ${response2.error}` };
389
326
  }
@@ -394,9 +331,7 @@ class FingerprintCommands {
394
331
  };
395
332
  }
396
333
  lastResponseParam = response2.param ?? userId;
397
- log(`[ET] 청크 ${i + 1}/${chunkCount} 등록 성공`);
398
334
  }
399
- log(`[ET] 템플릿 쓰기 성공 (${chunkCount}개 청크, ${totalSize}B)`);
400
335
  return { success: true, userId: lastResponseParam, error: null };
401
336
  }
402
337
  /**
@@ -411,13 +346,10 @@ class FingerprintCommands {
411
346
  * 데이터 패킷 헤더(13B) + 데이터 본문(384B) + 데이터 체크섬(4B)
412
347
  * → DATA_OK(0x83) 응답 수신
413
348
  */
414
- async writeTemplateMulti(userId, templateData, flag = index_js_1.SFM_FLAG.NONE, { onLog } = {}) {
349
+ async writeTemplateMulti(userId, templateData, flag = index_js_1.SFM_FLAG.NONE) {
415
350
  if (userId == null) {
416
351
  return { success: false, error: "userId is required" };
417
352
  }
418
- const log = (msg) => {
419
- onLog?.(msg);
420
- };
421
353
  const CHUNK = 384;
422
354
  const totalSize = templateData.length;
423
355
  const templateCount = Math.ceil(totalSize / CHUNK);
@@ -428,10 +360,8 @@ class FingerprintCommands {
428
360
  // ETX Size: (templateCount << 24) | (enrollCount << 16) | chunkSize
429
361
  // enrollCount=1: 각 템플릿을 1번씩만 저장
430
362
  const sizeField = (templateCount << 24) | (1 << 16) | chunkSize;
431
- log(`[ETX] userId: ${userId} 템플릿 쓰기, totalSize: ${totalSize}B, chunks: ${templateCount}, sizeField=0x${sizeField.toString(16)}`);
432
363
  // 1단계: ETX 명령 패킷 전송 + SUCCESS(0x61) 응답 대기
433
364
  const cmdResponse = await this.client.sendCommand(index_js_1.SFM_CMD.ETX, userId, sizeField, flag);
434
- log(`[ETX] 명령 응답: flag=0x${cmdResponse.flag?.toString(16)}, param=${cmdResponse.param}, valid=${cmdResponse.valid}`);
435
365
  if (!cmdResponse.valid) {
436
366
  return { success: false, error: cmdResponse.error || "unknown error" };
437
367
  }
@@ -458,11 +388,9 @@ class FingerprintCommands {
458
388
  const checksumBuf = Buffer.alloc(4);
459
389
  checksumBuf.writeUInt32LE(checksum >>> 0, 0);
460
390
  const combined = Buffer.concat([dataHeader, chunkData, checksumBuf]);
461
- log(`[ETX] 청크 ${i + 1}/${templateCount} 전송: ${combined.length}B (header:13 + data:${currentChunkSize} + checksum:4, checksum=${checksum})`);
462
391
  await this.client.serial.write(combined);
463
392
  // DATA_OK(0x83) 응답 대기
464
393
  const ackResponse = await this.client.receiveResponse(this.client.commandTimeout);
465
- log(`[ETX] 청크 ${i + 1} ACK: flag=0x${ackResponse.flag?.toString(16)}, param=${ackResponse.param}, valid=${ackResponse.valid}`);
466
394
  if (!ackResponse.valid) {
467
395
  return { success: false, error: `청크 ${i + 1} ACK 무효: ${ackResponse.error}` };
468
396
  }
@@ -473,7 +401,6 @@ class FingerprintCommands {
473
401
  };
474
402
  }
475
403
  }
476
- log(`[ETX] 템플릿 쓰기 성공 (${templateCount}개 청크, ${totalSize}B)`);
477
404
  // 디바이스의 잔여 응답 소진 (예: 쓰기 후 SCAN_SUCCESS)
478
405
  await new Promise((r) => setTimeout(r, 100));
479
406
  await this.client.serial.purgeRX();
@@ -482,13 +409,8 @@ class FingerprintCommands {
482
409
  /**
483
410
  * 지문 이미지 캡처 (SI: 0x15)
484
411
  */
485
- async captureImage({ onLog } = {}) {
486
- const log = (msg) => {
487
- onLog?.(msg);
488
- };
489
- log("[CAPTURE] 지문 스캔 시작 (SI: 0x15)");
412
+ async captureImage() {
490
413
  const siResponse = await this.client.sendCommand(index_js_1.SFM_CMD.SI, 0, 0, 0);
491
- log(`[CAPTURE] SI 응답: flag=0x${siResponse.flag?.toString(16)}, param=${siResponse.param}, size=${siResponse.size}, valid=${siResponse.valid}`);
492
414
  if (!siResponse.valid) {
493
415
  return {
494
416
  success: false,
@@ -500,9 +422,7 @@ class FingerprintCommands {
500
422
  }
501
423
  let lastResponse = siResponse;
502
424
  while (lastResponse.flag === index_js_1.SFM_ERROR.SCAN_SUCCESS) {
503
- log("[CAPTURE] 스캔 성공 (0x62), 다음 응답 대기 중...");
504
425
  lastResponse = await this.client.receiveResponse(this.client.commandTimeout);
505
- log(`[CAPTURE] 응답: flag=0x${lastResponse.flag?.toString(16)}, param=${lastResponse.param}, size=${lastResponse.size}, valid=${lastResponse.valid}`);
506
426
  if (!lastResponse.valid) {
507
427
  return {
508
428
  success: false,
@@ -523,7 +443,6 @@ class FingerprintCommands {
523
443
  };
524
444
  }
525
445
  const imageSize = lastResponse.size ?? 0;
526
- log(`[CAPTURE] SI 최종: param=0x${((lastResponse.param ?? 0) >>> 0).toString(16)}, size=${imageSize}`);
527
446
  if (imageSize === 0) {
528
447
  return {
529
448
  success: false,
@@ -533,7 +452,6 @@ class FingerprintCommands {
533
452
  error: "이미지 데이터 없음 (size=0)",
534
453
  };
535
454
  }
536
- log(`[CAPTURE] 이미지 데이터 수신: ${imageSize}B`);
537
455
  const readTimeout = Math.max(this.client.commandTimeout, Math.ceil(imageSize / 100) + 5000);
538
456
  const imageData = await this.client.serial.read(imageSize, readTimeout);
539
457
  if (!imageData || imageData.length < imageSize) {
@@ -545,7 +463,6 @@ class FingerprintCommands {
545
463
  error: `불완전한 읽기: ${imageData?.length ?? 0}/${imageSize}B`,
546
464
  };
547
465
  }
548
- log(`[CAPTURE] 이미지 수신 완료: ${imageData.length}B`);
549
466
  const sqrt = Math.sqrt(imageSize);
550
467
  let width, height;
551
468
  if (Number.isInteger(sqrt)) {
@@ -576,7 +493,6 @@ class FingerprintCommands {
576
493
  }
577
494
  }
578
495
  }
579
- log(`[CAPTURE] 이미지 해상도: ${width}x${height} (${width * height} vs ${imageSize})`);
580
496
  return { success: true, imageData, width, height, error: null };
581
497
  }
582
498
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/commands/fingerprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/commands/fingerprint.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,15 @@
3
3
  *
4
4
  * FreeScan 모드에서 디바이스는 자동으로 지문을 스캔하고
5
5
  * IS(0x11) 응답 패킷을 전송한다.
6
+ *
7
+ * ## 주의: 시리얼 포트 점유
8
+ *
9
+ * FreeScan이 활성화되면 시리얼 포트의 `data` 이벤트에 자체 리스너를 등록하여
10
+ * 디바이스가 보내는 모든 데이터를 직접 수신·파싱한다.
11
+ * 이 상태에서 다른 명령(enroll, verify 등)을 실행하면
12
+ * 응답 패킷이 FreeScan 리스너와 SfmClient 양쪽에서 경합하여 통신이 꼬일 수 있다.
13
+ *
14
+ * 따라서 다른 명령을 실행하려면 반드시 `stop()` → 명령 실행 → `start()` 순서로 사용해야 한다.
6
15
  */
7
16
  import type { SfmClient } from "../core/index.js";
8
17
  import type { SystemCommands } from "./system.js";
@@ -11,8 +20,7 @@ export interface FreeScanResult {
11
20
  userId?: number;
12
21
  flag?: number;
13
22
  }
14
- export type FreeScanCallback = (result: FreeScanResult) => void;
15
- export type FreeScanDataHandler = (data: Buffer) => void;
23
+ export type FreeScanDataHandler = (result: FreeScanResult) => void;
16
24
  export type FreeScanErrorHandler = (error?: Error) => void;
17
25
  export declare class FreeScanCommands {
18
26
  private client;
@@ -21,8 +29,6 @@ export declare class FreeScanCommands {
21
29
  private dataHandler;
22
30
  private errorHandler;
23
31
  private buffer;
24
- private callback;
25
- private logFn;
26
32
  private externalDataHandler;
27
33
  private externalErrorHandler;
28
34
  constructor(client: SfmClient);
@@ -45,10 +51,10 @@ export declare class FreeScanCommands {
45
51
  isDeviceFreeScanActive(): Promise<boolean>;
46
52
  /**
47
53
  * FreeScan 시작
48
- * @param onResult 식별 결과 콜백
49
- * @param onLog 로그 콜백 (선택)
54
+ *
55
+ * 결과 수신은 onDataHandler()로 별도 등록한다.
50
56
  */
51
- start(onResult: FreeScanCallback, onLog?: (msg: string) => void): Promise<{
57
+ start(): Promise<{
52
58
  success: boolean;
53
59
  message: string;
54
60
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"freescan.d.ts","sourceRoot":"","sources":["../../src/commands/freescan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAE3D,qBAAa,gBAAgB;IAWf,OAAO,CAAC,MAAM;IAV1B,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,oBAAoB,CAAqC;gBAE7C,MAAM,EAAE,SAAS;IAErC,qCAAqC;IACrC,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIhD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gCAAgC;IAChC,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAIjD,oBAAoB;IACpB,cAAc,IAAI,IAAI;IAItB,+BAA+B;IAC/B,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAInD,mBAAmB;IACnB,eAAe,IAAI,IAAI;IAIvB,gCAAgC;IAChC,OAAO,CAAC,OAAO;IAsBf;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC;IAOhD;;;;OAIG;IACG,KAAK,CACT,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC5B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAoEjD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB5D;;;OAGG;IACH,OAAO,CAAC,UAAU;CAiDnB"}
1
+ {"version":3,"file":"freescan.d.ts","sourceRoot":"","sources":["../../src/commands/freescan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;AACnE,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAE3D,qBAAa,gBAAgB;IASf,OAAO,CAAC,MAAM;IAR1B,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,oBAAoB,CAAqC;gBAE7C,MAAM,EAAE,SAAS;IAErC,qCAAqC;IACrC,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIhD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gCAAgC;IAChC,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAIjD,oBAAoB;IACpB,cAAc,IAAI,IAAI;IAItB,+BAA+B;IAC/B,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAInD,mBAAmB;IACnB,eAAe,IAAI,IAAI;IAIvB,gCAAgC;IAChC,OAAO,CAAC,OAAO;IAoBf;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC;IAShD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAyD7D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D;;;OAGG;IACH,OAAO,CAAC,UAAU;CA6CnB"}
@@ -4,6 +4,15 @@
4
4
  *
5
5
  * FreeScan 모드에서 디바이스는 자동으로 지문을 스캔하고
6
6
  * IS(0x11) 응답 패킷을 전송한다.
7
+ *
8
+ * ## 주의: 시리얼 포트 점유
9
+ *
10
+ * FreeScan이 활성화되면 시리얼 포트의 `data` 이벤트에 자체 리스너를 등록하여
11
+ * 디바이스가 보내는 모든 데이터를 직접 수신·파싱한다.
12
+ * 이 상태에서 다른 명령(enroll, verify 등)을 실행하면
13
+ * 응답 패킷이 FreeScan 리스너와 SfmClient 양쪽에서 경합하여 통신이 꼬일 수 있다.
14
+ *
15
+ * 따라서 다른 명령을 실행하려면 반드시 `stop()` → 명령 실행 → `start()` 순서로 사용해야 한다.
7
16
  */
8
17
  Object.defineProperty(exports, "__esModule", { value: true });
9
18
  exports.FreeScanCommands = void 0;
@@ -17,8 +26,6 @@ class FreeScanCommands {
17
26
  this.dataHandler = null;
18
27
  this.errorHandler = null;
19
28
  this.buffer = Buffer.alloc(0);
20
- this.callback = null;
21
- this.logFn = null;
22
29
  this.externalDataHandler = null;
23
30
  this.externalErrorHandler = null;
24
31
  }
@@ -65,8 +72,6 @@ class FreeScanCommands {
65
72
  this.errorHandler = null;
66
73
  this.running = false;
67
74
  this.buffer = Buffer.alloc(0);
68
- this.callback = null;
69
- this.logFn = null;
70
75
  }
71
76
  /**
72
77
  * 디바이스 FreeScan 파라미터(0x84)가 활성화 상태인지 확인
@@ -80,38 +85,28 @@ class FreeScanCommands {
80
85
  }
81
86
  /**
82
87
  * FreeScan 시작
83
- * @param onResult 식별 결과 콜백
84
- * @param onLog 로그 콜백 (선택)
88
+ *
89
+ * 결과 수신은 onDataHandler()로 별도 등록한다.
85
90
  */
86
- async start(onResult, onLog) {
91
+ async start() {
87
92
  if (!this.system)
88
93
  throw new Error("SystemCommands not initialized");
89
94
  // running 플래그가 true이지만 디바이스가 OFF인 경우 (잔존 상태) → 정리
90
95
  if (this.running) {
91
96
  const deviceActive = await this.isDeviceFreeScanActive();
92
97
  if (!deviceActive) {
93
- onLog?.("[FreeScan] 잔존 상태 감지 — 정리 후 재시작");
94
98
  this.cleanup();
95
99
  }
96
100
  else {
97
101
  return { success: false, message: "이미 실행 중" };
98
102
  }
99
103
  }
100
- const log = (msg) => {
101
- onLog?.(msg);
102
- };
103
- this.logFn = log;
104
- this.callback = onResult;
105
- log("[FreeScan] Auto Response 활성화 중...");
106
104
  const arResult = await this.system.setParam("AUTO_RESPONSE", "HOST");
107
105
  if (!arResult.success) {
108
- log(`[FreeScan] Auto Response 설정 실패: ${JSON.stringify(arResult)}`);
109
106
  return { success: false, message: "Auto Response 설정 실패" };
110
107
  }
111
- log("[FreeScan] FreeScan 활성화 중...");
112
108
  const fsResult = await this.system.setParam("FREE_SCAN", "ON");
113
109
  if (!fsResult.success) {
114
- log(`[FreeScan] 활성화 실패: ${JSON.stringify(fsResult)}`);
115
110
  return { success: false, message: "FreeScan 설정 실패" };
116
111
  }
117
112
  if (!this.client.serial?.port) {
@@ -127,20 +122,20 @@ class FreeScanCommands {
127
122
  this.client.serial.port.removeListener("error", this.errorHandler);
128
123
  this.client.serial.port.removeListener("close", this.errorHandler);
129
124
  }
130
- // 시리얼 포트 이벤트 리스닝
125
+ // 시리얼 포트의 data 이벤트에 자체 리스너를 등록하여
126
+ // 디바이스가 보내는 IS(0x11) 응답 패킷을 직접 수신한다.
127
+ // ⚠️ 이 리스너가 활성화된 동안에는 SfmClient의 일반 명령(sendCommand 등)과
128
+ // 데이터가 경합하므로, 다른 명령 실행 전 반드시 stop()을 호출해야 한다.
131
129
  this.dataHandler = (data) => {
132
- this.externalDataHandler?.(data);
133
130
  this.handleData(data);
134
131
  };
135
132
  this.errorHandler = (err) => {
136
- this.logFn?.("[FreeScan] 포트 에러/종료 감지 — 자동 정리");
137
133
  this.externalErrorHandler?.(err);
138
134
  this.cleanup();
139
135
  };
140
136
  this.client.serial.port.on("data", this.dataHandler);
141
137
  this.client.serial.port.on("error", this.errorHandler);
142
138
  this.client.serial.port.on("close", this.errorHandler);
143
- log("[FreeScan] FreeScan ON — 시리얼 데이터 이벤트 리스닝 시작");
144
139
  return { success: true, message: "FreeScan 활성화됨" };
145
140
  }
146
141
  /**
@@ -149,13 +144,9 @@ class FreeScanCommands {
149
144
  async stop() {
150
145
  if (!this.system)
151
146
  throw new Error("SystemCommands not initialized");
152
- const log = this.logFn || (() => { });
153
- log("[FreeScan] FreeScan 비활성화 중...");
154
147
  await this.system.setParam("FREE_SCAN", "OFF");
155
- log("[FreeScan] Auto Response 비활성화 중...");
156
148
  await this.system.setParam("AUTO_RESPONSE", "OFF");
157
149
  this.cleanup();
158
- log("[FreeScan] FreeScan OFF");
159
150
  return { success: true, message: "FreeScan 비활성화됨" };
160
151
  }
161
152
  /**
@@ -164,8 +155,6 @@ class FreeScanCommands {
164
155
  */
165
156
  handleData(data) {
166
157
  try {
167
- const hex = Buffer.from(data).toString("hex").match(/../g)?.join(" ") || "";
168
- this.logFn?.(`[FreeScan RX] +${data.length}B | ${hex}`);
169
158
  this.buffer = Buffer.concat([this.buffer, data]);
170
159
  while (this.buffer.length >= index_js_1.PACKET_SIZE.NORMAL) {
171
160
  const startIdx = this.buffer.indexOf(index_js_1.START_CODE.NORMAL);
@@ -188,24 +177,23 @@ class FreeScanCommands {
188
177
  const flag = parsed.flag;
189
178
  const userId = parsed.param;
190
179
  if (flag === index_js_1.SFM_ERROR.SUCCESS) {
191
- this.logFn?.(`[FreeScan] 식별 성공! UserID: ${userId}`);
192
- this.callback?.({ success: true, userId });
180
+ const result = { success: true, userId };
181
+ this.externalDataHandler?.(result);
193
182
  }
194
183
  else if (flag === index_js_1.SFM_ERROR.NOT_FOUND) {
195
- this.logFn?.("[FreeScan] 미등록 지문");
196
- this.callback?.({ success: false, flag });
184
+ const result = { success: false, flag };
185
+ this.externalDataHandler?.(result);
197
186
  }
198
187
  else if (flag === index_js_1.SFM_ERROR.SCAN_SUCCESS) {
199
- this.logFn?.("[FreeScan] 지문 스캔 완료, 매칭 중...");
188
+ // 스캔 완료, 매칭 대기
200
189
  }
201
190
  else {
202
- this.logFn?.(`[FreeScan] 알 수 없는 응답: flag=0x${flag?.toString(16) ?? "??"}`);
191
+ // 알 수 없는 응답
203
192
  }
204
193
  }
205
194
  }
206
195
  }
207
196
  catch (err) {
208
- this.logFn?.(`[FreeScan] 데이터 처리 에러: ${err.message}`);
209
197
  this.externalErrorHandler?.(err instanceof Error ? err : new Error(String(err)));
210
198
  }
211
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"freescan.js","sourceRoot":"","sources":["../../src/commands/freescan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"freescan.js","sourceRoot":"","sources":["../../src/commands/freescan.ts"],"names":[],"mappings":"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"}
@@ -84,5 +84,5 @@ export type { EnrollResult, VerifyResult, IdentifyResult, CommandResult, ListUse
84
84
  export type { SystemStatusResult, ParamResult, SelfTestResult } from "./system.js";
85
85
  export type { MultiPacketOptions } from "./data.js";
86
86
  export type { FirmwareOptions } from "./firmware.js";
87
- export type { FreeScanResult, FreeScanCallback } from "./freescan.js";
87
+ export type { FreeScanResult, FreeScanDataHandler, FreeScanErrorHandler } from "./freescan.js";
88
88
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,5 +16,5 @@ export type { EncryptionMode } from './constants/index.js';
16
16
  export type { SfmParamKey, SfmParamAliasMap } from './constants/index.js';
17
17
  export { ENCRYPTION_MODE } from './constants/index.js';
18
18
  export { SFM_ERROR } from './constants/index.js';
19
- export type { EnrollResult, CommandResult, IdentifyResult, VerifyResult, ListUserIdsResult, CaptureImageResult, SystemStatusResult, ParamResult, SelfTestResult, FirmwareOptions, FreeScanResult, FreeScanCallback, } from './commands/index.js';
19
+ export type { EnrollResult, CommandResult, IdentifyResult, VerifyResult, ListUserIdsResult, CaptureImageResult, SystemStatusResult, ParamResult, SelfTestResult, FirmwareOptions, FreeScanResult, FreeScanDataHandler, FreeScanErrorHandler, } from './commands/index.js';
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,YAAY,EACV,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EACzD,iBAAiB,EAAE,kBAAkB,EACrC,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAC/C,eAAe,EACf,cAAc,EAAE,gBAAgB,GACjC,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,YAAY,EACV,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EACzD,iBAAiB,EAAE,kBAAkB,EACrC,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAC/C,eAAe,EACf,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,GAC1D,MAAM,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samlab-corp/sfm-node",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "SFM Protocol V3.6.0 based fingerprint recognition library for Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -47,5 +47,5 @@
47
47
  "@types/node": "^25.2.3",
48
48
  "typescript": "^5.9.3"
49
49
  },
50
- "gitHead": "9be94a92fb0f359dcfd2ca73c980b5bb6f5a2499"
50
+ "gitHead": "73d181bd39249bd23b7495492185f32765661aeb"
51
51
  }