@zwave-js/nvmedit 14.0.0-beta.1 → 14.0.0-beta.4

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 (419) hide show
  1. package/build/cjs/cli.d.ts +2 -0
  2. package/build/cjs/cli.js +170 -0
  3. package/build/cjs/cli.js.map +7 -0
  4. package/build/cjs/consts.js +38 -0
  5. package/build/cjs/consts.js.map +7 -0
  6. package/build/{convert.d.ts → cjs/convert.d.ts} +5 -5
  7. package/build/cjs/convert.js +1306 -0
  8. package/build/cjs/convert.js.map +7 -0
  9. package/build/cjs/index.d.ts +17 -0
  10. package/build/cjs/index.js +79 -0
  11. package/build/cjs/index.js.map +7 -0
  12. package/build/{index_safe.d.ts → cjs/index_safe.d.ts} +9 -9
  13. package/build/cjs/index_safe.js +39 -0
  14. package/build/cjs/index_safe.js.map +7 -0
  15. package/build/{lib → cjs/lib}/NVM3.d.ts +5 -5
  16. package/build/cjs/lib/NVM3.js +519 -0
  17. package/build/cjs/lib/NVM3.js.map +7 -0
  18. package/build/{lib → cjs/lib}/NVM500.d.ts +3 -3
  19. package/build/cjs/lib/NVM500.js +388 -0
  20. package/build/cjs/lib/NVM500.js.map +7 -0
  21. package/build/{lib → cjs/lib}/common/definitions.d.ts +3 -3
  22. package/build/cjs/lib/common/definitions.js +35 -0
  23. package/build/cjs/lib/common/definitions.js.map +7 -0
  24. package/build/cjs/lib/common/routeCache.js +87 -0
  25. package/build/cjs/lib/common/routeCache.js.map +7 -0
  26. package/build/cjs/lib/common/sucUpdateEntry.js +61 -0
  27. package/build/cjs/lib/common/sucUpdateEntry.js.map +7 -0
  28. package/build/{lib → cjs/lib}/common/utils.d.ts +1 -1
  29. package/build/cjs/lib/common/utils.js +88 -0
  30. package/build/cjs/lib/common/utils.js.map +7 -0
  31. package/build/{lib → cjs/lib}/io/BufferedNVMReader.d.ts +1 -1
  32. package/build/cjs/lib/io/BufferedNVMReader.js +94 -0
  33. package/build/cjs/lib/io/BufferedNVMReader.js.map +7 -0
  34. package/build/{lib → cjs/lib}/io/NVMFileIO.d.ts +1 -1
  35. package/build/cjs/lib/io/NVMFileIO.js +115 -0
  36. package/build/cjs/lib/io/NVMFileIO.js.map +7 -0
  37. package/build/{lib → cjs/lib}/io/NVMMemoryIO.d.ts +1 -1
  38. package/build/cjs/lib/io/NVMMemoryIO.js +67 -0
  39. package/build/cjs/lib/io/NVMMemoryIO.js.map +7 -0
  40. package/build/{lib → cjs/lib}/nvm3/adapter.d.ts +3 -3
  41. package/build/cjs/lib/nvm3/adapter.js +862 -0
  42. package/build/cjs/lib/nvm3/adapter.js.map +7 -0
  43. package/build/cjs/lib/nvm3/consts.js +139 -0
  44. package/build/cjs/lib/nvm3/consts.js.map +7 -0
  45. package/build/{lib → cjs/lib}/nvm3/files/ApplicationCCsFile.d.ts +2 -2
  46. package/build/cjs/lib/nvm3/files/ApplicationCCsFile.js +97 -0
  47. package/build/cjs/lib/nvm3/files/ApplicationCCsFile.js.map +7 -0
  48. package/build/{lib → cjs/lib}/nvm3/files/ApplicationDataFile.d.ts +1 -1
  49. package/build/cjs/lib/nvm3/files/ApplicationDataFile.js +57 -0
  50. package/build/cjs/lib/nvm3/files/ApplicationDataFile.js.map +7 -0
  51. package/build/{lib → cjs/lib}/nvm3/files/ApplicationNameFile.d.ts +2 -2
  52. package/build/cjs/lib/nvm3/files/ApplicationNameFile.js +60 -0
  53. package/build/cjs/lib/nvm3/files/ApplicationNameFile.js.map +7 -0
  54. package/build/{lib → cjs/lib}/nvm3/files/ApplicationRFConfigFile.d.ts +2 -2
  55. package/build/cjs/lib/nvm3/files/ApplicationRFConfigFile.js +146 -0
  56. package/build/cjs/lib/nvm3/files/ApplicationRFConfigFile.js.map +7 -0
  57. package/build/{lib → cjs/lib}/nvm3/files/ApplicationTypeFile.d.ts +2 -2
  58. package/build/cjs/lib/nvm3/files/ApplicationTypeFile.js +81 -0
  59. package/build/cjs/lib/nvm3/files/ApplicationTypeFile.js.map +7 -0
  60. package/build/{lib → cjs/lib}/nvm3/files/ControllerInfoFile.d.ts +2 -2
  61. package/build/cjs/lib/nvm3/files/ControllerInfoFile.js +170 -0
  62. package/build/cjs/lib/nvm3/files/ControllerInfoFile.js.map +7 -0
  63. package/build/{lib → cjs/lib}/nvm3/files/NVMFile.d.ts +1 -1
  64. package/build/cjs/lib/nvm3/files/NVMFile.js +155 -0
  65. package/build/cjs/lib/nvm3/files/NVMFile.js.map +7 -0
  66. package/build/{lib → cjs/lib}/nvm3/files/NodeInfoFiles.d.ts +2 -2
  67. package/build/cjs/lib/nvm3/files/NodeInfoFiles.js +288 -0
  68. package/build/cjs/lib/nvm3/files/NodeInfoFiles.js.map +7 -0
  69. package/build/{lib → cjs/lib}/nvm3/files/ProtocolNodeMaskFiles.d.ts +2 -2
  70. package/build/cjs/lib/nvm3/files/ProtocolNodeMaskFiles.js +189 -0
  71. package/build/cjs/lib/nvm3/files/ProtocolNodeMaskFiles.js.map +7 -0
  72. package/build/{lib → cjs/lib}/nvm3/files/RouteCacheFiles.d.ts +3 -3
  73. package/build/cjs/lib/nvm3/files/RouteCacheFiles.js +140 -0
  74. package/build/cjs/lib/nvm3/files/RouteCacheFiles.js.map +7 -0
  75. package/build/{lib → cjs/lib}/nvm3/files/SUCUpdateEntriesFile.d.ts +3 -3
  76. package/build/cjs/lib/nvm3/files/SUCUpdateEntriesFile.js +131 -0
  77. package/build/cjs/lib/nvm3/files/SUCUpdateEntriesFile.js.map +7 -0
  78. package/build/{lib → cjs/lib}/nvm3/files/VersionFiles.d.ts +2 -2
  79. package/build/cjs/lib/nvm3/files/VersionFiles.js +106 -0
  80. package/build/cjs/lib/nvm3/files/VersionFiles.js.map +7 -0
  81. package/build/cjs/lib/nvm3/files/index.d.ts +14 -0
  82. package/build/cjs/lib/nvm3/files/index.js +46 -0
  83. package/build/cjs/lib/nvm3/files/index.js.map +7 -0
  84. package/build/{lib → cjs/lib}/nvm3/object.d.ts +1 -1
  85. package/build/cjs/lib/nvm3/object.js +131 -0
  86. package/build/cjs/lib/nvm3/object.js.map +7 -0
  87. package/build/{lib → cjs/lib}/nvm3/page.d.ts +2 -2
  88. package/build/cjs/lib/nvm3/page.js +60 -0
  89. package/build/cjs/lib/nvm3/page.js.map +7 -0
  90. package/build/{lib → cjs/lib}/nvm3/utils.d.ts +1 -1
  91. package/build/cjs/lib/nvm3/utils.js +165 -0
  92. package/build/cjs/lib/nvm3/utils.js.map +7 -0
  93. package/build/{lib → cjs/lib}/nvm500/EntryParsers.d.ts +1 -1
  94. package/build/cjs/lib/nvm500/EntryParsers.js +106 -0
  95. package/build/cjs/lib/nvm500/EntryParsers.js.map +7 -0
  96. package/build/{lib → cjs/lib}/nvm500/adapter.d.ts +2 -2
  97. package/build/cjs/lib/nvm500/adapter.js +370 -0
  98. package/build/cjs/lib/nvm500/adapter.js.map +7 -0
  99. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.d.ts +3 -0
  100. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.js +207 -0
  101. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.js.map +7 -0
  102. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.d.ts +3 -0
  103. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.js +223 -0
  104. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.js.map +7 -0
  105. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.d.ts +3 -0
  106. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.js +250 -0
  107. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.js.map +7 -0
  108. package/build/cjs/lib/nvm500/impls/Static_6_6x.d.ts +3 -0
  109. package/build/cjs/lib/nvm500/impls/Static_6_6x.js +202 -0
  110. package/build/cjs/lib/nvm500/impls/Static_6_6x.js.map +7 -0
  111. package/build/cjs/lib/nvm500/impls/Static_6_7x.d.ts +3 -0
  112. package/build/cjs/lib/nvm500/impls/Static_6_7x.js +218 -0
  113. package/build/cjs/lib/nvm500/impls/Static_6_7x.js.map +7 -0
  114. package/build/cjs/lib/nvm500/impls/Static_6_8x.d.ts +3 -0
  115. package/build/cjs/lib/nvm500/impls/Static_6_8x.js +246 -0
  116. package/build/cjs/lib/nvm500/impls/Static_6_8x.js.map +7 -0
  117. package/build/cjs/lib/nvm500/impls/index.d.ts +2 -0
  118. package/build/cjs/lib/nvm500/impls/index.js +42 -0
  119. package/build/cjs/lib/nvm500/impls/index.js.map +7 -0
  120. package/build/{lib → cjs/lib}/nvm500/shared.d.ts +3 -3
  121. package/build/cjs/lib/nvm500/shared.js +130 -0
  122. package/build/cjs/lib/nvm500/shared.js.map +7 -0
  123. package/build/{nvm500 → cjs/nvm500}/NVMParser.d.ts +4 -4
  124. package/build/cjs/nvm500/NVMParser.js +17 -0
  125. package/build/cjs/nvm500/NVMParser.js.map +7 -0
  126. package/build/cjs/package.json +3 -0
  127. package/build/esm/cli.d.ts +2 -0
  128. package/build/esm/cli.d.ts.map +1 -0
  129. package/build/{cli.js → esm/cli.js} +29 -33
  130. package/build/esm/cli.js.map +1 -0
  131. package/build/esm/consts.d.ts +5 -0
  132. package/build/esm/consts.d.ts.map +1 -0
  133. package/build/esm/consts.js +6 -0
  134. package/build/esm/consts.js.map +1 -0
  135. package/build/esm/convert.d.ts +94 -0
  136. package/build/esm/convert.d.ts.map +1 -0
  137. package/build/{convert.js → esm/convert.js} +177 -191
  138. package/build/esm/convert.js.map +1 -0
  139. package/build/esm/index.d.ts +17 -0
  140. package/build/esm/index.d.ts.map +1 -0
  141. package/build/esm/index.js +12 -0
  142. package/build/esm/index.js.map +1 -0
  143. package/build/esm/index_safe.d.ts +11 -0
  144. package/build/esm/index_safe.d.ts.map +1 -0
  145. package/build/esm/index_safe.js +5 -0
  146. package/build/esm/index_safe.js.map +1 -0
  147. package/build/esm/lib/NVM3.d.ts +53 -0
  148. package/build/esm/lib/NVM3.d.ts.map +1 -0
  149. package/build/{lib → esm/lib}/NVM3.js +121 -125
  150. package/build/esm/lib/NVM3.js.map +1 -0
  151. package/build/esm/lib/NVM500.d.ts +46 -0
  152. package/build/esm/lib/NVM500.d.ts.map +1 -0
  153. package/build/{lib → esm/lib}/NVM500.js +104 -108
  154. package/build/esm/lib/NVM500.js.map +1 -0
  155. package/build/esm/lib/common/definitions.d.ts +138 -0
  156. package/build/esm/lib/common/definitions.d.ts.map +1 -0
  157. package/build/{lib → esm/lib}/common/definitions.js +2 -5
  158. package/build/esm/lib/common/definitions.js.map +1 -0
  159. package/build/esm/lib/common/routeCache.d.ts +19 -0
  160. package/build/esm/lib/common/routeCache.d.ts.map +1 -0
  161. package/build/esm/lib/common/routeCache.js +52 -0
  162. package/build/esm/lib/common/routeCache.js.map +1 -0
  163. package/build/esm/lib/common/sucUpdateEntry.d.ts +11 -0
  164. package/build/esm/lib/common/sucUpdateEntry.d.ts.map +1 -0
  165. package/build/esm/lib/common/sucUpdateEntry.js +32 -0
  166. package/build/esm/lib/common/sucUpdateEntry.js.map +1 -0
  167. package/build/esm/lib/common/utils.d.ts +9 -0
  168. package/build/esm/lib/common/utils.d.ts.map +1 -0
  169. package/build/{lib → esm/lib}/common/utils.js +13 -22
  170. package/build/esm/lib/common/utils.js.map +1 -0
  171. package/build/esm/lib/io/BufferedNVMReader.d.ts +21 -0
  172. package/build/esm/lib/io/BufferedNVMReader.d.ts.map +1 -0
  173. package/build/{lib → esm/lib}/io/BufferedNVMReader.js +3 -7
  174. package/build/esm/lib/io/BufferedNVMReader.js.map +1 -0
  175. package/build/esm/lib/io/NVMFileIO.d.ts +24 -0
  176. package/build/esm/lib/io/NVMFileIO.d.ts.map +1 -0
  177. package/build/{lib → esm/lib}/io/NVMFileIO.js +15 -22
  178. package/build/esm/lib/io/NVMFileIO.js.map +1 -0
  179. package/build/esm/lib/io/NVMMemoryIO.d.ts +20 -0
  180. package/build/esm/lib/io/NVMMemoryIO.d.ts.map +1 -0
  181. package/build/{lib → esm/lib}/io/NVMMemoryIO.js +6 -10
  182. package/build/esm/lib/io/NVMMemoryIO.js.map +1 -0
  183. package/build/esm/lib/nvm3/adapter.d.ts +33 -0
  184. package/build/esm/lib/nvm3/adapter.d.ts.map +1 -0
  185. package/build/{lib → esm/lib}/nvm3/adapter.js +121 -125
  186. package/build/esm/lib/nvm3/adapter.js.map +1 -0
  187. package/build/esm/lib/nvm3/consts.d.ts +50 -0
  188. package/build/esm/lib/nvm3/consts.d.ts.map +1 -0
  189. package/build/esm/lib/nvm3/consts.js +60 -0
  190. package/build/esm/lib/nvm3/consts.js.map +1 -0
  191. package/build/esm/lib/nvm3/files/ApplicationCCsFile.d.ts +25 -0
  192. package/build/esm/lib/nvm3/files/ApplicationCCsFile.d.ts.map +1 -0
  193. package/build/{lib → esm/lib}/nvm3/files/ApplicationCCsFile.js +14 -17
  194. package/build/esm/lib/nvm3/files/ApplicationCCsFile.js.map +1 -0
  195. package/build/esm/lib/nvm3/files/ApplicationDataFile.d.ts +12 -0
  196. package/build/esm/lib/nvm3/files/ApplicationDataFile.d.ts.map +1 -0
  197. package/build/{lib → esm/lib}/nvm3/files/ApplicationDataFile.js +8 -11
  198. package/build/esm/lib/nvm3/files/ApplicationDataFile.js.map +1 -0
  199. package/build/esm/lib/nvm3/files/ApplicationNameFile.d.ts +15 -0
  200. package/build/esm/lib/nvm3/files/ApplicationNameFile.d.ts.map +1 -0
  201. package/build/{lib → esm/lib}/nvm3/files/ApplicationNameFile.js +12 -15
  202. package/build/esm/lib/nvm3/files/ApplicationNameFile.js.map +1 -0
  203. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.d.ts +29 -0
  204. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.d.ts.map +1 -0
  205. package/build/{lib → esm/lib}/nvm3/files/ApplicationRFConfigFile.js +21 -27
  206. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.js.map +1 -0
  207. package/build/esm/lib/nvm3/files/ApplicationTypeFile.d.ts +27 -0
  208. package/build/esm/lib/nvm3/files/ApplicationTypeFile.d.ts.map +1 -0
  209. package/build/{lib → esm/lib}/nvm3/files/ApplicationTypeFile.js +10 -13
  210. package/build/esm/lib/nvm3/files/ApplicationTypeFile.js.map +1 -0
  211. package/build/esm/lib/nvm3/files/ControllerInfoFile.d.ts +46 -0
  212. package/build/esm/lib/nvm3/files/ControllerInfoFile.d.ts.map +1 -0
  213. package/build/{lib → esm/lib}/nvm3/files/ControllerInfoFile.js +17 -20
  214. package/build/esm/lib/nvm3/files/ControllerInfoFile.js.map +1 -0
  215. package/build/esm/lib/nvm3/files/NVMFile.d.ts +60 -0
  216. package/build/esm/lib/nvm3/files/NVMFile.d.ts.map +1 -0
  217. package/build/{lib → esm/lib}/nvm3/files/NVMFile.js +25 -35
  218. package/build/esm/lib/nvm3/files/NVMFile.js.map +1 -0
  219. package/build/esm/lib/nvm3/files/NodeInfoFiles.d.ts +64 -0
  220. package/build/esm/lib/nvm3/files/NodeInfoFiles.d.ts.map +1 -0
  221. package/build/{lib → esm/lib}/nvm3/files/NodeInfoFiles.js +59 -65
  222. package/build/esm/lib/nvm3/files/NodeInfoFiles.js.map +1 -0
  223. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts +56 -0
  224. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts.map +1 -0
  225. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.js +138 -0
  226. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.js.map +1 -0
  227. package/build/esm/lib/nvm3/files/RouteCacheFiles.d.ts +36 -0
  228. package/build/esm/lib/nvm3/files/RouteCacheFiles.d.ts.map +1 -0
  229. package/build/esm/lib/nvm3/files/RouteCacheFiles.js +115 -0
  230. package/build/esm/lib/nvm3/files/RouteCacheFiles.js.map +1 -0
  231. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.d.ts +33 -0
  232. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.d.ts.map +1 -0
  233. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.js +100 -0
  234. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.js.map +1 -0
  235. package/build/esm/lib/nvm3/files/VersionFiles.d.ts +33 -0
  236. package/build/esm/lib/nvm3/files/VersionFiles.d.ts.map +1 -0
  237. package/build/{lib → esm/lib}/nvm3/files/VersionFiles.js +20 -24
  238. package/build/esm/lib/nvm3/files/VersionFiles.js.map +1 -0
  239. package/build/esm/lib/nvm3/files/index.d.ts +14 -0
  240. package/build/esm/lib/nvm3/files/index.d.ts.map +1 -0
  241. package/build/esm/lib/nvm3/files/index.js +14 -0
  242. package/build/esm/lib/nvm3/files/index.js.map +1 -0
  243. package/build/esm/lib/nvm3/object.d.ts +29 -0
  244. package/build/esm/lib/nvm3/object.d.ts.map +1 -0
  245. package/build/esm/lib/nvm3/object.js +110 -0
  246. package/build/esm/lib/nvm3/object.js.map +1 -0
  247. package/build/esm/lib/nvm3/page.d.ts +21 -0
  248. package/build/esm/lib/nvm3/page.d.ts.map +1 -0
  249. package/build/esm/lib/nvm3/page.js +33 -0
  250. package/build/esm/lib/nvm3/page.js.map +1 -0
  251. package/build/esm/lib/nvm3/utils.d.ts +9 -0
  252. package/build/esm/lib/nvm3/utils.d.ts.map +1 -0
  253. package/build/{lib → esm/lib}/nvm3/utils.js +21 -29
  254. package/build/esm/lib/nvm3/utils.js.map +1 -0
  255. package/build/esm/lib/nvm500/EntryParsers.d.ts +27 -0
  256. package/build/esm/lib/nvm500/EntryParsers.d.ts.map +1 -0
  257. package/build/{lib → esm/lib}/nvm500/EntryParsers.js +18 -26
  258. package/build/esm/lib/nvm500/EntryParsers.js.map +1 -0
  259. package/build/esm/lib/nvm500/adapter.d.ts +22 -0
  260. package/build/esm/lib/nvm500/adapter.d.ts.map +1 -0
  261. package/build/{lib → esm/lib}/nvm500/adapter.js +18 -22
  262. package/build/esm/lib/nvm500/adapter.js.map +1 -0
  263. package/build/esm/lib/nvm500/impls/Bridge_6_6x.d.ts +3 -0
  264. package/build/esm/lib/nvm500/impls/Bridge_6_6x.d.ts.map +1 -0
  265. package/build/esm/lib/nvm500/impls/Bridge_6_6x.js +180 -0
  266. package/build/esm/lib/nvm500/impls/Bridge_6_6x.js.map +1 -0
  267. package/build/esm/lib/nvm500/impls/Bridge_6_7x.d.ts +3 -0
  268. package/build/esm/lib/nvm500/impls/Bridge_6_7x.d.ts.map +1 -0
  269. package/build/esm/lib/nvm500/impls/Bridge_6_7x.js +196 -0
  270. package/build/esm/lib/nvm500/impls/Bridge_6_7x.js.map +1 -0
  271. package/build/esm/lib/nvm500/impls/Bridge_6_8x.d.ts +3 -0
  272. package/build/esm/lib/nvm500/impls/Bridge_6_8x.d.ts.map +1 -0
  273. package/build/esm/lib/nvm500/impls/Bridge_6_8x.js +223 -0
  274. package/build/esm/lib/nvm500/impls/Bridge_6_8x.js.map +1 -0
  275. package/build/esm/lib/nvm500/impls/Static_6_6x.d.ts +3 -0
  276. package/build/esm/lib/nvm500/impls/Static_6_6x.d.ts.map +1 -0
  277. package/build/esm/lib/nvm500/impls/Static_6_6x.js +175 -0
  278. package/build/esm/lib/nvm500/impls/Static_6_6x.js.map +1 -0
  279. package/build/esm/lib/nvm500/impls/Static_6_7x.d.ts +3 -0
  280. package/build/esm/lib/nvm500/impls/Static_6_7x.d.ts.map +1 -0
  281. package/build/esm/lib/nvm500/impls/Static_6_7x.js +191 -0
  282. package/build/esm/lib/nvm500/impls/Static_6_7x.js.map +1 -0
  283. package/build/esm/lib/nvm500/impls/Static_6_8x.d.ts +3 -0
  284. package/build/esm/lib/nvm500/impls/Static_6_8x.d.ts.map +1 -0
  285. package/build/esm/lib/nvm500/impls/Static_6_8x.js +219 -0
  286. package/build/esm/lib/nvm500/impls/Static_6_8x.js.map +1 -0
  287. package/build/esm/lib/nvm500/impls/index.d.ts +2 -0
  288. package/build/esm/lib/nvm500/impls/index.d.ts.map +1 -0
  289. package/build/esm/lib/nvm500/impls/index.js +15 -0
  290. package/build/esm/lib/nvm500/impls/index.js.map +1 -0
  291. package/build/esm/lib/nvm500/shared.d.ts +69 -0
  292. package/build/esm/lib/nvm500/shared.d.ts.map +1 -0
  293. package/build/{lib → esm/lib}/nvm500/shared.js +22 -26
  294. package/build/esm/lib/nvm500/shared.js.map +1 -0
  295. package/build/esm/nvm500/NVMParser.d.ts +61 -0
  296. package/build/esm/nvm500/NVMParser.d.ts.map +1 -0
  297. package/build/esm/nvm500/NVMParser.js +2 -0
  298. package/build/{nvm500 → esm/nvm500}/NVMParser.js.map +1 -1
  299. package/build/esm/package.json +3 -0
  300. package/package.json +19 -17
  301. package/build/cli.d.ts +0 -3
  302. package/build/cli.d.ts.map +0 -1
  303. package/build/cli.js.map +0 -1
  304. package/build/consts.d.ts.map +0 -1
  305. package/build/consts.js +0 -9
  306. package/build/consts.js.map +0 -1
  307. package/build/convert.d.ts.map +0 -1
  308. package/build/convert.js.map +0 -1
  309. package/build/index.d.ts +0 -17
  310. package/build/index.d.ts.map +0 -1
  311. package/build/index.js +0 -36
  312. package/build/index.js.map +0 -1
  313. package/build/index_safe.d.ts.map +0 -1
  314. package/build/index_safe.js +0 -13
  315. package/build/index_safe.js.map +0 -1
  316. package/build/lib/NVM3.d.ts.map +0 -1
  317. package/build/lib/NVM3.js.map +0 -1
  318. package/build/lib/NVM500.d.ts.map +0 -1
  319. package/build/lib/NVM500.js.map +0 -1
  320. package/build/lib/common/definitions.d.ts.map +0 -1
  321. package/build/lib/common/definitions.js.map +0 -1
  322. package/build/lib/common/routeCache.d.ts.map +0 -1
  323. package/build/lib/common/routeCache.js +0 -58
  324. package/build/lib/common/routeCache.js.map +0 -1
  325. package/build/lib/common/sucUpdateEntry.d.ts.map +0 -1
  326. package/build/lib/common/sucUpdateEntry.js +0 -36
  327. package/build/lib/common/sucUpdateEntry.js.map +0 -1
  328. package/build/lib/common/utils.d.ts.map +0 -1
  329. package/build/lib/common/utils.js.map +0 -1
  330. package/build/lib/io/BufferedNVMReader.d.ts.map +0 -1
  331. package/build/lib/io/BufferedNVMReader.js.map +0 -1
  332. package/build/lib/io/NVMFileIO.d.ts.map +0 -1
  333. package/build/lib/io/NVMFileIO.js.map +0 -1
  334. package/build/lib/io/NVMMemoryIO.d.ts.map +0 -1
  335. package/build/lib/io/NVMMemoryIO.js.map +0 -1
  336. package/build/lib/nvm3/adapter.d.ts.map +0 -1
  337. package/build/lib/nvm3/adapter.js.map +0 -1
  338. package/build/lib/nvm3/consts.d.ts.map +0 -1
  339. package/build/lib/nvm3/consts.js +0 -63
  340. package/build/lib/nvm3/consts.js.map +0 -1
  341. package/build/lib/nvm3/files/ApplicationCCsFile.d.ts.map +0 -1
  342. package/build/lib/nvm3/files/ApplicationCCsFile.js.map +0 -1
  343. package/build/lib/nvm3/files/ApplicationDataFile.d.ts.map +0 -1
  344. package/build/lib/nvm3/files/ApplicationDataFile.js.map +0 -1
  345. package/build/lib/nvm3/files/ApplicationNameFile.d.ts.map +0 -1
  346. package/build/lib/nvm3/files/ApplicationNameFile.js.map +0 -1
  347. package/build/lib/nvm3/files/ApplicationRFConfigFile.d.ts.map +0 -1
  348. package/build/lib/nvm3/files/ApplicationRFConfigFile.js.map +0 -1
  349. package/build/lib/nvm3/files/ApplicationTypeFile.d.ts.map +0 -1
  350. package/build/lib/nvm3/files/ApplicationTypeFile.js.map +0 -1
  351. package/build/lib/nvm3/files/ControllerInfoFile.d.ts.map +0 -1
  352. package/build/lib/nvm3/files/ControllerInfoFile.js.map +0 -1
  353. package/build/lib/nvm3/files/NVMFile.d.ts.map +0 -1
  354. package/build/lib/nvm3/files/NVMFile.js.map +0 -1
  355. package/build/lib/nvm3/files/NodeInfoFiles.d.ts.map +0 -1
  356. package/build/lib/nvm3/files/NodeInfoFiles.js.map +0 -1
  357. package/build/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts.map +0 -1
  358. package/build/lib/nvm3/files/ProtocolNodeMaskFiles.js +0 -142
  359. package/build/lib/nvm3/files/ProtocolNodeMaskFiles.js.map +0 -1
  360. package/build/lib/nvm3/files/RouteCacheFiles.d.ts.map +0 -1
  361. package/build/lib/nvm3/files/RouteCacheFiles.js +0 -120
  362. package/build/lib/nvm3/files/RouteCacheFiles.js.map +0 -1
  363. package/build/lib/nvm3/files/SUCUpdateEntriesFile.d.ts.map +0 -1
  364. package/build/lib/nvm3/files/SUCUpdateEntriesFile.js +0 -104
  365. package/build/lib/nvm3/files/SUCUpdateEntriesFile.js.map +0 -1
  366. package/build/lib/nvm3/files/VersionFiles.d.ts.map +0 -1
  367. package/build/lib/nvm3/files/VersionFiles.js.map +0 -1
  368. package/build/lib/nvm3/files/index.d.ts +0 -14
  369. package/build/lib/nvm3/files/index.d.ts.map +0 -1
  370. package/build/lib/nvm3/files/index.js +0 -30
  371. package/build/lib/nvm3/files/index.js.map +0 -1
  372. package/build/lib/nvm3/object.d.ts.map +0 -1
  373. package/build/lib/nvm3/object.js +0 -119
  374. package/build/lib/nvm3/object.js.map +0 -1
  375. package/build/lib/nvm3/page.d.ts.map +0 -1
  376. package/build/lib/nvm3/page.js +0 -38
  377. package/build/lib/nvm3/page.js.map +0 -1
  378. package/build/lib/nvm3/utils.d.ts.map +0 -1
  379. package/build/lib/nvm3/utils.js.map +0 -1
  380. package/build/lib/nvm500/EntryParsers.d.ts.map +0 -1
  381. package/build/lib/nvm500/EntryParsers.js.map +0 -1
  382. package/build/lib/nvm500/adapter.d.ts.map +0 -1
  383. package/build/lib/nvm500/adapter.js.map +0 -1
  384. package/build/lib/nvm500/impls/Bridge_6_6x.d.ts +0 -3
  385. package/build/lib/nvm500/impls/Bridge_6_6x.d.ts.map +0 -1
  386. package/build/lib/nvm500/impls/Bridge_6_6x.js +0 -183
  387. package/build/lib/nvm500/impls/Bridge_6_6x.js.map +0 -1
  388. package/build/lib/nvm500/impls/Bridge_6_7x.d.ts +0 -3
  389. package/build/lib/nvm500/impls/Bridge_6_7x.d.ts.map +0 -1
  390. package/build/lib/nvm500/impls/Bridge_6_7x.js +0 -199
  391. package/build/lib/nvm500/impls/Bridge_6_7x.js.map +0 -1
  392. package/build/lib/nvm500/impls/Bridge_6_8x.d.ts +0 -3
  393. package/build/lib/nvm500/impls/Bridge_6_8x.d.ts.map +0 -1
  394. package/build/lib/nvm500/impls/Bridge_6_8x.js +0 -226
  395. package/build/lib/nvm500/impls/Bridge_6_8x.js.map +0 -1
  396. package/build/lib/nvm500/impls/Static_6_6x.d.ts +0 -3
  397. package/build/lib/nvm500/impls/Static_6_6x.d.ts.map +0 -1
  398. package/build/lib/nvm500/impls/Static_6_6x.js +0 -178
  399. package/build/lib/nvm500/impls/Static_6_6x.js.map +0 -1
  400. package/build/lib/nvm500/impls/Static_6_7x.d.ts +0 -3
  401. package/build/lib/nvm500/impls/Static_6_7x.d.ts.map +0 -1
  402. package/build/lib/nvm500/impls/Static_6_7x.js +0 -194
  403. package/build/lib/nvm500/impls/Static_6_7x.js.map +0 -1
  404. package/build/lib/nvm500/impls/Static_6_8x.d.ts +0 -3
  405. package/build/lib/nvm500/impls/Static_6_8x.d.ts.map +0 -1
  406. package/build/lib/nvm500/impls/Static_6_8x.js +0 -222
  407. package/build/lib/nvm500/impls/Static_6_8x.js.map +0 -1
  408. package/build/lib/nvm500/impls/index.d.ts +0 -2
  409. package/build/lib/nvm500/impls/index.d.ts.map +0 -1
  410. package/build/lib/nvm500/impls/index.js +0 -18
  411. package/build/lib/nvm500/impls/index.js.map +0 -1
  412. package/build/lib/nvm500/shared.d.ts.map +0 -1
  413. package/build/lib/nvm500/shared.js.map +0 -1
  414. package/build/nvm500/NVMParser.d.ts.map +0 -1
  415. package/build/nvm500/NVMParser.js +0 -3
  416. /package/build/{consts.d.ts → cjs/consts.d.ts} +0 -0
  417. /package/build/{lib → cjs/lib}/common/routeCache.d.ts +0 -0
  418. /package/build/{lib → cjs/lib}/common/sucUpdateEntry.d.ts +0 -0
  419. /package/build/{lib → cjs/lib}/nvm3/consts.d.ts +0 -0
