@jakobgoerke/ac-infinity-client 0.1.0 → 0.2.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.
- package/build/src/AcInfinityClient.d.ts +40 -0
- package/build/src/AcInfinityClient.d.ts.map +1 -0
- package/build/src/AcInfinityClient.js +90 -0
- package/build/src/errors/index.d.ts +5 -0
- package/build/src/errors/index.d.ts.map +1 -0
- package/build/src/errors/index.js +12 -0
- package/build/src/index.d.ts +2 -0
- package/build/src/index.d.ts.map +1 -0
- package/build/src/index.js +17 -0
- package/build/src/types/Controller.d.ts +176 -0
- package/build/src/types/Controller.d.ts.map +1 -0
- package/build/src/types/Controller.js +60 -0
- package/build/src/types/Device.d.ts +342 -0
- package/build/src/types/Device.d.ts.map +1 -0
- package/build/src/types/Device.js +186 -0
- package/build/src/types/User.d.ts +16 -0
- package/build/src/types/User.d.ts.map +1 -0
- package/build/src/types/User.js +15 -0
- package/build/src/types/index.d.ts +7 -0
- package/build/src/types/index.d.ts.map +1 -0
- package/build/src/types/index.js +14 -0
- package/package.json +20 -15
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Controller, DeviceModeSettings, DeviceSettings, User } from './types';
|
|
2
|
+
export declare enum Url {
|
|
3
|
+
AUTH = "/user/appUserLogin",
|
|
4
|
+
GET_CONTROLLERS = "/user/devInfoListAll",
|
|
5
|
+
GET_DEVICE_SETTINGS = "/dev/getDevSetting",
|
|
6
|
+
GET_DEVICE_MODE_SETTINGS = "/dev/getdevModeSettingList",
|
|
7
|
+
SET_DEVICE_MODE_SETTINGS = "/dev/addDevMode"
|
|
8
|
+
}
|
|
9
|
+
export interface Response<T> {
|
|
10
|
+
code: number;
|
|
11
|
+
data: T;
|
|
12
|
+
}
|
|
13
|
+
export interface AuthParams {
|
|
14
|
+
email: string;
|
|
15
|
+
password: string;
|
|
16
|
+
}
|
|
17
|
+
interface GetDeviceParams {
|
|
18
|
+
controllerId: string;
|
|
19
|
+
port: number;
|
|
20
|
+
}
|
|
21
|
+
interface SetDeviceModeSettingsParams extends GetDeviceParams {
|
|
22
|
+
settings: Pick<Partial<DeviceModeSettings>, 'levelWhileOn'>;
|
|
23
|
+
}
|
|
24
|
+
declare class AcInfinityClient {
|
|
25
|
+
constructor(args: AuthParams);
|
|
26
|
+
private api;
|
|
27
|
+
private token;
|
|
28
|
+
private email;
|
|
29
|
+
private password;
|
|
30
|
+
authenticate(): Promise<User>;
|
|
31
|
+
private ensureSuccess;
|
|
32
|
+
getControllers(): Promise<Controller[]>;
|
|
33
|
+
getDeviceSettings({ controllerId, port }: GetDeviceParams): Promise<DeviceSettings>;
|
|
34
|
+
getDeviceModeSettings({ controllerId, port }: GetDeviceParams): Promise<DeviceModeSettings>;
|
|
35
|
+
setDeviceModeSettings({ controllerId, port, settings }: SetDeviceModeSettingsParams): Promise<void>;
|
|
36
|
+
static build(args: AuthParams): Promise<AcInfinityClient>;
|
|
37
|
+
}
|
|
38
|
+
export { AcInfinityClient };
|
|
39
|
+
export type { Controller, DeviceModeSettings, DeviceSettings, User };
|
|
40
|
+
//# sourceMappingURL=AcInfinityClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcInfinityClient.d.ts","sourceRoot":"","sources":["../../src/AcInfinityClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAA2B,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG7G,oBAAY,GAAG;IACb,IAAI,uBAAuB;IAC3B,eAAe,yBAAyB;IACxC,mBAAmB,uBAAuB;IAC1C,wBAAwB,+BAA+B;IACvD,wBAAwB,oBAAoB;CAC7C;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,CAAC;CACT;AAOD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,2BAA4B,SAAQ,eAAe;IAC3D,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAAC,CAAC;CAC7D;AAED,cAAM,gBAAgB;gBACR,IAAI,EAAE,UAAU;IAiB5B,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IAEZ,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB1C,OAAO,CAAC,aAAa;IAMR,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQvC,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IASnF,qBAAqB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS3F,qBAAqB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;WAanG,KAAK,CAAC,IAAI,EAAE,UAAU;CAKpC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AcInfinityClient = exports.Url = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const errors_1 = require("./errors");
|
|
9
|
+
const types_1 = require("./types");
|
|
10
|
+
var Url;
|
|
11
|
+
(function (Url) {
|
|
12
|
+
Url["AUTH"] = "/user/appUserLogin";
|
|
13
|
+
Url["GET_CONTROLLERS"] = "/user/devInfoListAll";
|
|
14
|
+
Url["GET_DEVICE_SETTINGS"] = "/dev/getDevSetting";
|
|
15
|
+
Url["GET_DEVICE_MODE_SETTINGS"] = "/dev/getdevModeSettingList";
|
|
16
|
+
Url["SET_DEVICE_MODE_SETTINGS"] = "/dev/addDevMode";
|
|
17
|
+
})(Url || (exports.Url = Url = {}));
|
|
18
|
+
class AcInfinityClient {
|
|
19
|
+
constructor(args) {
|
|
20
|
+
const { email, password } = args;
|
|
21
|
+
this.email = email;
|
|
22
|
+
this.password = password;
|
|
23
|
+
this.token = '';
|
|
24
|
+
this.api = axios_1.default.create({
|
|
25
|
+
timeout: 5000,
|
|
26
|
+
baseURL: 'http://www.acinfinityserver.com/api',
|
|
27
|
+
headers: {
|
|
28
|
+
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
api;
|
|
33
|
+
token;
|
|
34
|
+
email;
|
|
35
|
+
password;
|
|
36
|
+
async authenticate() {
|
|
37
|
+
const response = await this.api.post(Url.AUTH, {
|
|
38
|
+
appEmail: this.email,
|
|
39
|
+
appPasswordl: this.password,
|
|
40
|
+
});
|
|
41
|
+
if (response.data.code !== 200) {
|
|
42
|
+
throw new errors_1.AuthenticationError();
|
|
43
|
+
}
|
|
44
|
+
const user = types_1.UserSchema.parse(response.data.data);
|
|
45
|
+
this.token = user.id;
|
|
46
|
+
this.api.defaults.headers.common.token = user.id;
|
|
47
|
+
return user;
|
|
48
|
+
}
|
|
49
|
+
ensureSuccess(response) {
|
|
50
|
+
if (response.code !== 200) {
|
|
51
|
+
throw new Error(`API request failed [code="${response.code}", msg="${response.msg}"]`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async getControllers() {
|
|
55
|
+
const response = await this.api.post(Url.GET_CONTROLLERS, {
|
|
56
|
+
userId: this.token,
|
|
57
|
+
});
|
|
58
|
+
return response.data.data.map((device) => types_1.ControllerSchema.parse(device));
|
|
59
|
+
}
|
|
60
|
+
async getDeviceSettings({ controllerId, port }) {
|
|
61
|
+
const response = await this.api.post(Url.GET_DEVICE_SETTINGS, {
|
|
62
|
+
devId: controllerId,
|
|
63
|
+
port,
|
|
64
|
+
});
|
|
65
|
+
return types_1.DeviceSettingsSchema.parse(response.data.data);
|
|
66
|
+
}
|
|
67
|
+
async getDeviceModeSettings({ controllerId, port }) {
|
|
68
|
+
const response = await this.api.post(Url.GET_DEVICE_MODE_SETTINGS, {
|
|
69
|
+
devId: controllerId,
|
|
70
|
+
port,
|
|
71
|
+
});
|
|
72
|
+
return types_1.DeviceModeSettingsSchema.parse(response.data.data);
|
|
73
|
+
}
|
|
74
|
+
async setDeviceModeSettings({ controllerId, port, settings }) {
|
|
75
|
+
const rawCurrentSettings = await this.api.post(Url.GET_DEVICE_MODE_SETTINGS, {
|
|
76
|
+
devId: controllerId,
|
|
77
|
+
port,
|
|
78
|
+
});
|
|
79
|
+
const vendorChanges = (0, types_1.encodeDeviceModeSettings)(settings);
|
|
80
|
+
const payload = { ...rawCurrentSettings.data.data, ...vendorChanges };
|
|
81
|
+
const response = await this.api.post(Url.SET_DEVICE_MODE_SETTINGS, payload);
|
|
82
|
+
this.ensureSuccess(response.data);
|
|
83
|
+
}
|
|
84
|
+
static async build(args) {
|
|
85
|
+
const instance = new AcInfinityClient(args);
|
|
86
|
+
await instance.authenticate();
|
|
87
|
+
return instance;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.AcInfinityClient = AcInfinityClient;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAM,mBAAoB,SAAQ,KAAK;gBACzB,OAAO,CAAC,EAAE,MAAM;CAQ7B;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthenticationError = void 0;
|
|
4
|
+
class AuthenticationError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = this.constructor.name;
|
|
8
|
+
Error.captureStackTrace(this, this.constructor);
|
|
9
|
+
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.AuthenticationError = AuthenticationError;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./AcInfinityClient"), exports);
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { DeviceMode, DeviceType } from './Device';
|
|
3
|
+
export declare enum ControllerDeviceType {
|
|
4
|
+
UIS_CONTROLLER_69_PRO = 11,
|
|
5
|
+
UIS_CONTROLLER_69_PRO_PLUS = 10
|
|
6
|
+
}
|
|
7
|
+
export declare const ControllerPortSchema: z.ZodPipe<z.ZodObject<{
|
|
8
|
+
speak: z.ZodNumber;
|
|
9
|
+
port: z.ZodNumber;
|
|
10
|
+
curMode: z.ZodEnum<typeof DeviceMode>;
|
|
11
|
+
loadType: z.ZodEnum<typeof DeviceType>;
|
|
12
|
+
portName: z.ZodString;
|
|
13
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
14
|
+
port: number;
|
|
15
|
+
currentLevel: number;
|
|
16
|
+
currentMode: DeviceMode;
|
|
17
|
+
deviceType: DeviceType;
|
|
18
|
+
deviceName: string;
|
|
19
|
+
}, {
|
|
20
|
+
speak: number;
|
|
21
|
+
port: number;
|
|
22
|
+
curMode: DeviceMode;
|
|
23
|
+
loadType: DeviceType;
|
|
24
|
+
portName: string;
|
|
25
|
+
}>>;
|
|
26
|
+
export declare const ControllerDeviceInfoSchema: z.ZodPipe<z.ZodObject<{
|
|
27
|
+
temperature: z.ZodNumber;
|
|
28
|
+
humidity: z.ZodNumber;
|
|
29
|
+
vpdnums: z.ZodNumber;
|
|
30
|
+
ports: z.ZodArray<z.ZodPipe<z.ZodObject<{
|
|
31
|
+
speak: z.ZodNumber;
|
|
32
|
+
port: z.ZodNumber;
|
|
33
|
+
curMode: z.ZodEnum<typeof DeviceMode>;
|
|
34
|
+
loadType: z.ZodEnum<typeof DeviceType>;
|
|
35
|
+
portName: z.ZodString;
|
|
36
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
37
|
+
port: number;
|
|
38
|
+
currentLevel: number;
|
|
39
|
+
currentMode: DeviceMode;
|
|
40
|
+
deviceType: DeviceType;
|
|
41
|
+
deviceName: string;
|
|
42
|
+
}, {
|
|
43
|
+
speak: number;
|
|
44
|
+
port: number;
|
|
45
|
+
curMode: DeviceMode;
|
|
46
|
+
loadType: DeviceType;
|
|
47
|
+
portName: string;
|
|
48
|
+
}>>>;
|
|
49
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
50
|
+
temperature: number;
|
|
51
|
+
humidity: number;
|
|
52
|
+
vpd: number;
|
|
53
|
+
ports: {
|
|
54
|
+
port: number;
|
|
55
|
+
currentLevel: number;
|
|
56
|
+
currentMode: DeviceMode;
|
|
57
|
+
deviceType: DeviceType;
|
|
58
|
+
deviceName: string;
|
|
59
|
+
}[];
|
|
60
|
+
}, {
|
|
61
|
+
temperature: number;
|
|
62
|
+
humidity: number;
|
|
63
|
+
vpdnums: number;
|
|
64
|
+
ports: {
|
|
65
|
+
port: number;
|
|
66
|
+
currentLevel: number;
|
|
67
|
+
currentMode: DeviceMode;
|
|
68
|
+
deviceType: DeviceType;
|
|
69
|
+
deviceName: string;
|
|
70
|
+
}[];
|
|
71
|
+
}>>;
|
|
72
|
+
export declare const ControllerSchema: z.ZodPipe<z.ZodObject<{
|
|
73
|
+
devId: z.ZodString;
|
|
74
|
+
devCode: z.ZodString;
|
|
75
|
+
devName: z.ZodString;
|
|
76
|
+
devType: z.ZodEnum<typeof ControllerDeviceType>;
|
|
77
|
+
devPortCount: z.ZodNumber;
|
|
78
|
+
devVersion: z.ZodNumber;
|
|
79
|
+
online: z.ZodCoercedBoolean<unknown>;
|
|
80
|
+
firmwareVersion: z.ZodString;
|
|
81
|
+
hardwareVersion: z.ZodString;
|
|
82
|
+
deviceInfo: z.ZodPipe<z.ZodObject<{
|
|
83
|
+
temperature: z.ZodNumber;
|
|
84
|
+
humidity: z.ZodNumber;
|
|
85
|
+
vpdnums: z.ZodNumber;
|
|
86
|
+
ports: z.ZodArray<z.ZodPipe<z.ZodObject<{
|
|
87
|
+
speak: z.ZodNumber;
|
|
88
|
+
port: z.ZodNumber;
|
|
89
|
+
curMode: z.ZodEnum<typeof DeviceMode>;
|
|
90
|
+
loadType: z.ZodEnum<typeof DeviceType>;
|
|
91
|
+
portName: z.ZodString;
|
|
92
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
93
|
+
port: number;
|
|
94
|
+
currentLevel: number;
|
|
95
|
+
currentMode: DeviceMode;
|
|
96
|
+
deviceType: DeviceType;
|
|
97
|
+
deviceName: string;
|
|
98
|
+
}, {
|
|
99
|
+
speak: number;
|
|
100
|
+
port: number;
|
|
101
|
+
curMode: DeviceMode;
|
|
102
|
+
loadType: DeviceType;
|
|
103
|
+
portName: string;
|
|
104
|
+
}>>>;
|
|
105
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
106
|
+
temperature: number;
|
|
107
|
+
humidity: number;
|
|
108
|
+
vpd: number;
|
|
109
|
+
ports: {
|
|
110
|
+
port: number;
|
|
111
|
+
currentLevel: number;
|
|
112
|
+
currentMode: DeviceMode;
|
|
113
|
+
deviceType: DeviceType;
|
|
114
|
+
deviceName: string;
|
|
115
|
+
}[];
|
|
116
|
+
}, {
|
|
117
|
+
temperature: number;
|
|
118
|
+
humidity: number;
|
|
119
|
+
vpdnums: number;
|
|
120
|
+
ports: {
|
|
121
|
+
port: number;
|
|
122
|
+
currentLevel: number;
|
|
123
|
+
currentMode: DeviceMode;
|
|
124
|
+
deviceType: DeviceType;
|
|
125
|
+
deviceName: string;
|
|
126
|
+
}[];
|
|
127
|
+
}>>;
|
|
128
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
129
|
+
online: boolean;
|
|
130
|
+
firmwareVersion: string;
|
|
131
|
+
hardwareVersion: string;
|
|
132
|
+
deviceInfo: {
|
|
133
|
+
temperature: number;
|
|
134
|
+
humidity: number;
|
|
135
|
+
vpd: number;
|
|
136
|
+
ports: {
|
|
137
|
+
port: number;
|
|
138
|
+
currentLevel: number;
|
|
139
|
+
currentMode: DeviceMode;
|
|
140
|
+
deviceType: DeviceType;
|
|
141
|
+
deviceName: string;
|
|
142
|
+
}[];
|
|
143
|
+
};
|
|
144
|
+
id: string;
|
|
145
|
+
code: string;
|
|
146
|
+
name: string;
|
|
147
|
+
type: ControllerDeviceType;
|
|
148
|
+
totalPorts: number;
|
|
149
|
+
version: number;
|
|
150
|
+
}, {
|
|
151
|
+
devId: string;
|
|
152
|
+
devCode: string;
|
|
153
|
+
devName: string;
|
|
154
|
+
devType: ControllerDeviceType;
|
|
155
|
+
devPortCount: number;
|
|
156
|
+
devVersion: number;
|
|
157
|
+
online: boolean;
|
|
158
|
+
firmwareVersion: string;
|
|
159
|
+
hardwareVersion: string;
|
|
160
|
+
deviceInfo: {
|
|
161
|
+
temperature: number;
|
|
162
|
+
humidity: number;
|
|
163
|
+
vpd: number;
|
|
164
|
+
ports: {
|
|
165
|
+
port: number;
|
|
166
|
+
currentLevel: number;
|
|
167
|
+
currentMode: DeviceMode;
|
|
168
|
+
deviceType: DeviceType;
|
|
169
|
+
deviceName: string;
|
|
170
|
+
}[];
|
|
171
|
+
};
|
|
172
|
+
}>>;
|
|
173
|
+
export type ControllerPort = z.infer<typeof ControllerPortSchema>;
|
|
174
|
+
export type ControllerDeviceInfo = z.infer<typeof ControllerDeviceInfoSchema>;
|
|
175
|
+
export type Controller = z.infer<typeof ControllerSchema>;
|
|
176
|
+
//# sourceMappingURL=Controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../../src/types/Controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAElD,oBAAY,oBAAoB;IAC9B,qBAAqB,KAAK;IAC1B,0BAA0B,KAAK;CAChC;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;GAc5B,CAAC;AAEN,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAYlC,CAAC;AAEN,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqBxB,CAAC;AAEN,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ControllerSchema = exports.ControllerDeviceInfoSchema = exports.ControllerPortSchema = exports.ControllerDeviceType = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const Device_1 = require("./Device");
|
|
6
|
+
var ControllerDeviceType;
|
|
7
|
+
(function (ControllerDeviceType) {
|
|
8
|
+
ControllerDeviceType[ControllerDeviceType["UIS_CONTROLLER_69_PRO"] = 11] = "UIS_CONTROLLER_69_PRO";
|
|
9
|
+
ControllerDeviceType[ControllerDeviceType["UIS_CONTROLLER_69_PRO_PLUS"] = 10] = "UIS_CONTROLLER_69_PRO_PLUS";
|
|
10
|
+
})(ControllerDeviceType || (exports.ControllerDeviceType = ControllerDeviceType = {}));
|
|
11
|
+
exports.ControllerPortSchema = zod_1.z
|
|
12
|
+
.object({
|
|
13
|
+
speak: zod_1.z.number(),
|
|
14
|
+
port: zod_1.z.number().positive(),
|
|
15
|
+
curMode: zod_1.z.enum(Device_1.DeviceMode),
|
|
16
|
+
loadType: zod_1.z.enum(Device_1.DeviceType),
|
|
17
|
+
portName: zod_1.z.string(),
|
|
18
|
+
})
|
|
19
|
+
.transform((v) => ({
|
|
20
|
+
port: v.port,
|
|
21
|
+
currentLevel: v.speak,
|
|
22
|
+
currentMode: v.curMode,
|
|
23
|
+
deviceType: v.loadType,
|
|
24
|
+
deviceName: v.portName,
|
|
25
|
+
}));
|
|
26
|
+
exports.ControllerDeviceInfoSchema = zod_1.z
|
|
27
|
+
.object({
|
|
28
|
+
temperature: zod_1.z.number(),
|
|
29
|
+
humidity: zod_1.z.number(),
|
|
30
|
+
vpdnums: zod_1.z.number(),
|
|
31
|
+
ports: zod_1.z.array(exports.ControllerPortSchema),
|
|
32
|
+
})
|
|
33
|
+
.transform((v) => ({
|
|
34
|
+
temperature: v.temperature / 100,
|
|
35
|
+
humidity: v.humidity / 100,
|
|
36
|
+
vpd: v.vpdnums / 100,
|
|
37
|
+
ports: v.ports,
|
|
38
|
+
}));
|
|
39
|
+
exports.ControllerSchema = zod_1.z
|
|
40
|
+
.object({
|
|
41
|
+
devId: zod_1.z.string(),
|
|
42
|
+
devCode: zod_1.z.string(),
|
|
43
|
+
devName: zod_1.z.string(),
|
|
44
|
+
devType: zod_1.z.enum(ControllerDeviceType),
|
|
45
|
+
devPortCount: zod_1.z.number().positive(),
|
|
46
|
+
devVersion: zod_1.z.number(),
|
|
47
|
+
online: zod_1.z.coerce.boolean(),
|
|
48
|
+
firmwareVersion: zod_1.z.string(),
|
|
49
|
+
hardwareVersion: zod_1.z.string(),
|
|
50
|
+
deviceInfo: exports.ControllerDeviceInfoSchema,
|
|
51
|
+
})
|
|
52
|
+
.transform(({ devId, devCode, devName, devType, devPortCount, devVersion, ...rest }) => ({
|
|
53
|
+
id: devId,
|
|
54
|
+
code: devCode,
|
|
55
|
+
name: devName,
|
|
56
|
+
type: devType,
|
|
57
|
+
totalPorts: devPortCount,
|
|
58
|
+
version: devVersion,
|
|
59
|
+
...rest,
|
|
60
|
+
}));
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare enum DeviceType {
|
|
3
|
+
GROW_LIGHT = 1,
|
|
4
|
+
HUMIDIFIER = 2,
|
|
5
|
+
DEHUMIDIFIER = 3,
|
|
6
|
+
HEATER = 4,
|
|
7
|
+
AIR_CONDITION = 5,
|
|
8
|
+
FAN = 6
|
|
9
|
+
}
|
|
10
|
+
export declare enum DeviceMode {
|
|
11
|
+
OFF = 1,
|
|
12
|
+
ON = 2,
|
|
13
|
+
AUTO = 3,
|
|
14
|
+
TIMER_TO_ON = 4,
|
|
15
|
+
TIMER_TO_OFF = 5,
|
|
16
|
+
CYCLE = 6,
|
|
17
|
+
SCHEDULE = 7,
|
|
18
|
+
VPD = 8
|
|
19
|
+
}
|
|
20
|
+
export declare const DeviceSettingsSchema: z.ZodPipe<z.ZodObject<{
|
|
21
|
+
devId: z.ZodString;
|
|
22
|
+
devMacAddr: z.ZodNullable<z.ZodString>;
|
|
23
|
+
externalPort: z.ZodNumber;
|
|
24
|
+
offSpead: z.ZodNumber;
|
|
25
|
+
onSpead: z.ZodNumber;
|
|
26
|
+
onSelfSpead: z.ZodNumber;
|
|
27
|
+
ecUnit: z.ZodNumber;
|
|
28
|
+
tdsUnit: z.ZodNumber;
|
|
29
|
+
settingMode: z.ZodNumber;
|
|
30
|
+
vpdSettingMode: z.ZodNumber;
|
|
31
|
+
atType: z.ZodEnum<typeof DeviceMode>;
|
|
32
|
+
setId: z.ZodNullable<z.ZodString>;
|
|
33
|
+
port: z.ZodNumber;
|
|
34
|
+
devName: z.ZodNullable<z.ZodString>;
|
|
35
|
+
devLight: z.ZodNumber;
|
|
36
|
+
hasBacklightSwitch: z.ZodNumber;
|
|
37
|
+
backlightSwitch: z.ZodNumber;
|
|
38
|
+
hasKeytoneSwitch: z.ZodNumber;
|
|
39
|
+
keytoneSwitch: z.ZodNumber;
|
|
40
|
+
devCth: z.ZodNumber;
|
|
41
|
+
devCt: z.ZodNumber;
|
|
42
|
+
devCth2: z.ZodNullable<z.ZodNumber>;
|
|
43
|
+
devCt2: z.ZodNullable<z.ZodNumber>;
|
|
44
|
+
devCh: z.ZodNumber;
|
|
45
|
+
devTt: z.ZodNumber;
|
|
46
|
+
devTh: z.ZodNumber;
|
|
47
|
+
devCompany: z.ZodNumber;
|
|
48
|
+
devTth: z.ZodNumber;
|
|
49
|
+
vpdCth: z.ZodNumber;
|
|
50
|
+
vpdCt: z.ZodNumber;
|
|
51
|
+
vpdTransition: z.ZodNumber;
|
|
52
|
+
portResistance: z.ZodNullable<z.ZodNumber>;
|
|
53
|
+
devBth: z.ZodNumber;
|
|
54
|
+
devBt: z.ZodNumber;
|
|
55
|
+
devBh: z.ZodNumber;
|
|
56
|
+
devBvpd: z.ZodNumber;
|
|
57
|
+
isFlag: z.ZodNumber;
|
|
58
|
+
devTimeZone: z.ZodNullable<z.ZodString>;
|
|
59
|
+
loadType: z.ZodNumber;
|
|
60
|
+
tempCompare: z.ZodNumber;
|
|
61
|
+
humiCompare: z.ZodNumber;
|
|
62
|
+
onTimeSwitch: z.ZodNumber;
|
|
63
|
+
onTime: z.ZodNumber;
|
|
64
|
+
sensorSettingStr: z.ZodNullable<z.ZodString>;
|
|
65
|
+
sensorSetting: z.ZodNullable<z.ZodUnknown>;
|
|
66
|
+
sensorTransBuffStr: z.ZodNullable<z.ZodString>;
|
|
67
|
+
sensorTransBuff: z.ZodNullable<z.ZodUnknown>;
|
|
68
|
+
portParamData: z.ZodNullable<z.ZodString>;
|
|
69
|
+
photocellSwitch: z.ZodNumber;
|
|
70
|
+
isOpenDoseTime: z.ZodNumber;
|
|
71
|
+
onDoseTime: z.ZodNumber;
|
|
72
|
+
offDoseTime: z.ZodNumber;
|
|
73
|
+
isOnMinMaxTime: z.ZodNumber;
|
|
74
|
+
onMinTime: z.ZodNumber;
|
|
75
|
+
onMaxTime: z.ZodNumber;
|
|
76
|
+
ecOrTds: z.ZodNumber;
|
|
77
|
+
interchangeSensor: z.ZodNumber;
|
|
78
|
+
subDeviceId: z.ZodNullable<z.ZodString>;
|
|
79
|
+
subDeviceVersion: z.ZodNullable<z.ZodString>;
|
|
80
|
+
subDeviceType: z.ZodNullable<z.ZodNumber>;
|
|
81
|
+
supportOta: z.ZodNullable<z.ZodUnknown>;
|
|
82
|
+
otaUpdating: z.ZodNullable<z.ZodUnknown>;
|
|
83
|
+
secFucStatus: z.ZodNumber;
|
|
84
|
+
secFucDevtype: z.ZodNumber;
|
|
85
|
+
secFucDevEffect: z.ZodNumber;
|
|
86
|
+
secFucParamNums: z.ZodNumber;
|
|
87
|
+
secFucParams: z.ZodNullable<z.ZodUnknown>;
|
|
88
|
+
secFucReportTime: z.ZodNumber;
|
|
89
|
+
toward: z.ZodNullable<z.ZodUnknown>;
|
|
90
|
+
powerState: z.ZodNullable<z.ZodUnknown>;
|
|
91
|
+
updateAllPort: z.ZodBoolean;
|
|
92
|
+
timestamp: z.ZodNullable<z.ZodUnknown>;
|
|
93
|
+
calibrationTime: z.ZodNullable<z.ZodUnknown>;
|
|
94
|
+
fieldSet: z.ZodArray<z.ZodUnknown>;
|
|
95
|
+
plantCode: z.ZodNumber;
|
|
96
|
+
potSize: z.ZodNumber;
|
|
97
|
+
plantingNum: z.ZodNumber;
|
|
98
|
+
devCl: z.ZodNullable<z.ZodUnknown>;
|
|
99
|
+
devCsm1: z.ZodNullable<z.ZodUnknown>;
|
|
100
|
+
devCsm2: z.ZodNullable<z.ZodUnknown>;
|
|
101
|
+
devCsm3: z.ZodNullable<z.ZodUnknown>;
|
|
102
|
+
devCsm4: z.ZodNullable<z.ZodUnknown>;
|
|
103
|
+
uuidSta: z.ZodNumber;
|
|
104
|
+
uuidType: z.ZodNullable<z.ZodUnknown>;
|
|
105
|
+
uuid: z.ZodNullable<z.ZodString>;
|
|
106
|
+
matterCode: z.ZodNullable<z.ZodString>;
|
|
107
|
+
matterSta: z.ZodNullable<z.ZodUnknown>;
|
|
108
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
109
|
+
id: string;
|
|
110
|
+
port: number;
|
|
111
|
+
levelWhileOff: number;
|
|
112
|
+
levelWhileOn: number;
|
|
113
|
+
mode: DeviceMode;
|
|
114
|
+
}, {
|
|
115
|
+
devId: string;
|
|
116
|
+
devMacAddr: string | null;
|
|
117
|
+
externalPort: number;
|
|
118
|
+
offSpead: number;
|
|
119
|
+
onSpead: number;
|
|
120
|
+
onSelfSpead: number;
|
|
121
|
+
ecUnit: number;
|
|
122
|
+
tdsUnit: number;
|
|
123
|
+
settingMode: number;
|
|
124
|
+
vpdSettingMode: number;
|
|
125
|
+
atType: DeviceMode;
|
|
126
|
+
setId: string | null;
|
|
127
|
+
port: number;
|
|
128
|
+
devName: string | null;
|
|
129
|
+
devLight: number;
|
|
130
|
+
hasBacklightSwitch: number;
|
|
131
|
+
backlightSwitch: number;
|
|
132
|
+
hasKeytoneSwitch: number;
|
|
133
|
+
keytoneSwitch: number;
|
|
134
|
+
devCth: number;
|
|
135
|
+
devCt: number;
|
|
136
|
+
devCth2: number | null;
|
|
137
|
+
devCt2: number | null;
|
|
138
|
+
devCh: number;
|
|
139
|
+
devTt: number;
|
|
140
|
+
devTh: number;
|
|
141
|
+
devCompany: number;
|
|
142
|
+
devTth: number;
|
|
143
|
+
vpdCth: number;
|
|
144
|
+
vpdCt: number;
|
|
145
|
+
vpdTransition: number;
|
|
146
|
+
portResistance: number | null;
|
|
147
|
+
devBth: number;
|
|
148
|
+
devBt: number;
|
|
149
|
+
devBh: number;
|
|
150
|
+
devBvpd: number;
|
|
151
|
+
isFlag: number;
|
|
152
|
+
devTimeZone: string | null;
|
|
153
|
+
loadType: number;
|
|
154
|
+
tempCompare: number;
|
|
155
|
+
humiCompare: number;
|
|
156
|
+
onTimeSwitch: number;
|
|
157
|
+
onTime: number;
|
|
158
|
+
sensorSettingStr: string | null;
|
|
159
|
+
sensorSetting: unknown;
|
|
160
|
+
sensorTransBuffStr: string | null;
|
|
161
|
+
sensorTransBuff: unknown;
|
|
162
|
+
portParamData: string | null;
|
|
163
|
+
photocellSwitch: number;
|
|
164
|
+
isOpenDoseTime: number;
|
|
165
|
+
onDoseTime: number;
|
|
166
|
+
offDoseTime: number;
|
|
167
|
+
isOnMinMaxTime: number;
|
|
168
|
+
onMinTime: number;
|
|
169
|
+
onMaxTime: number;
|
|
170
|
+
ecOrTds: number;
|
|
171
|
+
interchangeSensor: number;
|
|
172
|
+
subDeviceId: string | null;
|
|
173
|
+
subDeviceVersion: string | null;
|
|
174
|
+
subDeviceType: number | null;
|
|
175
|
+
supportOta: unknown;
|
|
176
|
+
otaUpdating: unknown;
|
|
177
|
+
secFucStatus: number;
|
|
178
|
+
secFucDevtype: number;
|
|
179
|
+
secFucDevEffect: number;
|
|
180
|
+
secFucParamNums: number;
|
|
181
|
+
secFucParams: unknown;
|
|
182
|
+
secFucReportTime: number;
|
|
183
|
+
toward: unknown;
|
|
184
|
+
powerState: unknown;
|
|
185
|
+
updateAllPort: boolean;
|
|
186
|
+
timestamp: unknown;
|
|
187
|
+
calibrationTime: unknown;
|
|
188
|
+
fieldSet: unknown[];
|
|
189
|
+
plantCode: number;
|
|
190
|
+
potSize: number;
|
|
191
|
+
plantingNum: number;
|
|
192
|
+
devCl: unknown;
|
|
193
|
+
devCsm1: unknown;
|
|
194
|
+
devCsm2: unknown;
|
|
195
|
+
devCsm3: unknown;
|
|
196
|
+
devCsm4: unknown;
|
|
197
|
+
uuidSta: number;
|
|
198
|
+
uuidType: unknown;
|
|
199
|
+
uuid: string | null;
|
|
200
|
+
matterCode: string | null;
|
|
201
|
+
matterSta: unknown;
|
|
202
|
+
}>>;
|
|
203
|
+
export declare const DeviceModeSettingsSchema: z.ZodPipe<z.ZodObject<{
|
|
204
|
+
devId: z.ZodString;
|
|
205
|
+
devMacAddr: z.ZodNullable<z.ZodString>;
|
|
206
|
+
externalPort: z.ZodNumber;
|
|
207
|
+
offSpead: z.ZodNumber;
|
|
208
|
+
onSpead: z.ZodNumber;
|
|
209
|
+
onSelfSpead: z.ZodNumber;
|
|
210
|
+
ecUnit: z.ZodNumber;
|
|
211
|
+
tdsUnit: z.ZodNumber;
|
|
212
|
+
settingMode: z.ZodNumber;
|
|
213
|
+
vpdSettingMode: z.ZodNumber;
|
|
214
|
+
atType: z.ZodEnum<typeof DeviceMode>;
|
|
215
|
+
acitveTimerOff: z.ZodNumber;
|
|
216
|
+
acitveTimerOn: z.ZodNumber;
|
|
217
|
+
activeCycleOff: z.ZodNumber;
|
|
218
|
+
activeCycleOn: z.ZodNumber;
|
|
219
|
+
activeHh: z.ZodNumber;
|
|
220
|
+
activeHt: z.ZodNumber;
|
|
221
|
+
activeHtVpd: z.ZodNumber;
|
|
222
|
+
activeHtVpdNums: z.ZodNumber;
|
|
223
|
+
activeLh: z.ZodNumber;
|
|
224
|
+
activeLt: z.ZodNumber;
|
|
225
|
+
activeLtVpd: z.ZodNumber;
|
|
226
|
+
activeLtVpdNums: z.ZodNumber;
|
|
227
|
+
co2FanHighSwitch: z.ZodNumber;
|
|
228
|
+
co2FanHighValue: z.ZodNumber;
|
|
229
|
+
co2LowSwitch: z.ZodNumber;
|
|
230
|
+
co2LowValue: z.ZodNumber;
|
|
231
|
+
devHh: z.ZodNumber;
|
|
232
|
+
devHt: z.ZodNumber;
|
|
233
|
+
devHtf: z.ZodNumber;
|
|
234
|
+
devLh: z.ZodNumber;
|
|
235
|
+
devLt: z.ZodNumber;
|
|
236
|
+
devLtf: z.ZodNumber;
|
|
237
|
+
ecTdsLowSwitchEc: z.ZodNumber;
|
|
238
|
+
ecTdsLowSwitchTds: z.ZodNumber;
|
|
239
|
+
ecTdsLowValueEcUs: z.ZodNumber;
|
|
240
|
+
ecTdsLowValueTdsPpm: z.ZodNumber;
|
|
241
|
+
isOpenAutomation: z.ZodNumber;
|
|
242
|
+
modeType: z.ZodNumber;
|
|
243
|
+
moistureLowSwitch: z.ZodNumber;
|
|
244
|
+
moistureLowValue: z.ZodNumber;
|
|
245
|
+
onlyUpdateSpeed: z.ZodNumber;
|
|
246
|
+
phHighSwitch: z.ZodNumber;
|
|
247
|
+
phHighValue: z.ZodNumber;
|
|
248
|
+
phLowSwitch: z.ZodNumber;
|
|
249
|
+
phLowValue: z.ZodNumber;
|
|
250
|
+
schedEndtTime: z.ZodNumber;
|
|
251
|
+
schedStartTime: z.ZodNumber;
|
|
252
|
+
surplus: z.ZodNullable<z.ZodNumber>;
|
|
253
|
+
targetHumi: z.ZodNumber;
|
|
254
|
+
targetHumiSwitch: z.ZodNumber;
|
|
255
|
+
targetTSwitch: z.ZodNumber;
|
|
256
|
+
targetTemp: z.ZodNumber;
|
|
257
|
+
targetTempF: z.ZodNumber;
|
|
258
|
+
targetVpd: z.ZodNumber;
|
|
259
|
+
targetVpdSwitch: z.ZodNumber;
|
|
260
|
+
waterLevelLowSwitch: z.ZodNumber;
|
|
261
|
+
waterTempHighSwitch: z.ZodNumber;
|
|
262
|
+
waterTempHighValue: z.ZodNumber;
|
|
263
|
+
waterTempHighValueF: z.ZodNumber;
|
|
264
|
+
waterTempLowSwitch: z.ZodNumber;
|
|
265
|
+
waterTempLowValue: z.ZodNumber;
|
|
266
|
+
waterTempLowValueF: z.ZodNumber;
|
|
267
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
268
|
+
id: string;
|
|
269
|
+
port: number;
|
|
270
|
+
levelWhileOff: number;
|
|
271
|
+
levelWhileOn: number;
|
|
272
|
+
mode: DeviceMode;
|
|
273
|
+
}, {
|
|
274
|
+
devId: string;
|
|
275
|
+
devMacAddr: string | null;
|
|
276
|
+
externalPort: number;
|
|
277
|
+
offSpead: number;
|
|
278
|
+
onSpead: number;
|
|
279
|
+
onSelfSpead: number;
|
|
280
|
+
ecUnit: number;
|
|
281
|
+
tdsUnit: number;
|
|
282
|
+
settingMode: number;
|
|
283
|
+
vpdSettingMode: number;
|
|
284
|
+
atType: DeviceMode;
|
|
285
|
+
acitveTimerOff: number;
|
|
286
|
+
acitveTimerOn: number;
|
|
287
|
+
activeCycleOff: number;
|
|
288
|
+
activeCycleOn: number;
|
|
289
|
+
activeHh: number;
|
|
290
|
+
activeHt: number;
|
|
291
|
+
activeHtVpd: number;
|
|
292
|
+
activeHtVpdNums: number;
|
|
293
|
+
activeLh: number;
|
|
294
|
+
activeLt: number;
|
|
295
|
+
activeLtVpd: number;
|
|
296
|
+
activeLtVpdNums: number;
|
|
297
|
+
co2FanHighSwitch: number;
|
|
298
|
+
co2FanHighValue: number;
|
|
299
|
+
co2LowSwitch: number;
|
|
300
|
+
co2LowValue: number;
|
|
301
|
+
devHh: number;
|
|
302
|
+
devHt: number;
|
|
303
|
+
devHtf: number;
|
|
304
|
+
devLh: number;
|
|
305
|
+
devLt: number;
|
|
306
|
+
devLtf: number;
|
|
307
|
+
ecTdsLowSwitchEc: number;
|
|
308
|
+
ecTdsLowSwitchTds: number;
|
|
309
|
+
ecTdsLowValueEcUs: number;
|
|
310
|
+
ecTdsLowValueTdsPpm: number;
|
|
311
|
+
isOpenAutomation: number;
|
|
312
|
+
modeType: number;
|
|
313
|
+
moistureLowSwitch: number;
|
|
314
|
+
moistureLowValue: number;
|
|
315
|
+
onlyUpdateSpeed: number;
|
|
316
|
+
phHighSwitch: number;
|
|
317
|
+
phHighValue: number;
|
|
318
|
+
phLowSwitch: number;
|
|
319
|
+
phLowValue: number;
|
|
320
|
+
schedEndtTime: number;
|
|
321
|
+
schedStartTime: number;
|
|
322
|
+
surplus: number | null;
|
|
323
|
+
targetHumi: number;
|
|
324
|
+
targetHumiSwitch: number;
|
|
325
|
+
targetTSwitch: number;
|
|
326
|
+
targetTemp: number;
|
|
327
|
+
targetTempF: number;
|
|
328
|
+
targetVpd: number;
|
|
329
|
+
targetVpdSwitch: number;
|
|
330
|
+
waterLevelLowSwitch: number;
|
|
331
|
+
waterTempHighSwitch: number;
|
|
332
|
+
waterTempHighValue: number;
|
|
333
|
+
waterTempHighValueF: number;
|
|
334
|
+
waterTempLowSwitch: number;
|
|
335
|
+
waterTempLowValue: number;
|
|
336
|
+
waterTempLowValueF: number;
|
|
337
|
+
}>>;
|
|
338
|
+
export type DeviceSettings = z.infer<typeof DeviceSettingsSchema>;
|
|
339
|
+
export type DeviceModeSettings = z.infer<typeof DeviceModeSettingsSchema>;
|
|
340
|
+
export type DeviceModeSettingsInput = z.input<typeof DeviceModeSettingsSchema>;
|
|
341
|
+
export declare function encodeDeviceModeSettings(settings: Partial<DeviceModeSettings>): Partial<DeviceModeSettingsInput>;
|
|
342
|
+
//# sourceMappingURL=Device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../../src/types/Device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oBAAY,UAAU;IACpB,UAAU,IAAI;IACd,UAAU,IAAI;IACd,YAAY,IAAI;IAChB,MAAM,IAAI;IACV,aAAa,IAAI;IACjB,GAAG,IAAI;CACR;AAED,oBAAY,UAAU;IACpB,GAAG,IAAI;IACP,EAAE,IAAI;IACN,IAAI,IAAI;IACR,WAAW,IAAI;IACf,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,GAAG,IAAI;CACR;AA0BD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+E9B,CAAC;AAEJ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDlC,CAAC;AAEJ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAIhH"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeviceModeSettingsSchema = exports.DeviceSettingsSchema = exports.DeviceMode = exports.DeviceType = void 0;
|
|
4
|
+
exports.encodeDeviceModeSettings = encodeDeviceModeSettings;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
var DeviceType;
|
|
7
|
+
(function (DeviceType) {
|
|
8
|
+
DeviceType[DeviceType["GROW_LIGHT"] = 1] = "GROW_LIGHT";
|
|
9
|
+
DeviceType[DeviceType["HUMIDIFIER"] = 2] = "HUMIDIFIER";
|
|
10
|
+
DeviceType[DeviceType["DEHUMIDIFIER"] = 3] = "DEHUMIDIFIER";
|
|
11
|
+
DeviceType[DeviceType["HEATER"] = 4] = "HEATER";
|
|
12
|
+
DeviceType[DeviceType["AIR_CONDITION"] = 5] = "AIR_CONDITION";
|
|
13
|
+
DeviceType[DeviceType["FAN"] = 6] = "FAN";
|
|
14
|
+
})(DeviceType || (exports.DeviceType = DeviceType = {}));
|
|
15
|
+
var DeviceMode;
|
|
16
|
+
(function (DeviceMode) {
|
|
17
|
+
DeviceMode[DeviceMode["OFF"] = 1] = "OFF";
|
|
18
|
+
DeviceMode[DeviceMode["ON"] = 2] = "ON";
|
|
19
|
+
DeviceMode[DeviceMode["AUTO"] = 3] = "AUTO";
|
|
20
|
+
DeviceMode[DeviceMode["TIMER_TO_ON"] = 4] = "TIMER_TO_ON";
|
|
21
|
+
DeviceMode[DeviceMode["TIMER_TO_OFF"] = 5] = "TIMER_TO_OFF";
|
|
22
|
+
DeviceMode[DeviceMode["CYCLE"] = 6] = "CYCLE";
|
|
23
|
+
DeviceMode[DeviceMode["SCHEDULE"] = 7] = "SCHEDULE";
|
|
24
|
+
DeviceMode[DeviceMode["VPD"] = 8] = "VPD";
|
|
25
|
+
})(DeviceMode || (exports.DeviceMode = DeviceMode = {}));
|
|
26
|
+
const DeviceBaseInputSchema = zod_1.z.object({
|
|
27
|
+
devId: zod_1.z.string(),
|
|
28
|
+
devMacAddr: zod_1.z.string().nullable(),
|
|
29
|
+
externalPort: zod_1.z.number(),
|
|
30
|
+
offSpead: zod_1.z.number().min(0).max(10),
|
|
31
|
+
onSpead: zod_1.z.number().min(0).max(10),
|
|
32
|
+
onSelfSpead: zod_1.z.number(),
|
|
33
|
+
ecUnit: zod_1.z.number(),
|
|
34
|
+
tdsUnit: zod_1.z.number(),
|
|
35
|
+
settingMode: zod_1.z.number(),
|
|
36
|
+
vpdSettingMode: zod_1.z.number(),
|
|
37
|
+
atType: zod_1.z.enum(DeviceMode),
|
|
38
|
+
});
|
|
39
|
+
const transformDeviceBase = ({ devId, externalPort, offSpead, onSpead, atType }) => ({
|
|
40
|
+
id: devId,
|
|
41
|
+
port: externalPort,
|
|
42
|
+
levelWhileOff: offSpead,
|
|
43
|
+
levelWhileOn: onSpead,
|
|
44
|
+
mode: atType,
|
|
45
|
+
});
|
|
46
|
+
exports.DeviceSettingsSchema = DeviceBaseInputSchema.extend({
|
|
47
|
+
setId: zod_1.z.string().nullable(),
|
|
48
|
+
port: zod_1.z.number(),
|
|
49
|
+
devName: zod_1.z.string().nullable(),
|
|
50
|
+
devLight: zod_1.z.number(),
|
|
51
|
+
hasBacklightSwitch: zod_1.z.number(),
|
|
52
|
+
backlightSwitch: zod_1.z.number(),
|
|
53
|
+
hasKeytoneSwitch: zod_1.z.number(),
|
|
54
|
+
keytoneSwitch: zod_1.z.number(),
|
|
55
|
+
devCth: zod_1.z.number(),
|
|
56
|
+
devCt: zod_1.z.number(),
|
|
57
|
+
devCth2: zod_1.z.number().nullable(),
|
|
58
|
+
devCt2: zod_1.z.number().nullable(),
|
|
59
|
+
devCh: zod_1.z.number(),
|
|
60
|
+
devTt: zod_1.z.number(),
|
|
61
|
+
devTh: zod_1.z.number(),
|
|
62
|
+
devCompany: zod_1.z.number(),
|
|
63
|
+
devTth: zod_1.z.number(),
|
|
64
|
+
vpdCth: zod_1.z.number(),
|
|
65
|
+
vpdCt: zod_1.z.number(),
|
|
66
|
+
vpdTransition: zod_1.z.number(),
|
|
67
|
+
portResistance: zod_1.z.number().nullable(),
|
|
68
|
+
devBth: zod_1.z.number(),
|
|
69
|
+
devBt: zod_1.z.number(),
|
|
70
|
+
devBh: zod_1.z.number(),
|
|
71
|
+
devBvpd: zod_1.z.number(),
|
|
72
|
+
isFlag: zod_1.z.number(),
|
|
73
|
+
devTimeZone: zod_1.z.string().nullable(),
|
|
74
|
+
loadType: zod_1.z.number(),
|
|
75
|
+
tempCompare: zod_1.z.number(),
|
|
76
|
+
humiCompare: zod_1.z.number(),
|
|
77
|
+
onTimeSwitch: zod_1.z.number(),
|
|
78
|
+
onTime: zod_1.z.number(),
|
|
79
|
+
sensorSettingStr: zod_1.z.string().nullable(),
|
|
80
|
+
sensorSetting: zod_1.z.unknown().nullable(),
|
|
81
|
+
sensorTransBuffStr: zod_1.z.string().nullable(),
|
|
82
|
+
sensorTransBuff: zod_1.z.unknown().nullable(),
|
|
83
|
+
portParamData: zod_1.z.string().nullable(),
|
|
84
|
+
photocellSwitch: zod_1.z.number(),
|
|
85
|
+
isOpenDoseTime: zod_1.z.number(),
|
|
86
|
+
onDoseTime: zod_1.z.number(),
|
|
87
|
+
offDoseTime: zod_1.z.number(),
|
|
88
|
+
isOnMinMaxTime: zod_1.z.number(),
|
|
89
|
+
onMinTime: zod_1.z.number(),
|
|
90
|
+
onMaxTime: zod_1.z.number(),
|
|
91
|
+
ecOrTds: zod_1.z.number(),
|
|
92
|
+
interchangeSensor: zod_1.z.number(),
|
|
93
|
+
subDeviceId: zod_1.z.string().nullable(),
|
|
94
|
+
subDeviceVersion: zod_1.z.string().nullable(),
|
|
95
|
+
subDeviceType: zod_1.z.number().nullable(),
|
|
96
|
+
supportOta: zod_1.z.unknown().nullable(),
|
|
97
|
+
otaUpdating: zod_1.z.unknown().nullable(),
|
|
98
|
+
secFucStatus: zod_1.z.number(),
|
|
99
|
+
secFucDevtype: zod_1.z.number(),
|
|
100
|
+
secFucDevEffect: zod_1.z.number(),
|
|
101
|
+
secFucParamNums: zod_1.z.number(),
|
|
102
|
+
secFucParams: zod_1.z.unknown().nullable(),
|
|
103
|
+
secFucReportTime: zod_1.z.number(),
|
|
104
|
+
toward: zod_1.z.unknown().nullable(),
|
|
105
|
+
powerState: zod_1.z.unknown().nullable(),
|
|
106
|
+
updateAllPort: zod_1.z.boolean(),
|
|
107
|
+
timestamp: zod_1.z.unknown().nullable(),
|
|
108
|
+
calibrationTime: zod_1.z.unknown().nullable(),
|
|
109
|
+
fieldSet: zod_1.z.array(zod_1.z.unknown()),
|
|
110
|
+
plantCode: zod_1.z.number(),
|
|
111
|
+
potSize: zod_1.z.number(),
|
|
112
|
+
plantingNum: zod_1.z.number(),
|
|
113
|
+
devCl: zod_1.z.unknown().nullable(),
|
|
114
|
+
devCsm1: zod_1.z.unknown().nullable(),
|
|
115
|
+
devCsm2: zod_1.z.unknown().nullable(),
|
|
116
|
+
devCsm3: zod_1.z.unknown().nullable(),
|
|
117
|
+
devCsm4: zod_1.z.unknown().nullable(),
|
|
118
|
+
uuidSta: zod_1.z.number(),
|
|
119
|
+
uuidType: zod_1.z.unknown().nullable(),
|
|
120
|
+
uuid: zod_1.z.string().nullable(),
|
|
121
|
+
matterCode: zod_1.z.string().nullable(),
|
|
122
|
+
matterSta: zod_1.z.unknown().nullable(),
|
|
123
|
+
}).transform((v) => ({
|
|
124
|
+
...transformDeviceBase(v),
|
|
125
|
+
}));
|
|
126
|
+
exports.DeviceModeSettingsSchema = DeviceBaseInputSchema.extend({
|
|
127
|
+
acitveTimerOff: zod_1.z.number(),
|
|
128
|
+
acitveTimerOn: zod_1.z.number(),
|
|
129
|
+
activeCycleOff: zod_1.z.number(),
|
|
130
|
+
activeCycleOn: zod_1.z.number(),
|
|
131
|
+
activeHh: zod_1.z.number(),
|
|
132
|
+
activeHt: zod_1.z.number(),
|
|
133
|
+
activeHtVpd: zod_1.z.number(),
|
|
134
|
+
activeHtVpdNums: zod_1.z.number(),
|
|
135
|
+
activeLh: zod_1.z.number(),
|
|
136
|
+
activeLt: zod_1.z.number(),
|
|
137
|
+
activeLtVpd: zod_1.z.number(),
|
|
138
|
+
activeLtVpdNums: zod_1.z.number(),
|
|
139
|
+
co2FanHighSwitch: zod_1.z.number(),
|
|
140
|
+
co2FanHighValue: zod_1.z.number(),
|
|
141
|
+
co2LowSwitch: zod_1.z.number(),
|
|
142
|
+
co2LowValue: zod_1.z.number(),
|
|
143
|
+
devHh: zod_1.z.number(),
|
|
144
|
+
devHt: zod_1.z.number(),
|
|
145
|
+
devHtf: zod_1.z.number(),
|
|
146
|
+
devLh: zod_1.z.number(),
|
|
147
|
+
devLt: zod_1.z.number(),
|
|
148
|
+
devLtf: zod_1.z.number(),
|
|
149
|
+
ecTdsLowSwitchEc: zod_1.z.number(),
|
|
150
|
+
ecTdsLowSwitchTds: zod_1.z.number(),
|
|
151
|
+
ecTdsLowValueEcUs: zod_1.z.number(),
|
|
152
|
+
ecTdsLowValueTdsPpm: zod_1.z.number(),
|
|
153
|
+
isOpenAutomation: zod_1.z.number(),
|
|
154
|
+
modeType: zod_1.z.number(),
|
|
155
|
+
moistureLowSwitch: zod_1.z.number(),
|
|
156
|
+
moistureLowValue: zod_1.z.number(),
|
|
157
|
+
onlyUpdateSpeed: zod_1.z.number(),
|
|
158
|
+
phHighSwitch: zod_1.z.number(),
|
|
159
|
+
phHighValue: zod_1.z.number(),
|
|
160
|
+
phLowSwitch: zod_1.z.number(),
|
|
161
|
+
phLowValue: zod_1.z.number(),
|
|
162
|
+
schedEndtTime: zod_1.z.number(),
|
|
163
|
+
schedStartTime: zod_1.z.number(),
|
|
164
|
+
surplus: zod_1.z.number().nullable(),
|
|
165
|
+
targetHumi: zod_1.z.number(),
|
|
166
|
+
targetHumiSwitch: zod_1.z.number(),
|
|
167
|
+
targetTSwitch: zod_1.z.number(),
|
|
168
|
+
targetTemp: zod_1.z.number(),
|
|
169
|
+
targetTempF: zod_1.z.number(),
|
|
170
|
+
targetVpd: zod_1.z.number(),
|
|
171
|
+
targetVpdSwitch: zod_1.z.number(),
|
|
172
|
+
waterLevelLowSwitch: zod_1.z.number(),
|
|
173
|
+
waterTempHighSwitch: zod_1.z.number(),
|
|
174
|
+
waterTempHighValue: zod_1.z.number(),
|
|
175
|
+
waterTempHighValueF: zod_1.z.number(),
|
|
176
|
+
waterTempLowSwitch: zod_1.z.number(),
|
|
177
|
+
waterTempLowValue: zod_1.z.number(),
|
|
178
|
+
waterTempLowValueF: zod_1.z.number(),
|
|
179
|
+
}).transform((v) => ({
|
|
180
|
+
...transformDeviceBase(v),
|
|
181
|
+
}));
|
|
182
|
+
function encodeDeviceModeSettings(settings) {
|
|
183
|
+
return {
|
|
184
|
+
onSpead: settings.levelWhileOn,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const UserSchema: z.ZodPipe<z.ZodObject<{
|
|
3
|
+
appId: z.ZodString;
|
|
4
|
+
nickName: z.ZodString;
|
|
5
|
+
appEmail: z.ZodEmail;
|
|
6
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
7
|
+
id: string;
|
|
8
|
+
username: string;
|
|
9
|
+
email: string;
|
|
10
|
+
}, {
|
|
11
|
+
appId: string;
|
|
12
|
+
nickName: string;
|
|
13
|
+
appEmail: string;
|
|
14
|
+
}>>;
|
|
15
|
+
export type User = z.infer<typeof UserSchema>;
|
|
16
|
+
//# sourceMappingURL=User.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"User.d.ts","sourceRoot":"","sources":["../../../src/types/User.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU;;;;;;;;;;;;GAUlB,CAAC;AAEN,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.UserSchema = zod_1.z
|
|
6
|
+
.object({
|
|
7
|
+
appId: zod_1.z.string(),
|
|
8
|
+
nickName: zod_1.z.string(),
|
|
9
|
+
appEmail: zod_1.z.email(),
|
|
10
|
+
})
|
|
11
|
+
.transform(({ appId, nickName, appEmail }) => ({
|
|
12
|
+
id: appId,
|
|
13
|
+
username: nickName,
|
|
14
|
+
email: appEmail,
|
|
15
|
+
}));
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { Controller, ControllerDeviceInfo, ControllerPort } from './Controller';
|
|
2
|
+
export { ControllerDeviceType, ControllerSchema } from './Controller';
|
|
3
|
+
export type { DeviceModeSettings, DeviceModeSettingsInput, DeviceSettings } from './Device';
|
|
4
|
+
export { DeviceMode, DeviceModeSettingsSchema, DeviceSettingsSchema, DeviceType, encodeDeviceModeSettings } from './Device';
|
|
5
|
+
export type { User } from './User';
|
|
6
|
+
export { UserSchema } from './User';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAC5H,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserSchema = exports.encodeDeviceModeSettings = exports.DeviceType = exports.DeviceSettingsSchema = exports.DeviceModeSettingsSchema = exports.DeviceMode = exports.ControllerSchema = exports.ControllerDeviceType = void 0;
|
|
4
|
+
var Controller_1 = require("./Controller");
|
|
5
|
+
Object.defineProperty(exports, "ControllerDeviceType", { enumerable: true, get: function () { return Controller_1.ControllerDeviceType; } });
|
|
6
|
+
Object.defineProperty(exports, "ControllerSchema", { enumerable: true, get: function () { return Controller_1.ControllerSchema; } });
|
|
7
|
+
var Device_1 = require("./Device");
|
|
8
|
+
Object.defineProperty(exports, "DeviceMode", { enumerable: true, get: function () { return Device_1.DeviceMode; } });
|
|
9
|
+
Object.defineProperty(exports, "DeviceModeSettingsSchema", { enumerable: true, get: function () { return Device_1.DeviceModeSettingsSchema; } });
|
|
10
|
+
Object.defineProperty(exports, "DeviceSettingsSchema", { enumerable: true, get: function () { return Device_1.DeviceSettingsSchema; } });
|
|
11
|
+
Object.defineProperty(exports, "DeviceType", { enumerable: true, get: function () { return Device_1.DeviceType; } });
|
|
12
|
+
Object.defineProperty(exports, "encodeDeviceModeSettings", { enumerable: true, get: function () { return Device_1.encodeDeviceModeSettings; } });
|
|
13
|
+
var User_1 = require("./User");
|
|
14
|
+
Object.defineProperty(exports, "UserSchema", { enumerable: true, get: function () { return User_1.UserSchema; } });
|
package/package.json
CHANGED
|
@@ -1,32 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jakobgoerke/ac-infinity-client",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"main": "./build/src",
|
|
5
5
|
"types": "./build/src/index.d.ts",
|
|
6
6
|
"repository": "git@github.com:jakobgoerke/ac-infinity-client.git",
|
|
7
7
|
"author": "revdev <mail@revdev.me>",
|
|
8
8
|
"license": "GPL-3.0-or-later",
|
|
9
|
-
"dependencies": {
|
|
10
|
-
"axios": "1.7.7",
|
|
11
|
-
"rimraf": "6.0.1",
|
|
12
|
-
"zod": "3.23.8"
|
|
13
|
-
},
|
|
14
9
|
"files": [
|
|
15
10
|
"package.json",
|
|
16
11
|
"build/src/**"
|
|
17
12
|
],
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"axios": "1.13.5",
|
|
15
|
+
"zod": "4.3.6"
|
|
16
|
+
},
|
|
18
17
|
"devDependencies": {
|
|
19
|
-
"@
|
|
20
|
-
"@
|
|
21
|
-
"@
|
|
22
|
-
"jest": "
|
|
23
|
-
"
|
|
24
|
-
"
|
|
18
|
+
"@biomejs/biome": "2.4.4",
|
|
19
|
+
"@jest/globals": "30.2.0",
|
|
20
|
+
"@tsconfig/node24": "24.0.4",
|
|
21
|
+
"@types/jest": "30.0.0",
|
|
22
|
+
"@types/node": "25.3.0",
|
|
23
|
+
"jest": "30.2.0",
|
|
24
|
+
"rimraf": "6.1.3",
|
|
25
|
+
"ts-jest": "29.4.6",
|
|
26
|
+
"ts-node": "10.9.2",
|
|
27
|
+
"typescript": "5.9.3"
|
|
25
28
|
},
|
|
26
29
|
"scripts": {
|
|
27
30
|
"build": "rimraf build && tsc -p .",
|
|
28
31
|
"watch": "tsc -p . --watch",
|
|
29
32
|
"test": "jest",
|
|
30
|
-
"coverage": "jest --coverage"
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
+
"coverage": "jest --coverage",
|
|
34
|
+
"lint": "biome check"
|
|
35
|
+
},
|
|
36
|
+
"packageManager": "yarn@4.12.0"
|
|
37
|
+
}
|