zklib-ts 1.0.5 → 1.0.7

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.
@@ -1,9 +1,17 @@
1
+ /**
2
+ * Represents an Attendance Records
3
+ */
1
4
  export declare class Attendance {
5
+ /** Internal serial number for the user */
2
6
  sn: number;
7
+ /** User ID/Pin stored as a string */
3
8
  user_id: string;
4
- record_time: Date;
9
+ /** Verification type */
5
10
  type?: number;
11
+ /** Time of the attendance event */
12
+ record_time: Date;
13
+ /** Verify state */
6
14
  state?: number;
7
15
  ip?: string;
8
- constructor(sn: number, user_id: string, record_time: Date, type?: number, state?: number);
16
+ constructor(sn: number, user_id: string, type: number, record_time: Date, state?: number);
9
17
  }
@@ -4,6 +4,7 @@
4
4
  export declare class Finger {
5
5
  uid: number;
6
6
  fid: number;
7
+ /** Flag indicating 0 = invalid | 1 = valid | 3 = duress. if is not initilizaed, default is 1 = valid */
7
8
  valid: number;
8
9
  template: Buffer;
9
10
  size: number;
@@ -15,7 +16,7 @@ export declare class Finger {
15
16
  * @param valid Flag indicating 0 = invalid | 1 = valid | 3 = duress
16
17
  * @param template Fingerprint template data buffer
17
18
  */
18
- constructor(uid: number, fid: number, valid: number, template: Buffer);
19
+ constructor(uid: number, fid: number, template: Buffer, valid?: number);
19
20
  /**
20
21
  * Packs the fingerprint data with metadata into a Buffer
21
22
  * @returns Buffer containing packed fingerprint data
@@ -0,0 +1,49 @@
1
+ import { ZTCP } from "../ztcp";
2
+ export declare class OptionsService {
3
+ _zkTcp: ZTCP;
4
+ constructor(zkTcp: ZTCP);
5
+ /** Ask if the device doesn't support alphanumeric symbols for user id values. */
6
+ isAbcPinEnable(): Promise<string>;
7
+ /** Ask if the device doesn't support alphanumeric symbols for user id values. */
8
+ isT9FunOn(): Promise<string>;
9
+ getDeviceId(): Promise<any>;
10
+ /**
11
+ * Change Device ID
12
+ * @param id a number between 1 and 254
13
+ */
14
+ setDeviceId(id: number): Promise<boolean>;
15
+ getVendor(): Promise<any>;
16
+ getProductTime(): Promise<Date>;
17
+ getMacAddress(): Promise<string>;
18
+ getNetworkParams(): Promise<{
19
+ IPAddress: string;
20
+ NetMask: string;
21
+ GATEIPAddress: string;
22
+ TCPPort: string;
23
+ }>;
24
+ getSerialNumber(): Promise<string>;
25
+ /**
26
+ * get Zkteko Template version
27
+ * @returns number
28
+ */
29
+ getDeviceVersion(): Promise<string>;
30
+ /**
31
+ * get Device/Model Name
32
+ * @returns
33
+ */
34
+ getDeviceName(): Promise<any>;
35
+ getPlatform(): Promise<any>;
36
+ getOS(): Promise<string>;
37
+ getWorkCode(): Promise<string>;
38
+ /**
39
+ * get User ID max length
40
+ * @returns
41
+ */
42
+ getPIN(): Promise<string>;
43
+ getFaceOn(): Promise<"No" | "Yes">;
44
+ getSSR(): Promise<string>;
45
+ getFirmware(): Promise<string>;
46
+ getTime(): Promise<Date>;
47
+ setTime(tm: Date | string): Promise<boolean>;
48
+ voiceTest(): Promise<void>;
49
+ }
@@ -0,0 +1,9 @@
1
+ import { ZTCP } from '../ztcp';
2
+ export declare class TransactionService {
3
+ _zkTcp: ZTCP;
4
+ constructor(zkTcp: ZTCP);
5
+ getAttendances(callbackInProcess?: any): Promise<{
6
+ data: any[];
7
+ }>;
8
+ clearAttendanceLog(): Promise<boolean>;
9
+ }
@@ -0,0 +1,33 @@
1
+ import { User } from "../models/User";
2
+ import { ZTCP } from "../ztcp";
3
+ import { Finger } from "../models/Finger";
4
+ export declare class UserService {
5
+ _zkTcp: ZTCP;
6
+ _users: Map<string, User>;
7
+ constructor(zkTcp: ZTCP);
8
+ getUserByUserId(user_id: string): Promise<User>;
9
+ getUsers(): Promise<{
10
+ data: User[];
11
+ }>;
12
+ setUser(user_id: string, name: string, password: string, role?: number, cardno?: number): Promise<boolean>;
13
+ DeleteUser(user_id: string): Promise<boolean>;
14
+ getTemplates(cb?: Function): Promise<Record<string, Finger[]>>;
15
+ DownloadFp(user_id: string, fid: number): Promise<Finger>;
16
+ /**
17
+ *
18
+ * @param user_id {string} user
19
+ * @param fingers {Finger[]} array of finger templates instances
20
+ * */
21
+ saveTemplates(user_id: string, fingers?: Finger[]): Promise<void>;
22
+ deleteFinger(user_id?: string, fid?: number): Promise<boolean>;
23
+ enrollInfo(user_id: string, tempId: number): Promise<unknown>;
24
+ verify(user_id: string): Promise<boolean>;
25
+ /**
26
+ * Upload a single fingerprint for a given user id
27
+ * @param user_id {string} user id for customer
28
+ * @param fingerTemplate {string} finger template in base64 string
29
+ * @param fid {number} finger id is a number between 0 and 9
30
+ * @param fp_valid {number} finger flag. e.g., valid=1, duress=3
31
+ */
32
+ uploadFingerTemplate(user_id: string, fingerTemplate: string, fid: number, fp_valid: number): Promise<boolean>;
33
+ }
package/dist/ztcp.d.ts CHANGED
@@ -1,24 +1,27 @@
1
- import { Socket } from 'net';
2
- import { RealTimeLog } from './helper/utils';
3
- import { Finger } from './models/Finger';
4
- import { User } from './models/User';
1
+ import { Socket } from "net";
2
+ import { RealTimeLog } from "./helper/utils";
3
+ import { Finger } from "./models/Finger";
4
+ import { UserService } from "./services/user.service";
5
+ import { TransactionService } from "./services/transaction.service";
6
+ import { OptionsService } from "./services/options.service";
5
7
  export declare class ZTCP {
8
+ #private;
6
9
  /**
7
- * @param_ip ip address of device
8
- * @param_port port number of device
9
- * @param_timeout connection timout
10
- * @param_comm_key communication key of device (if the case)
11
- * @return Zkteco TCP socket connection instance
12
- */
13
- private ip;
10
+ * @param_ip ip address of device
11
+ * @param_port port number of device
12
+ * @param_timeout connection timout
13
+ * @param_comm_key communication key of device (if the case)
14
+ * @return Zkteco TCP socket connection instance
15
+ */
16
+ ip: string;
14
17
  private port;
15
- private timeout;
16
- private sessionId;
17
- private replyId;
18
+ timeout: number;
19
+ sessionId: number;
20
+ replyId: number;
18
21
  socket: Socket | undefined;
19
22
  private comm_key;
20
23
  private user_count;
21
- private fp_count;
24
+ fp_count: number;
22
25
  private pwd_count;
23
26
  private oplog_count;
24
27
  private attlog_count;
@@ -30,15 +33,18 @@ export declare class ZTCP {
30
33
  private attlog_av;
31
34
  private face_count;
32
35
  private face_cap;
33
- private userPacketSize;
34
- private verbose;
36
+ userPacketSize: number;
37
+ verbose: boolean;
35
38
  private packetNumber;
36
39
  private replyData;
40
+ _optionsService: OptionsService;
41
+ _transactionService: TransactionService;
42
+ _userService: UserService;
37
43
  constructor(ip: string, port: number, timeout: number, comm_key: number, verbose: boolean);
38
- createSocket(cbError: any, cbClose: any): Promise<unknown>;
44
+ createSocket(cbError: (err: Error) => void, cbClose: (type: string) => void): Promise<unknown>;
39
45
  connect(): Promise<boolean>;
40
46
  closeSocket(): Promise<boolean>;
41
- writeMessage(msg: Buffer, connect: boolean): Promise<Buffer>;
47
+ writeMessage(msg: Buffer, connect: boolean, cb: (data: Buffer) => any): Promise<Buffer>;
42
48
  requestData(msg: Buffer): Promise<Buffer>;
43
49
  /**
44
50
  *
@@ -58,24 +64,13 @@ export declare class ZTCP {
58
64
  * readWithBuffer will reject error if it'wrong when starting request data
59
65
  * readWithBuffer will return { data: replyData , err: Error } when receiving requested data
60
66
  */
61
- readWithBuffer(reqData: Buffer | string, cb?: Function): Promise<Record<string, Buffer | number>>;
62
- /**
63
- * reject error when starting request data
64
- * @return {Record<string, User[] | Error>} when receiving requested data
65
- */
66
- getUsers(): Promise<{
67
- data: User[];
68
- }>;
67
+ readWithBuffer(reqData: Buffer | string, cb?: (received: number, total: number) => void): Promise<Record<string, Buffer | number | Error>>;
69
68
  /**
70
69
  *
71
- * @param {*} ip
72
70
  * @param {*} callbackInProcess
73
71
  * reject error when starting request data
74
72
  * return { data: records, err: Error } when receiving requested data
75
73
  */
76
- getAttendances(callbackInProcess?: any): Promise<{
77
- data: any[];
78
- }>;
79
74
  freeData(): Promise<boolean>;
80
75
  disableDevice(): Promise<boolean>;
81
76
  enableDevice(): Promise<boolean>;
@@ -101,32 +96,18 @@ export declare class ZTCP {
101
96
  faceCount: number;
102
97
  faceCapacity: number;
103
98
  }>;
104
- getVendor(): Promise<string>;
105
- getProductTime(): Promise<Date>;
106
- getMacAddress(): Promise<string>;
107
- getNetworkParams(): Promise<{
108
- IPAddress: string;
109
- NetMask: string;
110
- GATEIPAddress: string;
111
- }>;
112
- getSerialNumber(): Promise<string>;
113
- getDeviceVersion(): Promise<string>;
114
- getDeviceName(): Promise<string>;
115
- getPlatform(): Promise<string>;
116
- getOS(): Promise<string>;
117
- getWorkCode(): Promise<string>;
118
- getPIN(): Promise<string>;
119
- getFaceOn(): Promise<"No" | "Yes">;
120
- getSSR(): Promise<string>;
121
- getFirmware(): Promise<string>;
122
- getTime(): Promise<Date>;
123
- setTime(tm: Date | string): Promise<boolean>;
124
- voiceTest(): Promise<void>;
125
- setUser(uid: number, userid: string, name: string, password: string, role?: number, cardno?: number): Promise<boolean>;
126
- deleteUser(uid: number): Promise<boolean>;
127
99
  getAttendanceSize(): Promise<number>;
128
- clearAttendanceLog(): Promise<Buffer<ArrayBufferLike>>;
129
- clearData(): Promise<Buffer<ArrayBufferLike>>;
100
+ clearAttendanceLog(): Promise<boolean>;
101
+ /**
102
+ * Clears all data on the device
103
+ * @value 1 Attendance records
104
+ * @value 2 Fingerprint templates
105
+ * @value 3 None
106
+ * @value 4 Operation records
107
+ * @value 5 User information
108
+ * @default 0 Delete all
109
+ */
110
+ clearData(value?: number): Promise<boolean>;
130
111
  getRealTimeLogs(cb?: (realTimeLog: RealTimeLog) => void): Promise<void>;
131
112
  /**
132
113
  * Get all Finger objects
@@ -141,15 +122,6 @@ export declare class ZTCP {
141
122
  refreshData(): Promise<boolean>;
142
123
  sendWithBuffer(buffer: Buffer): Promise<unknown>;
143
124
  sendChunk(commandString: Buffer): Promise<unknown>;
144
- /**
145
- * save user and template
146
- *
147
- * @param {User | number | string} user - User class object | uid | user_id
148
- * @param {Finger[]} fingers - Array of finger class. `0 <= index <= 9`
149
- */
150
- saveUserTemplate(user: User, fingers?: Finger[]): Promise<void>;
151
- deleteFinger(uid: number, fid: number): Promise<boolean>;
152
- enrollUser(uid: number, tempId: number, userId?: string): Promise<boolean>;
153
125
  readSocket(length: number, cb?: any): Promise<any>;
154
126
  /**
155
127
  * Register events
@@ -158,8 +130,6 @@ export declare class ZTCP {
158
130
  * @throws {ZKErrorResponse} If registration fails
159
131
  */
160
132
  regEvent(flags: number): Promise<void>;
161
- ackOk(): Promise<void>;
162
133
  cancelCapture(): Promise<boolean>;
163
- verifyUser(uid: number): Promise<boolean>;
164
134
  restartDevice(): Promise<void>;
165
135
  }
package/dist/zudp.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { RecordData16, UserData28 } from './helper/utils';
2
- import * as dgram from "node:dgram";
2
+ import * as dgram from 'node:dgram';
3
3
  interface DeviceInfo {
4
4
  userCounts: number;
5
5
  logCounts: number;
@@ -39,8 +39,8 @@ export declare class ZUDP {
39
39
  getInfo(): Promise<DeviceInfo>;
40
40
  getTime(): Promise<Date>;
41
41
  setTime(tm: Date | string): Promise<boolean>;
42
- clearAttendanceLog(): Promise<Buffer>;
43
- clearData(): Promise<Buffer>;
42
+ clearAttendanceLog(): Promise<boolean>;
43
+ clearData(): Promise<boolean>;
44
44
  disableDevice(): Promise<boolean>;
45
45
  enableDevice(): Promise<boolean>;
46
46
  disconnect(): Promise<void>;
package/package.json CHANGED
@@ -1,69 +1,70 @@
1
- {
2
- "name": "zklib-ts",
3
- "version": "1.0.5",
4
- "description": "Unofficial zkteco library allows Node.js developers to easily interface with ZK BioMetric Fingerprint Attendance Devices",
5
- "main": "dist/index.cjs.js",
6
- "module": "dist/index.es.js",
7
- "typings": "dist/index",
8
- "types": "dist/index.d.ts",
9
- "type": "commonjs",
10
- "files": [
11
- "dist/",
12
- "README.md"
13
- ],
14
- "scripts": {
15
- "test": "jest",
16
- "build": "rollup -c",
17
- "watch": "rollup -c --watch",
18
- "prepare": "npm run build"
19
- },
20
- "repositoryUrl": "https://github.com/guspaz0/zklib-ts.git",
21
- "repository": {
22
- "type": "git",
23
- "url": "git+https://github.com/guspaz0/zklib-ts.git"
24
- },
25
- "keywords": [
26
- "typescript",
27
- "javascript",
28
- "jest",
29
- "ip",
30
- "libs",
31
- "device",
32
- "zkteco",
33
- "address",
34
- "realtime",
35
- "real-time",
36
- "biometric",
37
- "attendance",
38
- "biometric attendance",
39
- "biometric attendance device"
40
- ],
41
- "author": "Gustavo Paz",
42
- "license": "MIT",
43
- "directories": {
44
- "test": "tests"
45
- },
46
- "devDependencies": {
47
- "@rollup/plugin-commonjs": "^28.0.3",
48
- "@rollup/plugin-node-resolve": "^16.0.1",
49
- "@rollup/plugin-typescript": "^12.1.2",
50
- "@types/jest": "^29.5.14",
51
- "@types/node": "^22.13.14",
52
- "dotenv": "^16.4.7",
53
- "jest": "30.2.0",
54
- "rollup": "^4.37.0",
55
- "rollup-plugin-peer-deps-external": "^2.2.4",
56
- "ts-jest": "29.4.6",
57
- "ts-node": "^10.9.2",
58
- "tslib": "^2.8.1",
59
- "typescript": "^5.8.2"
60
- },
61
- "config": {
62
- "commitizen": {
63
- "path": "./node_modules/cz-conventional-changelog"
64
- }
65
- },
66
- "precommit": [
67
- "build"
68
- ]
69
- }
1
+ {
2
+ "name": "zklib-ts",
3
+ "version": "1.0.7",
4
+ "description": "Unofficial zkteco library allows Node.js developers to easily interface with ZK BioMetric Fingerprint Attendance Devices",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.es.js",
7
+ "typings": "dist/index",
8
+ "types": "dist/index.d.ts",
9
+ "type": "commonjs",
10
+ "files": [
11
+ "dist/",
12
+ "README.md"
13
+ ],
14
+ "repositoryUrl": "https://github.com/guspaz0/zklib-ts.git",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/guspaz0/zklib-ts.git"
18
+ },
19
+ "keywords": [
20
+ "typescript",
21
+ "javascript",
22
+ "jest",
23
+ "ip",
24
+ "libs",
25
+ "device",
26
+ "zkteco",
27
+ "address",
28
+ "realtime",
29
+ "real-time",
30
+ "biometric",
31
+ "attendance",
32
+ "biometric attendance",
33
+ "biometric attendance device"
34
+ ],
35
+ "author": "Gustavo Paz",
36
+ "license": "MIT",
37
+ "directories": {
38
+ "test": "tests"
39
+ },
40
+ "devDependencies": {
41
+ "@rollup/plugin-commonjs": "^28.0.3",
42
+ "@rollup/plugin-node-resolve": "^16.0.1",
43
+ "@rollup/plugin-typescript": "^12.1.2",
44
+ "@types/jest": "^29.5.14",
45
+ "@types/mocha": "^10.0.10",
46
+ "@types/node": "^22.19.17",
47
+ "dotenv": "^16.4.7",
48
+ "jest": "30.2.0",
49
+ "rollup": "^4.37.0",
50
+ "rollup-plugin-peer-deps-external": "^2.2.4",
51
+ "ts-jest": "29.4.6",
52
+ "ts-node": "^10.9.2",
53
+ "tslib": "^2.8.1",
54
+ "typescript": "^5.8.2"
55
+ },
56
+ "config": {
57
+ "commitizen": {
58
+ "path": "./node_modules/cz-conventional-changelog"
59
+ }
60
+ },
61
+ "precommit": [
62
+ "build"
63
+ ],
64
+ "scripts": {
65
+ "test": "jest",
66
+ "build": "rollup -c",
67
+ "watch": "rollup -c --watch",
68
+ "lint": "eslint ."
69
+ }
70
+ }