@ya-modbus/cli 0.7.1 → 0.9.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.
- package/CHANGELOG.md +12 -0
- package/README.md +85 -0
- package/dist/cjs/src/commands/discover.d.ts +3 -0
- package/dist/cjs/src/commands/discover.d.ts.map +1 -1
- package/dist/cjs/src/commands/discover.js +29 -0
- package/dist/cjs/src/commands/discover.js.map +1 -1
- package/dist/cjs/src/discovery/parameter-generator-utils.d.ts +5 -2
- package/dist/cjs/src/discovery/parameter-generator-utils.d.ts.map +1 -1
- package/dist/cjs/src/discovery/parameter-generator-utils.js +54 -27
- package/dist/cjs/src/discovery/parameter-generator-utils.js.map +1 -1
- package/dist/cjs/src/discovery/parameter-generator.d.ts +6 -0
- package/dist/cjs/src/discovery/parameter-generator.d.ts.map +1 -1
- package/dist/cjs/src/discovery/parameter-generator.js +43 -17
- package/dist/cjs/src/discovery/parameter-generator.js.map +1 -1
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js +3 -0
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/utils/merge-specs.d.ts +34 -0
- package/dist/cjs/src/utils/merge-specs.d.ts.map +1 -0
- package/dist/cjs/src/utils/merge-specs.js +53 -0
- package/dist/cjs/src/utils/merge-specs.js.map +1 -0
- package/dist/cjs/src/utils/parse-baud-rate.d.ts +14 -0
- package/dist/cjs/src/utils/parse-baud-rate.d.ts.map +1 -0
- package/dist/cjs/src/utils/parse-baud-rate.js +52 -0
- package/dist/cjs/src/utils/parse-baud-rate.js.map +1 -0
- package/dist/cjs/src/utils/parse-id-range.d.ts +13 -0
- package/dist/cjs/src/utils/parse-id-range.d.ts.map +1 -0
- package/dist/cjs/src/utils/parse-id-range.js +49 -0
- package/dist/cjs/src/utils/parse-id-range.js.map +1 -0
- package/dist/cjs/src/utils/parse-integer.d.ts +15 -0
- package/dist/cjs/src/utils/parse-integer.d.ts.map +1 -0
- package/dist/cjs/src/utils/parse-integer.js +27 -0
- package/dist/cjs/src/utils/parse-integer.js.map +1 -0
- package/dist/cjs/src/utils/parse-parity.d.ts +18 -0
- package/dist/cjs/src/utils/parse-parity.d.ts.map +1 -0
- package/dist/cjs/src/utils/parse-parity.js +46 -0
- package/dist/cjs/src/utils/parse-parity.js.map +1 -0
- package/dist/cjs/src/utils/parse-spec.d.ts +73 -0
- package/dist/cjs/src/utils/parse-spec.d.ts.map +1 -0
- package/dist/cjs/src/utils/parse-spec.js +47 -0
- package/dist/cjs/src/utils/parse-spec.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/commands/discover.d.ts +3 -0
- package/dist/esm/src/commands/discover.d.ts.map +1 -1
- package/dist/esm/src/commands/discover.js +29 -0
- package/dist/esm/src/commands/discover.js.map +1 -1
- package/dist/esm/src/discovery/parameter-generator-utils.d.ts +5 -2
- package/dist/esm/src/discovery/parameter-generator-utils.d.ts.map +1 -1
- package/dist/esm/src/discovery/parameter-generator-utils.js +54 -27
- package/dist/esm/src/discovery/parameter-generator-utils.js.map +1 -1
- package/dist/esm/src/discovery/parameter-generator.d.ts +6 -0
- package/dist/esm/src/discovery/parameter-generator.d.ts.map +1 -1
- package/dist/esm/src/discovery/parameter-generator.js +43 -17
- package/dist/esm/src/discovery/parameter-generator.js.map +1 -1
- package/dist/esm/src/index.d.ts.map +1 -1
- package/dist/esm/src/index.js +3 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/utils/merge-specs.d.ts +34 -0
- package/dist/esm/src/utils/merge-specs.d.ts.map +1 -0
- package/dist/esm/src/utils/merge-specs.js +50 -0
- package/dist/esm/src/utils/merge-specs.js.map +1 -0
- package/dist/esm/src/utils/parse-baud-rate.d.ts +14 -0
- package/dist/esm/src/utils/parse-baud-rate.d.ts.map +1 -0
- package/dist/esm/src/utils/parse-baud-rate.js +49 -0
- package/dist/esm/src/utils/parse-baud-rate.js.map +1 -0
- package/dist/esm/src/utils/parse-id-range.d.ts +13 -0
- package/dist/esm/src/utils/parse-id-range.d.ts.map +1 -0
- package/dist/esm/src/utils/parse-id-range.js +46 -0
- package/dist/esm/src/utils/parse-id-range.js.map +1 -0
- package/dist/esm/src/utils/parse-integer.d.ts +15 -0
- package/dist/esm/src/utils/parse-integer.d.ts.map +1 -0
- package/dist/esm/src/utils/parse-integer.js +24 -0
- package/dist/esm/src/utils/parse-integer.js.map +1 -0
- package/dist/esm/src/utils/parse-parity.d.ts +18 -0
- package/dist/esm/src/utils/parse-parity.d.ts.map +1 -0
- package/dist/esm/src/utils/parse-parity.js +42 -0
- package/dist/esm/src/utils/parse-parity.js.map +1 -0
- package/dist/esm/src/utils/parse-spec.d.ts +73 -0
- package/dist/esm/src/utils/parse-spec.d.ts.map +1 -0
- package/dist/esm/src/utils/parse-spec.js +44 -0
- package/dist/esm/src/utils/parse-spec.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
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.9.0](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/cli@0.8.0...@ya-modbus/cli@0.9.0) (2026-02-08)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **cli:** add --parity and --baud-rate filters to discover command ([#332](https://github.com/groupsky/ya-modbus/issues/332)) ([85beba8](https://github.com/groupsky/ya-modbus/commit/85beba8de2db2eb65e10905c2d8e8e3efe44150d))
|
|
11
|
+
|
|
12
|
+
# [0.8.0](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/cli@0.7.1...@ya-modbus/cli@0.8.0) (2026-02-08)
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- **cli:** add --id option to discover command for slave ID filtering ([#321](https://github.com/groupsky/ya-modbus/issues/321)) ([735a9cb](https://github.com/groupsky/ya-modbus/commit/735a9cb5e440741e2a339fe3ab3ff97faa4cc537)), closes [#326](https://github.com/groupsky/ya-modbus/issues/326) [#328](https://github.com/groupsky/ya-modbus/issues/328) [#329](https://github.com/groupsky/ya-modbus/issues/329) [#330](https://github.com/groupsky/ya-modbus/issues/330) [#331](https://github.com/groupsky/ya-modbus/issues/331)
|
|
17
|
+
|
|
6
18
|
## [0.7.1](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/cli@0.7.0...@ya-modbus/cli@0.7.1) (2026-02-06)
|
|
7
19
|
|
|
8
20
|
**Note:** Version bump only for package @ya-modbus/cli
|
package/README.md
CHANGED
|
@@ -196,6 +196,88 @@ ya-modbus discover \
|
|
|
196
196
|
--delay 50
|
|
197
197
|
```
|
|
198
198
|
|
|
199
|
+
**Filter specific slave IDs:**
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# Test only specific slave IDs (reduces scan time significantly)
|
|
203
|
+
ya-modbus discover \
|
|
204
|
+
--port /dev/ttyUSB0 \
|
|
205
|
+
--id 1,2,3
|
|
206
|
+
|
|
207
|
+
# Test a range of IDs
|
|
208
|
+
ya-modbus discover \
|
|
209
|
+
--port /dev/ttyUSB0 \
|
|
210
|
+
--id 1-10
|
|
211
|
+
|
|
212
|
+
# Combine ranges and individual IDs
|
|
213
|
+
ya-modbus discover \
|
|
214
|
+
--port /dev/ttyUSB0 \
|
|
215
|
+
--id "1-5,10,15-20"
|
|
216
|
+
|
|
217
|
+
# Multiple --id specifications are merged
|
|
218
|
+
ya-modbus discover \
|
|
219
|
+
--port /dev/ttyUSB0 \
|
|
220
|
+
--id 1,2 \
|
|
221
|
+
--id 5-10
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Filter specific parities:**
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
# Test only specific parity modes
|
|
228
|
+
ya-modbus discover \
|
|
229
|
+
--port /dev/ttyUSB0 \
|
|
230
|
+
--parity none
|
|
231
|
+
|
|
232
|
+
# Test multiple parities
|
|
233
|
+
ya-modbus discover \
|
|
234
|
+
--port /dev/ttyUSB0 \
|
|
235
|
+
--parity "none,even"
|
|
236
|
+
|
|
237
|
+
# Multiple --parity specifications are merged
|
|
238
|
+
ya-modbus discover \
|
|
239
|
+
--port /dev/ttyUSB0 \
|
|
240
|
+
--parity none \
|
|
241
|
+
--parity even
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Filter specific baud rates:**
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# Test only specific baud rates
|
|
248
|
+
ya-modbus discover \
|
|
249
|
+
--port /dev/ttyUSB0 \
|
|
250
|
+
--baud-rate 9600
|
|
251
|
+
|
|
252
|
+
# Test multiple baud rates
|
|
253
|
+
ya-modbus discover \
|
|
254
|
+
--port /dev/ttyUSB0 \
|
|
255
|
+
--baud-rate "9600,19200"
|
|
256
|
+
|
|
257
|
+
# Test a range of baud rates (includes intermediate standard rates)
|
|
258
|
+
ya-modbus discover \
|
|
259
|
+
--port /dev/ttyUSB0 \
|
|
260
|
+
--baud-rate "9600-38400" # Tests 9600, 14400, 19200, 38400
|
|
261
|
+
|
|
262
|
+
# Multiple --baud-rate specifications are merged
|
|
263
|
+
ya-modbus discover \
|
|
264
|
+
--port /dev/ttyUSB0 \
|
|
265
|
+
--baud-rate 9600 \
|
|
266
|
+
--baud-rate "19200,38400"
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**Combine filters for fastest discovery:**
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
# When you know the device configuration, combine filters dramatically
|
|
273
|
+
# reduces scan time. Example: ~30 seconds vs 25 minutes
|
|
274
|
+
ya-modbus discover \
|
|
275
|
+
--port /dev/ttyUSB0 \
|
|
276
|
+
--id 1-5 \
|
|
277
|
+
--parity none \
|
|
278
|
+
--baud-rate 9600
|
|
279
|
+
```
|
|
280
|
+
|
|
199
281
|
**Discovery Options:**
|
|
200
282
|
|
|
201
283
|
- `--strategy <type>` - Discovery strategy: `quick` (default) or `thorough`
|
|
@@ -205,6 +287,9 @@ ya-modbus discover \
|
|
|
205
287
|
- `--timeout <ms>` - Response timeout in milliseconds (default: 1000)
|
|
206
288
|
- `--delay <ms>` - Delay between attempts in milliseconds (default: 100)
|
|
207
289
|
- `--max-devices <count>` - Maximum number of devices to find (default: 1, use 0 for unlimited)
|
|
290
|
+
- `--id <spec>` - Limit search to specific slave IDs (e.g., "1,2,3-5"). Can be specified multiple times
|
|
291
|
+
- `--parity <spec>` - Limit search to specific parities (e.g., "none,even"). Can be specified multiple times
|
|
292
|
+
- `--baud-rate <spec>` - Limit search to specific baud rates (e.g., "9600,19200" or "9600-38400"). Can be specified multiple times
|
|
208
293
|
- `--verbose` - Show detailed progress with current parameters being tested
|
|
209
294
|
- `--silent` - Suppress all output except final result (useful for scripts)
|
|
210
295
|
- `--format <type>` - Output format: `table` (default) or `json`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../src/commands/discover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../src/commands/discover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAS5E;;GAEG;AACH,MAAM,WAAW,eAAe;IAE9B,IAAI,EAAE,MAAM,CAAA;IAGZ,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAGhB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA8L7E"}
|
|
@@ -38,6 +38,10 @@ const driver_loader_1 = require("@ya-modbus/driver-loader");
|
|
|
38
38
|
const progress_js_1 = require("../discovery/progress.js");
|
|
39
39
|
const scanner_js_1 = require("../discovery/scanner.js");
|
|
40
40
|
const discovery_results_js_1 = require("../formatters/discovery-results.js");
|
|
41
|
+
const merge_specs_js_1 = require("../utils/merge-specs.js");
|
|
42
|
+
const parse_baud_rate_js_1 = require("../utils/parse-baud-rate.js");
|
|
43
|
+
const parse_id_range_js_1 = require("../utils/parse-id-range.js");
|
|
44
|
+
const parse_parity_js_1 = require("../utils/parse-parity.js");
|
|
41
45
|
/**
|
|
42
46
|
* Discover command implementation
|
|
43
47
|
*
|
|
@@ -54,10 +58,26 @@ async function discoverCommand(options) {
|
|
|
54
58
|
const maxDevices = options.maxDevices ?? 1; // Default: stop after finding 1 device
|
|
55
59
|
const verbose = options.verbose ?? false;
|
|
56
60
|
const silent = options.silent ?? false;
|
|
61
|
+
// Parse and merge specifications from multiple CLI flags
|
|
62
|
+
const slaveIds = (0, merge_specs_js_1.mergeSpecs)(options.id, parse_id_range_js_1.parseIdRange, (items) => items.sort((a, b) => a - b));
|
|
63
|
+
const parities = (0, merge_specs_js_1.mergeSpecs)(options.parity, parse_parity_js_1.parseParity, parse_parity_js_1.sortParitiesInStandardOrder);
|
|
64
|
+
const baudRates = (0, merge_specs_js_1.mergeSpecs)(options.baudRate, parse_baud_rate_js_1.parseBaudRate, (items) => items.sort((a, b) => a - b));
|
|
57
65
|
if (!silent) {
|
|
58
66
|
console.log(`Starting Modbus device discovery on ${options.port}...`);
|
|
59
67
|
console.log(`Strategy: ${strategy}`);
|
|
60
68
|
console.log(`Timeout: ${timeout}ms, Delay: ${delay}ms`);
|
|
69
|
+
if (slaveIds) {
|
|
70
|
+
console.log(`Slave IDs: ${slaveIds.join(', ')} (${slaveIds.length} IDs)`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log('Slave IDs: 1-247 (all)');
|
|
74
|
+
}
|
|
75
|
+
if (baudRates) {
|
|
76
|
+
console.log(`Baud rates: ${baudRates.join(', ')} (${baudRates.length} rates)`);
|
|
77
|
+
}
|
|
78
|
+
if (parities) {
|
|
79
|
+
console.log(`Parities: ${parities.join(', ')} (${parities.length} values)`);
|
|
80
|
+
}
|
|
61
81
|
if (maxDevices === 0) {
|
|
62
82
|
console.log('Mode: Find all devices');
|
|
63
83
|
}
|
|
@@ -111,6 +131,15 @@ async function discoverCommand(options) {
|
|
|
111
131
|
if (driverMetadata?.supportedConfig && 'validBaudRates' in driverMetadata.supportedConfig) {
|
|
112
132
|
generatorOptions.supportedConfig = driverMetadata.supportedConfig;
|
|
113
133
|
}
|
|
134
|
+
if (slaveIds) {
|
|
135
|
+
generatorOptions.slaveIds = slaveIds;
|
|
136
|
+
}
|
|
137
|
+
if (baudRates) {
|
|
138
|
+
generatorOptions.baudRates = baudRates;
|
|
139
|
+
}
|
|
140
|
+
if (parities) {
|
|
141
|
+
generatorOptions.parities = parities;
|
|
142
|
+
}
|
|
114
143
|
const totalCombinations = countParameterCombinations(generatorOptions);
|
|
115
144
|
const progress = new progress_js_1.ProgressTracker(totalCombinations);
|
|
116
145
|
if (!silent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../../src/commands/discover.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../../src/commands/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { BaudRate, DataBits, Parity, StopBits, SupportedSerialConfig } from '@ya-modbus/driver-types';
|
|
2
2
|
import type { DiscoveryStrategy, GeneratorOptions } from './parameter-generator.js';
|
|
3
3
|
/**
|
|
4
|
-
* Get parameter arrays based on strategy and
|
|
4
|
+
* Get parameter arrays based on strategy, configuration, and filters
|
|
5
5
|
*/
|
|
6
|
-
export declare function getParameterArrays(strategy: DiscoveryStrategy, supportedConfig?: SupportedSerialConfig
|
|
6
|
+
export declare function getParameterArrays(strategy: DiscoveryStrategy, supportedConfig?: SupportedSerialConfig, filters?: {
|
|
7
|
+
baudRates?: BaudRate[];
|
|
8
|
+
parities?: Parity[];
|
|
9
|
+
}): {
|
|
7
10
|
baudRates: readonly BaudRate[];
|
|
8
11
|
parities: readonly Parity[];
|
|
9
12
|
dataBits: readonly DataBits[];
|
|
@@ -1 +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,
|
|
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,EACvC,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB,GACA;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,CA6CA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAkC5E"}
|
|
@@ -4,36 +4,51 @@ exports.getParameterArrays = getParameterArrays;
|
|
|
4
4
|
exports.countParameterCombinations = countParameterCombinations;
|
|
5
5
|
const constants_js_1 = require("./constants.js");
|
|
6
6
|
/**
|
|
7
|
-
* Get parameter arrays based on strategy and
|
|
7
|
+
* Get parameter arrays based on strategy, configuration, and filters
|
|
8
8
|
*/
|
|
9
|
-
function getParameterArrays(strategy, supportedConfig) {
|
|
9
|
+
function getParameterArrays(strategy, supportedConfig, filters) {
|
|
10
|
+
let baudRates;
|
|
11
|
+
let parities;
|
|
12
|
+
let dataBits;
|
|
13
|
+
let stopBits;
|
|
14
|
+
let addressRange;
|
|
10
15
|
if (strategy === 'quick' && supportedConfig) {
|
|
11
16
|
// Quick mode with driver config: use supported values or fall back to common
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
addressRange: supportedConfig.validAddressRange ?? [constants_js_1.MIN_SLAVE_ID, constants_js_1.MAX_SLAVE_ID],
|
|
18
|
-
};
|
|
17
|
+
baudRates = supportedConfig.validBaudRates ?? constants_js_1.COMMON_BAUD_RATES;
|
|
18
|
+
parities = supportedConfig.validParity ?? constants_js_1.STANDARD_PARITY;
|
|
19
|
+
dataBits = supportedConfig.validDataBits ?? constants_js_1.STANDARD_DATA_BITS;
|
|
20
|
+
stopBits = supportedConfig.validStopBits ?? constants_js_1.STANDARD_STOP_BITS;
|
|
21
|
+
addressRange = supportedConfig.validAddressRange ?? [constants_js_1.MIN_SLAVE_ID, constants_js_1.MAX_SLAVE_ID];
|
|
19
22
|
}
|
|
20
|
-
if (strategy === 'thorough') {
|
|
23
|
+
else if (strategy === 'thorough') {
|
|
21
24
|
// Thorough mode: use supported config if provided, otherwise standard Modbus
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
baudRates = supportedConfig?.validBaudRates ?? constants_js_1.STANDARD_BAUD_RATES;
|
|
26
|
+
parities = supportedConfig?.validParity ?? constants_js_1.STANDARD_PARITY;
|
|
27
|
+
dataBits = supportedConfig?.validDataBits ?? constants_js_1.STANDARD_DATA_BITS;
|
|
28
|
+
stopBits = supportedConfig?.validStopBits ?? constants_js_1.STANDARD_STOP_BITS;
|
|
29
|
+
addressRange = supportedConfig?.validAddressRange ?? [constants_js_1.MIN_SLAVE_ID, constants_js_1.MAX_SLAVE_ID];
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// Quick mode without driver config: use common parameters
|
|
33
|
+
baudRates = constants_js_1.COMMON_BAUD_RATES;
|
|
34
|
+
parities = constants_js_1.STANDARD_PARITY;
|
|
35
|
+
dataBits = constants_js_1.COMMON_DATA_BITS;
|
|
36
|
+
stopBits = constants_js_1.COMMON_STOP_BITS;
|
|
37
|
+
addressRange = [constants_js_1.MIN_SLAVE_ID, constants_js_1.MAX_SLAVE_ID];
|
|
38
|
+
}
|
|
39
|
+
// Apply filters if provided (overrides strategy and driver config)
|
|
40
|
+
if (filters?.baudRates !== undefined) {
|
|
41
|
+
baudRates = filters.baudRates;
|
|
42
|
+
}
|
|
43
|
+
if (filters?.parities !== undefined) {
|
|
44
|
+
parities = filters.parities;
|
|
29
45
|
}
|
|
30
|
-
// Quick mode without driver config: use common parameters
|
|
31
46
|
return {
|
|
32
|
-
baudRates
|
|
33
|
-
parities
|
|
34
|
-
dataBits
|
|
35
|
-
stopBits
|
|
36
|
-
addressRange
|
|
47
|
+
baudRates,
|
|
48
|
+
parities,
|
|
49
|
+
dataBits,
|
|
50
|
+
stopBits,
|
|
51
|
+
addressRange,
|
|
37
52
|
};
|
|
38
53
|
}
|
|
39
54
|
/**
|
|
@@ -52,11 +67,23 @@ function getParameterArrays(strategy, supportedConfig) {
|
|
|
52
67
|
* ```
|
|
53
68
|
*/
|
|
54
69
|
function countParameterCombinations(options) {
|
|
55
|
-
const { strategy, supportedConfig } = options;
|
|
56
|
-
const
|
|
70
|
+
const { strategy, supportedConfig, slaveIds, baudRates: baudRateFilter, parities: parityFilter, } = options;
|
|
71
|
+
const filters = baudRateFilter !== undefined || parityFilter !== undefined
|
|
72
|
+
? {
|
|
73
|
+
...(baudRateFilter !== undefined && { baudRates: baudRateFilter }),
|
|
74
|
+
...(parityFilter !== undefined && { parities: parityFilter }),
|
|
75
|
+
}
|
|
76
|
+
: undefined;
|
|
77
|
+
const { baudRates, parities, dataBits, stopBits, addressRange } = getParameterArrays(strategy, supportedConfig, filters);
|
|
57
78
|
// Calculate address count
|
|
58
|
-
|
|
59
|
-
|
|
79
|
+
let addressCount;
|
|
80
|
+
if (slaveIds !== undefined) {
|
|
81
|
+
addressCount = slaveIds.length;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const [minId, maxId] = addressRange;
|
|
85
|
+
addressCount = maxId - minId + 1;
|
|
86
|
+
}
|
|
60
87
|
// Total combinations = addresses × baud rates × parities × data bits × stop bits
|
|
61
88
|
return addressCount * baudRates.length * parities.length * dataBits.length * stopBits.length;
|
|
62
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter-generator-utils.js","sourceRoot":"","sources":["../../../../src/discovery/parameter-generator-utils.ts"],"names":[],"mappings":";;AAwBA,
|
|
1
|
+
{"version":3,"file":"parameter-generator-utils.js","sourceRoot":"","sources":["../../../../src/discovery/parameter-generator-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,12 @@ export interface GeneratorOptions {
|
|
|
27
27
|
defaultConfig?: DefaultSerialConfig;
|
|
28
28
|
/** Driver-provided supported configuration constraints */
|
|
29
29
|
supportedConfig?: SupportedSerialConfig;
|
|
30
|
+
/** Optional list of specific slave IDs to test (overrides addressRange) */
|
|
31
|
+
slaveIds?: number[];
|
|
32
|
+
/** Optional list of specific baud rates to test (overrides strategy defaults) */
|
|
33
|
+
baudRates?: BaudRate[];
|
|
34
|
+
/** Optional list of specific parities to test (overrides strategy defaults) */
|
|
35
|
+
parities?: Parity[];
|
|
30
36
|
}
|
|
31
37
|
/**
|
|
32
38
|
* Group of parameter combinations that share the same serial configuration
|
|
@@ -1 +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;
|
|
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;IAEvC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IAEnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IAEtB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAmFD;;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,CAmE7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAiB,6BAA6B,CAC5C,OAAO,EAAE,gBAAgB,GACxB,SAAS,CAAC,oBAAoB,CAAC,CA2DjC"}
|
|
@@ -18,16 +18,30 @@ function clampSlaveId(id) {
|
|
|
18
18
|
* 2. Address 1 (most common)
|
|
19
19
|
* 3. Address 2
|
|
20
20
|
* 4. Remaining addresses sequentially (3, 4, 5, ...)
|
|
21
|
+
*
|
|
22
|
+
* @param range - Min/max slave ID range (used when filter not provided)
|
|
23
|
+
* @param defaultAddress - Optional default address to prioritize first
|
|
24
|
+
* @param filter - Optional list of specific IDs to test (overrides range)
|
|
21
25
|
*/
|
|
22
|
-
function* generateSlaveIds(range, defaultAddress) {
|
|
23
|
-
const [minId, maxId] = range;
|
|
24
|
-
const start = clampSlaveId(minId);
|
|
25
|
-
const end = clampSlaveId(maxId);
|
|
26
|
+
function* generateSlaveIds(range, defaultAddress, filter) {
|
|
26
27
|
const yielded = new Set();
|
|
27
|
-
//
|
|
28
|
+
// Determine which IDs we're working with
|
|
29
|
+
let idsToYield;
|
|
30
|
+
if (filter !== undefined) {
|
|
31
|
+
// Use filtered IDs (even if empty array)
|
|
32
|
+
idsToYield = filter;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// Use full range
|
|
36
|
+
const [minId, maxId] = range;
|
|
37
|
+
const start = clampSlaveId(minId);
|
|
38
|
+
const end = clampSlaveId(maxId);
|
|
39
|
+
idsToYield = Array.from({ length: end - start + 1 }, (_, i) => start + i);
|
|
40
|
+
}
|
|
41
|
+
// Helper to yield if valid and not already yielded
|
|
28
42
|
function* yieldIfValid(id) {
|
|
29
43
|
const clamped = clampSlaveId(id);
|
|
30
|
-
if (clamped
|
|
44
|
+
if (idsToYield.includes(clamped) && !yielded.has(clamped)) {
|
|
31
45
|
yielded.add(clamped);
|
|
32
46
|
yield clamped;
|
|
33
47
|
}
|
|
@@ -40,7 +54,7 @@ function* generateSlaveIds(range, defaultAddress) {
|
|
|
40
54
|
yield* yieldIfValid(1);
|
|
41
55
|
yield* yieldIfValid(2);
|
|
42
56
|
// 3. Remaining addresses sequentially
|
|
43
|
-
for (
|
|
57
|
+
for (const id of idsToYield) {
|
|
44
58
|
if (!yielded.has(id)) {
|
|
45
59
|
yielded.add(id);
|
|
46
60
|
yield id;
|
|
@@ -83,10 +97,16 @@ function prioritizeDefaults(array, defaultValue) {
|
|
|
83
97
|
* ```
|
|
84
98
|
*/
|
|
85
99
|
function* generateParameterGroups(options) {
|
|
86
|
-
const { strategy, defaultConfig, supportedConfig } = options;
|
|
87
|
-
// Get parameter arrays
|
|
88
|
-
|
|
89
|
-
|
|
100
|
+
const { strategy, defaultConfig, supportedConfig, slaveIds: slaveIdFilter, baudRates: baudRateFilter, parities: parityFilter, } = options;
|
|
101
|
+
// Get parameter arrays (applying filters if provided)
|
|
102
|
+
const filters = baudRateFilter !== undefined || parityFilter !== undefined
|
|
103
|
+
? {
|
|
104
|
+
...(baudRateFilter !== undefined && { baudRates: baudRateFilter }),
|
|
105
|
+
...(parityFilter !== undefined && { parities: parityFilter }),
|
|
106
|
+
}
|
|
107
|
+
: undefined;
|
|
108
|
+
let { baudRates, parities, dataBits, stopBits } = (0, parameter_generator_utils_js_1.getParameterArrays)(strategy, supportedConfig, filters);
|
|
109
|
+
const { addressRange } = (0, parameter_generator_utils_js_1.getParameterArrays)(strategy, supportedConfig, filters);
|
|
90
110
|
// Prioritize default values to test them first
|
|
91
111
|
if (defaultConfig) {
|
|
92
112
|
baudRates = prioritizeDefaults(baudRates, defaultConfig.baudRate);
|
|
@@ -95,7 +115,7 @@ function* generateParameterGroups(options) {
|
|
|
95
115
|
stopBits = prioritizeDefaults(stopBits, defaultConfig.stopBits);
|
|
96
116
|
}
|
|
97
117
|
// Generate slave IDs once (reused for each serial config)
|
|
98
|
-
const slaveIds = Array.from(generateSlaveIds(addressRange, defaultConfig?.defaultAddress));
|
|
118
|
+
const slaveIds = Array.from(generateSlaveIds(addressRange, defaultConfig?.defaultAddress, slaveIdFilter));
|
|
99
119
|
// Generate groups: iterate serial params (baud × parity × data × stop)
|
|
100
120
|
// For each serial config, create a group with all slave IDs
|
|
101
121
|
for (const baudRate of baudRates) {
|
|
@@ -152,10 +172,16 @@ function* generateParameterGroups(options) {
|
|
|
152
172
|
* ```
|
|
153
173
|
*/
|
|
154
174
|
function* generateParameterCombinations(options) {
|
|
155
|
-
const { strategy, defaultConfig, supportedConfig } = options;
|
|
156
|
-
// Get parameter arrays
|
|
157
|
-
|
|
158
|
-
|
|
175
|
+
const { strategy, defaultConfig, supportedConfig, slaveIds: slaveIdFilter, baudRates: baudRateFilter, parities: parityFilter, } = options;
|
|
176
|
+
// Get parameter arrays (applying filters if provided)
|
|
177
|
+
const filters = baudRateFilter !== undefined || parityFilter !== undefined
|
|
178
|
+
? {
|
|
179
|
+
...(baudRateFilter !== undefined && { baudRates: baudRateFilter }),
|
|
180
|
+
...(parityFilter !== undefined && { parities: parityFilter }),
|
|
181
|
+
}
|
|
182
|
+
: undefined;
|
|
183
|
+
let { baudRates, parities, dataBits, stopBits } = (0, parameter_generator_utils_js_1.getParameterArrays)(strategy, supportedConfig, filters);
|
|
184
|
+
const { addressRange } = (0, parameter_generator_utils_js_1.getParameterArrays)(strategy, supportedConfig, filters);
|
|
159
185
|
// Prioritize default values to test them first
|
|
160
186
|
if (defaultConfig) {
|
|
161
187
|
baudRates = prioritizeDefaults(baudRates, defaultConfig.baudRate);
|
|
@@ -166,7 +192,7 @@ function* generateParameterCombinations(options) {
|
|
|
166
192
|
// Generate combinations in priority order:
|
|
167
193
|
// - Default config combination first
|
|
168
194
|
// - Then iterate: slave IDs (prioritized) × baud rates (prioritized) × parity × data × stop
|
|
169
|
-
const slaveIds = Array.from(generateSlaveIds(addressRange, defaultConfig?.defaultAddress));
|
|
195
|
+
const slaveIds = Array.from(generateSlaveIds(addressRange, defaultConfig?.defaultAddress, slaveIdFilter));
|
|
170
196
|
for (const slaveId of slaveIds) {
|
|
171
197
|
for (const baudRate of baudRates) {
|
|
172
198
|
for (const parity of parities) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter-generator.js","sourceRoot":"","sources":["../../../../src/discovery/parameter-generator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"parameter-generator.js","sourceRoot":"","sources":["../../../../src/discovery/parameter-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAiJ7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/dist/cjs/src/index.js
CHANGED
|
@@ -105,6 +105,9 @@ program
|
|
|
105
105
|
.option('--timeout <ms>', 'Response timeout in milliseconds (default: 1000)', parseInt)
|
|
106
106
|
.option('--delay <ms>', 'Delay between attempts in milliseconds (default: 100)', parseInt)
|
|
107
107
|
.option('--max-devices <count>', 'Maximum number of devices to find (default: 1, use 0 for unlimited)', parseInt)
|
|
108
|
+
.option('--id <spec>', 'Limit search to specific slave IDs (e.g., "1,2,3-5"). Can be specified multiple times')
|
|
109
|
+
.option('--parity <spec>', 'Limit search to specific parities (e.g., "none,even"). Can be specified multiple times')
|
|
110
|
+
.option('--baud-rate <spec>', 'Limit search to specific baud rates (e.g., "9600,19200" or "9600-38400"). Can be specified multiple times')
|
|
108
111
|
.optionsGroup('Output Options:')
|
|
109
112
|
.option('--verbose', 'Show detailed progress with current parameters being tested')
|
|
110
113
|
.option('--silent', 'Suppress all output except final result (useful for scripts)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;AAEA,yCAAmC;AAEnC,wDAA8E;AAC9E,gEAAwF;AACxF,gDAAkE;AAClE,kEAA2F;AAC3F,kDAAqE;AAErE;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,OAAO,CACL,OAAO;QACL,iBAAiB;SAChB,YAAY,CAAC,iBAAiB,CAAC;SAC/B,MAAM,CACL,wBAAwB,EACxB,8FAA8F,CAC/F;SACA,MAAM,CACL,gBAAgB,EAChB,kFAAkF,CACnF;QAED,qBAAqB;SACpB,YAAY,CAAC,qBAAqB,CAAC;SACnC,cAAc,CACb,qBAAqB,EACrB,8DAA8D,EAC9D,QAAQ,CACT;SACA,MAAM,CAAC,gBAAgB,EAAE,kDAAkD,EAAE,QAAQ,CAAC;QAEvF,iBAAiB;SAChB,YAAY,CAAC,sCAAsC,CAAC;SACpD,MAAM,CAAC,mBAAmB,EAAE,gDAAgD,CAAC;SAC7E,MAAM,CACL,wBAAwB,EACxB,4DAA4D,EAC5D,QAAQ,CACT;SACA,MAAM,CACL,iBAAiB,EACjB,0EAA0E,CAC3E;SACA,MAAM,CACL,oBAAoB,EACpB,oEAAoE,EACpE,QAAQ,CACT;SACA,MAAM,CACL,oBAAoB,EACpB,oEAAoE,EACpE,QAAQ,CACT;QAED,iBAAiB;SAChB,YAAY,CAAC,sCAAsC,CAAC;SACpD,MAAM,CAAC,mBAAmB,EAAE,+CAA+C,CAAC;SAC5E,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CACpE,CAAA;AACH,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges multiple specification strings (from repeated CLI flags) into a
|
|
3
|
+
* single deduplicated, sorted array.
|
|
4
|
+
*
|
|
5
|
+
* Handles:
|
|
6
|
+
* - Single string or array of strings
|
|
7
|
+
* - Deduplication across all specifications
|
|
8
|
+
* - Custom sorting
|
|
9
|
+
*
|
|
10
|
+
* @param specs - Single spec string, array of spec strings, or undefined
|
|
11
|
+
* @param parser - Function that parses a single spec string
|
|
12
|
+
* @param sorter - Optional function to sort the final array
|
|
13
|
+
* @returns Merged and sorted array, or undefined if specs is undefined
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // Merge multiple --id specifications
|
|
17
|
+
* const ids = mergeSpecs(
|
|
18
|
+
* ['1,2', '3-5'],
|
|
19
|
+
* parseIdRange,
|
|
20
|
+
* (items) => items.sort((a, b) => a - b)
|
|
21
|
+
* )
|
|
22
|
+
* // Result: [1, 2, 3, 4, 5]
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* // Merge multiple --parity specifications
|
|
26
|
+
* const parities = mergeSpecs(
|
|
27
|
+
* ['none', 'even,odd'],
|
|
28
|
+
* parseParity,
|
|
29
|
+
* sortParitiesInStandardOrder
|
|
30
|
+
* )
|
|
31
|
+
* // Result: ['none', 'even', 'odd']
|
|
32
|
+
*/
|
|
33
|
+
export declare function mergeSpecs<T>(specs: string | string[] | undefined, parser: (spec: string) => T[], sorter?: (items: T[]) => T[]): T[] | undefined;
|
|
34
|
+
//# sourceMappingURL=merge-specs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-specs.d.ts","sourceRoot":"","sources":["../../../../src/utils/merge-specs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE,EAC7B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAC3B,CAAC,EAAE,GAAG,SAAS,CAoBjB"}
|