@ya-modbus/cli 0.6.0 → 0.7.0

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.
Files changed (207) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/bin/ya-modbus.d.ts.map +1 -0
  3. package/dist/cjs/bin/ya-modbus.js +12 -0
  4. package/dist/cjs/bin/ya-modbus.js.map +1 -0
  5. package/dist/cjs/package.json +1 -0
  6. package/dist/cjs/src/commands/discover.d.ts.map +1 -0
  7. package/dist/cjs/src/commands/discover.js +196 -0
  8. package/dist/cjs/src/commands/discover.js.map +1 -0
  9. package/dist/cjs/src/commands/list-devices.d.ts.map +1 -0
  10. package/dist/cjs/src/commands/list-devices.js +79 -0
  11. package/dist/cjs/src/commands/list-devices.js.map +1 -0
  12. package/dist/cjs/src/commands/read.d.ts.map +1 -0
  13. package/dist/cjs/src/commands/read.js +79 -0
  14. package/dist/cjs/src/commands/read.js.map +1 -0
  15. package/dist/cjs/src/commands/show-defaults.d.ts.map +1 -0
  16. package/dist/cjs/src/commands/show-defaults.js +51 -0
  17. package/dist/cjs/src/commands/show-defaults.js.map +1 -0
  18. package/dist/cjs/src/commands/write.d.ts.map +1 -0
  19. package/dist/cjs/src/commands/write.js +65 -0
  20. package/dist/cjs/src/commands/write.js.map +1 -0
  21. package/dist/cjs/src/discovery/constants.d.ts.map +1 -0
  22. package/dist/cjs/src/discovery/constants.js +48 -0
  23. package/dist/cjs/src/discovery/constants.js.map +1 -0
  24. package/dist/cjs/src/discovery/device-identifier.d.ts.map +1 -0
  25. package/dist/cjs/src/discovery/device-identifier.js +196 -0
  26. package/dist/cjs/src/discovery/device-identifier.js.map +1 -0
  27. package/dist/cjs/src/discovery/parameter-generator-utils.d.ts.map +1 -0
  28. package/dist/cjs/src/discovery/parameter-generator-utils.js +63 -0
  29. package/dist/cjs/src/discovery/parameter-generator-utils.js.map +1 -0
  30. package/dist/cjs/src/discovery/parameter-generator.d.ts.map +1 -0
  31. package/dist/cjs/src/discovery/parameter-generator.js +188 -0
  32. package/dist/cjs/src/discovery/parameter-generator.js.map +1 -0
  33. package/dist/cjs/src/discovery/progress.d.ts.map +1 -0
  34. package/dist/cjs/src/discovery/progress.js +59 -0
  35. package/dist/cjs/src/discovery/progress.js.map +1 -0
  36. package/dist/cjs/src/discovery/scanner.d.ts.map +1 -0
  37. package/dist/cjs/src/discovery/scanner.js +147 -0
  38. package/dist/cjs/src/discovery/scanner.js.map +1 -0
  39. package/dist/cjs/src/formatters/discovery-results.d.ts.map +1 -0
  40. package/dist/cjs/src/formatters/discovery-results.js +62 -0
  41. package/dist/cjs/src/formatters/discovery-results.js.map +1 -0
  42. package/dist/cjs/src/formatters/json.d.ts.map +1 -0
  43. package/dist/cjs/src/formatters/json.js +36 -0
  44. package/dist/cjs/src/formatters/json.js.map +1 -0
  45. package/dist/cjs/src/formatters/performance.d.ts.map +1 -0
  46. package/dist/cjs/src/formatters/performance.js +28 -0
  47. package/dist/cjs/src/formatters/performance.js.map +1 -0
  48. package/dist/cjs/src/formatters/table.d.ts.map +1 -0
  49. package/dist/cjs/src/formatters/table.js +95 -0
  50. package/dist/cjs/src/formatters/table.js.map +1 -0
  51. package/dist/cjs/src/index.d.ts.map +1 -0
  52. package/dist/cjs/src/index.js +157 -0
  53. package/dist/cjs/src/index.js.map +1 -0
  54. package/dist/cjs/src/utils/commands.d.ts.map +1 -0
  55. package/dist/cjs/src/utils/commands.js +421 -0
  56. package/dist/cjs/src/utils/commands.js.map +1 -0
  57. package/dist/cjs/src/utils/object-utils.d.ts.map +1 -0
  58. package/dist/cjs/src/utils/object-utils.js +31 -0
  59. package/dist/cjs/src/utils/object-utils.js.map +1 -0
  60. package/dist/cjs/src/utils/validation.d.ts.map +1 -0
  61. package/dist/cjs/src/utils/validation.js +165 -0
  62. package/dist/cjs/src/utils/validation.js.map +1 -0
  63. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  64. package/dist/esm/bin/ya-modbus.d.ts +9 -0
  65. package/dist/esm/bin/ya-modbus.d.ts.map +1 -0
  66. package/dist/esm/bin/ya-modbus.js.map +1 -0
  67. package/dist/esm/package.json +1 -0
  68. package/dist/esm/src/commands/discover.d.ts +25 -0
  69. package/dist/esm/src/commands/discover.d.ts.map +1 -0
  70. package/dist/esm/src/commands/discover.js.map +1 -0
  71. package/dist/esm/src/commands/list-devices.d.ts +21 -0
  72. package/dist/esm/src/commands/list-devices.d.ts.map +1 -0
  73. package/dist/esm/src/commands/list-devices.js.map +1 -0
  74. package/dist/esm/src/commands/read.d.ts +25 -0
  75. package/dist/esm/src/commands/read.d.ts.map +1 -0
  76. package/dist/esm/src/commands/read.js.map +1 -0
  77. package/dist/esm/src/commands/show-defaults.d.ts +21 -0
  78. package/dist/esm/src/commands/show-defaults.d.ts.map +1 -0
  79. package/dist/esm/src/commands/show-defaults.js.map +1 -0
  80. package/dist/esm/src/commands/write.d.ts +26 -0
  81. package/dist/esm/src/commands/write.d.ts.map +1 -0
  82. package/dist/esm/src/commands/write.js.map +1 -0
  83. package/dist/esm/src/discovery/constants.d.ts +37 -0
  84. package/dist/esm/src/discovery/constants.d.ts.map +1 -0
  85. package/dist/esm/src/discovery/constants.js.map +1 -0
  86. package/dist/esm/src/discovery/device-identifier.d.ts +52 -0
  87. package/dist/esm/src/discovery/device-identifier.d.ts.map +1 -0
  88. package/dist/esm/src/discovery/device-identifier.js.map +1 -0
  89. package/dist/esm/src/discovery/parameter-generator-utils.d.ts +29 -0
  90. package/dist/esm/src/discovery/parameter-generator-utils.d.ts.map +1 -0
  91. package/dist/esm/src/discovery/parameter-generator-utils.js.map +1 -0
  92. package/dist/esm/src/discovery/parameter-generator.d.ts +97 -0
  93. package/dist/esm/src/discovery/parameter-generator.d.ts.map +1 -0
  94. package/dist/esm/src/discovery/parameter-generator.js.map +1 -0
  95. package/dist/esm/src/discovery/progress.d.ts +24 -0
  96. package/dist/esm/src/discovery/progress.d.ts.map +1 -0
  97. package/dist/{src → esm/src}/discovery/progress.js +2 -4
  98. package/dist/esm/src/discovery/progress.js.map +1 -0
  99. package/dist/esm/src/discovery/scanner.d.ts +46 -0
  100. package/dist/esm/src/discovery/scanner.d.ts.map +1 -0
  101. package/dist/esm/src/discovery/scanner.js.map +1 -0
  102. package/dist/esm/src/formatters/discovery-results.d.ts +10 -0
  103. package/dist/esm/src/formatters/discovery-results.d.ts.map +1 -0
  104. package/dist/esm/src/formatters/discovery-results.js.map +1 -0
  105. package/dist/esm/src/formatters/json.d.ts +30 -0
  106. package/dist/esm/src/formatters/json.d.ts.map +1 -0
  107. package/dist/esm/src/formatters/json.js.map +1 -0
  108. package/dist/esm/src/formatters/performance.d.ts +19 -0
  109. package/dist/esm/src/formatters/performance.d.ts.map +1 -0
  110. package/dist/esm/src/formatters/performance.js.map +1 -0
  111. package/dist/esm/src/formatters/table.d.ts +10 -0
  112. package/dist/esm/src/formatters/table.d.ts.map +1 -0
  113. package/dist/esm/src/formatters/table.js.map +1 -0
  114. package/dist/esm/src/index.d.ts +5 -0
  115. package/dist/esm/src/index.d.ts.map +1 -0
  116. package/dist/esm/src/index.js.map +1 -0
  117. package/dist/esm/src/utils/commands.d.ts +191 -0
  118. package/dist/esm/src/utils/commands.d.ts.map +1 -0
  119. package/dist/esm/src/utils/commands.js.map +1 -0
  120. package/dist/esm/src/utils/object-utils.d.ts +20 -0
  121. package/dist/esm/src/utils/object-utils.d.ts.map +1 -0
  122. package/dist/esm/src/utils/object-utils.js.map +1 -0
  123. package/dist/esm/src/utils/validation.d.ts +70 -0
  124. package/dist/esm/src/utils/validation.d.ts.map +1 -0
  125. package/dist/{src → esm/src}/utils/validation.js +0 -3
  126. package/dist/esm/src/utils/validation.js.map +1 -0
  127. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  128. package/package.json +26 -9
  129. package/dist/bin/ya-modbus.d.ts.map +0 -1
  130. package/dist/bin/ya-modbus.js.map +0 -1
  131. package/dist/src/commands/discover.d.ts.map +0 -1
  132. package/dist/src/commands/discover.js.map +0 -1
  133. package/dist/src/commands/list-devices.d.ts.map +0 -1
  134. package/dist/src/commands/list-devices.js.map +0 -1
  135. package/dist/src/commands/read.d.ts.map +0 -1
  136. package/dist/src/commands/read.js.map +0 -1
  137. package/dist/src/commands/show-defaults.d.ts.map +0 -1
  138. package/dist/src/commands/show-defaults.js.map +0 -1
  139. package/dist/src/commands/write.d.ts.map +0 -1
  140. package/dist/src/commands/write.js.map +0 -1
  141. package/dist/src/discovery/constants.d.ts.map +0 -1
  142. package/dist/src/discovery/constants.js.map +0 -1
  143. package/dist/src/discovery/device-identifier.d.ts.map +0 -1
  144. package/dist/src/discovery/device-identifier.js.map +0 -1
  145. package/dist/src/discovery/parameter-generator-utils.d.ts.map +0 -1
  146. package/dist/src/discovery/parameter-generator-utils.js.map +0 -1
  147. package/dist/src/discovery/parameter-generator.d.ts.map +0 -1
  148. package/dist/src/discovery/parameter-generator.js.map +0 -1
  149. package/dist/src/discovery/progress.d.ts.map +0 -1
  150. package/dist/src/discovery/progress.js.map +0 -1
  151. package/dist/src/discovery/scanner.d.ts.map +0 -1
  152. package/dist/src/discovery/scanner.js.map +0 -1
  153. package/dist/src/formatters/discovery-results.d.ts.map +0 -1
  154. package/dist/src/formatters/discovery-results.js.map +0 -1
  155. package/dist/src/formatters/json.d.ts.map +0 -1
  156. package/dist/src/formatters/json.js.map +0 -1
  157. package/dist/src/formatters/performance.d.ts.map +0 -1
  158. package/dist/src/formatters/performance.js.map +0 -1
  159. package/dist/src/formatters/table.d.ts.map +0 -1
  160. package/dist/src/formatters/table.js.map +0 -1
  161. package/dist/src/index.d.ts.map +0 -1
  162. package/dist/src/index.js.map +0 -1
  163. package/dist/src/utils/commands.d.ts.map +0 -1
  164. package/dist/src/utils/commands.js.map +0 -1
  165. package/dist/src/utils/object-utils.d.ts.map +0 -1
  166. package/dist/src/utils/object-utils.js.map +0 -1
  167. package/dist/src/utils/validation.d.ts.map +0 -1
  168. package/dist/src/utils/validation.js.map +0 -1
  169. package/dist/tsconfig.tsbuildinfo +0 -1
  170. /package/dist/{bin → cjs/bin}/ya-modbus.d.ts +0 -0
  171. /package/dist/{src → cjs/src}/commands/discover.d.ts +0 -0
  172. /package/dist/{src → cjs/src}/commands/list-devices.d.ts +0 -0
  173. /package/dist/{src → cjs/src}/commands/read.d.ts +0 -0
  174. /package/dist/{src → cjs/src}/commands/show-defaults.d.ts +0 -0
  175. /package/dist/{src → cjs/src}/commands/write.d.ts +0 -0
  176. /package/dist/{src → cjs/src}/discovery/constants.d.ts +0 -0
  177. /package/dist/{src → cjs/src}/discovery/device-identifier.d.ts +0 -0
  178. /package/dist/{src → cjs/src}/discovery/parameter-generator-utils.d.ts +0 -0
  179. /package/dist/{src → cjs/src}/discovery/parameter-generator.d.ts +0 -0
  180. /package/dist/{src → cjs/src}/discovery/progress.d.ts +0 -0
  181. /package/dist/{src → cjs/src}/discovery/scanner.d.ts +0 -0
  182. /package/dist/{src → cjs/src}/formatters/discovery-results.d.ts +0 -0
  183. /package/dist/{src → cjs/src}/formatters/json.d.ts +0 -0
  184. /package/dist/{src → cjs/src}/formatters/performance.d.ts +0 -0
  185. /package/dist/{src → cjs/src}/formatters/table.d.ts +0 -0
  186. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  187. /package/dist/{src → cjs/src}/utils/commands.d.ts +0 -0
  188. /package/dist/{src → cjs/src}/utils/object-utils.d.ts +0 -0
  189. /package/dist/{src → cjs/src}/utils/validation.d.ts +0 -0
  190. /package/dist/{bin → esm/bin}/ya-modbus.js +0 -0
  191. /package/dist/{src → esm/src}/commands/discover.js +0 -0
  192. /package/dist/{src → esm/src}/commands/list-devices.js +0 -0
  193. /package/dist/{src → esm/src}/commands/read.js +0 -0
  194. /package/dist/{src → esm/src}/commands/show-defaults.js +0 -0
  195. /package/dist/{src → esm/src}/commands/write.js +0 -0
  196. /package/dist/{src → esm/src}/discovery/constants.js +0 -0
  197. /package/dist/{src → esm/src}/discovery/device-identifier.js +0 -0
  198. /package/dist/{src → esm/src}/discovery/parameter-generator-utils.js +0 -0
  199. /package/dist/{src → esm/src}/discovery/parameter-generator.js +0 -0
  200. /package/dist/{src → esm/src}/discovery/scanner.js +0 -0
  201. /package/dist/{src → esm/src}/formatters/discovery-results.js +0 -0
  202. /package/dist/{src → esm/src}/formatters/json.js +0 -0
  203. /package/dist/{src → esm/src}/formatters/performance.js +0 -0
  204. /package/dist/{src → esm/src}/formatters/table.js +0 -0
  205. /package/dist/{src → esm/src}/index.js +0 -0
  206. /package/dist/{src → esm/src}/utils/commands.js +0 -0
  207. /package/dist/{src → esm/src}/utils/object-utils.js +0 -0
