@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 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;AA6BnD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4B9E"}
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":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -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.ZodOptional<z.ZodEnum<{
10
+ parity: z.ZodDefault<z.ZodEnum<{
11
11
  none: "none";
12
12
  even: "even";
13
13
  odd: "odd";
14
14
  }>>;
15
- dataBits: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<7>, z.ZodLiteral<8>]>>;
16
- stopBits: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
17
- }, z.core.$strip>, z.ZodObject<{
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
- }, z.core.$strip>]>;
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
- }, z.core.$strip>;
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;AA+DvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM7B,CAAA;AAEF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAO1D"}
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.object({
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']).optional(),
34
- dataBits: zod_1.z.union([zod_1.z.literal(7), zod_1.z.literal(8)]).optional(),
35
- stopBits: zod_1.z.union([zod_1.z.literal(1), zod_1.z.literal(2)]).optional(),
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.object({
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.object({
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":"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"}
1
+ {"version":3,"file":"device-validation.js","sourceRoot":"","sources":["../../../../src/utils/device-validation.ts"],"names":[],"mappings":"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"}