zklib-ts 1.0.0-development

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.
@@ -0,0 +1 @@
1
+ export declare const log: (text: string) => void;
@@ -0,0 +1,10 @@
1
+ export declare class Attendance {
2
+ sn: number;
3
+ user_id: string;
4
+ record_time: Date;
5
+ type?: number;
6
+ state?: number;
7
+ private _ip?;
8
+ constructor(sn: number, user_id: string, record_time: Date, type?: number, state?: number);
9
+ set ip(value: string);
10
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Represents a fingerprint template with associated metadata
3
+ */
4
+ export declare class Finger {
5
+ uid: number;
6
+ fid: number;
7
+ valid: number;
8
+ template: Buffer;
9
+ size: number;
10
+ readonly mark: string;
11
+ /**
12
+ * Creates a new Finger instance
13
+ * @param uid User internal reference
14
+ * @param fid Finger ID (value >= 0 && value <= 9)
15
+ * @param valid Flag indicating 0 = invalid | 1 = valid | 3 = duress
16
+ * @param template Fingerprint template data buffer
17
+ */
18
+ constructor(uid: number, fid: number, valid: number, template: Buffer);
19
+ /**
20
+ * Packs the fingerprint data with metadata into a Buffer
21
+ * @returns Buffer containing packed fingerprint data
22
+ */
23
+ repack(): Buffer;
24
+ /**
25
+ * Packs only the fingerprint template data into a Buffer
26
+ * @returns Buffer containing just the template data
27
+ */
28
+ repackOnly(): Buffer;
29
+ /**
30
+ * Compares this fingerprint with another for equality
31
+ * @param other Another Finger instance to compare with
32
+ * @returns true if all properties and template data match
33
+ */
34
+ equals(other: Finger): boolean;
35
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Represents a User as is from ZkDevice and contain methods
3
+ * */
4
+ export declare class User {
5
+ uid: number;
6
+ name: string;
7
+ privilege: number;
8
+ password: string;
9
+ group_id: string | number;
10
+ user_id: string;
11
+ card: number;
12
+ /**
13
+ * Creates a new User instance
14
+ * @param uid User ID
15
+ * @param name User name
16
+ * @param privilege Privilege level
17
+ * @param password User password (default: "")
18
+ * @param group_id Group ID (default: "")
19
+ * @param user_id Alternate user ID (default: "")
20
+ * @param card Card number (default: 0)
21
+ */
22
+ constructor(uid: number, name: string, privilege: number, password?: string, group_id?: string | number, user_id?: string, card?: number);
23
+ private ensureEncoding;
24
+ repack29(): Buffer;
25
+ repack73(): Buffer;
26
+ }
package/dist/ztcp.d.ts ADDED
@@ -0,0 +1,149 @@
1
+ import { Socket } from 'net';
2
+ import { RealTimeLog } from './helper/utils';
3
+ import { Finger } from './models/Finger';
4
+ import { User } from './models/User';
5
+ export declare class ZTCP {
6
+ /**
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;
14
+ private port;
15
+ private timeout;
16
+ private sessionId;
17
+ private replyId;
18
+ socket: Socket | undefined;
19
+ private comm_key;
20
+ private user_count;
21
+ private fp_count;
22
+ private pwd_count;
23
+ private oplog_count;
24
+ private attlog_count;
25
+ private fp_cap;
26
+ private user_cap;
27
+ private attlog_cap;
28
+ private fp_av;
29
+ private user_av;
30
+ private attlog_av;
31
+ private face_count;
32
+ private face_cap;
33
+ private userPacketSize;
34
+ private verbose;
35
+ constructor(ip: string, port: number, timeout: number, comm_key: number, verbose: boolean);
36
+ createSocket(cbError: any, cbClose: any): Promise<unknown>;
37
+ connect(): Promise<boolean>;
38
+ closeSocket(): Promise<boolean>;
39
+ writeMessage(msg: Buffer, connect: boolean): Promise<Buffer>;
40
+ requestData(msg: Buffer): Promise<Buffer>;
41
+ /**
42
+ *
43
+ * @param {*} command
44
+ * @param {*} data
45
+ *
46
+ *
47
+ * reject error when command fail and resolve data when success
48
+ */
49
+ executeCmd(command: number, data: Buffer | string | ArrayBuffer): Promise<Buffer>;
50
+ sendChunkRequest(start: number, size: number): Promise<any>;
51
+ /**
52
+ *
53
+ * @param {*} reqData - indicate the type of data that need to receive ( user or attLog)
54
+ * @param {*} cb - callback is triggered when receiving packets
55
+ *
56
+ * readWithBuffer will reject error if it'wrong when starting request data
57
+ * readWithBuffer will return { data: replyData , err: Error } when receiving requested data
58
+ */
59
+ readWithBuffer(reqData: Buffer | string, cb?: any): Promise<Record<string, Buffer | number>>;
60
+ /**
61
+ * reject error when starting request data
62
+ * @return {Record<string, User[] | Error>} when receiving requested data
63
+ */
64
+ getUsers(): Promise<{
65
+ data: User[];
66
+ }>;
67
+ /**
68
+ *
69
+ * @param {*} ip
70
+ * @param {*} callbackInProcess
71
+ * reject error when starting request data
72
+ * return { data: records, err: Error } when receiving requested data
73
+ */
74
+ getAttendances(callbackInProcess?: any): Promise<{
75
+ data: any[];
76
+ }>;
77
+ freeData(): Promise<boolean>;
78
+ disableDevice(): Promise<boolean>;
79
+ enableDevice(): Promise<boolean>;
80
+ disconnect(): Promise<void>;
81
+ getInfo(): Promise<{
82
+ userCounts: number;
83
+ logCounts: number;
84
+ logCapacity: number;
85
+ }>;
86
+ getSizes(): Promise<{
87
+ userCounts: number;
88
+ logCounts: number;
89
+ fingerCount: number;
90
+ adminCount: number;
91
+ opLogCount: number;
92
+ logCapacity: number;
93
+ fingerCapacity: number;
94
+ userCapacity: number;
95
+ attLogCapacity: number;
96
+ fingerAvailable: number;
97
+ userAvailable: number;
98
+ attLogAvailable: number;
99
+ faceCount: number;
100
+ faceCapacity: number;
101
+ }>;
102
+ getVendor(): Promise<string>;
103
+ getProductTime(): Promise<Date>;
104
+ getMacAddress(): Promise<string>;
105
+ getSerialNumber(): Promise<string>;
106
+ getDeviceVersion(): Promise<string>;
107
+ getDeviceName(): Promise<string>;
108
+ getPlatform(): Promise<string>;
109
+ getOS(): Promise<string>;
110
+ getWorkCode(): Promise<string>;
111
+ getPIN(): Promise<string>;
112
+ getFaceOn(): Promise<"No" | "Yes">;
113
+ getSSR(): Promise<string>;
114
+ getFirmware(): Promise<string>;
115
+ getTime(): Promise<Date>;
116
+ setTime(tm: Date | string): Promise<boolean>;
117
+ voiceTest(): Promise<void>;
118
+ setUser(uid: number, userid: string, name: string, password: string, role?: number, cardno?: number): Promise<boolean>;
119
+ deleteUser(uid: number): Promise<boolean>;
120
+ getAttendanceSize(): Promise<number>;
121
+ clearAttendanceLog(): Promise<Buffer<ArrayBufferLike>>;
122
+ clearData(): Promise<Buffer<ArrayBufferLike>>;
123
+ getRealTimeLogs(cb?: (realTimeLog: RealTimeLog) => void): Promise<void>;
124
+ getTemplates(): Promise<Finger[]>;
125
+ refreshData(): Promise<boolean>;
126
+ sendWithBuffer(buffer: Buffer): Promise<unknown>;
127
+ sendChunk(commandString: Buffer): Promise<unknown>;
128
+ /**
129
+ * save user and template
130
+ *
131
+ * @param {User | number | string} user - User class object | uid | user_id
132
+ * @param {Finger[]} fingers - Array of finger class. `0 <= index <= 9`
133
+ */
134
+ saveUserTemplate(user: User, fingers?: Finger[]): Promise<void>;
135
+ deleteFinger(uid: number, fid: number): Promise<boolean>;
136
+ enrollUser(uid: number, tempId: number, userId?: string): Promise<boolean>;
137
+ readSocket(length: number, cb?: any): Promise<any>;
138
+ /**
139
+ * Register events
140
+ * @param {number} flags - Event flags
141
+ * @returns {Promise<void>}
142
+ * @throws {ZKErrorResponse} If registration fails
143
+ */
144
+ regEvent(flags: any): Promise<void>;
145
+ ackOk(): Promise<void>;
146
+ cancelCapture(): Promise<boolean>;
147
+ verifyUser(uid: number): Promise<boolean>;
148
+ restartDevice(): Promise<void>;
149
+ }
package/dist/zudp.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ import { RecordData16, UserData28 } from './helper/utils';
2
+ import * as dgram from "node:dgram";
3
+ interface DeviceInfo {
4
+ userCounts: number;
5
+ logCounts: number;
6
+ logCapacity: number;
7
+ }
8
+ interface ChunkedDataResponse {
9
+ data: Buffer | null;
10
+ err: Error | null;
11
+ }
12
+ export declare class ZUDP {
13
+ private ip;
14
+ private port;
15
+ private timeout;
16
+ socket: dgram.Socket | null;
17
+ private sessionId;
18
+ private replyId;
19
+ private inport;
20
+ private comm_key;
21
+ constructor(ip: string, port: number, timeout: number, inport: number, comm_key?: number);
22
+ createSocket(cbError?: (err: Error) => void, cbClose?: (type: string) => void): Promise<dgram.Socket>;
23
+ connect(): Promise<boolean>;
24
+ closeSocket(): Promise<unknown>;
25
+ private writeMessage;
26
+ private requestData;
27
+ executeCmd(command: number, data: string | Buffer): Promise<Buffer>;
28
+ private sendChunkRequest;
29
+ readWithBuffer(reqData: Buffer, cb?: ((progress: number, total: number) => void) | null): Promise<ChunkedDataResponse>;
30
+ private handleChunkedData;
31
+ getUsers(): Promise<{
32
+ data: UserData28[];
33
+ }>;
34
+ getAttendances(callbackInProcess?: (progress: number, total: number) => void): Promise<{
35
+ data: RecordData16[];
36
+ err: Error;
37
+ }>;
38
+ freeData(): Promise<boolean>;
39
+ getInfo(): Promise<DeviceInfo>;
40
+ getTime(): Promise<Date>;
41
+ setTime(tm: Date | string): Promise<boolean>;
42
+ clearAttendanceLog(): Promise<Buffer>;
43
+ clearData(): Promise<Buffer>;
44
+ disableDevice(): Promise<boolean>;
45
+ enableDevice(): Promise<boolean>;
46
+ disconnect(): Promise<void>;
47
+ getRealTimeLogs(cb?: (log: any) => void): Promise<void>;
48
+ }
49
+ export default ZUDP;
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "zklib-ts",
3
+ "version": "1.0.0-development",
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": "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
+ "cz-conventional-changelog": "^3.3.0",
53
+ "dotenv": "^16.4.7",
54
+ "jest": "^29.7.0",
55
+ "rollup": "^4.37.0",
56
+ "rollup-plugin-peer-deps-external": "^2.2.4",
57
+ "semantic-release": "^24.0.0",
58
+ "ts-jest": "^29.3.0",
59
+ "ts-node": "^10.9.2",
60
+ "tslib": "^2.8.1",
61
+ "typescript": "^5.8.2"
62
+ },
63
+ "config": {
64
+ "commitizen": {
65
+ "path": "./node_modules/cz-conventional-changelog"
66
+ }
67
+ },
68
+ "precommit": [
69
+ "build"
70
+ ]
71
+ }