@ya-modbus/mqtt-bridge 0.8.0 → 0.8.2
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/CHANGELOG.md +12 -0
- package/dist/cjs/bin/ya-modbus-bridge.js +0 -0
- package/dist/cjs/src/utils/config.d.ts.map +1 -1
- package/dist/cjs/src/utils/config.js +3 -0
- package/dist/cjs/src/utils/config.js.map +1 -1
- package/dist/cjs/src/utils/device-validation.d.ts +125 -11
- package/dist/cjs/src/utils/device-validation.d.ts.map +1 -1
- package/dist/cjs/src/utils/device-validation.js +40 -7
- package/dist/cjs/src/utils/device-validation.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/utils/config.d.ts.map +1 -1
- package/dist/esm/src/utils/config.js +3 -0
- package/dist/esm/src/utils/config.js.map +1 -1
- package/dist/esm/src/utils/device-validation.d.ts +125 -11
- package/dist/esm/src/utils/device-validation.d.ts.map +1 -1
- package/dist/esm/src/utils/device-validation.js +40 -7
- package/dist/esm/src/utils/device-validation.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.8.2](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/mqtt-bridge@0.8.1...@ya-modbus/mqtt-bridge@0.8.2) (2026-02-11)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **build:** set executable permissions on CLI bin files ([#359](https://github.com/groupsky/ya-modbus/issues/359)) ([f8111af](https://github.com/groupsky/ya-modbus/commit/f8111af3a00a4ae5bd1fd01df2b89a9ac7c8c6a9)), closes [#37583](https://github.com/groupsky/ya-modbus/issues/37583) [#16257](https://github.com/groupsky/ya-modbus/issues/16257) [#26060](https://github.com/groupsky/ya-modbus/issues/26060) [#360](https://github.com/groupsky/ya-modbus/issues/360) [#361](https://github.com/groupsky/ya-modbus/issues/361)
|
|
11
|
+
|
|
12
|
+
## [0.8.1](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/mqtt-bridge@0.8.0...@ya-modbus/mqtt-bridge@0.8.1) (2026-02-08)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- **mqtt-bridge:** load devices from config and fix type safety ([#352](https://github.com/groupsky/ya-modbus/issues/352)) ([8e2b4a4](https://github.com/groupsky/ya-modbus/commit/8e2b4a4ad662ba0a723036c03060a33fa7946b57)), closes [#347](https://github.com/groupsky/ya-modbus/issues/347) [#348](https://github.com/groupsky/ya-modbus/issues/348)
|
|
17
|
+
|
|
6
18
|
# [0.8.0](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/mqtt-bridge@0.7.1...@ya-modbus/mqtt-bridge@0.8.0) (2026-02-08)
|
|
7
19
|
|
|
8
20
|
### Features
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/utils/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/utils/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAgCnD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6B9E"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.loadConfig = loadConfig;
|
|
4
4
|
const promises_1 = require("node:fs/promises");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
|
+
const device_validation_js_1 = require("./device-validation.js");
|
|
6
7
|
const mqttConfigSchema = zod_1.z.object({
|
|
7
8
|
url: zod_1.z
|
|
8
9
|
.string()
|
|
@@ -26,6 +27,7 @@ const mqttBridgeConfigSchema = zod_1.z.object({
|
|
|
26
27
|
message: 'Topic prefix must not contain MQTT special characters (+, #, /, $) or null character',
|
|
27
28
|
})
|
|
28
29
|
.optional(),
|
|
30
|
+
devices: zod_1.z.array(device_validation_js_1.deviceConfigSchema).optional(),
|
|
29
31
|
});
|
|
30
32
|
async function loadConfig(configPath) {
|
|
31
33
|
const content = await (0, promises_1.readFile)(configPath, 'utf-8');
|
|
@@ -49,6 +51,7 @@ async function loadConfig(configPath) {
|
|
|
49
51
|
},
|
|
50
52
|
...(result.data.stateDir !== undefined && { stateDir: result.data.stateDir }),
|
|
51
53
|
...(result.data.topicPrefix !== undefined && { topicPrefix: result.data.topicPrefix }),
|
|
54
|
+
...(result.data.devices !== undefined && { devices: result.data.devices }),
|
|
52
55
|
};
|
|
53
56
|
return config;
|
|
54
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/utils/config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/utils/config.ts"],"names":[],"mappings":";;AAoCA,gCA6BC;AAjED,+CAA2C;AAE3C,6BAAuB;AAIvB,iEAA2D;AAE3D,MAAM,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,GAAG,EAAE,OAAC;SACH,MAAM,EAAE;SACR,GAAG,EAAE;SACL,KAAK,CAAC,2BAA2B,EAAE;QAClC,OAAO,EAAE,yDAAyD;KACnE,CAAC;SACD,OAAO,CAAC,uBAAuB,CAAC;IACnC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAA;AAEF,MAAM,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC;IAChE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,OAAC;SACX,MAAM,EAAE;QACT,4CAA4C;SAC3C,KAAK,CAAC,gBAAgB,EAAE;QACvB,OAAO,EACL,sFAAsF;KACzF,CAAC;SACD,QAAQ,EAAE;IACb,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,yCAAkB,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAA;AAEK,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAA;IAE3C,qEAAqE;IACrE,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAE1E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7F,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,wEAAwE;IACxE,MAAM,MAAM,GAAqB;QAC/B,IAAI,EAAE;YACJ,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACzB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI;gBACpD,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe;aAClD,CAAC;SACH;QACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7E,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;KAC3E,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -1,31 +1,145 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const deviceConfigSchema: z.ZodObject<{
|
|
2
|
+
export declare const deviceConfigSchema: z.ZodPipe<z.ZodObject<{
|
|
3
3
|
deviceId: z.ZodString;
|
|
4
4
|
driver: z.ZodString;
|
|
5
|
-
connection: z.ZodUnion<readonly [z.ZodObject<{
|
|
5
|
+
connection: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
|
|
6
6
|
type: z.ZodLiteral<"rtu">;
|
|
7
7
|
port: z.ZodString;
|
|
8
8
|
baudRate: z.ZodNumber;
|
|
9
9
|
slaveId: z.ZodNumber;
|
|
10
|
-
parity: z.
|
|
10
|
+
parity: z.ZodDefault<z.ZodEnum<{
|
|
11
11
|
none: "none";
|
|
12
12
|
even: "even";
|
|
13
13
|
odd: "odd";
|
|
14
14
|
}>>;
|
|
15
|
-
dataBits: z.
|
|
16
|
-
stopBits: z.
|
|
17
|
-
|
|
15
|
+
dataBits: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<7>, z.ZodLiteral<8>]>>;
|
|
16
|
+
stopBits: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
|
|
17
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
18
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
19
|
+
type: "rtu";
|
|
20
|
+
port: string;
|
|
21
|
+
baudRate: number;
|
|
22
|
+
slaveId: number;
|
|
23
|
+
parity: "none" | "even" | "odd";
|
|
24
|
+
dataBits: 7 | 8;
|
|
25
|
+
stopBits: 1 | 2;
|
|
26
|
+
} | {
|
|
27
|
+
timeout: number;
|
|
28
|
+
type: "rtu";
|
|
29
|
+
port: string;
|
|
30
|
+
baudRate: number;
|
|
31
|
+
slaveId: number;
|
|
32
|
+
parity: "none" | "even" | "odd";
|
|
33
|
+
dataBits: 7 | 8;
|
|
34
|
+
stopBits: 1 | 2;
|
|
35
|
+
}, {
|
|
36
|
+
type: "rtu";
|
|
37
|
+
port: string;
|
|
38
|
+
baudRate: number;
|
|
39
|
+
slaveId: number;
|
|
40
|
+
parity: "none" | "even" | "odd";
|
|
41
|
+
dataBits: 7 | 8;
|
|
42
|
+
stopBits: 1 | 2;
|
|
43
|
+
timeout?: number | undefined;
|
|
44
|
+
}>>, z.ZodPipe<z.ZodObject<{
|
|
18
45
|
type: z.ZodLiteral<"tcp">;
|
|
19
46
|
host: z.ZodString;
|
|
20
|
-
port: z.ZodNumber
|
|
47
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
21
48
|
slaveId: z.ZodNumber;
|
|
22
|
-
|
|
49
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
51
|
+
timeout?: number;
|
|
52
|
+
port?: number;
|
|
53
|
+
type: "tcp";
|
|
54
|
+
host: string;
|
|
55
|
+
slaveId: number;
|
|
56
|
+
}, {
|
|
57
|
+
type: "tcp";
|
|
58
|
+
host: string;
|
|
59
|
+
slaveId: number;
|
|
60
|
+
port?: number | undefined;
|
|
61
|
+
timeout?: number | undefined;
|
|
62
|
+
}>>]>;
|
|
23
63
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
-
polling: z.ZodOptional<z.ZodObject<{
|
|
64
|
+
polling: z.ZodOptional<z.ZodPipe<z.ZodObject<{
|
|
25
65
|
interval: z.ZodNumber;
|
|
26
66
|
maxRetries: z.ZodOptional<z.ZodNumber>;
|
|
27
67
|
retryBackoff: z.ZodOptional<z.ZodNumber>;
|
|
28
|
-
}, z.core.$strip
|
|
29
|
-
|
|
68
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
69
|
+
retryBackoff?: number;
|
|
70
|
+
maxRetries?: number;
|
|
71
|
+
interval: number;
|
|
72
|
+
}, {
|
|
73
|
+
interval: number;
|
|
74
|
+
maxRetries?: number | undefined;
|
|
75
|
+
retryBackoff?: number | undefined;
|
|
76
|
+
}>>>;
|
|
77
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
78
|
+
polling?: {
|
|
79
|
+
retryBackoff?: number;
|
|
80
|
+
maxRetries?: number;
|
|
81
|
+
interval: number;
|
|
82
|
+
};
|
|
83
|
+
enabled?: boolean;
|
|
84
|
+
deviceId: string;
|
|
85
|
+
driver: string;
|
|
86
|
+
connection: {
|
|
87
|
+
type: "rtu";
|
|
88
|
+
port: string;
|
|
89
|
+
baudRate: number;
|
|
90
|
+
slaveId: number;
|
|
91
|
+
parity: "none" | "even" | "odd";
|
|
92
|
+
dataBits: 7 | 8;
|
|
93
|
+
stopBits: 1 | 2;
|
|
94
|
+
} | {
|
|
95
|
+
timeout: number;
|
|
96
|
+
type: "rtu";
|
|
97
|
+
port: string;
|
|
98
|
+
baudRate: number;
|
|
99
|
+
slaveId: number;
|
|
100
|
+
parity: "none" | "even" | "odd";
|
|
101
|
+
dataBits: 7 | 8;
|
|
102
|
+
stopBits: 1 | 2;
|
|
103
|
+
} | {
|
|
104
|
+
timeout?: number;
|
|
105
|
+
port?: number;
|
|
106
|
+
type: "tcp";
|
|
107
|
+
host: string;
|
|
108
|
+
slaveId: number;
|
|
109
|
+
};
|
|
110
|
+
}, {
|
|
111
|
+
deviceId: string;
|
|
112
|
+
driver: string;
|
|
113
|
+
connection: {
|
|
114
|
+
type: "rtu";
|
|
115
|
+
port: string;
|
|
116
|
+
baudRate: number;
|
|
117
|
+
slaveId: number;
|
|
118
|
+
parity: "none" | "even" | "odd";
|
|
119
|
+
dataBits: 7 | 8;
|
|
120
|
+
stopBits: 1 | 2;
|
|
121
|
+
} | {
|
|
122
|
+
timeout: number;
|
|
123
|
+
type: "rtu";
|
|
124
|
+
port: string;
|
|
125
|
+
baudRate: number;
|
|
126
|
+
slaveId: number;
|
|
127
|
+
parity: "none" | "even" | "odd";
|
|
128
|
+
dataBits: 7 | 8;
|
|
129
|
+
stopBits: 1 | 2;
|
|
130
|
+
} | {
|
|
131
|
+
timeout?: number;
|
|
132
|
+
port?: number;
|
|
133
|
+
type: "tcp";
|
|
134
|
+
host: string;
|
|
135
|
+
slaveId: number;
|
|
136
|
+
};
|
|
137
|
+
enabled?: boolean | undefined;
|
|
138
|
+
polling?: {
|
|
139
|
+
retryBackoff?: number;
|
|
140
|
+
maxRetries?: number;
|
|
141
|
+
interval: number;
|
|
142
|
+
} | undefined;
|
|
143
|
+
}>>;
|
|
30
144
|
export declare function validateDeviceConfig(config: unknown): void;
|
|
31
145
|
//# sourceMappingURL=device-validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-validation.d.ts","sourceRoot":"","sources":["../../../../src/utils/device-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"device-validation.d.ts","sourceRoot":"","sources":["../../../../src/utils/device-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAuFvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAe3B,CAAA;AAEJ,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAO1D"}
|
|
@@ -25,20 +25,36 @@ const driverNameSchema = zod_1.z
|
|
|
25
25
|
.refine((name) => !name.includes('..') && !name.includes('\\'), {
|
|
26
26
|
message: 'Driver name cannot contain path traversal sequences',
|
|
27
27
|
});
|
|
28
|
-
const rtuConnectionSchema = zod_1.z
|
|
28
|
+
const rtuConnectionSchema = zod_1.z
|
|
29
|
+
.object({
|
|
29
30
|
type: zod_1.z.literal('rtu'),
|
|
30
31
|
port: zod_1.z.string().min(1),
|
|
31
32
|
baudRate: zod_1.z.number().positive(),
|
|
32
33
|
slaveId: zod_1.z.number().int().min(0).max(247),
|
|
33
|
-
parity: zod_1.z.enum(['none', 'even', 'odd']).
|
|
34
|
-
dataBits: zod_1.z.union([zod_1.z.literal(7), zod_1.z.literal(8)]).
|
|
35
|
-
stopBits: zod_1.z.union([zod_1.z.literal(1), zod_1.z.literal(2)]).
|
|
34
|
+
parity: zod_1.z.enum(['none', 'even', 'odd']).default('none'),
|
|
35
|
+
dataBits: zod_1.z.union([zod_1.z.literal(7), zod_1.z.literal(8)]).default(8),
|
|
36
|
+
stopBits: zod_1.z.union([zod_1.z.literal(1), zod_1.z.literal(2)]).default(1),
|
|
37
|
+
timeout: zod_1.z.number().int().positive().optional(),
|
|
38
|
+
})
|
|
39
|
+
.transform((data) => {
|
|
40
|
+
const { timeout, ...rest } = data;
|
|
41
|
+
return timeout !== undefined ? { ...rest, timeout } : rest;
|
|
36
42
|
});
|
|
37
|
-
const tcpConnectionSchema = zod_1.z
|
|
43
|
+
const tcpConnectionSchema = zod_1.z
|
|
44
|
+
.object({
|
|
38
45
|
type: zod_1.z.literal('tcp'),
|
|
39
46
|
host: zod_1.z.string().min(1),
|
|
40
|
-
port: zod_1.z.number().int().positive().max(65535),
|
|
47
|
+
port: zod_1.z.number().int().positive().max(65535).optional(),
|
|
41
48
|
slaveId: zod_1.z.number().int().min(0).max(247),
|
|
49
|
+
timeout: zod_1.z.number().int().positive().optional(),
|
|
50
|
+
})
|
|
51
|
+
.transform((data) => {
|
|
52
|
+
const { port, timeout, ...rest } = data;
|
|
53
|
+
return {
|
|
54
|
+
...rest,
|
|
55
|
+
...(port !== undefined ? { port } : {}),
|
|
56
|
+
...(timeout !== undefined ? { timeout } : {}),
|
|
57
|
+
};
|
|
42
58
|
});
|
|
43
59
|
const pollingConfigSchema = zod_1.z
|
|
44
60
|
.object({
|
|
@@ -55,14 +71,31 @@ const pollingConfigSchema = zod_1.z
|
|
|
55
71
|
.max(100, 'Max retries should not exceed 100')
|
|
56
72
|
.optional(),
|
|
57
73
|
retryBackoff: zod_1.z.number().int().positive().optional(),
|
|
74
|
+
})
|
|
75
|
+
.transform((data) => {
|
|
76
|
+
const { maxRetries, retryBackoff, ...rest } = data;
|
|
77
|
+
return {
|
|
78
|
+
...rest,
|
|
79
|
+
...(maxRetries !== undefined ? { maxRetries } : {}),
|
|
80
|
+
...(retryBackoff !== undefined ? { retryBackoff } : {}),
|
|
81
|
+
};
|
|
58
82
|
})
|
|
59
83
|
.optional();
|
|
60
|
-
exports.deviceConfigSchema = zod_1.z
|
|
84
|
+
exports.deviceConfigSchema = zod_1.z
|
|
85
|
+
.object({
|
|
61
86
|
deviceId: deviceIdSchema,
|
|
62
87
|
driver: driverNameSchema,
|
|
63
88
|
connection: zod_1.z.union([rtuConnectionSchema, tcpConnectionSchema]),
|
|
64
89
|
enabled: zod_1.z.boolean().optional(),
|
|
65
90
|
polling: pollingConfigSchema,
|
|
91
|
+
})
|
|
92
|
+
.transform((data) => {
|
|
93
|
+
const { enabled, polling, ...rest } = data;
|
|
94
|
+
return {
|
|
95
|
+
...rest,
|
|
96
|
+
...(enabled !== undefined ? { enabled } : {}),
|
|
97
|
+
...(polling !== undefined ? { polling } : {}),
|
|
98
|
+
};
|
|
66
99
|
});
|
|
67
100
|
function validateDeviceConfig(config) {
|
|
68
101
|
const result = exports.deviceConfigSchema.safeParse(config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-validation.js","sourceRoot":"","sources":["../../../../src/utils/device-validation.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"device-validation.js","sourceRoot":"","sources":["../../../../src/utils/device-validation.ts"],"names":[],"mappings":"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"}
|