@zwave-js/nvmedit 8.9.0-beta.4-pr-3789-c208add

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 (128) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/bin/nvmedit.js +2 -0
  4. package/build/cli.d.ts +3 -0
  5. package/build/cli.d.ts.map +1 -0
  6. package/build/cli.js +175 -0
  7. package/build/cli.js.map +1 -0
  8. package/build/consts.d.ts +4 -0
  9. package/build/consts.d.ts.map +1 -0
  10. package/build/consts.js +7 -0
  11. package/build/consts.js.map +1 -0
  12. package/build/convert.d.ts +86 -0
  13. package/build/convert.d.ts.map +1 -0
  14. package/build/convert.js +796 -0
  15. package/build/convert.js.map +1 -0
  16. package/build/files/ApplicationCCsFile.d.ts +22 -0
  17. package/build/files/ApplicationCCsFile.d.ts.map +1 -0
  18. package/build/files/ApplicationCCsFile.js +75 -0
  19. package/build/files/ApplicationCCsFile.js.map +1 -0
  20. package/build/files/ApplicationDataFile.d.ts +12 -0
  21. package/build/files/ApplicationDataFile.d.ts.map +1 -0
  22. package/build/files/ApplicationDataFile.js +31 -0
  23. package/build/files/ApplicationDataFile.js.map +1 -0
  24. package/build/files/ApplicationRFConfigFile.d.ts +21 -0
  25. package/build/files/ApplicationRFConfigFile.d.ts.map +1 -0
  26. package/build/files/ApplicationRFConfigFile.js +71 -0
  27. package/build/files/ApplicationRFConfigFile.js.map +1 -0
  28. package/build/files/ApplicationTypeFile.d.ts +24 -0
  29. package/build/files/ApplicationTypeFile.d.ts.map +1 -0
  30. package/build/files/ApplicationTypeFile.js +52 -0
  31. package/build/files/ApplicationTypeFile.js.map +1 -0
  32. package/build/files/ControllerInfoFile.d.ts +44 -0
  33. package/build/files/ControllerInfoFile.d.ts.map +1 -0
  34. package/build/files/ControllerInfoFile.js +136 -0
  35. package/build/files/ControllerInfoFile.js.map +1 -0
  36. package/build/files/NVMFile.d.ts +48 -0
  37. package/build/files/NVMFile.d.ts.map +1 -0
  38. package/build/files/NVMFile.js +129 -0
  39. package/build/files/NVMFile.js.map +1 -0
  40. package/build/files/NodeInfoFiles.d.ts +38 -0
  41. package/build/files/NodeInfoFiles.d.ts.map +1 -0
  42. package/build/files/NodeInfoFiles.js +146 -0
  43. package/build/files/NodeInfoFiles.js.map +1 -0
  44. package/build/files/ProtocolNodeMaskFiles.d.ts +48 -0
  45. package/build/files/ProtocolNodeMaskFiles.d.ts.map +1 -0
  46. package/build/files/ProtocolNodeMaskFiles.js +120 -0
  47. package/build/files/ProtocolNodeMaskFiles.js.map +1 -0
  48. package/build/files/RouteCacheFiles.d.ts +45 -0
  49. package/build/files/RouteCacheFiles.d.ts.map +1 -0
  50. package/build/files/RouteCacheFiles.js +164 -0
  51. package/build/files/RouteCacheFiles.js.map +1 -0
  52. package/build/files/SUCUpdateEntriesFile.d.ts +25 -0
  53. package/build/files/SUCUpdateEntriesFile.d.ts.map +1 -0
  54. package/build/files/SUCUpdateEntriesFile.js +82 -0
  55. package/build/files/SUCUpdateEntriesFile.js.map +1 -0
  56. package/build/files/VersionFiles.d.ts +27 -0
  57. package/build/files/VersionFiles.d.ts.map +1 -0
  58. package/build/files/VersionFiles.js +60 -0
  59. package/build/files/VersionFiles.js.map +1 -0
  60. package/build/files/index.d.ts +13 -0
  61. package/build/files/index.d.ts.map +1 -0
  62. package/build/files/index.js +25 -0
  63. package/build/files/index.js.map +1 -0
  64. package/build/index.d.ts +8 -0
  65. package/build/index.d.ts.map +1 -0
  66. package/build/index.js +22 -0
  67. package/build/index.js.map +1 -0
  68. package/build/nvm3/consts.d.ts +48 -0
  69. package/build/nvm3/consts.d.ts.map +1 -0
  70. package/build/nvm3/consts.js +59 -0
  71. package/build/nvm3/consts.js.map +1 -0
  72. package/build/nvm3/nvm.d.ts +31 -0
  73. package/build/nvm3/nvm.d.ts.map +1 -0
  74. package/build/nvm3/nvm.js +146 -0
  75. package/build/nvm3/nvm.js.map +1 -0
  76. package/build/nvm3/object.d.ts +26 -0
  77. package/build/nvm3/object.d.ts.map +1 -0
  78. package/build/nvm3/object.js +196 -0
  79. package/build/nvm3/object.js.map +1 -0
  80. package/build/nvm3/page.d.ts +26 -0
  81. package/build/nvm3/page.d.ts.map +1 -0
  82. package/build/nvm3/page.js +94 -0
  83. package/build/nvm3/page.js.map +1 -0
  84. package/build/nvm3/utils.d.ts +11 -0
  85. package/build/nvm3/utils.d.ts.map +1 -0
  86. package/build/nvm3/utils.js +103 -0
  87. package/build/nvm3/utils.js.map +1 -0
  88. package/build/nvm500/EntryParsers.d.ts +27 -0
  89. package/build/nvm500/EntryParsers.d.ts.map +1 -0
  90. package/build/nvm500/EntryParsers.js +82 -0
  91. package/build/nvm500/EntryParsers.js.map +1 -0
  92. package/build/nvm500/NVMParser.d.ts +93 -0
  93. package/build/nvm500/NVMParser.d.ts.map +1 -0
  94. package/build/nvm500/NVMParser.js +524 -0
  95. package/build/nvm500/NVMParser.js.map +1 -0
  96. package/build/nvm500/parsers/Bridge_6_6x.d.ts +3 -0
  97. package/build/nvm500/parsers/Bridge_6_6x.d.ts.map +1 -0
  98. package/build/nvm500/parsers/Bridge_6_6x.js +183 -0
  99. package/build/nvm500/parsers/Bridge_6_6x.js.map +1 -0
  100. package/build/nvm500/parsers/Bridge_6_7x.d.ts +3 -0
  101. package/build/nvm500/parsers/Bridge_6_7x.d.ts.map +1 -0
  102. package/build/nvm500/parsers/Bridge_6_7x.js +199 -0
  103. package/build/nvm500/parsers/Bridge_6_7x.js.map +1 -0
  104. package/build/nvm500/parsers/Bridge_6_8x.d.ts +3 -0
  105. package/build/nvm500/parsers/Bridge_6_8x.d.ts.map +1 -0
  106. package/build/nvm500/parsers/Bridge_6_8x.js +226 -0
  107. package/build/nvm500/parsers/Bridge_6_8x.js.map +1 -0
  108. package/build/nvm500/parsers/Static_6_6x.d.ts +3 -0
  109. package/build/nvm500/parsers/Static_6_6x.d.ts.map +1 -0
  110. package/build/nvm500/parsers/Static_6_6x.js +178 -0
  111. package/build/nvm500/parsers/Static_6_6x.js.map +1 -0
  112. package/build/nvm500/parsers/Static_6_7x.d.ts +3 -0
  113. package/build/nvm500/parsers/Static_6_7x.d.ts.map +1 -0
  114. package/build/nvm500/parsers/Static_6_7x.js +194 -0
  115. package/build/nvm500/parsers/Static_6_7x.js.map +1 -0
  116. package/build/nvm500/parsers/Static_6_8x.d.ts +3 -0
  117. package/build/nvm500/parsers/Static_6_8x.d.ts.map +1 -0
  118. package/build/nvm500/parsers/Static_6_8x.js +222 -0
  119. package/build/nvm500/parsers/Static_6_8x.js.map +1 -0
  120. package/build/nvm500/shared.d.ts +53 -0
  121. package/build/nvm500/shared.d.ts.map +1 -0
  122. package/build/nvm500/shared.js +57 -0
  123. package/build/nvm500/shared.js.map +1 -0
  124. package/build/shared.d.ts +1 -0
  125. package/build/shared.d.ts.map +1 -0
  126. package/build/shared.js +2 -0
  127. package/build/shared.js.map +1 -0
  128. package/package.json +61 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018-2021 AlCalzone
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # Z-Wave JS: NVM editor
2
+
3
+ CLI utility to convert binary NVM backups from Z-Wave controllers into JSON and back. Can be used to edit a Z-Wave controller's memory or convert it between different firmware revisions.
4
+ **WARNING:** This is highly experimental. Use at your own risk!
5
+
6
+ (Probably) supports all NVM files in the NVM3 format, which is used starting with Z-Wave SDK 6.61+.
7
+
8
+ ## Convert one NVM to be compatible with another one
9
+
10
+ **This is probably the command you're looking for.** It converts the format of an NVM backup between different Z-Wave modules.
11
+
12
+ ```
13
+ npx @zwave-js/nvmedit convert --source <source> --target <target> --out <output>
14
+ ```
15
+
16
+ `<source>` specifies the source NVM filename. This file will be converted to match the target NVM.
17
+ `<target>` specifies the target NVM filename. This file will used to determine how to convert the source NVM.
18
+ The resulting NVM will be written to `<output>`.
19
+
20
+ ## Convert binary NVM file to JSON
21
+
22
+ ```
23
+ npx @zwave-js/nvmedit nvm2json --in /path/to/nvm.bin --out /path/to/nvm.json [--verbose]
24
+ ```
25
+
26
+ The `--verbose` flag will print additional output like memory page contents or parsed NVM objects to the console.
27
+
28
+ The `.bin` file must either contain a 700-series NVM (SDK version 7.x) or a 500-series NVM (SDK version 6.61+). The `.json` output format will depend on the SDK version.
29
+
30
+ ## Convert JSON NVM file to binary
31
+
32
+ ```
33
+ npx @zwave-js/nvmedit json2nvm --in /path/to/nvm.json --out /path/to/nvm.bin --version <ver.si.on>
34
+ ```
35
+
36
+ `<ver.si.on>` determines the output format of the NVM file and must be replaced with the target SDK version which must match your stick's firmware version
37
+ Only firmware version `7.x` is supported. Converting a 500-series `.json` to a 700-series `.json` must be done beforehand in a separate step.
38
+
39
+ **ATTENTION:** The input `.json` file must contain a `"meta"` section which contains some information about the target stick. If it is missing, you can use the `nvm2json` command to convert a backup of the target stick and copy the section from there.
40
+
41
+ ## Convert 500-series JSON to 700-series JSON
42
+
43
+ ```
44
+ npx @zwave-js/nvmedit 500to700 --in /path/to/nvm500.json --out /path/to/nvm700.json [--truncate]
45
+ ```
46
+
47
+ Some 500-series NVM backups contain more application data than the 700-series NVM has reserved for this field. The conversion routine will try to remove 0-bytes at the start and end, but if this is not enough, it will fail. Set the `--truncate` option to allow truncating potentially valid application data.
48
+
49
+ ## Convert 700-series JSON to 500-series JSON
50
+
51
+ ```
52
+ npx @zwave-js/nvmedit 700to500 --in /path/to/nvm700.json --out /path/to/nvm500.json
53
+ ```
package/bin/nvmedit.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require("../build/cli.js");
package/build/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import "reflect-metadata";
2
+ import "./index";
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC;AAW1B,OAAO,SAAS,CAAC"}
package/build/cli.js ADDED
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const typeguards_1 = require("alcalzone-shared/typeguards");
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ require("reflect-metadata");
9
+ const yargs_1 = __importDefault(require("yargs"));
10
+ const convert_1 = require("./convert");
11
+ require("./index");
12
+ void yargs_1.default
13
+ .env("NVMEDIT")
14
+ .strict()
15
+ .usage("Z-Wave JS NVM converter utility\n\nUsage: $0 [options]")
16
+ .alias("h", "help")
17
+ .alias("v", "version")
18
+ .wrap(Math.min(100, yargs_1.default.terminalWidth()))
19
+ .options({
20
+ verbose: {
21
+ alias: "vv",
22
+ describe: "Print verbose output",
23
+ type: "boolean",
24
+ },
25
+ })
26
+ .command("nvm2json", "Convert an NVM backup to JSON", (yargs) => yargs.usage("$0 nvm2json --in <input> --out <output>").options({
27
+ in: {
28
+ describe: "NVM backup filename",
29
+ type: "string",
30
+ required: true,
31
+ },
32
+ out: {
33
+ describe: "JSON output filename",
34
+ type: "string",
35
+ required: true,
36
+ },
37
+ }), async (argv) => {
38
+ const buffer = await fs_extra_1.default.readFile(argv.in);
39
+ let json;
40
+ try {
41
+ json = (0, convert_1.nvmToJSON)(buffer, argv.verbose);
42
+ }
43
+ catch (e) {
44
+ try {
45
+ json = (0, convert_1.nvm500ToJSON)(buffer);
46
+ }
47
+ catch (ee) {
48
+ console.error(e);
49
+ process.exit(1);
50
+ }
51
+ }
52
+ await fs_extra_1.default.writeJSON(argv.out, json, { spaces: "\t" });
53
+ console.error(`NVM (JSON) written to ${argv.out}`);
54
+ process.exit(0);
55
+ })
56
+ .command("json2nvm", "Convert the JSON representation of an NVM to binary", (yargs) => yargs
57
+ .usage("$0 json2nvm --in <input> --out <output> --protocolVersion <version>")
58
+ .options({
59
+ in: {
60
+ describe: "JSON input filename",
61
+ type: "string",
62
+ required: true,
63
+ },
64
+ out: {
65
+ describe: "NVM output filename",
66
+ type: "string",
67
+ required: true,
68
+ },
69
+ protocolVersion: {
70
+ alias: "V",
71
+ describe: "target protocol version, determines the NVM format",
72
+ type: "string",
73
+ required: true,
74
+ },
75
+ }), async (argv) => {
76
+ const { protocolVersion } = argv;
77
+ const versionIs500 = /^\d\.\d+$/.test(protocolVersion);
78
+ const json = await fs_extra_1.default.readJson(argv.in);
79
+ const jsonIs500 = json.format === 500;
80
+ if (versionIs500 && !jsonIs500) {
81
+ console.error(`ERROR: Protocol version ${protocolVersion} looks like a 500-series version, but the JSON file does not belong to a 500-series NVM!
82
+ Convert it first using the 700to500 command.`);
83
+ process.exit(1);
84
+ }
85
+ else if (jsonIs500 && !versionIs500) {
86
+ console.error(`ERROR: Protocol version ${protocolVersion} looks like a 700-series version, but the JSON file belong to a 500-series NVM!
87
+ Convert it first using the 500to700 command.`);
88
+ process.exit(1);
89
+ }
90
+ if (!(0, typeguards_1.isObject)(json.meta)) {
91
+ console.error(`ERROR: The JSON file does not contain the meta section, which is required for the conversion to a binary NVM!
92
+ Create a backup of the target stick, use the nvm2json command to convert it to JSON and copy the meta section from there.`);
93
+ process.exit(1);
94
+ }
95
+ const nvm = versionIs500
96
+ ? (0, convert_1.jsonToNVM500)(json, protocolVersion)
97
+ : (0, convert_1.jsonToNVM)(json, protocolVersion);
98
+ await fs_extra_1.default.writeFile(argv.out, nvm);
99
+ console.error(`NVM (binary) written to ${argv.out}`);
100
+ process.exit(0);
101
+ })
102
+ .command("500to700", "Convert a 500-series JSON file into a 700-series JSON file", (yargs) => yargs
103
+ .usage("$0 500to700 --in <input> --out <output> [--truncate]")
104
+ .options({
105
+ in: {
106
+ describe: "500 series JSON input filename",
107
+ type: "string",
108
+ required: true,
109
+ },
110
+ out: {
111
+ describe: "700 series output filename",
112
+ type: "string",
113
+ required: true,
114
+ },
115
+ truncate: {
116
+ alias: "t",
117
+ describe: "Truncate application data if it is too large (> 512 bytes)",
118
+ type: "boolean",
119
+ required: false,
120
+ default: false,
121
+ },
122
+ }), async (argv) => {
123
+ const json500 = await fs_extra_1.default.readJson(argv.in);
124
+ const json700 = (0, convert_1.json500To700)(json500, argv.truncate);
125
+ await fs_extra_1.default.writeJSON(argv.out, json700, { spaces: "\t" });
126
+ console.error(`700-series NVM (JSON) written to ${argv.out}`);
127
+ process.exit(0);
128
+ })
129
+ .command("700to500", "Convert a 700-series JSON file into a 500-series JSON file", (yargs) => yargs.usage("$0 700to500 --in <input> --out <output>").options({
130
+ in: {
131
+ describe: "700 series JSON input filename",
132
+ type: "string",
133
+ required: true,
134
+ },
135
+ out: {
136
+ describe: "500 series output filename",
137
+ type: "string",
138
+ required: true,
139
+ },
140
+ }), async (argv) => {
141
+ const json700 = await fs_extra_1.default.readJson(argv.in);
142
+ const json500 = (0, convert_1.json700To500)(json700);
143
+ await fs_extra_1.default.writeJSON(argv.out, json500, { spaces: "\t" });
144
+ console.error(`500-series NVM (JSON) written to ${argv.out}`);
145
+ process.exit(0);
146
+ })
147
+ .command("convert", "Convert the format of an NVM backup between different Z-Wave modules", (yargs) => yargs
148
+ .usage("$0 convert --source <source> --target <target> --out <output>")
149
+ .options({
150
+ source: {
151
+ describe: "The source NVM filename. This file will be converted to match the target NVM.",
152
+ type: "string",
153
+ required: true,
154
+ },
155
+ target: {
156
+ describe: "The target NVM filename. This file will used to determine how to convert the source NVM.",
157
+ type: "string",
158
+ required: true,
159
+ },
160
+ out: {
161
+ describe: "The output filename where the convert NVM will be written.",
162
+ type: "string",
163
+ required: true,
164
+ },
165
+ }), async (argv) => {
166
+ const source = await fs_extra_1.default.readFile(argv.source);
167
+ const target = await fs_extra_1.default.readFile(argv.target);
168
+ const output = (0, convert_1.migrateNVM)(source, target);
169
+ await fs_extra_1.default.writeFile(argv.out, output);
170
+ console.error(`Converted NVM written to ${argv.out}`);
171
+ process.exit(0);
172
+ })
173
+ .demandCommand(1, "Please specify a command")
174
+ .parseAsync();
175
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;AAAA,4DAAuD;AACvD,wDAA0B;AAC1B,4BAA0B;AAC1B,kDAA0B;AAC1B,uCAQmB;AACnB,mBAAiB;AAEjB,KAAK,eAAK;KACR,GAAG,CAAC,SAAS,CAAC;KACd,MAAM,EAAE;KACR,KAAK,CAAC,wDAAwD,CAAC;KAC/D,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;KAClB,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;KACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,eAAK,CAAC,aAAa,EAAE,CAAC,CAAC;KAC1C,OAAO,CAAC;IACR,OAAO,EAAE;QACR,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,sBAAsB;QAChC,IAAI,EAAE,SAAS;KACf;CACD,CAAC;KACD,OAAO,CACP,UAAU,EACV,+BAA+B,EAC/B,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,OAAO,CAAC;IAC9D,EAAE,EAAE;QACH,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,QAAQ,EAAE,sBAAsB;QAChC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;CACD,CAAC,EACH,KAAK,EAAE,IAAI,EAAE,EAAE;IACd,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,IAAS,CAAC;IACd,IAAI;QACH,IAAI,GAAG,IAAA,mBAAS,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;IAAC,OAAO,CAAC,EAAE;QACX,IAAI;YACH,IAAI,GAAG,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC;SAC5B;QAAC,OAAO,EAAE,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;KACD;IACD,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CACD;KACA,OAAO,CACP,UAAU,EACV,qDAAqD,EACrD,CAAC,KAAK,EAAE,EAAE,CACT,KAAK;KACH,KAAK,CACL,qEAAqE,CACrE;KACA,OAAO,CAAC;IACR,EAAE,EAAE;QACH,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;IACD,eAAe,EAAE;QAChB,KAAK,EAAE,GAAG;QACV,QAAQ,EACP,oDAAoD;QACrD,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;CACD,CAAC,EACJ,KAAK,EAAE,IAAI,EAAE,EAAE;IACd,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC;IACtC,IAAI,YAAY,IAAI,CAAC,SAAS,EAAE;QAC/B,OAAO,CAAC,KAAK,CACZ,2BAA2B,eAAe;6CACF,CACxC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAChB;SAAM,IAAI,SAAS,IAAI,CAAC,YAAY,EAAE;QACtC,OAAO,CAAC,KAAK,CACZ,2BAA2B,eAAe;6CACF,CACxC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAChB;IAED,IAAI,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzB,OAAO,CAAC,KAAK,CACZ;0HACqH,CACrH,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAChB;IAED,MAAM,GAAG,GAAG,YAAY;QACvB,CAAC,CAAC,IAAA,sBAAY,EAAC,IAAI,EAAE,eAAe,CAAC;QACrC,CAAC,CAAC,IAAA,mBAAS,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACpC,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAErD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CACD;KACA,OAAO,CACP,UAAU,EACV,4DAA4D,EAC5D,CAAC,KAAK,EAAE,EAAE,CACT,KAAK;KACH,KAAK,CAAC,sDAAsD,CAAC;KAC7D,OAAO,CAAC;IACR,EAAE,EAAE;QACH,QAAQ,EAAE,gCAAgC;QAC1C,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,QAAQ,EAAE,4BAA4B;QACtC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;IACD,QAAQ,EAAE;QACT,KAAK,EAAE,GAAG;QACV,QAAQ,EACP,4DAA4D;QAC7D,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,KAAK;KACd;CACD,CAAC,EACJ,KAAK,EAAE,IAAI,EAAE,EAAE;IACd,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAE9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CACD;KACA,OAAO,CACP,UAAU,EACV,4DAA4D,EAC5D,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,OAAO,CAAC;IAC9D,EAAE,EAAE;QACH,QAAQ,EAAE,gCAAgC;QAC1C,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,QAAQ,EAAE,4BAA4B;QACtC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;CACD,CAAC,EACH,KAAK,EAAE,IAAI,EAAE,EAAE;IACd,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;IACtC,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAE9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CACD;KACA,OAAO,CACP,SAAS,EACT,sEAAsE,EACtE,CAAC,KAAK,EAAE,EAAE,CACT,KAAK;KACH,KAAK,CACL,+DAA+D,CAC/D;KACA,OAAO,CAAC;IACR,MAAM,EAAE;QACP,QAAQ,EACP,+EAA+E;QAChF,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;IACD,MAAM,EAAE;QACP,QAAQ,EACP,0FAA0F;QAC3F,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,QAAQ,EACP,4DAA4D;QAC7D,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACd;CACD,CAAC,EACJ,KAAK,EAAE,IAAI,EAAE,EAAE;IACd,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CACD;KACA,aAAa,CAAC,CAAC,EAAE,0BAA0B,CAAC;KAC5C,UAAU,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const SUC_UPDATE_NODEPARM_MAX = 20;
2
+ export declare const SUC_UPDATE_ENTRY_SIZE: number;
3
+ export declare const SUC_MAX_UPDATES = 64;
4
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,qBAAqB,QAA8B,CAAC;AACjE,eAAO,MAAM,eAAe,KAAK,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUC_MAX_UPDATES = exports.SUC_UPDATE_ENTRY_SIZE = exports.SUC_UPDATE_NODEPARM_MAX = void 0;
4
+ exports.SUC_UPDATE_NODEPARM_MAX = 20;
5
+ exports.SUC_UPDATE_ENTRY_SIZE = 2 + exports.SUC_UPDATE_NODEPARM_MAX;
6
+ exports.SUC_MAX_UPDATES = 64;
7
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAC7B,QAAA,qBAAqB,GAAG,CAAC,GAAG,+BAAuB,CAAC;AACpD,QAAA,eAAe,GAAG,EAAE,CAAC"}
@@ -0,0 +1,86 @@
1
+ /// <reference types="node" />
2
+ import { CommandClasses, NodeProtocolInfo } from "@zwave-js/core";
3
+ import { Route, SUCUpdateEntry } from "./files";
4
+ import { NVM3Objects, NVMMeta } from "./nvm3/nvm";
5
+ import type { NVM3Object } from "./nvm3/object";
6
+ import { NVM500JSON } from "./nvm500/NVMParser";
7
+ export interface NVMJSON {
8
+ format: number;
9
+ meta?: NVMMeta;
10
+ controller: NVMJSONController;
11
+ nodes: Record<number, NVMJSONNode>;
12
+ }
13
+ export interface NVMJSONController {
14
+ protocolVersion: string;
15
+ applicationVersion: string;
16
+ homeId: string;
17
+ nodeId: number;
18
+ lastNodeId: number;
19
+ staticControllerNodeId: number;
20
+ sucLastIndex: number;
21
+ controllerConfiguration: number;
22
+ sucUpdateEntries: SUCUpdateEntry[];
23
+ sucAwarenessPushNeeded?: number | null;
24
+ maxNodeId: number;
25
+ reservedId: number;
26
+ systemState: number;
27
+ lastNodeIdLR?: number | null;
28
+ maxNodeIdLR?: number | null;
29
+ reservedIdLR?: number | null;
30
+ primaryLongRangeChannelId?: number | null;
31
+ dcdcConfig?: number | null;
32
+ rfConfig?: NVMJSONControllerRFConfig | null;
33
+ preferredRepeaters?: number[] | null;
34
+ isListening: boolean;
35
+ optionalFunctionality: boolean;
36
+ genericDeviceClass: number;
37
+ specificDeviceClass: number;
38
+ commandClasses: {
39
+ includedInsecurely: CommandClasses[];
40
+ includedSecurelyInsecureCCs: CommandClasses[];
41
+ includedSecurelySecureCCs: CommandClasses[];
42
+ };
43
+ applicationData?: string | null;
44
+ }
45
+ export interface NVMJSONControllerRFConfig {
46
+ rfRegion: number;
47
+ txPower: number;
48
+ measured0dBm: number;
49
+ enablePTI: number | null;
50
+ maxTXPower: number | null;
51
+ }
52
+ export interface NVMJSONNodeWithInfo extends Omit<NodeProtocolInfo, "hasSpecificDeviceClass"> {
53
+ isVirtual: boolean;
54
+ genericDeviceClass: number;
55
+ specificDeviceClass: number | null;
56
+ neighbors: number[];
57
+ sucUpdateIndex: number;
58
+ appRouteLock: boolean;
59
+ routeSlaveSUC: boolean;
60
+ sucPendingUpdate: boolean;
61
+ pendingDiscovery: boolean;
62
+ lwr?: Route | null;
63
+ nlwr?: Route | null;
64
+ }
65
+ export interface NVMJSONVirtualNode {
66
+ isVirtual: true;
67
+ }
68
+ export declare type NVMJSONNode = NVMJSONNodeWithInfo | NVMJSONVirtualNode;
69
+ export declare function nodeHasInfo(node: NVMJSONNode): node is NVMJSONNodeWithInfo;
70
+ /** Converts a compressed set of NVM objects to a JSON representation */
71
+ export declare function nvmObjectsToJSON(applicationObjects: ReadonlyMap<number, NVM3Object>, protocolObjects: ReadonlyMap<number, NVM3Object>): NVMJSON;
72
+ export declare function jsonToNVMObjects_v0(json: NVMJSON, major: number, minor: number, patch: number): NVM3Objects;
73
+ export declare function jsonToNVMObjects_v1_to_v3(format: 1 | 2 | 3, json: NVMJSON, major: number, minor: number, patch: number): NVM3Objects;
74
+ /** Reads an NVM buffer and returns its JSON representation */
75
+ export declare function nvmToJSON(buffer: Buffer, debugLogs?: boolean): Required<NVMJSON>;
76
+ /** Reads an NVM buffer of a 500-series stick and returns its JSON representation */
77
+ export declare function nvm500ToJSON(buffer: Buffer): Required<NVM500JSON>;
78
+ /** Takes a JSON represented NVM and converts it to binary */
79
+ export declare function jsonToNVM(json: Required<NVMJSON>, protocolVersion: string): Buffer;
80
+ /** Takes a JSON represented 500 series NVM and converts it to binary */
81
+ export declare function jsonToNVM500(json: Required<NVM500JSON>, protocolVersion: string): Buffer;
82
+ export declare function json500To700(json: NVM500JSON, truncateApplicationData?: boolean): NVMJSON;
83
+ export declare function json700To500(json: NVMJSON): NVM500JSON;
84
+ /** Converts the given source NVM into a format that is compatible with the given target NVM */
85
+ export declare function migrateNVM(source: Buffer, target: Buffer): Buffer;
86
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,cAAc,EAEd,gBAAgB,EAGhB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAyCN,KAAK,EAML,cAAc,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAGN,WAAW,EACX,OAAO,EAEP,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAGN,UAAU,EAEV,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,OAAO;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,iBAAiB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAErC,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAE5B,cAAc,EAAE;QACf,kBAAkB,EAAE,cAAc,EAAE,CAAC;QACrC,2BAA2B,EAAE,cAAc,EAAE,CAAC;QAC9C,yBAAyB,EAAE,cAAc,EAAE,CAAC;KAC5C,CAAC;IAEF,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,mBAChB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IACxD,SAAS,EAAE,OAAO,CAAC;IAEnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAE1B,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACpB;AAGD,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,IAAI,CAAC;CAChB;AAED,oBAAY,WAAW,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAEnE,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,IAAI,mBAAmB,CAE1E;AA2BD,wEAAwE;AACxE,wBAAgB,gBAAgB,CAC/B,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EACnD,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,GAC9C,OAAO,CAyPT;AAqLD,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACX,WAAW,CAyGb;AAED,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EACjB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACX,WAAW,CAiHb;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,CACxB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,OAAe,GACxB,QAAQ,CAAC,OAAO,CAAC,CAKnB;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAIjE;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CACxB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EACvB,eAAe,EAAE,MAAM,GACrB,MAAM,CA+CR;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAC3B,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,EAC1B,eAAe,EAAE,MAAM,GACrB,MAAM,CAiBR;AAED,wBAAgB,YAAY,CAC3B,IAAI,EAAE,UAAU,EAChB,uBAAuB,CAAC,EAAE,OAAO,GAC/B,OAAO,CAyGT;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CA+CtD;AAED,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA0DjE"}