@@ -0,0 +1,1306 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var convert_exports = {};
30
+ __export(convert_exports, {
31
+ json500To700: () => json500To700,
32
+ json700To500: () => json700To500,
33
+ jsonToNVM: () => jsonToNVM,
34
+ jsonToNVM500: () => jsonToNVM500,
35
+ migrateNVM: () => migrateNVM,
36
+ nodeHasInfo: () => nodeHasInfo,
37
+ nvm500ToJSON: () => nvm500ToJSON,
38
+ nvmObjectsToJSON: () => nvmObjectsToJSON,
39
+ nvmToJSON: () => nvmToJSON
40
+ });
41
+ module.exports = __toCommonJS(convert_exports);
42
+ var import_safe = require("@zwave-js/core/safe");
43
+ var import_safe2 = require("@zwave-js/shared/safe");
44
+ var import_typeguards = require("alcalzone-shared/typeguards/index.js");
45
+ var import_semver = __toESM(require("semver"), 1);
46
+ var import_consts = require("./consts.js");
47
+ var import_NVM3 = require("./lib/NVM3.js");
48
+ var import_NVM500 = require("./lib/NVM500.js");
49
+ var import_routeCache = require("./lib/common/routeCache.js");
50
+ var import_NVMMemoryIO = require("./lib/io/NVMMemoryIO.js");
51
+ var import_adapter = require("./lib/nvm3/adapter.js");
52
+ var import_consts2 = require("./lib/nvm3/consts.js");
53
+ var import_ApplicationNameFile = require("./lib/nvm3/files/ApplicationNameFile.js");
54
+ var import_files = require("./lib/nvm3/files/index.js");
55
+ var import_utils = require("./lib/nvm3/utils.js");
56
+ var import_adapter2 = require("./lib/nvm500/adapter.js");
57
+ var import_impls = require("./lib/nvm500/impls/index.js");
58
+ var import_shared = require("./lib/nvm500/shared.js");
59
+ function nodeHasInfo(node) {
60
+ return !node.isVirtual || Object.keys(node).length > 1;
61
+ }
62
+ function createEmptyPhysicalNode() {
63
+ return {
64
+ isVirtual: false,
65
+ isListening: false,
66
+ isFrequentListening: false,
67
+ isRouting: false,
68
+ supportedDataRates: [],
69
+ protocolVersion: 0,
70
+ optionalFunctionality: false,
71
+ nodeType: import_safe.NodeType["End Node"],
72
+ supportsSecurity: false,
73
+ supportsBeaming: false,
74
+ genericDeviceClass: 0,
75
+ specificDeviceClass: null,
76
+ neighbors: [],
77
+ sucUpdateIndex: 0,
78
+ appRouteLock: false,
79
+ routeSlaveSUC: false,
80
+ sucPendingUpdate: false,
81
+ pendingDiscovery: false,
82
+ lwr: null,
83
+ nlwr: null
84
+ };
85
+ }
86
+ function createEmptyLRNode() {
87
+ return {
88
+ isListening: false,
89
+ isFrequentListening: false,
90
+ isRouting: false,
91
+ supportedDataRates: [],
92
+ protocolVersion: 3,
93
+ optionalFunctionality: false,
94
+ nodeType: import_safe.NodeType["End Node"],
95
+ supportsSecurity: true,
96
+ supportsBeaming: false,
97
+ genericDeviceClass: 0,
98
+ specificDeviceClass: null
99
+ };
100
+ }
101
+ function nvmObjectsToJSON(objects) {
102
+ const nodes = /* @__PURE__ */ new Map();
103
+ const getNode = (id) => {
104
+ if (!nodes.has(id))
105
+ nodes.set(id, createEmptyPhysicalNode());
106
+ return nodes.get(id);
107
+ };
108
+ const lrNodes = /* @__PURE__ */ new Map();
109
+ const getLRNode = (id) => {
110
+ if (!lrNodes.has(id))
111
+ lrNodes.set(id, createEmptyLRNode());
112
+ return lrNodes.get(id);
113
+ };
114
+ const getObject = (id) => {
115
+ if (typeof id === "number") {
116
+ return objects.get(id);
117
+ } else {
118
+ for (const [key, obj] of objects) {
119
+ if (id(key))
120
+ return obj;
121
+ }
122
+ }
123
+ };
124
+ const getObjectOrThrow = (id) => {
125
+ const ret2 = getObject(id);
126
+ if (ret2)
127
+ return ret2;
128
+ throw new import_safe.ZWaveError(`Object${typeof id === "number" ? ` ${(0, import_safe2.num2hex)(id)} (${id})` : ""} not found!`, import_safe.ZWaveErrorCodes.NVM_ObjectNotFound);
129
+ };
130
+ const getFileOrThrow = (id, fileVersion) => {
131
+ const obj = getObjectOrThrow(id);
132
+ return import_files.NVMFile.from(obj.key, obj.data, fileVersion);
133
+ };
134
+ const getFile = (id, fileVersion) => {
135
+ const obj = getObject(id);
136
+ if (!obj || !obj.data)
137
+ return void 0;
138
+ return import_files.NVMFile.from(obj.key, obj.data, fileVersion);
139
+ };
140
+ const protocolVersionFile = getFileOrThrow(import_files.ProtocolVersionFileID, "7.0.0");
141
+ const protocolFileFormat = protocolVersionFile.format;
142
+ const protocolVersion = `${protocolVersionFile.major}.${protocolVersionFile.minor}.${protocolVersionFile.patch}`;
143
+ if (protocolFileFormat > import_consts.MAX_PROTOCOL_FILE_FORMAT) {
144
+ throw new import_safe.ZWaveError(`Unsupported protocol file format: ${protocolFileFormat}`, import_safe.ZWaveErrorCodes.NVM_NotSupported, { protocolFileFormat });
145
+ }
146
+ const nodeIds = getFileOrThrow(import_files.ProtocolNodeListFileID, protocolVersion).nodeIds;
147
+ const appRouteLock = new Set(getFileOrThrow(import_files.ProtocolAppRouteLockNodeMaskFileID, protocolVersion).nodeIds);
148
+ const routeSlaveSUC = new Set(getFileOrThrow(import_files.ProtocolRouteSlaveSUCNodeMaskFileID, protocolVersion).nodeIds);
149
+ const sucPendingUpdate = new Set(getFileOrThrow(import_files.ProtocolSUCPendingUpdateNodeMaskFileID, protocolVersion).nodeIds);
150
+ const isVirtual = new Set(getFileOrThrow(import_files.ProtocolVirtualNodeMaskFileID, protocolVersion).nodeIds);
151
+ const pendingDiscovery = new Set(getFileOrThrow(import_files.ProtocolPendingDiscoveryNodeMaskFileID, protocolVersion).nodeIds);
152
+ const routeCacheExists = new Set(getFileOrThrow(import_files.ProtocolRouteCacheExistsNodeMaskFileID, protocolVersion).nodeIds);
153
+ for (const id of nodeIds) {
154
+ const node = getNode(id);
155
+ const rememberOnlyVirtual = () => {
156
+ nodes.set(id, {
157
+ isVirtual: true
158
+ });
159
+ };
160
+ let nodeInfo;
161
+ try {
162
+ if (protocolFileFormat === 0) {
163
+ const fileId = (0, import_files.nodeIdToNodeInfoFileIDV0)(id);
164
+ const file = getFileOrThrow(fileId, protocolVersion);
165
+ nodeInfo = file.nodeInfo;
166
+ } else {
167
+ const fileId = (0, import_files.nodeIdToNodeInfoFileIDV1)(id);
168
+ const file = getFileOrThrow(fileId, protocolVersion);
169
+ nodeInfo = file.nodeInfos.find((i) => i.nodeId === id);
170
+ }
171
+ } catch (e) {
172
+ if (e.message.includes("Object not found")) {
173
+ rememberOnlyVirtual();
174
+ continue;
175
+ }
176
+ throw e;
177
+ }
178
+ Object.assign(node, nodeInfo);
179
+ node.isVirtual = isVirtual.has(id);
180
+ node.appRouteLock = appRouteLock.has(id);
181
+ node.routeSlaveSUC = routeSlaveSUC.has(id);
182
+ node.sucPendingUpdate = sucPendingUpdate.has(id);
183
+ node.pendingDiscovery = pendingDiscovery.has(id);
184
+ if (routeCacheExists.has(id)) {
185
+ let routeCache;
186
+ if (protocolFileFormat === 0) {
187
+ const fileId = (0, import_files.nodeIdToRouteCacheFileIDV0)(id);
188
+ const file = getFile(fileId, protocolVersion);
189
+ routeCache = file?.routeCache;
190
+ } else {
191
+ const fileId = (0, import_files.nodeIdToRouteCacheFileIDV1)(id);
192
+ const file = getFile(fileId, protocolVersion);
193
+ routeCache = file?.routeCaches.find((i) => i.nodeId === id);
194
+ }
195
+ if (routeCache) {
196
+ node.lwr = routeCache.lwr;
197
+ node.nlwr = routeCache.nlwr;
198
+ }
199
+ }
200
+ delete node.nodeId;
201
+ }
202
+ const lrNodeIds = getFile(import_files.ProtocolLRNodeListFileID, protocolVersion)?.nodeIds;
203
+ if (lrNodeIds) {
204
+ for (const id of lrNodeIds) {
205
+ const node = getLRNode(id);
206
+ const fileId = (0, import_files.nodeIdToLRNodeInfoFileIDV5)(id);
207
+ const file = getFileOrThrow(fileId, protocolVersion);
208
+ const { nodeId, ...nodeInfo } = file.nodeInfos.find((i) => i.nodeId === id);
209
+ Object.assign(node, nodeInfo);
210
+ }
211
+ }
212
+ const controllerInfoFile = getFileOrThrow(import_files.ControllerInfoFileID, protocolVersion);
213
+ let sucUpdateEntries;
214
+ if (protocolFileFormat < 5) {
215
+ sucUpdateEntries = getFileOrThrow(import_files.SUCUpdateEntriesFileIDV0, protocolVersion).updateEntries;
216
+ } else {
217
+ sucUpdateEntries = [];
218
+ for (let index = 0; index < import_consts.SUC_MAX_UPDATES; index += import_files.SUC_UPDATES_PER_FILE_V5) {
219
+ const file = getFile((0, import_files.sucUpdateIndexToSUCUpdateEntriesFileIDV5)(index), protocolVersion);
220
+ if (!file)
221
+ break;
222
+ sucUpdateEntries.push(...file.updateEntries);
223
+ }
224
+ }
225
+ const applicationVersionFile700 = getFile(import_files.ApplicationVersionFileID, "7.0.0");
226
+ const applicationVersionFile800 = getFile(import_files.ApplicationVersionFile800ID, "7.0.0");
227
+ const applicationVersionFile = applicationVersionFile700 ?? applicationVersionFile800;
228
+ if (!applicationVersionFile) {
229
+ throw new import_safe.ZWaveError("ApplicationVersionFile not found!", import_safe.ZWaveErrorCodes.NVM_ObjectNotFound);
230
+ }
231
+ const applicationVersion = `${applicationVersionFile.major}.${applicationVersionFile.minor}.${applicationVersionFile.patch}`;
232
+ const rfConfigFile = getFile(import_files.ApplicationRFConfigFileID, applicationVersion);
233
+ const applicationCCsFile = getFileOrThrow(import_files.ApplicationCCsFileID, applicationVersion);
234
+ const applicationDataFile = getFile(import_files.ApplicationDataFileID, applicationVersion);
235
+ const applicationTypeFile = getFileOrThrow(import_files.ApplicationTypeFileID, applicationVersion);
236
+ const applicationNameFile = getFile(import_ApplicationNameFile.ApplicationNameFileID, applicationVersion);
237
+ const preferredRepeaters = getFile(import_files.ProtocolPreferredRepeatersFileID, applicationVersion)?.nodeIds;
238
+ const controllerProps = [
239
+ "nodeId",
240
+ "lastNodeId",
241
+ "staticControllerNodeId",
242
+ "sucLastIndex",
243
+ "controllerConfiguration",
244
+ "sucAwarenessPushNeeded",
245
+ "maxNodeId",
246
+ "reservedId",
247
+ "systemState",
248
+ "lastNodeIdLR",
249
+ "maxNodeIdLR",
250
+ "reservedIdLR",
251
+ "primaryLongRangeChannelId",
252
+ "dcdcConfig"
253
+ ];
254
+ const controller = {
255
+ protocolVersion,
256
+ applicationVersion,
257
+ homeId: (0, import_safe2.buffer2hex)(controllerInfoFile.homeId),
258
+ ...(0, import_safe2.pick)(controllerInfoFile, controllerProps),
259
+ ...(0, import_safe2.pick)(applicationTypeFile, [
260
+ "isListening",
261
+ "optionalFunctionality",
262
+ "genericDeviceClass",
263
+ "specificDeviceClass"
264
+ ]),
265
+ commandClasses: (0, import_safe2.pick)(applicationCCsFile, [
266
+ "includedInsecurely",
267
+ "includedSecurelyInsecureCCs",
268
+ "includedSecurelySecureCCs"
269
+ ]),
270
+ preferredRepeaters,
271
+ ...rfConfigFile ? {
272
+ rfConfig: {
273
+ rfRegion: rfConfigFile.rfRegion,
274
+ txPower: rfConfigFile.txPower,
275
+ measured0dBm: rfConfigFile.measured0dBm,
276
+ enablePTI: rfConfigFile.enablePTI ?? null,
277
+ maxTXPower: rfConfigFile.maxTXPower ?? null,
278
+ nodeIdType: rfConfigFile.nodeIdType ?? null
279
+ }
280
+ } : {},
281
+ sucUpdateEntries,
282
+ applicationData: applicationDataFile?.applicationData.toString("hex") ?? null,
283
+ applicationName: applicationNameFile?.name ?? null
284
+ };
285
+ const optionalControllerProps = [
286
+ "sucAwarenessPushNeeded",
287
+ "lastNodeIdLR",
288
+ "maxNodeIdLR",
289
+ "reservedIdLR",
290
+ "primaryLongRangeChannelId",
291
+ "dcdcConfig",
292
+ "rfConfig",
293
+ "preferredRepeaters",
294
+ "applicationData"
295
+ ];
296
+ for (const prop of optionalControllerProps) {
297
+ if (controller[prop] === void 0)
298
+ controller[prop] = null;
299
+ }
300
+ const ret = {
301
+ format: protocolFileFormat,
302
+ controller,
303
+ nodes: (0, import_utils.mapToObject)(nodes)
304
+ };
305
+ if (lrNodes.size > 0) {
306
+ ret.lrNodes = (0, import_utils.mapToObject)(lrNodes);
307
+ }
308
+ return ret;
309
+ }
310
+ function nvmJSONNodeToNodeInfo(nodeId, node) {
311
+ return {
312
+ nodeId,
313
+ ...(0, import_safe2.pick)(node, [
314
+ "isListening",
315
+ "isFrequentListening",
316
+ "isRouting",
317
+ "supportedDataRates",
318
+ "protocolVersion",
319
+ "optionalFunctionality",
320
+ "nodeType",
321
+ "supportsSecurity",
322
+ "supportsBeaming",
323
+ "genericDeviceClass",
324
+ "specificDeviceClass",
325
+ "neighbors",
326
+ "sucUpdateIndex"
327
+ ])
328
+ };
329
+ }
330
+ function nvmJSONLRNodeToLRNodeInfo(nodeId, node) {
331
+ return {
332
+ nodeId,
333
+ ...(0, import_safe2.pick)(node, [
334
+ "isListening",
335
+ "isFrequentListening",
336
+ "isRouting",
337
+ "supportedDataRates",
338
+ "protocolVersion",
339
+ "optionalFunctionality",
340
+ "nodeType",
341
+ "supportsSecurity",
342
+ "supportsBeaming",
343
+ "genericDeviceClass",
344
+ "specificDeviceClass"
345
+ ])
346
+ };
347
+ }
348
+ function nvmJSONControllerToFileOptions(ctrlr) {
349
+ const ret = {
350
+ homeId: import_safe2.Bytes.from(ctrlr.homeId.replace(/^0x/, ""), "hex"),
351
+ nodeId: ctrlr.nodeId,
352
+ lastNodeId: ctrlr.lastNodeId,
353
+ staticControllerNodeId: ctrlr.staticControllerNodeId,
354
+ sucLastIndex: ctrlr.sucLastIndex,
355
+ controllerConfiguration: ctrlr.controllerConfiguration,
356
+ maxNodeId: ctrlr.maxNodeId,
357
+ reservedId: ctrlr.reservedId,
358
+ systemState: ctrlr.systemState
359
+ };
360
+ if (ctrlr.sucAwarenessPushNeeded != void 0) {
361
+ ret.sucAwarenessPushNeeded = ctrlr.sucAwarenessPushNeeded;
362
+ } else {
363
+ Object.assign(ret, (0, import_safe.stripUndefined)((0, import_safe2.pick)(ctrlr, [
364
+ "sucAwarenessPushNeeded",
365
+ "lastNodeIdLR",
366
+ "maxNodeIdLR",
367
+ "reservedIdLR",
368
+ "primaryLongRangeChannelId",
369
+ "dcdcConfig"
370
+ ])));
371
+ }
372
+ return ret;
373
+ }
374
+ async function nvmToJSON(buffer, debugLogs = false) {
375
+ const io = new import_NVMMemoryIO.NVMMemoryIO(buffer);
376
+ const nvm3 = new import_NVM3.NVM3(io);
377
+ const info = await nvm3.init();
378
+ const adapter = new import_adapter.NVM3Adapter(nvm3);
379
+ if (debugLogs) {
380
+ await (0, import_utils.dumpNVM)(nvm3);
381
+ }
382
+ const firstPageHeader = info.isSharedFileSystem ? info.sections.all.pages[0] : info.sections.protocol.pages[0];
383
+ const meta = {
384
+ sharedFileSystem: info.isSharedFileSystem,
385
+ ...(0, import_safe2.pick)(firstPageHeader, [
386
+ "pageSize",
387
+ "writeSize",
388
+ "memoryMapped",
389
+ "deviceFamily"
390
+ ])
391
+ };
392
+ const nodes = /* @__PURE__ */ new Map();
393
+ const getNode = (id) => {
394
+ if (!nodes.has(id))
395
+ nodes.set(id, createEmptyPhysicalNode());
396
+ return nodes.get(id);
397
+ };
398
+ const lrNodes = /* @__PURE__ */ new Map();
399
+ const getLRNode = (id) => {
400
+ if (!lrNodes.has(id))
401
+ lrNodes.set(id, createEmptyLRNode());
402
+ return lrNodes.get(id);
403
+ };
404
+ const protocolFileFormat = await adapter.get({
405
+ domain: "controller",
406
+ type: "protocolFileFormat"
407
+ }, true);
408
+ if (protocolFileFormat > import_consts.MAX_PROTOCOL_FILE_FORMAT) {
409
+ throw new import_safe.ZWaveError(`Unsupported protocol file format: ${protocolFileFormat}`, import_safe.ZWaveErrorCodes.NVM_NotSupported, { protocolFileFormat });
410
+ }
411
+ const protocolVersion = await adapter.get({
412
+ domain: "controller",
413
+ type: "protocolVersion"
414
+ }, true);
415
+ const appRouteLock = new Set(await adapter.get({
416
+ domain: "controller",
417
+ type: "appRouteLock"
418
+ }, true));
419
+ const routeSlaveSUC = new Set(await adapter.get({
420
+ domain: "controller",
421
+ type: "routeSlaveSUC"
422
+ }, true));
423
+ const sucPendingUpdate = new Set(await adapter.get({
424
+ domain: "controller",
425
+ type: "sucPendingUpdate"
426
+ }, true));
427
+ const virtualNodeIds = new Set(await adapter.get({
428
+ domain: "controller",
429
+ type: "virtualNodeIds"
430
+ }, true));
431
+ const pendingDiscovery = new Set(await adapter.get({
432
+ domain: "controller",
433
+ type: "pendingDiscovery"
434
+ }, true));
435
+ const nodeIds = await adapter.get({
436
+ domain: "controller",
437
+ type: "nodeIds"
438
+ }, true);
439
+ for (const id of nodeIds) {
440
+ const node = getNode(id);
441
+ const nodeInfo = await adapter.get({
442
+ domain: "node",
443
+ nodeId: id,
444
+ type: "info"
445
+ }, true);
446
+ Object.assign(node, nodeInfo);
447
+ node.isVirtual = virtualNodeIds.has(id);
448
+ node.appRouteLock = appRouteLock.has(id);
449
+ node.routeSlaveSUC = routeSlaveSUC.has(id);
450
+ node.sucPendingUpdate = sucPendingUpdate.has(id);
451
+ node.pendingDiscovery = pendingDiscovery.has(id);
452
+ const routes = await adapter.get({
453
+ domain: "node",
454
+ nodeId: id,
455
+ type: "routes"
456
+ });
457
+ if (routes) {
458
+ node.lwr = routes.lwr;
459
+ node.nlwr = routes.nlwr;
460
+ }
461
+ delete node.nodeId;
462
+ }
463
+ const lrNodeIds = await adapter.get({
464
+ domain: "controller",
465
+ type: "lrNodeIds"
466
+ });
467
+ if (lrNodeIds) {
468
+ for (const id of lrNodeIds) {
469
+ const node = getLRNode(id);
470
+ const nodeInfo = await adapter.get({
471
+ domain: "lrnode",
472
+ nodeId: id,
473
+ type: "info"
474
+ }, true);
475
+ Object.assign(node, nodeInfo);
476
+ }
477
+ }
478
+ const sucUpdateEntries = await adapter.get({
479
+ domain: "controller",
480
+ type: "sucUpdateEntries"
481
+ }, true);
482
+ const applicationVersion = await adapter.get({
483
+ domain: "controller",
484
+ type: "applicationVersion"
485
+ }, true);
486
+ const applicationFileFormat = await adapter.get({
487
+ domain: "controller",
488
+ type: "applicationFileFormat"
489
+ }, true);
490
+ const applicationData = await adapter.get({
491
+ domain: "controller",
492
+ type: "applicationData"
493
+ });
494
+ const applicationName = await adapter.get({
495
+ domain: "controller",
496
+ type: "applicationName"
497
+ });
498
+ const preferredRepeaters = await adapter.get({
499
+ domain: "controller",
500
+ type: "preferredRepeaters"
501
+ });
502
+ const controllerInfoFile = await adapter.getFile(import_files.ControllerInfoFileID, true);
503
+ const rfConfigFile = await adapter.getFile(import_files.ApplicationRFConfigFileID);
504
+ const applicationCCsFile = await adapter.getFile(import_files.ApplicationCCsFileID, true);
505
+ const applicationTypeFile = await adapter.getFile(import_files.ApplicationTypeFileID, true);
506
+ const controller = {
507
+ protocolVersion,
508
+ applicationVersion,
509
+ homeId: (0, import_safe2.buffer2hex)(controllerInfoFile.homeId),
510
+ ...(0, import_safe2.pick)(controllerInfoFile, [
511
+ "nodeId",
512
+ "lastNodeId",
513
+ "staticControllerNodeId",
514
+ "sucLastIndex",
515
+ "controllerConfiguration",
516
+ "sucAwarenessPushNeeded",
517
+ "maxNodeId",
518
+ "reservedId",
519
+ "systemState",
520
+ "lastNodeIdLR",
521
+ "maxNodeIdLR",
522
+ "reservedIdLR",
523
+ "primaryLongRangeChannelId",
524
+ "dcdcConfig"
525
+ ]),
526
+ ...(0, import_safe2.pick)(applicationTypeFile, [
527
+ "isListening",
528
+ "optionalFunctionality",
529
+ "genericDeviceClass",
530
+ "specificDeviceClass"
531
+ ]),
532
+ commandClasses: (0, import_safe2.pick)(applicationCCsFile, [
533
+ "includedInsecurely",
534
+ "includedSecurelyInsecureCCs",
535
+ "includedSecurelySecureCCs"
536
+ ]),
537
+ preferredRepeaters,
538
+ ...rfConfigFile ? {
539
+ rfConfig: {
540
+ rfRegion: rfConfigFile.rfRegion,
541
+ txPower: rfConfigFile.txPower,
542
+ measured0dBm: rfConfigFile.measured0dBm,
543
+ enablePTI: rfConfigFile.enablePTI ?? null,
544
+ maxTXPower: rfConfigFile.maxTXPower ?? null,
545
+ nodeIdType: rfConfigFile.nodeIdType ?? null
546
+ }
547
+ } : {},
548
+ sucUpdateEntries,
549
+ applicationData: (applicationData && import_safe2.Bytes.view(applicationData).toString("hex")) ?? null,
550
+ applicationName: applicationName ?? null
551
+ };
552
+ const optionalControllerProps = [
553
+ "sucAwarenessPushNeeded",
554
+ "lastNodeIdLR",
555
+ "maxNodeIdLR",
556
+ "reservedIdLR",
557
+ "primaryLongRangeChannelId",
558
+ "dcdcConfig",
559
+ "rfConfig",
560
+ "preferredRepeaters",
561
+ "applicationData"
562
+ ];
563
+ for (const prop of optionalControllerProps) {
564
+ if (controller[prop] === void 0)
565
+ controller[prop] = null;
566
+ }
567
+ const ret = {
568
+ format: protocolFileFormat,
569
+ controller,
570
+ nodes: (0, import_utils.mapToObject)(nodes),
571
+ meta
572
+ };
573
+ if (applicationFileFormat !== 0) {
574
+ ret.applicationFileFormat = applicationFileFormat;
575
+ }
576
+ if (lrNodes.size > 0) {
577
+ ret.lrNodes = (0, import_utils.mapToObject)(lrNodes);
578
+ }
579
+ return ret;
580
+ }
581
+ async function nvm500ToJSON(buffer) {
582
+ const io = new import_NVMMemoryIO.NVMMemoryIO(buffer);
583
+ const nvm = new import_NVM500.NVM500(io);
584
+ const info = await nvm.init();
585
+ const meta = {
586
+ library: info.library,
587
+ ...(0, import_safe2.pick)(info.nvmDescriptor, [
588
+ "manufacturerID",
589
+ "firmwareID",
590
+ "productType",
591
+ "productID"
592
+ ])
593
+ };
594
+ const adapter = new import_adapter2.NVM500Adapter(nvm);
595
+ const appRouteLock = new Set(await adapter.get({
596
+ domain: "controller",
597
+ type: "appRouteLock"
598
+ }, true));
599
+ const routeSlaveSUC = new Set(await adapter.get({
600
+ domain: "controller",
601
+ type: "routeSlaveSUC"
602
+ }, true));
603
+ const sucPendingUpdate = new Set(await adapter.get({
604
+ domain: "controller",
605
+ type: "sucPendingUpdate"
606
+ }, true));
607
+ const virtualNodeIds = new Set(await adapter.get({
608
+ domain: "controller",
609
+ type: "virtualNodeIds"
610
+ }) ?? []);
611
+ const pendingDiscovery = new Set(await adapter.get({
612
+ domain: "controller",
613
+ type: "pendingDiscovery"
614
+ }, true));
615
+ const nodes = {};
616
+ for (let nodeId = 1; nodeId <= import_safe.MAX_NODES; nodeId++) {
617
+ const nodeInfo = await adapter.get({
618
+ domain: "node",
619
+ nodeId,
620
+ type: "info"
621
+ });
622
+ const isVirtual = virtualNodeIds.has(nodeId);
623
+ if (!nodeInfo) {
624
+ if (isVirtual) {
625
+ nodes[nodeId] = { isVirtual: true };
626
+ }
627
+ continue;
628
+ }
629
+ const routes = await adapter.get({
630
+ domain: "node",
631
+ nodeId,
632
+ type: "routes"
633
+ });
634
+ delete nodeInfo.nodeId;
635
+ nodes[nodeId] = {
636
+ ...nodeInfo,
637
+ specificDeviceClass: nodeInfo.specificDeviceClass ?? null,
638
+ isVirtual,
639
+ appRouteLock: appRouteLock.has(nodeId),
640
+ routeSlaveSUC: routeSlaveSUC.has(nodeId),
641
+ sucPendingUpdate: sucPendingUpdate.has(nodeId),
642
+ pendingDiscovery: pendingDiscovery.has(nodeId),
643
+ lwr: routes?.lwr ?? null,
644
+ nlwr: routes?.nlwr ?? null
645
+ };
646
+ }
647
+ const ownNodeId = await adapter.get({
648
+ domain: "controller",
649
+ type: "nodeId"
650
+ }, true);
651
+ const ownHomeId = await adapter.get({
652
+ domain: "controller",
653
+ type: "homeId"
654
+ }, true);
655
+ let learnedHomeId = await adapter.get({
656
+ domain: "controller",
657
+ type: "learnedHomeId"
658
+ });
659
+ if (learnedHomeId?.length === 4 && learnedHomeId.every((b) => b === 0)) {
660
+ learnedHomeId = void 0;
661
+ }
662
+ const lastNodeId = await adapter.get({
663
+ domain: "controller",
664
+ type: "lastNodeId"
665
+ }, true);
666
+ const maxNodeId = await adapter.get({
667
+ domain: "controller",
668
+ type: "maxNodeId"
669
+ }, true);
670
+ const reservedId = await adapter.get({
671
+ domain: "controller",
672
+ type: "reservedId"
673
+ }, true);
674
+ const staticControllerNodeId = await adapter.get({
675
+ domain: "controller",
676
+ type: "staticControllerNodeId"
677
+ }, true);
678
+ const sucLastIndex = await adapter.get({
679
+ domain: "controller",
680
+ type: "sucLastIndex"
681
+ }, true);
682
+ const controllerConfiguration = await adapter.get({
683
+ domain: "controller",
684
+ type: "controllerConfiguration"
685
+ }, true);
686
+ const commandClasses = await adapter.get({
687
+ domain: "controller",
688
+ type: "commandClasses"
689
+ }, true);
690
+ const sucUpdateEntries = await adapter.get({
691
+ domain: "controller",
692
+ type: "sucUpdateEntries"
693
+ }, true);
694
+ const applicationData = await adapter.get({
695
+ domain: "controller",
696
+ type: "applicationData"
697
+ });
698
+ const preferredRepeaters = await adapter.get({
699
+ domain: "controller",
700
+ type: "preferredRepeaters"
701
+ }, true);
702
+ const systemState = await adapter.get({
703
+ domain: "controller",
704
+ type: "systemState"
705
+ }, true);
706
+ const watchdogStarted = await adapter.get({
707
+ domain: "controller",
708
+ type: "watchdogStarted"
709
+ }, true);
710
+ const powerLevelNormal = await adapter.get({
711
+ domain: "controller",
712
+ type: "powerLevelNormal"
713
+ }, true);
714
+ const powerLevelLow = await adapter.get({
715
+ domain: "controller",
716
+ type: "powerLevelLow"
717
+ }, true);
718
+ const powerMode = await adapter.get({
719
+ domain: "controller",
720
+ type: "powerMode"
721
+ }, true);
722
+ const powerModeExtintEnable = await adapter.get({
723
+ domain: "controller",
724
+ type: "powerModeExtintEnable"
725
+ }, true);
726
+ const powerModeWutTimeout = await adapter.get({
727
+ domain: "controller",
728
+ type: "powerModeWutTimeout"
729
+ }, true);
730
+ const controller = {
731
+ protocolVersion: info.nvmDescriptor.protocolVersion,
732
+ applicationVersion: info.nvmDescriptor.firmwareVersion,
733
+ ownHomeId: (0, import_safe2.buffer2hex)(ownHomeId),
734
+ learnedHomeId: learnedHomeId ? (0, import_safe2.buffer2hex)(learnedHomeId) : null,
735
+ nodeId: ownNodeId,
736
+ lastNodeId,
737
+ staticControllerNodeId,
738
+ sucLastIndex,
739
+ controllerConfiguration,
740
+ sucUpdateEntries,
741
+ maxNodeId,
742
+ reservedId,
743
+ systemState,
744
+ watchdogStarted,
745
+ rfConfig: {
746
+ powerLevelNormal,
747
+ powerLevelLow,
748
+ powerMode,
749
+ powerModeExtintEnable,
750
+ powerModeWutTimeout
751
+ },
752
+ preferredRepeaters,
753
+ commandClasses,
754
+ applicationData: (applicationData && import_safe2.Bytes.view(applicationData).toString("hex")) ?? null
755
+ };
756
+ return {
757
+ format: 500,
758
+ meta,
759
+ controller,
760
+ nodes
761
+ };
762
+ }
763
+ async function jsonToNVM(json, targetSDKVersion) {
764
+ const parsedVersion = import_semver.default.parse(targetSDKVersion);
765
+ if (!parsedVersion) {
766
+ throw new import_safe.ZWaveError(`Invalid SDK version: ${targetSDKVersion}`, import_safe.ZWaveErrorCodes.Argument_Invalid);
767
+ }
768
+ const sharedFileSystem = json.meta?.sharedFileSystem;
769
+ const nvmSize = sharedFileSystem ? import_consts2.ZWAVE_SHARED_NVM_SIZE : import_consts2.ZWAVE_APPLICATION_NVM_SIZE + import_consts2.ZWAVE_PROTOCOL_NVM_SIZE;
770
+ const ret = new Uint8Array(nvmSize);
771
+ const io = new import_NVMMemoryIO.NVMMemoryIO(ret);
772
+ const nvm3 = new import_NVM3.NVM3(io);
773
+ await nvm3.erase(json.meta);
774
+ const serializeFile = async (file) => {
775
+ const { key, data } = file.serialize();
776
+ await nvm3.set(key, data);
777
+ };
778
+ let targetApplicationVersion;
779
+ let targetProtocolVersion;
780
+ let targetProtocolFormat;
781
+ const HIGHEST_SUPPORTED_SDK_VERSION = "7.21.0";
782
+ if (import_semver.default.lte(targetSDKVersion, HIGHEST_SUPPORTED_SDK_VERSION)) {
783
+ targetApplicationVersion = import_semver.default.parse(targetSDKVersion);
784
+ } else {
785
+ targetApplicationVersion = import_semver.default.parse(HIGHEST_SUPPORTED_SDK_VERSION);
786
+ }
787
+ if (import_semver.default.gte(targetSDKVersion, "7.19.0")) {
788
+ targetProtocolVersion = import_semver.default.parse("7.19.0");
789
+ targetProtocolFormat = 5;
790
+ } else if (import_semver.default.gte(targetSDKVersion, "7.17.0")) {
791
+ targetProtocolVersion = import_semver.default.parse("7.17.0");
792
+ targetProtocolFormat = 4;
793
+ } else if (import_semver.default.gte(targetSDKVersion, "7.15.3")) {
794
+ targetProtocolVersion = import_semver.default.parse("7.15.3");
795
+ targetProtocolFormat = 3;
796
+ } else if (import_semver.default.gte(targetSDKVersion, "7.12.0")) {
797
+ targetProtocolVersion = import_semver.default.parse("7.12.0");
798
+ targetProtocolFormat = 2;
799
+ } else if (import_semver.default.gte(targetSDKVersion, "7.11.0")) {
800
+ targetProtocolVersion = import_semver.default.parse("7.11.0");
801
+ targetProtocolFormat = 1;
802
+ } else {
803
+ targetProtocolVersion = import_semver.default.parse("7.0.0");
804
+ targetProtocolFormat = 0;
805
+ }
806
+ const target = (0, import_safe2.cloneDeep)(json);
807
+ target.controller.protocolVersion = targetProtocolVersion.format();
808
+ target.format = targetProtocolFormat;
809
+ target.controller.applicationVersion = parsedVersion.format();
810
+ const ApplicationVersionConstructor = sharedFileSystem ? import_files.ApplicationVersionFile800 : import_files.ApplicationVersionFile;
811
+ const applVersionFile = new ApplicationVersionConstructor({
812
+ format: 0,
813
+ major: targetApplicationVersion.major,
814
+ minor: targetApplicationVersion.minor,
815
+ patch: targetApplicationVersion.patch,
816
+ fileVersion: targetProtocolVersion.format()
817
+ // does not matter for this file
818
+ });
819
+ await serializeFile(applVersionFile);
820
+ const protocolVersionFile = new import_files.ProtocolVersionFile({
821
+ format: targetProtocolFormat,
822
+ major: targetProtocolVersion.major,
823
+ minor: targetProtocolVersion.minor,
824
+ patch: targetProtocolVersion.patch,
825
+ fileVersion: targetProtocolVersion.format()
826
+ // does not matter for this file
827
+ });
828
+ await serializeFile(protocolVersionFile);
829
+ {
830
+ const { key, data } = protocolVersionFile.serialize();
831
+ await nvm3.set(key, data);
832
+ }
833
+ const adapter = new import_adapter.NVM3Adapter(nvm3);
834
+ const applTypeFile = new import_files.ApplicationTypeFile({
835
+ ...(0, import_safe2.pick)(target.controller, [
836
+ "isListening",
837
+ "optionalFunctionality",
838
+ "genericDeviceClass",
839
+ "specificDeviceClass"
840
+ ]),
841
+ fileVersion: target.controller.applicationVersion
842
+ });
843
+ adapter.setFile(applTypeFile);
844
+ const applCCsFile = new import_files.ApplicationCCsFile({
845
+ ...(0, import_safe2.pick)(target.controller.commandClasses, [
846
+ "includedInsecurely",
847
+ "includedSecurelyInsecureCCs",
848
+ "includedSecurelySecureCCs"
849
+ ]),
850
+ fileVersion: target.controller.applicationVersion
851
+ });
852
+ adapter.setFile(applCCsFile);
853
+ target.controller.rfConfig ??= {
854
+ rfRegion: import_safe.RFRegion["Default (EU)"],
855
+ txPower: 0,
856
+ measured0dBm: 3.3,
857
+ enablePTI: null,
858
+ maxTXPower: null,
859
+ nodeIdType: null
860
+ };
861
+ if (import_semver.default.gte(targetSDKVersion, "7.15.3")) {
862
+ target.controller.rfConfig.enablePTI ??= 0;
863
+ target.controller.rfConfig.maxTXPower ??= 14;
864
+ }
865
+ if (import_semver.default.gte(targetSDKVersion, "7.21.0")) {
866
+ target.controller.rfConfig.nodeIdType ??= import_safe.NodeIDType.Short;
867
+ }
868
+ const applRFConfigFile = new import_files.ApplicationRFConfigFile({
869
+ ...(0, import_safe2.pick)(target.controller.rfConfig, [
870
+ "rfRegion",
871
+ "txPower",
872
+ "measured0dBm"
873
+ ]),
874
+ enablePTI: target.controller.rfConfig.enablePTI ?? void 0,
875
+ maxTXPower: target.controller.rfConfig.maxTXPower ?? void 0,
876
+ nodeIdType: target.controller.rfConfig.nodeIdType ?? void 0,
877
+ fileVersion: target.controller.applicationVersion
878
+ });
879
+ adapter.setFile(applRFConfigFile);
880
+ if (target.controller.applicationData) {
881
+ await adapter.set({ domain: "controller", type: "applicationData" }, import_safe2.Bytes.from(target.controller.applicationData, "hex"));
882
+ }
883
+ if (target.controller.applicationName && target.meta?.sharedFileSystem) {
884
+ await adapter.set({ domain: "controller", type: "applicationName" }, target.controller.applicationName);
885
+ }
886
+ const nodeInfoExists = /* @__PURE__ */ new Set();
887
+ const lrNodeInfoExists = /* @__PURE__ */ new Set();
888
+ const virtualNodeIds = /* @__PURE__ */ new Set();
889
+ const appRouteLock = /* @__PURE__ */ new Set();
890
+ const routeSlaveSUC = /* @__PURE__ */ new Set();
891
+ const sucPendingUpdate = /* @__PURE__ */ new Set();
892
+ const pendingDiscovery = /* @__PURE__ */ new Set();
893
+ adapter.setFile(new import_files.ProtocolRouteCacheExistsNodeMaskFile({
894
+ nodeIds: [],
895
+ fileVersion: target.controller.protocolVersion
896
+ }));
897
+ for (const [id, node] of Object.entries(target.nodes)) {
898
+ const nodeId = parseInt(id);
899
+ if (!nodeHasInfo(node)) {
900
+ virtualNodeIds.add(nodeId);
901
+ continue;
902
+ } else {
903
+ nodeInfoExists.add(nodeId);
904
+ if (node.isVirtual)
905
+ virtualNodeIds.add(nodeId);
906
+ if (node.appRouteLock)
907
+ appRouteLock.add(nodeId);
908
+ if (node.routeSlaveSUC)
909
+ routeSlaveSUC.add(nodeId);
910
+ if (node.sucPendingUpdate)
911
+ sucPendingUpdate.add(nodeId);
912
+ if (node.pendingDiscovery)
913
+ pendingDiscovery.add(nodeId);
914
+ }
915
+ await adapter.set({ domain: "node", nodeId, type: "info" }, nvmJSONNodeToNodeInfo(nodeId, node));
916
+ if (node.lwr || node.nlwr) {
917
+ await adapter.set({ domain: "node", nodeId, type: "routes" }, {
918
+ lwr: node.lwr ?? (0, import_routeCache.getEmptyRoute)(),
919
+ nlwr: node.nlwr ?? (0, import_routeCache.getEmptyRoute)()
920
+ });
921
+ }
922
+ }
923
+ await adapter.set({ domain: "controller", type: "nodeIds" }, [...nodeInfoExists]);
924
+ if (target.lrNodes) {
925
+ for (const [id, node] of Object.entries(target.lrNodes)) {
926
+ const nodeId = parseInt(id);
927
+ lrNodeInfoExists.add(nodeId);
928
+ await adapter.set({ domain: "lrnode", nodeId, type: "info" }, nvmJSONLRNodeToLRNodeInfo(nodeId, node));
929
+ }
930
+ }
931
+ await adapter.set({ domain: "controller", type: "lrNodeIds" }, [...lrNodeInfoExists]);
932
+ if (targetProtocolFormat >= 3) {
933
+ target.controller.lastNodeIdLR ??= 255;
934
+ target.controller.maxNodeIdLR ??= 0;
935
+ target.controller.reservedIdLR ??= 0;
936
+ target.controller.primaryLongRangeChannelId ??= 0;
937
+ target.controller.dcdcConfig ??= 255;
938
+ }
939
+ adapter.setFile(new import_files.ControllerInfoFile(nvmJSONControllerToFileOptions(target.controller)));
940
+ await adapter.set({ domain: "controller", type: "appRouteLock" }, [...appRouteLock]);
941
+ await adapter.set({ domain: "controller", type: "routeSlaveSUC" }, [...routeSlaveSUC]);
942
+ await adapter.set({ domain: "controller", type: "sucPendingUpdate" }, [...sucPendingUpdate]);
943
+ await adapter.set({ domain: "controller", type: "virtualNodeIds" }, [...virtualNodeIds]);
944
+ await adapter.set({ domain: "controller", type: "pendingDiscovery" }, [...pendingDiscovery]);
945
+ if (target.controller.preferredRepeaters?.length) {
946
+ await adapter.set({ domain: "controller", type: "preferredRepeaters" }, target.controller.preferredRepeaters);
947
+ }
948
+ await adapter.set({ domain: "controller", type: "sucUpdateEntries" }, target.controller.sucUpdateEntries);
949
+ await adapter.commit();
950
+ await io.close();
951
+ return ret;
952
+ }
953
+ async function jsonToNVM500(json, protocolVersion) {
954
+ const impl = import_impls.nvm500Impls.find((p) => p.protocolVersions.includes(protocolVersion) && p.name.toLowerCase().startsWith(json.meta.library));
955
+ if (!impl) {
956
+ throw new import_safe.ZWaveError(`Did not find a matching implementation for protocol version ${protocolVersion} and library ${json.meta.library}. To convert 500-series NVMs, both the source and the target controller must be using Z-Wave SDK 6.61 or higher.`, import_safe.ZWaveErrorCodes.NVM_NotSupported);
957
+ }
958
+ const { layout, nvmSize } = (0, import_shared.resolveLayout)(impl.layout);
959
+ const ret = new Uint8Array(nvmSize);
960
+ const io = new import_NVMMemoryIO.NVMMemoryIO(ret);
961
+ const nvm = new import_NVM500.NVM500(io);
962
+ await nvm.erase({
963
+ layout,
964
+ nvmSize,
965
+ library: impl.library,
966
+ nvmDescriptor: {
967
+ ...(0, import_safe2.pick)(json.meta, [
968
+ "manufacturerID",
969
+ "productType",
970
+ "productID",
971
+ "firmwareID"
972
+ ]),
973
+ // Override the protocol version with the specified one
974
+ protocolVersion,
975
+ firmwareVersion: json.controller.applicationVersion
976
+ }
977
+ });
978
+ const adapter = new import_adapter2.NVM500Adapter(nvm);
979
+ const c = json.controller;
980
+ await adapter.set({ domain: "controller", type: "homeId" }, import_safe2.Bytes.from(c.ownHomeId.replace(/^0x/, ""), "hex"));
981
+ await adapter.set({ domain: "controller", type: "learnedHomeId" }, c.learnedHomeId ? import_safe2.Bytes.from(c.learnedHomeId.replace(/^0x/, ""), "hex") : void 0);
982
+ await adapter.set({ domain: "controller", type: "nodeId" }, c.nodeId);
983
+ await adapter.set({ domain: "controller", type: "lastNodeId" }, c.lastNodeId);
984
+ await adapter.set({ domain: "controller", type: "maxNodeId" }, c.maxNodeId);
985
+ await adapter.set({ domain: "controller", type: "reservedId" }, c.reservedId);
986
+ await adapter.set({ domain: "controller", type: "staticControllerNodeId" }, c.staticControllerNodeId);
987
+ await adapter.set({ domain: "controller", type: "controllerConfiguration" }, c.controllerConfiguration);
988
+ await adapter.set({ domain: "controller", type: "sucUpdateEntries" }, c.sucUpdateEntries);
989
+ await adapter.set({ domain: "controller", type: "sucLastIndex" }, c.sucLastIndex);
990
+ await adapter.set({ domain: "controller", type: "systemState" }, c.systemState);
991
+ await adapter.set({ domain: "controller", type: "watchdogStarted" }, c.watchdogStarted);
992
+ await adapter.set({ domain: "controller", type: "powerLevelNormal" }, c.rfConfig.powerLevelNormal);
993
+ await adapter.set({ domain: "controller", type: "powerLevelLow" }, c.rfConfig.powerLevelLow);
994
+ await adapter.set({ domain: "controller", type: "powerMode" }, c.rfConfig.powerMode);
995
+ await adapter.set({ domain: "controller", type: "powerModeExtintEnable" }, c.rfConfig.powerModeExtintEnable);
996
+ await adapter.set({ domain: "controller", type: "powerModeWutTimeout" }, c.rfConfig.powerModeWutTimeout);
997
+ await adapter.set({ domain: "controller", type: "preferredRepeaters" }, c.preferredRepeaters);
998
+ await adapter.set({ domain: "controller", type: "commandClasses" }, c.commandClasses);
999
+ if (c.applicationData) {
1000
+ await adapter.set({ domain: "controller", type: "applicationData" }, import_safe2.Bytes.from(c.applicationData, "hex"));
1001
+ }
1002
+ const appRouteLock = [];
1003
+ const routeSlaveSUC = [];
1004
+ const pendingDiscovery = [];
1005
+ const sucPendingUpdate = [];
1006
+ const virtualNodeIds = [];
1007
+ for (const [id, node] of Object.entries(json.nodes)) {
1008
+ const nodeId = parseInt(id);
1009
+ if (!nodeHasInfo(node)) {
1010
+ virtualNodeIds.push(nodeId);
1011
+ continue;
1012
+ }
1013
+ if (node.appRouteLock)
1014
+ appRouteLock.push(nodeId);
1015
+ if (node.routeSlaveSUC)
1016
+ routeSlaveSUC.push(nodeId);
1017
+ if (node.pendingDiscovery)
1018
+ pendingDiscovery.push(nodeId);
1019
+ if (node.sucPendingUpdate)
1020
+ sucPendingUpdate.push(nodeId);
1021
+ await adapter.set({ domain: "node", nodeId, type: "info" }, {
1022
+ nodeId,
1023
+ ...node
1024
+ });
1025
+ if (node.lwr || node.nlwr) {
1026
+ await adapter.set({ domain: "node", nodeId, type: "routes" }, {
1027
+ lwr: node.lwr ?? void 0,
1028
+ nlwr: node.nlwr ?? void 0
1029
+ });
1030
+ }
1031
+ }
1032
+ await adapter.set({ domain: "controller", type: "appRouteLock" }, [...appRouteLock]);
1033
+ await adapter.set({ domain: "controller", type: "routeSlaveSUC" }, [...routeSlaveSUC]);
1034
+ await adapter.set({ domain: "controller", type: "sucPendingUpdate" }, [...sucPendingUpdate]);
1035
+ await adapter.set({ domain: "controller", type: "virtualNodeIds" }, [...virtualNodeIds]);
1036
+ await adapter.set({ domain: "controller", type: "pendingDiscovery" }, [...pendingDiscovery]);
1037
+ await adapter.commit();
1038
+ await io.close();
1039
+ return ret;
1040
+ }
1041
+ function json500To700(json, truncateApplicationData) {
1042
+ const source = (0, import_safe2.cloneDeep)(json);
1043
+ let controllerNode = source.nodes[source.controller.nodeId || 1];
1044
+ if (!nodeHasInfo(controllerNode)) {
1045
+ controllerNode = {
1046
+ isListening: true,
1047
+ optionalFunctionality: false,
1048
+ // Static PC Controller
1049
+ genericDeviceClass: 2,
1050
+ specificDeviceClass: 1
1051
+ };
1052
+ }
1053
+ let applicationData = null;
1054
+ if (source.controller.applicationData) {
1055
+ let raw = import_safe2.Bytes.from(source.controller.applicationData, "hex");
1056
+ let start = 0;
1057
+ while (start < raw.length && raw[start] === 0) {
1058
+ start++;
1059
+ }
1060
+ let end = raw.length - 1;
1061
+ while (end > start && raw[end] === 0) {
1062
+ end--;
1063
+ }
1064
+ raw = raw.subarray(start, end + 1);
1065
+ if (raw.length > 512) {
1066
+ if (!truncateApplicationData) {
1067
+ throw new import_safe.ZWaveError("Invalid NVM JSON: Application data would be truncated! Set truncateApplicationData to true to allow this.", import_safe.ZWaveErrorCodes.NVM_InvalidJSON);
1068
+ }
1069
+ raw = raw.subarray(0, 512);
1070
+ }
1071
+ applicationData = raw.toString("hex");
1072
+ }
1073
+ let controllerConfiguration = source.controller.controllerConfiguration;
1074
+ if (source.controller.controllerConfiguration === 255) {
1075
+ controllerConfiguration = import_safe.ControllerCapabilityFlags.SISPresent | import_safe.ControllerCapabilityFlags.WasRealPrimary | import_safe.ControllerCapabilityFlags.SUC;
1076
+ }
1077
+ let homeId;
1078
+ if (!!(controllerConfiguration & import_safe.ControllerCapabilityFlags.OnOtherNetwork) && source.controller.learnedHomeId && source.controller.nodeId) {
1079
+ homeId = source.controller.learnedHomeId;
1080
+ } else {
1081
+ homeId = source.controller.ownHomeId;
1082
+ controllerConfiguration &= ~import_safe.ControllerCapabilityFlags.OnOtherNetwork;
1083
+ if (controllerConfiguration & import_safe.ControllerCapabilityFlags.SUC) {
1084
+ source.controller.nodeId = source.controller.staticControllerNodeId || 1;
1085
+ } else {
1086
+ source.controller.nodeId = 1;
1087
+ }
1088
+ }
1089
+ let maxNodeId = source.controller.maxNodeId;
1090
+ if (maxNodeId === 255)
1091
+ maxNodeId = source.controller.lastNodeId;
1092
+ let reservedId = source.controller.reservedId;
1093
+ if (reservedId === 255)
1094
+ reservedId = 0;
1095
+ const ret = {
1096
+ // Start out with format 0 (= protocol version 7.0.0), the jsonToNVM routines will do further conversion
1097
+ format: 0,
1098
+ controller: {
1099
+ // This will contain the original 6.x protocol version, but the jsonToNVM routines will update it
1100
+ protocolVersion: source.controller.protocolVersion,
1101
+ applicationVersion: source.controller.applicationVersion,
1102
+ homeId,
1103
+ nodeId: source.controller.nodeId,
1104
+ lastNodeId: source.controller.lastNodeId,
1105
+ staticControllerNodeId: source.controller.staticControllerNodeId,
1106
+ sucLastIndex: source.controller.sucLastIndex,
1107
+ controllerConfiguration,
1108
+ sucUpdateEntries: source.controller.sucUpdateEntries,
1109
+ maxNodeId,
1110
+ reservedId,
1111
+ systemState: source.controller.systemState,
1112
+ preferredRepeaters: source.controller.preferredRepeaters,
1113
+ // RF config exists on both series but isn't compatible
1114
+ isListening: controllerNode.isListening,
1115
+ optionalFunctionality: controllerNode.optionalFunctionality,
1116
+ genericDeviceClass: controllerNode.genericDeviceClass,
1117
+ specificDeviceClass: controllerNode.specificDeviceClass ?? 0,
1118
+ commandClasses: {
1119
+ includedInsecurely: source.controller.commandClasses,
1120
+ includedSecurelyInsecureCCs: [],
1121
+ includedSecurelySecureCCs: []
1122
+ },
1123
+ applicationData
1124
+ },
1125
+ // The node entries are actually compatible between the two JSON versions
1126
+ // but the types are structured differently
1127
+ nodes: source.nodes
1128
+ };
1129
+ return ret;
1130
+ }
1131
+ function json700To500(json) {
1132
+ const source = (0, import_safe2.cloneDeep)(json);
1133
+ let ownHomeId;
1134
+ let learnedHomeId = null;
1135
+ let nodeId;
1136
+ if (source.controller.controllerConfiguration & import_safe.ControllerCapabilityFlags.OnOtherNetwork) {
1137
+ ownHomeId = learnedHomeId = source.controller.homeId;
1138
+ nodeId = source.controller.nodeId;
1139
+ } else {
1140
+ ownHomeId = source.controller.homeId;
1141
+ nodeId = 0;
1142
+ }
1143
+ const ret = {
1144
+ format: 500,
1145
+ controller: {
1146
+ // This will contain the original 7.x protocol version, but the jsonToNVM routines will update it
1147
+ protocolVersion: source.controller.protocolVersion,
1148
+ applicationVersion: source.controller.applicationVersion,
1149
+ // The 700 series does not distinguish between own and learned home ID in NVM
1150
+ // We infer it from the controller configuration if we need it
1151
+ ownHomeId,
1152
+ learnedHomeId,
1153
+ nodeId,
1154
+ lastNodeId: source.controller.lastNodeId,
1155
+ staticControllerNodeId: source.controller.staticControllerNodeId,
1156
+ sucLastIndex: source.controller.sucLastIndex,
1157
+ controllerConfiguration: source.controller.controllerConfiguration,
1158
+ sucUpdateEntries: source.controller.sucUpdateEntries,
1159
+ maxNodeId: source.controller.maxNodeId,
1160
+ reservedId: source.controller.reservedId,
1161
+ systemState: source.controller.systemState,
1162
+ watchdogStarted: 0,
1163
+ preferredRepeaters: json.controller.preferredRepeaters ?? [],
1164
+ // RF config exists on both series but isn't compatible. So set the default,
1165
+ // it will be taken from the target NVM on restore.
1166
+ rfConfig: {
1167
+ powerLevelNormal: [255, 255, 255],
1168
+ powerLevelLow: [255, 255, 255],
1169
+ powerMode: 255,
1170
+ powerModeExtintEnable: 255,
1171
+ powerModeWutTimeout: 4294967295
1172
+ },
1173
+ commandClasses: source.controller.commandClasses.includedInsecurely,
1174
+ applicationData: source.controller.applicationData
1175
+ },
1176
+ // The node entries are actually compatible between the two JSON versions
1177
+ // just the types are structured differently
1178
+ nodes: source.nodes
1179
+ };
1180
+ return ret;
1181
+ }
1182
+ async function migrateNVM(sourceNVM, targetNVM) {
1183
+ let source;
1184
+ let target;
1185
+ let sourceProtocolFileFormat;
1186
+ let targetProtocolFileFormat;
1187
+ try {
1188
+ source = {
1189
+ type: 700,
1190
+ json: await nvmToJSON(sourceNVM)
1191
+ };
1192
+ sourceProtocolFileFormat = source.json.format;
1193
+ } catch (e) {
1194
+ if ((0, import_safe.isZWaveError)(e) && e.code === import_safe.ZWaveErrorCodes.NVM_InvalidFormat) {
1195
+ source = {
1196
+ type: 500,
1197
+ json: await nvm500ToJSON(sourceNVM)
1198
+ };
1199
+ } else if ((0, import_safe.isZWaveError)(e) && e.code === import_safe.ZWaveErrorCodes.NVM_NotSupported && (0, import_typeguards.isObject)(e.context) && typeof e.context.protocolFileFormat === "number") {
1200
+ source = { type: "unknown" };
1201
+ sourceProtocolFileFormat = e.context.protocolFileFormat;
1202
+ } else {
1203
+ source = { type: "unknown" };
1204
+ }
1205
+ }
1206
+ try {
1207
+ target = {
1208
+ type: 700,
1209
+ json: await nvmToJSON(targetNVM)
1210
+ };
1211
+ targetProtocolFileFormat = target.json.format;
1212
+ } catch (e) {
1213
+ if ((0, import_safe.isZWaveError)(e) && e.code === import_safe.ZWaveErrorCodes.NVM_InvalidFormat) {
1214
+ target = {
1215
+ type: 500,
1216
+ json: await nvm500ToJSON(targetNVM)
1217
+ };
1218
+ } else if ((0, import_safe.isZWaveError)(e) && e.code === import_safe.ZWaveErrorCodes.NVM_NotSupported && source.type === 700 && (0, import_typeguards.isObject)(e.context) && typeof e.context.protocolFileFormat === "number") {
1219
+ target = { type: "unknown" };
1220
+ targetProtocolFileFormat = e.context.protocolFileFormat;
1221
+ } else {
1222
+ target = { type: "unknown" };
1223
+ }
1224
+ }
1225
+ if (target.type === "unknown" && targetProtocolFileFormat && targetProtocolFileFormat > import_consts.MAX_PROTOCOL_FILE_FORMAT && sourceProtocolFileFormat && sourceProtocolFileFormat <= targetProtocolFileFormat && sourceNVM.length === targetNVM.length) {
1226
+ return sourceNVM;
1227
+ } else if (source.type === 700 && target.type === 700 && sourceNVM.length === targetNVM.length && source.json.meta.sharedFileSystem === target.json.meta.sharedFileSystem) {
1228
+ const sourceProtocolVersion = source.json.controller.protocolVersion;
1229
+ const targetProtocolVersion = target.json.controller.protocolVersion;
1230
+ const sourceApplicationVersion = source.json.controller.applicationVersion;
1231
+ const targetApplicationVersion = target.json.controller.applicationVersion;
1232
+ if (import_semver.default.gte(targetProtocolVersion, "7.16.0") && import_semver.default.gte(targetProtocolVersion, sourceProtocolVersion) && import_semver.default.gte(targetApplicationVersion, targetProtocolVersion) && import_semver.default.gte(sourceApplicationVersion, sourceProtocolVersion) && import_semver.default.lt(sourceApplicationVersion, "255.0.0") && import_semver.default.lt(targetApplicationVersion, "255.0.0") && !hasShiftedAppVersion800File(source.json)) {
1233
+ return sourceNVM;
1234
+ }
1235
+ } else if (source.type === "unknown" && target.type !== "unknown") {
1236
+ throw new import_safe.ZWaveError(`The source NVM has an unsupported format, which cannot be restored on a ${target.type}-series NVM!`, import_safe.ZWaveErrorCodes.NVM_NotSupported);
1237
+ } else if (source.type !== "unknown" && target.type === "unknown") {
1238
+ throw new import_safe.ZWaveError(`The target NVM has an unsupported format, cannot restore ${source.type}-series NVM onto it!`, import_safe.ZWaveErrorCodes.NVM_NotSupported);
1239
+ } else if (source.type === "unknown" && target.type === "unknown") {
1240
+ return sourceNVM;
1241
+ }
1242
+ source = source;
1243
+ target = target;
1244
+ if (target.type === 700 && import_semver.default.gte(target.json.controller.applicationVersion, "255.0.0")) {
1245
+ target.json.controller.applicationVersion = target.json.controller.protocolVersion;
1246
+ }
1247
+ source.json.controller.applicationVersion = target.json.controller.applicationVersion;
1248
+ if (source.type === 500 && target.type === 500) {
1249
+ const json = {
1250
+ ...source.json,
1251
+ meta: target.json.meta
1252
+ };
1253
+ json.controller.rfConfig = target.json.controller.rfConfig;
1254
+ return jsonToNVM500(json, target.json.controller.protocolVersion);
1255
+ } else if (source.type === 500 && target.type === 700) {
1256
+ const json = {
1257
+ lrNodes: {},
1258
+ ...json500To700(source.json, true),
1259
+ meta: target.json.meta
1260
+ };
1261
+ json.controller.rfConfig = target.json.controller.rfConfig;
1262
+ return jsonToNVM(json, target.json.controller.applicationVersion);
1263
+ } else if (source.type === 700 && target.type === 500) {
1264
+ const json = {
1265
+ ...json700To500(source.json),
1266
+ meta: target.json.meta
1267
+ };
1268
+ json.controller.rfConfig = target.json.controller.rfConfig;
1269
+ return jsonToNVM500(json, target.json.controller.protocolVersion);
1270
+ } else {
1271
+ const json = {
1272
+ ...source.json,
1273
+ meta: target.json.meta
1274
+ };
1275
+ return jsonToNVM(json, target.json.controller.applicationVersion);
1276
+ }
1277
+ }
1278
+ function hasShiftedAppVersion800File(json) {
1279
+ if (!json.meta.sharedFileSystem)
1280
+ return false;
1281
+ const protocolVersion = import_semver.default.parse(json.controller.protocolVersion);
1282
+ if (!protocolVersion)
1283
+ return false;
1284
+ const applicationVersion = import_semver.default.parse(json.controller.applicationVersion);
1285
+ if (!applicationVersion)
1286
+ return false;
1287
+ if (json.applicationFileFormat !== protocolVersion.major)
1288
+ return false;
1289
+ if (Math.abs(applicationVersion.major - protocolVersion.minor) > 3) {
1290
+ return false;
1291
+ }
1292
+ return true;
1293
+ }
1294
+ // Annotate the CommonJS export names for ESM import in node:
1295
+ 0 && (module.exports = {
1296
+ json500To700,
1297
+ json700To500,
1298
+ jsonToNVM,
1299
+ jsonToNVM500,
1300
+ migrateNVM,
1301
+ nodeHasInfo,
1302
+ nvm500ToJSON,
1303
+ nvmObjectsToJSON,
1304
+ nvmToJSON
1305
+ });
1306
+ //# sourceMappingURL=convert.js.map