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.
- package/LICENSE.md +21 -0
- package/README.md +101 -0
- package/dist/exceptions/handler.d.ts +57 -0
- package/dist/helper/command.d.ts +110 -0
- package/dist/helper/models/Attendance.d.ts +12 -0
- package/dist/helper/models/Finger.d.ts +35 -0
- package/dist/helper/models/User.d.ts +26 -0
- package/dist/helper/time.d.ts +5 -0
- package/dist/helper/utils.d.ts +40 -0
- package/dist/index.cjs.js +2715 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.es.js +2694 -0
- package/dist/logs/log.d.ts +1 -0
- package/dist/models/Attendance.d.ts +10 -0
- package/dist/models/Finger.d.ts +35 -0
- package/dist/models/User.d.ts +26 -0
- package/dist/ztcp.d.ts +149 -0
- package/dist/zudp.d.ts +49 -0
- package/package.json +71 -0
|
@@ -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
|
+
}
|