@@ -0,0 +1,52 @@
1
+ import type ModbusRTU from 'modbus-serial';
2
+ /**
3
+ * Device identification result from discovery attempt
4
+ * Provides comprehensive information about device presence and capabilities
5
+ */
6
+ export interface DeviceIdentificationResult {
7
+ /** Whether a Modbus device is present at this address/configuration */
8
+ present: boolean;
9
+ /** Response time in milliseconds */
10
+ responseTimeMs: number;
11
+ /** Vendor/manufacturer name (from FC43) */
12
+ vendorName?: string;
13
+ /** Product code/identifier (from FC43) */
14
+ productCode?: string;
15
+ /** Model name (from FC43) */
16
+ modelName?: string;
17
+ /** Firmware/hardware revision (from FC43) */
18
+ revision?: string;
19
+ /** Whether device supports FC43 (Read Device Identification) */
20
+ supportsFC43?: boolean;
21
+ /** Device present but returned Modbus exception code */
22
+ exceptionCode?: number;
23
+ /** Request timed out (no response) */
24
+ timeout?: boolean;
25
+ /** CRC check failed (wrong serial parameters) */
26
+ crcError?: boolean;
27
+ }
28
+ /**
29
+ * Attempt to identify a Modbus device at the current client configuration
30
+ *
31
+ * Uses FC43 (Read Device Identification) to probe for device presence.
32
+ * Any Modbus response (including exceptions) indicates a device is present.
33
+ * Only timeouts and CRC errors mean no device with these parameters.
34
+ *
35
+ * @param client - Configured ModbusRTU client (address, serial params, and timeout already set)
36
+ * @returns Device identification result
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const client = new ModbusRTU()
41
+ * await client.connectRTUBuffered('/dev/ttyUSB0', { baudRate: 9600 })
42
+ * client.setID(1)
43
+ * client.setTimeout(1000)
44
+ *
45
+ * const result = await identifyDevice(client)
46
+ * if (result.present) {
47
+ * console.log(`Found device: ${result.vendorName ?? 'Unknown'}`)
48
+ * }
49
+ * ```
50
+ */
51
+ export declare function identifyDevice(client: ModbusRTU): Promise<DeviceIdentificationResult>;
52
+ //# sourceMappingURL=device-identifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-identifier.d.ts","sourceRoot":"","sources":["../../../../src/discovery/device-identifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,eAAe,CAAA;AAsC1C;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAA;IAEhB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAA;IAGtB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAA;IAGtB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAgID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAgC3F"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-identifier.js","sourceRoot":"","sources":["../../../../src/discovery/device-identifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { BaudRate, DataBits, Parity, StopBits, SupportedSerialConfig } from '@ya-modbus/driver-types';
2
+ import type { DiscoveryStrategy, GeneratorOptions } from './parameter-generator.js';
3
+ /**
4
+ * Get parameter arrays based on strategy and configuration
5
+ */
6
+ export declare function getParameterArrays(strategy: DiscoveryStrategy, supportedConfig?: SupportedSerialConfig): {
7
+ baudRates: readonly BaudRate[];
8
+ parities: readonly Parity[];
9
+ dataBits: readonly DataBits[];
10
+ stopBits: readonly StopBits[];
11
+ addressRange: readonly [number, number];
12
+ };
13
+ /**
14
+ * Count the total number of parameter combinations without materializing them
15
+ *
16
+ * This is much more efficient than Array.from(generateParameterCombinations()).length
17
+ * as it calculates the count mathematically instead of generating all combinations.
18
+ *
19
+ * @param options - Generator options
20
+ * @returns Total number of combinations that will be generated
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const count = countParameterCombinations({ strategy: 'quick' })
25
+ * console.log(`Will test ${count} combinations`) // Will test 3952 combinations
26
+ * ```
27
+ */
28
+ export declare function countParameterCombinations(options: GeneratorOptions): number;
29
+ //# sourceMappingURL=parameter-generator-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-generator-utils.d.ts","sourceRoot":"","sources":["../../../../src/discovery/parameter-generator-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,qBAAqB,EACtB,MAAM,yBAAyB,CAAA;AAahC,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEnF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,iBAAiB,EAC3B,eAAe,CAAC,EAAE,qBAAqB,GACtC;IACD,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC9B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC7B,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC7B,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC,CA+BA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAc5E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-generator-utils.js","sourceRoot":"","sources":["../../../../src/discovery/parameter-generator-utils.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAGvB;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA2B,EAC3B,eAAuC;IAQvC,IAAI,QAAQ,KAAK,OAAO,IAAI,eAAe,EAAE,CAAC;QAC5C,6EAA6E;QAC7E,OAAO;YACL,SAAS,EAAE,eAAe,CAAC,cAAc,IAAI,iBAAiB;YAC9D,QAAQ,EAAE,eAAe,CAAC,WAAW,IAAI,eAAe;YACxD,QAAQ,EAAE,eAAe,CAAC,aAAa,IAAI,kBAAkB;YAC7D,QAAQ,EAAE,eAAe,CAAC,aAAa,IAAI,kBAAkB;YAC7D,YAAY,EAAE,eAAe,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;SAChF,CAAA;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,6EAA6E;QAC7E,OAAO;YACL,SAAS,EAAE,eAAe,EAAE,cAAc,IAAI,mBAAmB;YACjE,QAAQ,EAAE,eAAe,EAAE,WAAW,IAAI,eAAe;YACzD,QAAQ,EAAE,eAAe,EAAE,aAAa,IAAI,kBAAkB;YAC9D,QAAQ,EAAE,eAAe,EAAE,aAAa,IAAI,kBAAkB;YAC9D,YAAY,EAAE,eAAe,EAAE,iBAAiB,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;SACjF,CAAA;IACH,CAAC;IAED,0DAA0D;IAC1D,OAAO;QACL,SAAS,EAAE,iBAAiB;QAC5B,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,YAAY,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;KAC3C,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAyB;IAClE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAA;IAE7C,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAClF,QAAQ,EACR,eAAe,CAChB,CAAA;IAED,0BAA0B;IAC1B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,YAAY,CAAA;IACnC,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;IAEtC,iFAAiF;IACjF,OAAO,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;AAC9F,CAAC"}
@@ -0,0 +1,97 @@
1
+ import type { BaudRate, DataBits, DefaultSerialConfig, Parity, StopBits, SupportedSerialConfig } from '@ya-modbus/driver-types';
2
+ /**
3
+ * Parameter combination for discovery testing
4
+ * Represents a complete set of Modbus RTU serial parameters
5
+ */
6
+ export interface ParameterCombination {
7
+ slaveId: number;
8
+ baudRate: BaudRate;
9
+ parity: Parity;
10
+ dataBits: DataBits;
11
+ stopBits: StopBits;
12
+ }
13
+ /**
14
+ * Discovery strategy type
15
+ *
16
+ * - quick: Tests only driver-supported parameters (5-10 minutes)
17
+ * - thorough: Tests all standard Modbus parameters (30-60 minutes)
18
+ */
19
+ export type DiscoveryStrategy = 'quick' | 'thorough';
20
+ /**
21
+ * Options for parameter combination generation
22
+ */
23
+ export interface GeneratorOptions {
24
+ /** Discovery strategy to use */
25
+ strategy: DiscoveryStrategy;
26
+ /** Driver-provided default configuration (prioritized first) */
27
+ defaultConfig?: DefaultSerialConfig;
28
+ /** Driver-provided supported configuration constraints */
29
+ supportedConfig?: SupportedSerialConfig;
30
+ }
31
+ /**
32
+ * Group of parameter combinations that share the same serial configuration
33
+ */
34
+ export interface ParameterGroup {
35
+ /** Serial parameters shared by all combinations in this group */
36
+ serialParams: {
37
+ baudRate: BaudRate;
38
+ parity: Parity;
39
+ dataBits: DataBits;
40
+ stopBits: StopBits;
41
+ };
42
+ /** All parameter combinations for this serial configuration (different slave IDs) */
43
+ combinations: ParameterCombination[];
44
+ }
45
+ /**
46
+ * Generate parameter combinations grouped by serial configuration
47
+ *
48
+ * This is a memory-efficient alternative to materializing all combinations.
49
+ * Instead of creating all ~1500+ combinations at once, this generator yields
50
+ * groups of ~247 combinations at a time (one per serial config).
51
+ *
52
+ * Each group shares the same serial parameters (baud, parity, data bits, stop bits)
53
+ * but has different slave IDs. This matches how the scanner works - it creates
54
+ * one connection per serial config and tests all slave IDs with that connection.
55
+ *
56
+ * @param options - Generation options
57
+ * @yields Parameter groups to test
58
+ *
59
+ * @example Iterate over groups without materializing all combinations
60
+ * ```typescript
61
+ * for (const group of generateParameterGroups(options)) {
62
+ * // Only this group's ~247 combinations are in memory
63
+ * const { serialParams, combinations } = group
64
+ * // ... use combinations ...
65
+ * }
66
+ * ```
67
+ */
68
+ export declare function generateParameterGroups(options: GeneratorOptions): Generator<ParameterGroup>;
69
+ /**
70
+ * Generate all parameter combinations for Modbus device discovery
71
+ *
72
+ * Produces combinations in priority order:
73
+ * 1. Default configuration (if provided) tested first
74
+ * 2. Common slave addresses (1, 2) before others
75
+ * 3. Common baud rates before exotic ones
76
+ *
77
+ * @param options - Generation options
78
+ * @yields Parameter combinations to test
79
+ *
80
+ * @example Quick discovery with driver config
81
+ * ```typescript
82
+ * const combinations = generateParameterCombinations({
83
+ * strategy: 'quick',
84
+ * defaultConfig: { baudRate: 9600, parity: 'even', ... },
85
+ * supportedConfig: { validBaudRates: [9600, 19200], ... }
86
+ * })
87
+ * ```
88
+ *
89
+ * @example Thorough discovery without driver
90
+ * ```typescript
91
+ * const combinations = generateParameterCombinations({
92
+ * strategy: 'thorough'
93
+ * })
94
+ * ```
95
+ */
96
+ export declare function generateParameterCombinations(options: GeneratorOptions): Generator<ParameterCombination>;
97
+ //# sourceMappingURL=parameter-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-generator.d.ts","sourceRoot":"","sources":["../../../../src/discovery/parameter-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,qBAAqB,EACtB,MAAM,yBAAyB,CAAA;AAKhC;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,UAAU,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,QAAQ,EAAE,iBAAiB,CAAA;IAE3B,gEAAgE;IAChE,aAAa,CAAC,EAAE,mBAAmB,CAAA;IAEnC,0DAA0D;IAC1D,eAAe,CAAC,EAAE,qBAAqB,CAAA;CACxC;AAqED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,YAAY,EAAE;QACZ,QAAQ,EAAE,QAAQ,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,QAAQ,CAAA;QAClB,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;IACD,qFAAqF;IACrF,YAAY,EAAE,oBAAoB,EAAE,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAiB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC,CA8C7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAiB,6BAA6B,CAC5C,OAAO,EAAE,gBAAgB,GACxB,SAAS,CAAC,oBAAoB,CAAC,CAsCjC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-generator.js","sourceRoot":"","sources":["../../../../src/discovery/parameter-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Simple progress tracker for discovery operations
3
+ */
4
+ export declare class ProgressTracker {
5
+ private readonly totalCombinations;
6
+ private startTime;
7
+ private lastUpdateTime;
8
+ private readonly updateIntervalMs;
9
+ constructor(totalCombinations: number);
10
+ /**
11
+ * Update progress and return formatted status string
12
+ * Only returns a new string if enough time has passed since last update
13
+ *
14
+ * @param current - Current combination index
15
+ * @param devicesFound - Number of devices found so far
16
+ * @returns Progress string or null if no update needed
17
+ */
18
+ update(current: number, devicesFound: number): string | null;
19
+ /**
20
+ * Format duration in seconds to human-readable string
21
+ */
22
+ private formatDuration;
23
+ }
24
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../../src/discovery/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,eAAe;IAKd,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAJ9C,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;gBAEnB,iBAAiB,EAAE,MAAM;IAItD;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAyB5D;;OAEG;IACH,OAAO,CAAC,cAAc;CAgBvB"}
@@ -2,12 +2,10 @@
2
2
  * Simple progress tracker for discovery operations
3
3
  */
4
4
  export class ProgressTracker {
5
- totalCombinations;
6
- startTime;
7
- lastUpdateTime = 0;
8
- updateIntervalMs = 1000; // Update every second
9
5
  constructor(totalCombinations) {
10
6
  this.totalCombinations = totalCombinations;
7
+ this.lastUpdateTime = 0;
8
+ this.updateIntervalMs = 1000; // Update every second
11
9
  this.startTime = Date.now();
12
10
  }
13
11
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../src/discovery/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,eAAe;IAK1B,YAA6B,iBAAyB;QAAzB,sBAAiB,GAAjB,iBAAiB,CAAQ;QAH9C,mBAAc,GAAW,CAAC,CAAA;QACjB,qBAAgB,GAAW,IAAI,CAAA,CAAC,sBAAsB;QAGrE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,OAAe,EAAE,YAAoB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,qDAAqD;QACrD,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,GAAG,CAAA;QAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;QAEzD,gBAAgB;QAChB,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAA;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAA;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;YAC/C,GAAG,GAAG,WAAW,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAA;QACpD,CAAC;QAED,OAAO,aAAa,UAAU,MAAM,OAAO,IAAI,IAAI,CAAC,iBAAiB,sBAAsB,YAAY,eAAe,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAA;IAC5J,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAe;QACpC,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACjB,OAAO,GAAG,OAAO,GAAG,CAAA;QACtB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;QACxC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAA;QAErC,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACjB,OAAO,GAAG,OAAO,KAAK,gBAAgB,GAAG,CAAA;QAC3C,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;QACtC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAA;QACrC,OAAO,GAAG,KAAK,KAAK,gBAAgB,GAAG,CAAA;IACzC,CAAC;CACF"}
@@ -0,0 +1,46 @@
1
+ import { type DeviceIdentificationResult } from './device-identifier.js';
2
+ import { type GeneratorOptions, type ParameterCombination } from './parameter-generator.js';
3
+ /**
4
+ * Discovered device with full configuration
5
+ */
6
+ export interface DiscoveredDevice extends ParameterCombination {
7
+ /** Device identification result */
8
+ identification: DeviceIdentificationResult;
9
+ }
10
+ /**
11
+ * Scanner options
12
+ */
13
+ export interface ScanOptions {
14
+ /** Serial port path (e.g., /dev/ttyUSB0) */
15
+ port: string;
16
+ /** Response timeout in milliseconds */
17
+ timeout: number;
18
+ /** Delay between attempts in milliseconds */
19
+ delayMs: number;
20
+ /** Maximum number of devices to find (0 for unlimited, default: 1) */
21
+ maxDevices?: number;
22
+ /** Verbose progress - show current parameters being tested */
23
+ verbose?: boolean;
24
+ /** Progress callback (current index, total combinations, devices found) */
25
+ onProgress?: (current: number, total: number, devicesFound: number) => void;
26
+ /** Device found callback */
27
+ onDeviceFound?: (device: DiscoveredDevice) => void;
28
+ /** Verbose progress callback - called for each test attempt */
29
+ onTestAttempt?: (params: ParameterCombination, result: 'testing' | 'found' | 'not-found') => void;
30
+ }
31
+ /**
32
+ * Scan for Modbus devices using given parameter combinations
33
+ *
34
+ * **Performance Optimization**: Uses grouped generator to avoid materializing
35
+ * all combinations. Groups by serial parameters to reuse connections,
36
+ * reducing overhead from ~600ms to ~100ms per test.
37
+ *
38
+ * **Memory Efficiency**: Only materializes one group (~247 combinations) at a time
39
+ * instead of all ~1500+ combinations.
40
+ *
41
+ * @param generatorOptions - Options for parameter combination generation
42
+ * @param scanOptions - Scanning options
43
+ * @returns Array of discovered devices
44
+ */
45
+ export declare function scanForDevices(generatorOptions: GeneratorOptions, scanOptions: ScanOptions): Promise<DiscoveredDevice[]>;
46
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../../src/discovery/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAExF,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AAEjC;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,mCAAmC;IACnC,cAAc,EAAE,0BAA0B,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAA;IAEZ,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IAEf,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAA;IAEf,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAE3E,4BAA4B;IAC5B,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAElD,+DAA+D;IAC/D,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,KAAK,IAAI,CAAA;CAClG;AAsCD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAsH7B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../src/discovery/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DiscoveredDevice } from '../discovery/scanner.js';
2
+ /**
3
+ * Format discovered devices as a table
4
+ */
5
+ export declare function formatDiscoveryTable(devices: DiscoveredDevice[]): string;
6
+ /**
7
+ * Format discovered devices as JSON
8
+ */
9
+ export declare function formatDiscoveryJSON(devices: DiscoveredDevice[]): string;
10
+ //# sourceMappingURL=discovery-results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery-results.d.ts","sourceRoot":"","sources":["../../../../src/formatters/discovery-results.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAqCxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAkBvE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery-results.js","sourceRoot":"","sources":["../../../../src/formatters/discovery-results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAA;AAI9B;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA2B;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAA;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC;QACrF,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,MAAM,CAAC;SACf;KACF,CAAC,CAAA;IAEF,mBAAmB;IACnB,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;IAEjE,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAAA;QAEhF,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAC1E,MAAM,QAAQ,GAAG,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,EAAE,CAAA;QAEtD,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,IAAI,GAAG,CAAA;QAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,WAAW,IAAI,GAAG,CAAA;QAC3E,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAA;QAErE,KAAK,CAAC,IAAI,CAAC;YACT,OAAO,CAAC,QAAQ,EAAE;YAClB,QAAQ,CAAC,QAAQ,EAAE;YACnB,UAAU;YACV,QAAQ;YACR,YAAY;YACZ,MAAM;YACN,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA2B;IAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,cAAc;QACpD,cAAc,EAAE;YACd,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;YAC5C,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW;YAC9C,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS;YAC1C,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ;YACxC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,YAAY;SACjD;KACF,CAAC,CAAC,CAAA;IAEH,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC3C,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { DataPoint } from '@ya-modbus/driver-types';
2
+ /**
3
+ * Metadata for JSON output
4
+ */
5
+ export interface JSONMetadata {
6
+ /** Driver package name */
7
+ driver?: string | undefined;
8
+ /** Connection details */
9
+ connection?: {
10
+ port?: string | undefined;
11
+ host?: string | undefined;
12
+ slaveId?: number | undefined;
13
+ } | undefined;
14
+ /** Performance metrics */
15
+ performance?: {
16
+ responseTimeMs: number;
17
+ operations: number;
18
+ errors: number;
19
+ } | undefined;
20
+ }
21
+ /**
22
+ * Format data point results as JSON
23
+ *
24
+ * @param dataPoints - Data point definitions
25
+ * @param values - Data point values (keyed by ID)
26
+ * @param metadata - Additional metadata to include
27
+ * @returns Formatted JSON string with 2-space indentation
28
+ */
29
+ export declare function formatJSON(dataPoints: ReadonlyArray<DataPoint>, values: Record<string, unknown>, metadata: JSONMetadata): string;
30
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/formatters/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,yBAAyB;IACzB,UAAU,CAAC,EACP;QACE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC7B,GACD,SAAS,CAAA;IACb,0BAA0B;IAC1B,WAAW,CAAC,EACR;QACE,cAAc,EAAE,MAAM,CAAA;QACtB,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;KACf,GACD,SAAS,CAAA;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,YAAY,GACrB,MAAM,CAyBR"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/formatters/json.ts"],"names":[],"mappings":"AA0BA;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,UAAoC,EACpC,MAA+B,EAC/B,QAAsB;IAEtB,sCAAsC;IACtC,MAAM,oBAAoB,GAAG,UAAU;SACpC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,MAAM,CAAC;SAC/B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACZ,EAAE,EAAE,EAAE,CAAC,EAAE;QACT,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ;KACtB,CAAC,CAAC,CAAA;IAEL,sBAAsB;IACtB,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QACnD,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC/D,UAAU,EAAE,oBAAoB;QAChC,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;KACnE,CAAA;IAED,sDAAsD;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Performance metrics
3
+ */
4
+ export interface PerformanceMetrics {
5
+ /** Total response time in milliseconds */
6
+ responseTimeMs: number;
7
+ /** Number of operations performed */
8
+ operations: number;
9
+ /** Number of errors encountered */
10
+ errors: number;
11
+ }
12
+ /**
13
+ * Format performance metrics for display
14
+ *
15
+ * @param metrics - Performance metrics
16
+ * @returns Formatted string with performance info
17
+ */
18
+ export declare function formatPerformance(metrics: PerformanceMetrics): string;
19
+ //# sourceMappingURL=performance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../../src/formatters/performance.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAiBrE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../../src/formatters/performance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAczB;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAEtD,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC5B,oBAAoB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACjD,iBAAiB,UAAU,EAAE;KAC9B,CAAA;IAED,8BAA8B;IAC9B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAA;IAC9C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { DataPoint } from '@ya-modbus/driver-types';
2
+ /**
3
+ * Format data point results as a table
4
+ *
5
+ * @param dataPoints - Data point definitions
6
+ * @param values - Data point values (keyed by ID)
7
+ * @returns Formatted table string
8
+ */
9
+ export declare function formatTable(dataPoints: ReadonlyArray<DataPoint>, values: Record<string, unknown>): string;
10
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/formatters/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AA0ExD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAuBR"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/formatters/table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ declare const program: Command;
4
+ export { program };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmEnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AAqI7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}