@zwave-js/nvmedit 15.1.1 → 15.2.1

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 (208) hide show
  1. package/build/cjs/cli.d.ts +1 -1
  2. package/build/cjs/cli.js +1 -2
  3. package/build/cjs/cli.js.map +2 -2
  4. package/build/cjs/convert.d.ts +3 -3
  5. package/build/cjs/convert.js +45 -45
  6. package/build/cjs/convert.js.map +3 -3
  7. package/build/cjs/lib/NVM3.js +17 -17
  8. package/build/cjs/lib/NVM3.js.map +3 -3
  9. package/build/cjs/lib/NVM500.js +54 -54
  10. package/build/cjs/lib/NVM500.js.map +3 -3
  11. package/build/cjs/lib/common/definitions.d.ts +5 -5
  12. package/build/cjs/lib/common/definitions.js.map +1 -1
  13. package/build/cjs/lib/common/routeCache.d.ts +2 -2
  14. package/build/cjs/lib/common/routeCache.js +10 -10
  15. package/build/cjs/lib/common/routeCache.js.map +3 -3
  16. package/build/cjs/lib/common/sucUpdateEntry.d.ts +1 -1
  17. package/build/cjs/lib/common/sucUpdateEntry.js +4 -4
  18. package/build/cjs/lib/common/sucUpdateEntry.js.map +1 -1
  19. package/build/cjs/lib/common/utils.js +6 -6
  20. package/build/cjs/lib/common/utils.js.map +2 -2
  21. package/build/cjs/lib/io/BufferedNVMReader.d.ts +1 -1
  22. package/build/cjs/lib/io/BufferedNVMReader.js +2 -2
  23. package/build/cjs/lib/io/BufferedNVMReader.js.map +2 -2
  24. package/build/cjs/lib/nvm3/adapter.d.ts +2 -2
  25. package/build/cjs/lib/nvm3/adapter.js +6 -6
  26. package/build/cjs/lib/nvm3/adapter.js.map +3 -3
  27. package/build/cjs/lib/nvm3/files/ApplicationCCsFile.d.ts +2 -2
  28. package/build/cjs/lib/nvm3/files/ApplicationCCsFile.js +6 -6
  29. package/build/cjs/lib/nvm3/files/ApplicationCCsFile.js.map +3 -3
  30. package/build/cjs/lib/nvm3/files/ApplicationDataFile.d.ts +1 -1
  31. package/build/cjs/lib/nvm3/files/ApplicationDataFile.js.map +1 -1
  32. package/build/cjs/lib/nvm3/files/ApplicationNameFile.d.ts +1 -1
  33. package/build/cjs/lib/nvm3/files/ApplicationNameFile.js.map +1 -1
  34. package/build/cjs/lib/nvm3/files/ApplicationRFConfigFile.d.ts +2 -2
  35. package/build/cjs/lib/nvm3/files/ApplicationRFConfigFile.js +9 -9
  36. package/build/cjs/lib/nvm3/files/ApplicationRFConfigFile.js.map +3 -3
  37. package/build/cjs/lib/nvm3/files/ApplicationTypeFile.d.ts +1 -1
  38. package/build/cjs/lib/nvm3/files/ApplicationTypeFile.js +2 -2
  39. package/build/cjs/lib/nvm3/files/ApplicationTypeFile.js.map +2 -2
  40. package/build/cjs/lib/nvm3/files/ControllerInfoFile.js +3 -3
  41. package/build/cjs/lib/nvm3/files/ControllerInfoFile.js.map +2 -2
  42. package/build/cjs/lib/nvm3/files/NVMFile.js +4 -4
  43. package/build/cjs/lib/nvm3/files/NVMFile.js.map +2 -2
  44. package/build/cjs/lib/nvm3/files/NodeInfoFiles.d.ts +2 -2
  45. package/build/cjs/lib/nvm3/files/NodeInfoFiles.js +18 -18
  46. package/build/cjs/lib/nvm3/files/NodeInfoFiles.js.map +3 -3
  47. package/build/cjs/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts +1 -1
  48. package/build/cjs/lib/nvm3/files/ProtocolNodeMaskFiles.js +5 -5
  49. package/build/cjs/lib/nvm3/files/ProtocolNodeMaskFiles.js.map +1 -1
  50. package/build/cjs/lib/nvm3/files/RouteCacheFiles.d.ts +1 -1
  51. package/build/cjs/lib/nvm3/files/RouteCacheFiles.js +11 -11
  52. package/build/cjs/lib/nvm3/files/RouteCacheFiles.js.map +3 -3
  53. package/build/cjs/lib/nvm3/files/SUCUpdateEntriesFile.d.ts +1 -1
  54. package/build/cjs/lib/nvm3/files/SUCUpdateEntriesFile.js +3 -3
  55. package/build/cjs/lib/nvm3/files/SUCUpdateEntriesFile.js.map +2 -2
  56. package/build/cjs/lib/nvm3/files/index.d.ts +0 -1
  57. package/build/cjs/lib/nvm3/files/index.js +0 -1
  58. package/build/cjs/lib/nvm3/files/index.js.map +2 -2
  59. package/build/cjs/lib/nvm3/page.d.ts +1 -1
  60. package/build/cjs/lib/nvm3/page.js.map +1 -1
  61. package/build/cjs/lib/nvm3/utils.d.ts +1 -1
  62. package/build/cjs/lib/nvm3/utils.js +3 -3
  63. package/build/cjs/lib/nvm3/utils.js.map +1 -1
  64. package/build/cjs/lib/nvm500/EntryParsers.d.ts +2 -2
  65. package/build/cjs/lib/nvm500/EntryParsers.js +10 -10
  66. package/build/cjs/lib/nvm500/EntryParsers.js.map +3 -3
  67. package/build/cjs/lib/nvm500/adapter.d.ts +2 -2
  68. package/build/cjs/lib/nvm500/adapter.js.map +1 -1
  69. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.d.ts +1 -1
  70. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.js +7 -7
  71. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.js.map +2 -2
  72. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.d.ts +1 -1
  73. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.js +7 -7
  74. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.js.map +2 -2
  75. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.d.ts +1 -1
  76. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.js +7 -7
  77. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.js.map +2 -2
  78. package/build/cjs/lib/nvm500/impls/Static_6_6x.d.ts +1 -1
  79. package/build/cjs/lib/nvm500/impls/Static_6_6x.js +7 -7
  80. package/build/cjs/lib/nvm500/impls/Static_6_6x.js.map +2 -2
  81. package/build/cjs/lib/nvm500/impls/Static_6_7x.d.ts +1 -1
  82. package/build/cjs/lib/nvm500/impls/Static_6_7x.js +7 -7
  83. package/build/cjs/lib/nvm500/impls/Static_6_7x.js.map +2 -2
  84. package/build/cjs/lib/nvm500/impls/Static_6_8x.d.ts +1 -1
  85. package/build/cjs/lib/nvm500/impls/Static_6_8x.js +7 -7
  86. package/build/cjs/lib/nvm500/impls/Static_6_8x.js.map +2 -2
  87. package/build/cjs/lib/nvm500/shared.d.ts +2 -2
  88. package/build/cjs/lib/nvm500/shared.js +2 -2
  89. package/build/cjs/lib/nvm500/shared.js.map +1 -1
  90. package/build/cjs/nvm500/NVMParser.d.ts +5 -5
  91. package/build/cjs/package.json +2 -1
  92. package/build/esm/cli.d.ts +1 -1
  93. package/build/esm/cli.d.ts.map +1 -1
  94. package/build/esm/cli.js +1 -2
  95. package/build/esm/cli.js.map +1 -1
  96. package/build/esm/convert.d.ts +3 -3
  97. package/build/esm/convert.d.ts.map +1 -1
  98. package/build/esm/convert.js +2 -2
  99. package/build/esm/convert.js.map +1 -1
  100. package/build/esm/lib/NVM3.js +2 -2
  101. package/build/esm/lib/NVM3.js.map +1 -1
  102. package/build/esm/lib/NVM500.js +1 -1
  103. package/build/esm/lib/NVM500.js.map +1 -1
  104. package/build/esm/lib/common/definitions.d.ts +5 -5
  105. package/build/esm/lib/common/definitions.d.ts.map +1 -1
  106. package/build/esm/lib/common/routeCache.d.ts +2 -2
  107. package/build/esm/lib/common/routeCache.d.ts.map +1 -1
  108. package/build/esm/lib/common/routeCache.js +2 -2
  109. package/build/esm/lib/common/routeCache.js.map +1 -1
  110. package/build/esm/lib/common/sucUpdateEntry.d.ts +1 -1
  111. package/build/esm/lib/common/sucUpdateEntry.d.ts.map +1 -1
  112. package/build/esm/lib/common/sucUpdateEntry.js +1 -1
  113. package/build/esm/lib/common/sucUpdateEntry.js.map +1 -1
  114. package/build/esm/lib/common/utils.js +1 -1
  115. package/build/esm/lib/common/utils.js.map +1 -1
  116. package/build/esm/lib/io/BufferedNVMReader.d.ts +1 -1
  117. package/build/esm/lib/io/BufferedNVMReader.d.ts.map +1 -1
  118. package/build/esm/lib/io/BufferedNVMReader.js +1 -1
  119. package/build/esm/lib/io/BufferedNVMReader.js.map +1 -1
  120. package/build/esm/lib/nvm3/adapter.d.ts +2 -2
  121. package/build/esm/lib/nvm3/adapter.d.ts.map +1 -1
  122. package/build/esm/lib/nvm3/adapter.js +2 -2
  123. package/build/esm/lib/nvm3/adapter.js.map +1 -1
  124. package/build/esm/lib/nvm3/files/ApplicationCCsFile.d.ts +2 -2
  125. package/build/esm/lib/nvm3/files/ApplicationCCsFile.d.ts.map +1 -1
  126. package/build/esm/lib/nvm3/files/ApplicationCCsFile.js +2 -2
  127. package/build/esm/lib/nvm3/files/ApplicationCCsFile.js.map +1 -1
  128. package/build/esm/lib/nvm3/files/ApplicationDataFile.d.ts +1 -1
  129. package/build/esm/lib/nvm3/files/ApplicationDataFile.d.ts.map +1 -1
  130. package/build/esm/lib/nvm3/files/ApplicationNameFile.d.ts +1 -1
  131. package/build/esm/lib/nvm3/files/ApplicationNameFile.d.ts.map +1 -1
  132. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.d.ts +2 -2
  133. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.d.ts.map +1 -1
  134. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.js +2 -2
  135. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.js.map +1 -1
  136. package/build/esm/lib/nvm3/files/ApplicationTypeFile.d.ts +1 -1
  137. package/build/esm/lib/nvm3/files/ApplicationTypeFile.d.ts.map +1 -1
  138. package/build/esm/lib/nvm3/files/ApplicationTypeFile.js +1 -1
  139. package/build/esm/lib/nvm3/files/ApplicationTypeFile.js.map +1 -1
  140. package/build/esm/lib/nvm3/files/ControllerInfoFile.d.ts.map +1 -1
  141. package/build/esm/lib/nvm3/files/ControllerInfoFile.js +1 -1
  142. package/build/esm/lib/nvm3/files/ControllerInfoFile.js.map +1 -1
  143. package/build/esm/lib/nvm3/files/NVMFile.js +1 -1
  144. package/build/esm/lib/nvm3/files/NVMFile.js.map +1 -1
  145. package/build/esm/lib/nvm3/files/NodeInfoFiles.d.ts +2 -2
  146. package/build/esm/lib/nvm3/files/NodeInfoFiles.d.ts.map +1 -1
  147. package/build/esm/lib/nvm3/files/NodeInfoFiles.js +2 -2
  148. package/build/esm/lib/nvm3/files/NodeInfoFiles.js.map +1 -1
  149. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts +1 -1
  150. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts.map +1 -1
  151. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.js +1 -1
  152. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.js.map +1 -1
  153. package/build/esm/lib/nvm3/files/RouteCacheFiles.d.ts +1 -1
  154. package/build/esm/lib/nvm3/files/RouteCacheFiles.d.ts.map +1 -1
  155. package/build/esm/lib/nvm3/files/RouteCacheFiles.js +2 -2
  156. package/build/esm/lib/nvm3/files/RouteCacheFiles.js.map +1 -1
  157. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.d.ts +1 -1
  158. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.d.ts.map +1 -1
  159. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.js +1 -1
  160. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.js.map +1 -1
  161. package/build/esm/lib/nvm3/files/index.d.ts +0 -1
  162. package/build/esm/lib/nvm3/files/index.d.ts.map +1 -1
  163. package/build/esm/lib/nvm3/files/index.js +0 -1
  164. package/build/esm/lib/nvm3/files/index.js.map +1 -1
  165. package/build/esm/lib/nvm3/page.d.ts +1 -1
  166. package/build/esm/lib/nvm3/page.d.ts.map +1 -1
  167. package/build/esm/lib/nvm3/utils.d.ts +1 -1
  168. package/build/esm/lib/nvm3/utils.d.ts.map +1 -1
  169. package/build/esm/lib/nvm3/utils.js +1 -1
  170. package/build/esm/lib/nvm3/utils.js.map +1 -1
  171. package/build/esm/lib/nvm500/EntryParsers.d.ts +2 -2
  172. package/build/esm/lib/nvm500/EntryParsers.d.ts.map +1 -1
  173. package/build/esm/lib/nvm500/EntryParsers.js +2 -2
  174. package/build/esm/lib/nvm500/EntryParsers.js.map +1 -1
  175. package/build/esm/lib/nvm500/adapter.d.ts +2 -2
  176. package/build/esm/lib/nvm500/adapter.d.ts.map +1 -1
  177. package/build/esm/lib/nvm500/impls/Bridge_6_6x.d.ts +1 -1
  178. package/build/esm/lib/nvm500/impls/Bridge_6_6x.d.ts.map +1 -1
  179. package/build/esm/lib/nvm500/impls/Bridge_6_6x.js +1 -1
  180. package/build/esm/lib/nvm500/impls/Bridge_6_6x.js.map +1 -1
  181. package/build/esm/lib/nvm500/impls/Bridge_6_7x.d.ts +1 -1
  182. package/build/esm/lib/nvm500/impls/Bridge_6_7x.d.ts.map +1 -1
  183. package/build/esm/lib/nvm500/impls/Bridge_6_7x.js +1 -1
  184. package/build/esm/lib/nvm500/impls/Bridge_6_7x.js.map +1 -1
  185. package/build/esm/lib/nvm500/impls/Bridge_6_8x.d.ts +1 -1
  186. package/build/esm/lib/nvm500/impls/Bridge_6_8x.d.ts.map +1 -1
  187. package/build/esm/lib/nvm500/impls/Bridge_6_8x.js +1 -1
  188. package/build/esm/lib/nvm500/impls/Bridge_6_8x.js.map +1 -1
  189. package/build/esm/lib/nvm500/impls/Static_6_6x.d.ts +1 -1
  190. package/build/esm/lib/nvm500/impls/Static_6_6x.d.ts.map +1 -1
  191. package/build/esm/lib/nvm500/impls/Static_6_6x.js +1 -1
  192. package/build/esm/lib/nvm500/impls/Static_6_6x.js.map +1 -1
  193. package/build/esm/lib/nvm500/impls/Static_6_7x.d.ts +1 -1
  194. package/build/esm/lib/nvm500/impls/Static_6_7x.d.ts.map +1 -1
  195. package/build/esm/lib/nvm500/impls/Static_6_7x.js +1 -1
  196. package/build/esm/lib/nvm500/impls/Static_6_7x.js.map +1 -1
  197. package/build/esm/lib/nvm500/impls/Static_6_8x.d.ts +1 -1
  198. package/build/esm/lib/nvm500/impls/Static_6_8x.d.ts.map +1 -1
  199. package/build/esm/lib/nvm500/impls/Static_6_8x.js +1 -1
  200. package/build/esm/lib/nvm500/impls/Static_6_8x.js.map +1 -1
  201. package/build/esm/lib/nvm500/shared.d.ts +2 -2
  202. package/build/esm/lib/nvm500/shared.d.ts.map +1 -1
  203. package/build/esm/lib/nvm500/shared.js +1 -1
  204. package/build/esm/lib/nvm500/shared.js.map +1 -1
  205. package/build/esm/nvm500/NVMParser.d.ts +5 -5
  206. package/build/esm/nvm500/NVMParser.d.ts.map +1 -1
  207. package/build/esm/package.json +2 -1
  208. package/package.json +4 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/common/definitions.ts"],
4
- "sourcesContent": ["import { type CommandClasses } from \"@zwave-js/core\";\nimport { type Expand } from \"@zwave-js/shared\";\nimport {\n\ttype ApplicationCCsFile,\n\ttype ApplicationRFConfigFile,\n\ttype ApplicationTypeFile,\n\ttype ControllerInfoFile,\n\ttype LRNodeInfo,\n\ttype NodeInfo,\n} from \"../nvm3/files/index.js\";\nimport { type Route } from \"./routeCache.js\";\nimport { type SUCUpdateEntry } from \"./sucUpdateEntry.js\";\n\nexport enum NVMAccess {\n\tNone,\n\tRead,\n\tWrite,\n\tReadWrite,\n}\n\n/** Provides an abstraction to access the contents of an NVM at the binary level */\nexport interface NVMIO {\n\t/**\n\t * Opens the NVM for reading and/or writing.\n\t * Since different NVM implementations may or may not allow reading and writing at the same time,\n\t * the returned value indicates which access patterns are actually allowed.\n\t */\n\topen(access: NVMAccess.Read | NVMAccess.Write): Promise<NVMAccess>;\n\n\t/** Returns the size of the NVM, after it has been opened */\n\tget size(): number;\n\t/** Returns which access is currently allowed for this NVM implementation */\n\tget accessMode(): NVMAccess;\n\n\t/**\n\t * Determines the size of the data chunks that can be used for writing.\n\t * Requires the NVM to be readable.\n\t */\n\tdetermineChunkSize(): Promise<number>;\n\n\t/**\n\t * Reads a chunk of data with the given length from the NVM.\n\t * If the length is longer than the chunk size, or the end of the NVM is reached,\n\t * the returned buffer will be shorter than the requested length.\n\t */\n\tread(\n\t\toffset: number,\n\t\tlength: number,\n\t): Promise<{ buffer: Uint8Array; endOfFile: boolean }>;\n\n\t/**\n\t * Writes a chunk of data with the given length from the NVM.\n\t * The returned value indicates how many bytes were actually written.\n\t */\n\twrite(\n\t\toffset: number,\n\t\tdata: Uint8Array,\n\t): Promise<{ bytesWritten: number; endOfFile: boolean }>;\n\n\t/** Closes the NVM */\n\tclose(): Promise<void>;\n}\n\n/** A specific NVM implementation */\nexport interface NVM<ID, Data> {\n\t/** Checks if a property exists in the NVM */\n\thas(property: ID): Promise<boolean>;\n\n\t/** Reads a property from the NVM */\n\tget(property: ID): Promise<Data | undefined>;\n\n\t/** Writes a property to the NVM */\n\tset(property: ID, value: Data): Promise<void>;\n\n\t/** Deletes the property from the NVM */\n\tdelete(property: ID): Promise<void>;\n}\n\n/**\n * Provides an application-level abstraction over an NVM implementation\n */\nexport interface NVMAdapter {\n\t/** Reads a property from the NVM */\n\tget<T extends NVMProperty, R extends boolean = boolean>(\n\t\tproperty: T,\n\t\trequired?: R,\n\t): Promise<\n\t\tR extends true ? NVMPropertyToDataType<T>\n\t\t\t: (NVMPropertyToDataType<T> | undefined)\n\t>;\n\n\t/**\n\t * Changes a property to be written to the NVM later\n\t */\n\tset<T extends NVMProperty>(\n\t\tproperty: T,\n\t\tvalue: NVMPropertyToDataType<T>,\n\t): Promise<void>;\n\n\t/**\n\t * Marks a property for deletion from the NVM. In some implementations,\n\t * deleting one property may delete multiple properties that are stored together.\n\t */\n\tdelete(property: NVMProperty): Promise<void>;\n\n\t/** Returns whether there are pending changes that weren't written to the NVM yet */\n\thasPendingChanges(): boolean;\n\n\t/** Writes all pending changes to the NVM */\n\tcommit(): Promise<void>;\n}\n\nexport type ControllerNVMPropertyTypes = Expand<\n\t& {\n\t\tprotocolVersion: string;\n\t\tprotocolFileFormat: number;\n\t\tapplicationVersion: string;\n\t\tapplicationData: Uint8Array;\n\t\tpreferredRepeaters?: number[];\n\t\tsucUpdateEntries: SUCUpdateEntry[];\n\t\tappRouteLock: number[];\n\t\trouteSlaveSUC: number[];\n\t\tsucPendingUpdate: number[];\n\t\tpendingDiscovery: number[];\n\t\tvirtualNodeIds: number[];\n\t\tnodeIds: number[];\n\t}\n\t// 700+ series only\n\t& Partial<{\n\t\tapplicationFileFormat: number;\n\t\tapplicationName: string;\n\t\tlrNodeIds: number[];\n\t}>\n\t// 500 series only\n\t& Partial<{\n\t\tlearnedHomeId: Uint8Array;\n\t\tcommandClasses: CommandClasses[];\n\t\tsystemState: number;\n\t\twatchdogStarted: number;\n\t\tpowerLevelNormal: number[];\n\t\tpowerLevelLow: number[];\n\t\tpowerMode: number;\n\t\tpowerModeExtintEnable: number;\n\t\tpowerModeWutTimeout: number;\n\t}>\n\t& Pick<\n\t\tControllerInfoFile,\n\t\t| \"homeId\"\n\t\t| \"nodeId\"\n\t\t| \"lastNodeId\"\n\t\t| \"staticControllerNodeId\"\n\t\t| \"sucLastIndex\"\n\t\t| \"controllerConfiguration\"\n\t\t| \"sucAwarenessPushNeeded\"\n\t\t| \"maxNodeId\"\n\t\t| \"reservedId\"\n\t\t| \"systemState\"\n\t\t| \"lastNodeIdLR\"\n\t\t| \"maxNodeIdLR\"\n\t\t| \"reservedIdLR\"\n\t\t| \"primaryLongRangeChannelId\"\n\t\t| \"dcdcConfig\"\n\t>\n\t// 700+ series only\n\t& Partial<\n\t\tPick<\n\t\t\tApplicationCCsFile,\n\t\t\t| \"includedInsecurely\"\n\t\t\t| \"includedSecurelyInsecureCCs\"\n\t\t\t| \"includedSecurelySecureCCs\"\n\t\t>\n\t>\n\t// 700+ series only\n\t& Partial<\n\t\tPick<\n\t\t\tApplicationRFConfigFile,\n\t\t\t| \"rfRegion\"\n\t\t\t| \"txPower\"\n\t\t\t| \"measured0dBm\"\n\t\t\t| \"enablePTI\"\n\t\t\t| \"maxTXPower\"\n\t\t\t| \"nodeIdType\"\n\t\t>\n\t>\n\t// 700+ series only\n\t& Partial<\n\t\tPick<\n\t\t\tApplicationTypeFile,\n\t\t\t| \"isListening\"\n\t\t\t| \"optionalFunctionality\"\n\t\t\t| \"genericDeviceClass\"\n\t\t\t| \"specificDeviceClass\"\n\t\t>\n\t>\n>;\n\nexport interface NodeNVMPropertyTypes {\n\tinfo: NodeInfo;\n\troutes: { lwr?: Route; nlwr?: Route };\n}\n\nexport interface LRNodeNVMPropertyTypes {\n\tinfo: LRNodeInfo;\n}\n\nexport type ControllerNVMProperty = {\n\tdomain: \"controller\";\n\ttype: keyof ControllerNVMPropertyTypes;\n\tnodeId?: undefined;\n};\n\nexport type ControllerNVMPropertyToDataType<P extends ControllerNVMProperty> =\n\tControllerNVMPropertyTypes[P[\"type\"]];\n\nexport type NodeNVMProperty = {\n\tdomain: \"node\";\n\ttype: keyof NodeNVMPropertyTypes;\n\tnodeId: number;\n};\n\nexport type NodeNVMPropertyToDataType<P extends NodeNVMProperty> =\n\tP[\"type\"] extends keyof NodeNVMPropertyTypes\n\t\t? NodeNVMPropertyTypes[P[\"type\"]]\n\t\t: never;\n\nexport type LRNodeNVMProperty = {\n\tdomain: \"lrnode\";\n\ttype: keyof LRNodeNVMPropertyTypes;\n\tnodeId: number;\n};\n\nexport type LRNodeNVMPropertyToDataType<P extends LRNodeNVMProperty> =\n\tP[\"type\"] extends keyof LRNodeNVMPropertyTypes\n\t\t? LRNodeNVMPropertyTypes[P[\"type\"]]\n\t\t: never;\n\nexport type NVMProperty =\n\t| ControllerNVMProperty\n\t| NodeNVMProperty\n\t| LRNodeNVMProperty;\n\nexport type NVMPropertyToDataType<P extends NVMProperty> = P extends\n\tControllerNVMProperty ? ControllerNVMPropertyToDataType<P>\n\t: P extends NodeNVMProperty ? NodeNVMPropertyToDataType<P>\n\t: P extends LRNodeNVMProperty ? LRNodeNVMPropertyToDataType<P>\n\t: never;\n"],
4
+ "sourcesContent": ["import type { CommandClasses } from \"@zwave-js/core\";\nimport type { Expand } from \"@zwave-js/shared\";\nimport type {\n\tApplicationCCsFile,\n\tApplicationRFConfigFile,\n\tApplicationTypeFile,\n\tControllerInfoFile,\n\tLRNodeInfo,\n\tNodeInfo,\n} from \"../nvm3/files/index.js\";\nimport type { Route } from \"./routeCache.js\";\nimport type { SUCUpdateEntry } from \"./sucUpdateEntry.js\";\n\nexport enum NVMAccess {\n\tNone,\n\tRead,\n\tWrite,\n\tReadWrite,\n}\n\n/** Provides an abstraction to access the contents of an NVM at the binary level */\nexport interface NVMIO {\n\t/**\n\t * Opens the NVM for reading and/or writing.\n\t * Since different NVM implementations may or may not allow reading and writing at the same time,\n\t * the returned value indicates which access patterns are actually allowed.\n\t */\n\topen(access: NVMAccess.Read | NVMAccess.Write): Promise<NVMAccess>;\n\n\t/** Returns the size of the NVM, after it has been opened */\n\tget size(): number;\n\t/** Returns which access is currently allowed for this NVM implementation */\n\tget accessMode(): NVMAccess;\n\n\t/**\n\t * Determines the size of the data chunks that can be used for writing.\n\t * Requires the NVM to be readable.\n\t */\n\tdetermineChunkSize(): Promise<number>;\n\n\t/**\n\t * Reads a chunk of data with the given length from the NVM.\n\t * If the length is longer than the chunk size, or the end of the NVM is reached,\n\t * the returned buffer will be shorter than the requested length.\n\t */\n\tread(\n\t\toffset: number,\n\t\tlength: number,\n\t): Promise<{ buffer: Uint8Array; endOfFile: boolean }>;\n\n\t/**\n\t * Writes a chunk of data with the given length from the NVM.\n\t * The returned value indicates how many bytes were actually written.\n\t */\n\twrite(\n\t\toffset: number,\n\t\tdata: Uint8Array,\n\t): Promise<{ bytesWritten: number; endOfFile: boolean }>;\n\n\t/** Closes the NVM */\n\tclose(): Promise<void>;\n}\n\n/** A specific NVM implementation */\nexport interface NVM<ID, Data> {\n\t/** Checks if a property exists in the NVM */\n\thas(property: ID): Promise<boolean>;\n\n\t/** Reads a property from the NVM */\n\tget(property: ID): Promise<Data | undefined>;\n\n\t/** Writes a property to the NVM */\n\tset(property: ID, value: Data): Promise<void>;\n\n\t/** Deletes the property from the NVM */\n\tdelete(property: ID): Promise<void>;\n}\n\n/**\n * Provides an application-level abstraction over an NVM implementation\n */\nexport interface NVMAdapter {\n\t/** Reads a property from the NVM */\n\tget<T extends NVMProperty, R extends boolean = boolean>(\n\t\tproperty: T,\n\t\trequired?: R,\n\t): Promise<\n\t\tR extends true ? NVMPropertyToDataType<T>\n\t\t\t: (NVMPropertyToDataType<T> | undefined)\n\t>;\n\n\t/**\n\t * Changes a property to be written to the NVM later\n\t */\n\tset<T extends NVMProperty>(\n\t\tproperty: T,\n\t\tvalue: NVMPropertyToDataType<T>,\n\t): Promise<void>;\n\n\t/**\n\t * Marks a property for deletion from the NVM. In some implementations,\n\t * deleting one property may delete multiple properties that are stored together.\n\t */\n\tdelete(property: NVMProperty): Promise<void>;\n\n\t/** Returns whether there are pending changes that weren't written to the NVM yet */\n\thasPendingChanges(): boolean;\n\n\t/** Writes all pending changes to the NVM */\n\tcommit(): Promise<void>;\n}\n\nexport type ControllerNVMPropertyTypes = Expand<\n\t& {\n\t\tprotocolVersion: string;\n\t\tprotocolFileFormat: number;\n\t\tapplicationVersion: string;\n\t\tapplicationData: Uint8Array;\n\t\tpreferredRepeaters?: number[];\n\t\tsucUpdateEntries: SUCUpdateEntry[];\n\t\tappRouteLock: number[];\n\t\trouteSlaveSUC: number[];\n\t\tsucPendingUpdate: number[];\n\t\tpendingDiscovery: number[];\n\t\tvirtualNodeIds: number[];\n\t\tnodeIds: number[];\n\t}\n\t// 700+ series only\n\t& Partial<{\n\t\tapplicationFileFormat: number;\n\t\tapplicationName: string;\n\t\tlrNodeIds: number[];\n\t}>\n\t// 500 series only\n\t& Partial<{\n\t\tlearnedHomeId: Uint8Array;\n\t\tcommandClasses: CommandClasses[];\n\t\tsystemState: number;\n\t\twatchdogStarted: number;\n\t\tpowerLevelNormal: number[];\n\t\tpowerLevelLow: number[];\n\t\tpowerMode: number;\n\t\tpowerModeExtintEnable: number;\n\t\tpowerModeWutTimeout: number;\n\t}>\n\t& Pick<\n\t\tControllerInfoFile,\n\t\t| \"homeId\"\n\t\t| \"nodeId\"\n\t\t| \"lastNodeId\"\n\t\t| \"staticControllerNodeId\"\n\t\t| \"sucLastIndex\"\n\t\t| \"controllerConfiguration\"\n\t\t| \"sucAwarenessPushNeeded\"\n\t\t| \"maxNodeId\"\n\t\t| \"reservedId\"\n\t\t| \"systemState\"\n\t\t| \"lastNodeIdLR\"\n\t\t| \"maxNodeIdLR\"\n\t\t| \"reservedIdLR\"\n\t\t| \"primaryLongRangeChannelId\"\n\t\t| \"dcdcConfig\"\n\t>\n\t// 700+ series only\n\t& Partial<\n\t\tPick<\n\t\t\tApplicationCCsFile,\n\t\t\t| \"includedInsecurely\"\n\t\t\t| \"includedSecurelyInsecureCCs\"\n\t\t\t| \"includedSecurelySecureCCs\"\n\t\t>\n\t>\n\t// 700+ series only\n\t& Partial<\n\t\tPick<\n\t\t\tApplicationRFConfigFile,\n\t\t\t| \"rfRegion\"\n\t\t\t| \"txPower\"\n\t\t\t| \"measured0dBm\"\n\t\t\t| \"enablePTI\"\n\t\t\t| \"maxTXPower\"\n\t\t\t| \"nodeIdType\"\n\t\t>\n\t>\n\t// 700+ series only\n\t& Partial<\n\t\tPick<\n\t\t\tApplicationTypeFile,\n\t\t\t| \"isListening\"\n\t\t\t| \"optionalFunctionality\"\n\t\t\t| \"genericDeviceClass\"\n\t\t\t| \"specificDeviceClass\"\n\t\t>\n\t>\n>;\n\nexport interface NodeNVMPropertyTypes {\n\tinfo: NodeInfo;\n\troutes: { lwr?: Route; nlwr?: Route };\n}\n\nexport interface LRNodeNVMPropertyTypes {\n\tinfo: LRNodeInfo;\n}\n\nexport type ControllerNVMProperty = {\n\tdomain: \"controller\";\n\ttype: keyof ControllerNVMPropertyTypes;\n\tnodeId?: undefined;\n};\n\nexport type ControllerNVMPropertyToDataType<P extends ControllerNVMProperty> =\n\tControllerNVMPropertyTypes[P[\"type\"]];\n\nexport type NodeNVMProperty = {\n\tdomain: \"node\";\n\ttype: keyof NodeNVMPropertyTypes;\n\tnodeId: number;\n};\n\nexport type NodeNVMPropertyToDataType<P extends NodeNVMProperty> =\n\tP[\"type\"] extends keyof NodeNVMPropertyTypes\n\t\t? NodeNVMPropertyTypes[P[\"type\"]]\n\t\t: never;\n\nexport type LRNodeNVMProperty = {\n\tdomain: \"lrnode\";\n\ttype: keyof LRNodeNVMPropertyTypes;\n\tnodeId: number;\n};\n\nexport type LRNodeNVMPropertyToDataType<P extends LRNodeNVMProperty> =\n\tP[\"type\"] extends keyof LRNodeNVMPropertyTypes\n\t\t? LRNodeNVMPropertyTypes[P[\"type\"]]\n\t\t: never;\n\nexport type NVMProperty =\n\t| ControllerNVMProperty\n\t| NodeNVMProperty\n\t| LRNodeNVMProperty;\n\nexport type NVMPropertyToDataType<P extends NVMProperty> = P extends\n\tControllerNVMProperty ? ControllerNVMPropertyToDataType<P>\n\t: P extends NodeNVMProperty ? NodeNVMPropertyToDataType<P>\n\t: P extends LRNodeNVMProperty ? LRNodeNVMPropertyToDataType<P>\n\t: never;\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAaA;;;;;AAAA,IAAY;CAAZ,SAAYA,YAAS;AACpB,EAAAA,WAAAA,WAAA,MAAA,IAAA,CAAA,IAAA;AACA,EAAAA,WAAAA,WAAA,MAAA,IAAA,CAAA,IAAA;AACA,EAAAA,WAAAA,WAAA,OAAA,IAAA,CAAA,IAAA;AACA,EAAAA,WAAAA,WAAA,WAAA,IAAA,CAAA,IAAA;AACD,GALY,cAAA,YAAS,CAAA,EAAA;",
6
6
  "names": ["NVMAccess"]
7
7
  }
@@ -1,5 +1,5 @@
1
- import { type FLiRS, RouteProtocolDataRate } from "@zwave-js/core/safe";
2
- import { Bytes } from "@zwave-js/shared/safe";
1
+ import { type FLiRS, RouteProtocolDataRate } from "@zwave-js/core";
2
+ import { Bytes } from "@zwave-js/shared";
3
3
  export declare const ROUTECACHE_SIZE: number;
4
4
  export declare const EMPTY_ROUTECACHE_FILL = 255;
5
5
  export declare const emptyRouteCache: Uint8Array<ArrayBuffer>;
@@ -27,9 +27,9 @@ __export(routeCache_exports, {
27
27
  parseRoute: () => parseRoute
28
28
  });
29
29
  module.exports = __toCommonJS(routeCache_exports);
30
- var import_safe = require("@zwave-js/core/safe");
31
- var import_safe2 = require("@zwave-js/shared/safe");
32
- const ROUTE_SIZE = import_safe.MAX_REPEATERS + 1;
30
+ var import_core = require("@zwave-js/core");
31
+ var import_shared = require("@zwave-js/shared");
32
+ const ROUTE_SIZE = import_core.MAX_REPEATERS + 1;
33
33
  const ROUTECACHE_SIZE = 2 * ROUTE_SIZE;
34
34
  const EMPTY_ROUTECACHE_FILL = 255;
35
35
  const emptyRouteCache = new Uint8Array(ROUTECACHE_SIZE).fill(EMPTY_ROUTECACHE_FILL);
@@ -39,12 +39,12 @@ var Beaming;
39
39
  Beaming2[Beaming2["250ms"] = 32] = "250ms";
40
40
  })(Beaming || (Beaming = {}));
41
41
  function parseRoute(buffer, offset) {
42
- const routeConf = buffer[offset + import_safe.MAX_REPEATERS];
42
+ const routeConf = buffer[offset + import_core.MAX_REPEATERS];
43
43
  const ret = {
44
44
  beaming: Beaming[routeConf & 96] ?? false,
45
- protocolRate: routeConf & import_safe.protocolDataRateMask,
45
+ protocolRate: routeConf & import_core.protocolDataRateMask,
46
46
  repeaterNodeIDs: [
47
- ...buffer.subarray(offset, offset + import_safe.MAX_REPEATERS)
47
+ ...buffer.subarray(offset, offset + import_core.MAX_REPEATERS)
48
48
  ].filter((id) => id !== 0)
49
49
  };
50
50
  if (ret.repeaterNodeIDs[0] === 254)
@@ -53,10 +53,10 @@ function parseRoute(buffer, offset) {
53
53
  }
54
54
  __name(parseRoute, "parseRoute");
55
55
  function encodeRoute(route) {
56
- const ret = new import_safe2.Bytes(ROUTE_SIZE).fill(0);
56
+ const ret = new import_shared.Bytes(ROUTE_SIZE).fill(0);
57
57
  if (route) {
58
58
  if (route.repeaterNodeIDs) {
59
- for (let i = 0; i < import_safe.MAX_REPEATERS && i < route.repeaterNodeIDs.length; i++) {
59
+ for (let i = 0; i < import_core.MAX_REPEATERS && i < route.repeaterNodeIDs.length; i++) {
60
60
  ret[i] = route.repeaterNodeIDs[i];
61
61
  }
62
62
  } else {
@@ -65,7 +65,7 @@ function encodeRoute(route) {
65
65
  let routeConf = 0;
66
66
  if (route.beaming)
67
67
  routeConf |= Beaming[route.beaming] ?? 0;
68
- routeConf |= route.protocolRate & import_safe.protocolDataRateMask;
68
+ routeConf |= route.protocolRate & import_core.protocolDataRateMask;
69
69
  ret[ROUTE_SIZE - 1] = routeConf;
70
70
  }
71
71
  return ret;
@@ -74,7 +74,7 @@ __name(encodeRoute, "encodeRoute");
74
74
  function getEmptyRoute() {
75
75
  return {
76
76
  beaming: false,
77
- protocolRate: import_safe.RouteProtocolDataRate.ZWave_40k,
77
+ protocolRate: import_core.RouteProtocolDataRate.ZWave_40k,
78
78
  repeaterNodeIDs: void 0
79
79
  };
80
80
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/common/routeCache.ts"],
4
- "sourcesContent": ["import {\n\ttype FLiRS,\n\tMAX_REPEATERS,\n\tRouteProtocolDataRate,\n\tprotocolDataRateMask,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\n\nconst ROUTE_SIZE = MAX_REPEATERS + 1;\nexport const ROUTECACHE_SIZE = 2 * ROUTE_SIZE;\nexport const EMPTY_ROUTECACHE_FILL = 0xff;\nexport const emptyRouteCache = new Uint8Array(ROUTECACHE_SIZE)\n\t.fill(EMPTY_ROUTECACHE_FILL);\n\nenum Beaming {\n\t\"1000ms\" = 0x40,\n\t\"250ms\" = 0x20,\n}\n\nexport interface Route {\n\tbeaming: FLiRS;\n\tprotocolRate: RouteProtocolDataRate;\n\trepeaterNodeIDs?: number[];\n}\n\nexport interface RouteCache {\n\tnodeId: number;\n\tlwr: Route;\n\tnlwr: Route;\n}\n\nexport function parseRoute(buffer: Uint8Array, offset: number): Route {\n\tconst routeConf = buffer[offset + MAX_REPEATERS];\n\tconst ret: Route = {\n\t\tbeaming: (Beaming[routeConf & 0x60] ?? false) as FLiRS,\n\t\tprotocolRate: routeConf & protocolDataRateMask,\n\t\trepeaterNodeIDs: [\n\t\t\t...buffer.subarray(offset, offset + MAX_REPEATERS),\n\t\t].filter((id) => id !== 0),\n\t};\n\tif (ret.repeaterNodeIDs![0] === 0xfe) delete ret.repeaterNodeIDs;\n\treturn ret;\n}\n\nexport function encodeRoute(route: Route | undefined): Bytes {\n\tconst ret = new Bytes(ROUTE_SIZE).fill(0);\n\tif (route) {\n\t\tif (route.repeaterNodeIDs) {\n\t\t\tfor (\n\t\t\t\tlet i = 0;\n\t\t\t\ti < MAX_REPEATERS && i < route.repeaterNodeIDs.length;\n\t\t\t\ti++\n\t\t\t) {\n\t\t\t\tret[i] = route.repeaterNodeIDs[i];\n\t\t\t}\n\t\t} else {\n\t\t\tret[0] = 0xfe;\n\t\t}\n\t\tlet routeConf = 0;\n\t\tif (route.beaming) routeConf |= Beaming[route.beaming] ?? 0;\n\t\trouteConf |= route.protocolRate & protocolDataRateMask;\n\t\tret[ROUTE_SIZE - 1] = routeConf;\n\t}\n\n\treturn ret;\n}\n\nexport function getEmptyRoute(): Route {\n\treturn {\n\t\tbeaming: false,\n\t\tprotocolRate: RouteProtocolDataRate.ZWave_40k,\n\t\trepeaterNodeIDs: undefined,\n\t};\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;AAAA,kBAKO;AACP,IAAAA,eAAsB;AAEtB,MAAM,aAAa,4BAAgB;AAC5B,MAAM,kBAAkB,IAAI;AAC5B,MAAM,wBAAwB;AAC9B,MAAM,kBAAkB,IAAI,WAAW,eAAe,EAC3D,KAAK,qBAAqB;AAE5B,IAAK;CAAL,SAAKC,UAAO;AACX,EAAAA,SAAAA,SAAA,QAAA,IAAA,EAAA,IAAA;AACA,EAAAA,SAAAA,SAAA,OAAA,IAAA,EAAA,IAAA;AACD,GAHK,YAAA,UAAO,CAAA,EAAA;AAiBN,SAAU,WAAW,QAAoB,QAAc;AAC5D,QAAM,YAAY,OAAO,SAAS,yBAAa;AAC/C,QAAM,MAAa;IAClB,SAAU,QAAQ,YAAY,EAAI,KAAK;IACvC,cAAc,YAAY;IAC1B,iBAAiB;MAChB,GAAG,OAAO,SAAS,QAAQ,SAAS,yBAAa;MAChD,OAAO,CAAC,OAAO,OAAO,CAAC;;AAE1B,MAAI,IAAI,gBAAiB,CAAC,MAAM;AAAM,WAAO,IAAI;AACjD,SAAO;AACR;AAXgB;AAaV,SAAU,YAAY,OAAwB;AACnD,QAAM,MAAM,IAAI,mBAAM,UAAU,EAAE,KAAK,CAAC;AACxC,MAAI,OAAO;AACV,QAAI,MAAM,iBAAiB;AAC1B,eACK,IAAI,GACR,IAAI,6BAAiB,IAAI,MAAM,gBAAgB,QAC/C,KACC;AACD,YAAI,CAAC,IAAI,MAAM,gBAAgB,CAAC;MACjC;IACD,OAAO;AACN,UAAI,CAAC,IAAI;IACV;AACA,QAAI,YAAY;AAChB,QAAI,MAAM;AAAS,mBAAa,QAAQ,MAAM,OAAO,KAAK;AAC1D,iBAAa,MAAM,eAAe;AAClC,QAAI,aAAa,CAAC,IAAI;EACvB;AAEA,SAAO;AACR;AArBgB;AAuBV,SAAU,gBAAa;AAC5B,SAAO;IACN,SAAS;IACT,cAAc,kCAAsB;IACpC,iBAAiB;;AAEnB;AANgB;",
6
- "names": ["import_safe", "Beaming"]
4
+ "sourcesContent": ["import {\n\ttype FLiRS,\n\tMAX_REPEATERS,\n\tRouteProtocolDataRate,\n\tprotocolDataRateMask,\n} from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\n\nconst ROUTE_SIZE = MAX_REPEATERS + 1;\nexport const ROUTECACHE_SIZE = 2 * ROUTE_SIZE;\nexport const EMPTY_ROUTECACHE_FILL = 0xff;\nexport const emptyRouteCache = new Uint8Array(ROUTECACHE_SIZE)\n\t.fill(EMPTY_ROUTECACHE_FILL);\n\nenum Beaming {\n\t\"1000ms\" = 0x40,\n\t\"250ms\" = 0x20,\n}\n\nexport interface Route {\n\tbeaming: FLiRS;\n\tprotocolRate: RouteProtocolDataRate;\n\trepeaterNodeIDs?: number[];\n}\n\nexport interface RouteCache {\n\tnodeId: number;\n\tlwr: Route;\n\tnlwr: Route;\n}\n\nexport function parseRoute(buffer: Uint8Array, offset: number): Route {\n\tconst routeConf = buffer[offset + MAX_REPEATERS];\n\tconst ret: Route = {\n\t\tbeaming: (Beaming[routeConf & 0x60] ?? false) as FLiRS,\n\t\tprotocolRate: routeConf & protocolDataRateMask,\n\t\trepeaterNodeIDs: [\n\t\t\t...buffer.subarray(offset, offset + MAX_REPEATERS),\n\t\t].filter((id) => id !== 0),\n\t};\n\tif (ret.repeaterNodeIDs![0] === 0xfe) delete ret.repeaterNodeIDs;\n\treturn ret;\n}\n\nexport function encodeRoute(route: Route | undefined): Bytes {\n\tconst ret = new Bytes(ROUTE_SIZE).fill(0);\n\tif (route) {\n\t\tif (route.repeaterNodeIDs) {\n\t\t\tfor (\n\t\t\t\tlet i = 0;\n\t\t\t\ti < MAX_REPEATERS && i < route.repeaterNodeIDs.length;\n\t\t\t\ti++\n\t\t\t) {\n\t\t\t\tret[i] = route.repeaterNodeIDs[i];\n\t\t\t}\n\t\t} else {\n\t\t\tret[0] = 0xfe;\n\t\t}\n\t\tlet routeConf = 0;\n\t\tif (route.beaming) routeConf |= Beaming[route.beaming] ?? 0;\n\t\trouteConf |= route.protocolRate & protocolDataRateMask;\n\t\tret[ROUTE_SIZE - 1] = routeConf;\n\t}\n\n\treturn ret;\n}\n\nexport function getEmptyRoute(): Route {\n\treturn {\n\t\tbeaming: false,\n\t\tprotocolRate: RouteProtocolDataRate.ZWave_40k,\n\t\trepeaterNodeIDs: undefined,\n\t};\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;AAAA,kBAKO;AACP,oBAAsB;AAEtB,MAAM,aAAa,4BAAgB;AAC5B,MAAM,kBAAkB,IAAI;AAC5B,MAAM,wBAAwB;AAC9B,MAAM,kBAAkB,IAAI,WAAW,eAAe,EAC3D,KAAK,qBAAqB;AAE5B,IAAK;CAAL,SAAKA,UAAO;AACX,EAAAA,SAAAA,SAAA,QAAA,IAAA,EAAA,IAAA;AACA,EAAAA,SAAAA,SAAA,OAAA,IAAA,EAAA,IAAA;AACD,GAHK,YAAA,UAAO,CAAA,EAAA;AAiBN,SAAU,WAAW,QAAoB,QAAc;AAC5D,QAAM,YAAY,OAAO,SAAS,yBAAa;AAC/C,QAAM,MAAa;IAClB,SAAU,QAAQ,YAAY,EAAI,KAAK;IACvC,cAAc,YAAY;IAC1B,iBAAiB;MAChB,GAAG,OAAO,SAAS,QAAQ,SAAS,yBAAa;MAChD,OAAO,CAAC,OAAO,OAAO,CAAC;;AAE1B,MAAI,IAAI,gBAAiB,CAAC,MAAM;AAAM,WAAO,IAAI;AACjD,SAAO;AACR;AAXgB;AAaV,SAAU,YAAY,OAAwB;AACnD,QAAM,MAAM,IAAI,oBAAM,UAAU,EAAE,KAAK,CAAC;AACxC,MAAI,OAAO;AACV,QAAI,MAAM,iBAAiB;AAC1B,eACK,IAAI,GACR,IAAI,6BAAiB,IAAI,MAAM,gBAAgB,QAC/C,KACC;AACD,YAAI,CAAC,IAAI,MAAM,gBAAgB,CAAC;MACjC;IACD,OAAO;AACN,UAAI,CAAC,IAAI;IACV;AACA,QAAI,YAAY;AAChB,QAAI,MAAM;AAAS,mBAAa,QAAQ,MAAM,OAAO,KAAK;AAC1D,iBAAa,MAAM,eAAe;AAClC,QAAI,aAAa,CAAC,IAAI;EACvB;AAEA,SAAO;AACR;AArBgB;AAuBV,SAAU,gBAAa;AAC5B,SAAO;IACN,SAAS;IACT,cAAc,kCAAsB;IACpC,iBAAiB;;AAEnB;AANgB;",
6
+ "names": ["Beaming"]
7
7
  }
@@ -1,4 +1,4 @@
1
- import { type CommandClasses } from "@zwave-js/core/safe";
1
+ import { type CommandClasses } from "@zwave-js/core";
2
2
  import { Bytes } from "@zwave-js/shared";
3
3
  export interface SUCUpdateEntry {
4
4
  nodeId: number;
@@ -23,7 +23,7 @@ __export(sucUpdateEntry_exports, {
23
23
  parseSUCUpdateEntry: () => parseSUCUpdateEntry
24
24
  });
25
25
  module.exports = __toCommonJS(sucUpdateEntry_exports);
26
- var import_safe = require("@zwave-js/core/safe");
26
+ var import_core = require("@zwave-js/core");
27
27
  var import_shared = require("@zwave-js/shared");
28
28
  var import_consts = require("../../consts.js");
29
29
  function parseSUCUpdateEntry(buffer, offset) {
@@ -33,7 +33,7 @@ function parseSUCUpdateEntry(buffer, offset) {
33
33
  }
34
34
  const nodeId = slice[0];
35
35
  const changeType = slice[1];
36
- const { supportedCCs, controlledCCs } = (0, import_safe.parseCCList)(slice.subarray(2, import_consts.SUC_UPDATE_ENTRY_SIZE));
36
+ const { supportedCCs, controlledCCs } = (0, import_core.parseCCList)(slice.subarray(2, import_consts.SUC_UPDATE_ENTRY_SIZE));
37
37
  return {
38
38
  nodeId,
39
39
  changeType,
@@ -47,9 +47,9 @@ function encodeSUCUpdateEntry(entry) {
47
47
  if (entry) {
48
48
  ret[0] = entry.nodeId;
49
49
  ret[1] = entry.changeType;
50
- const ccList = (0, import_safe.encodeCCList)(entry.supportedCCs, entry.controlledCCs);
50
+ const ccList = (0, import_core.encodeCCList)(entry.supportedCCs, entry.controlledCCs);
51
51
  if (ccList.length > import_consts.SUC_UPDATE_NODEPARM_MAX) {
52
- throw new import_safe.ZWaveError("Cannot encode SUC update entry, too many CCs", import_safe.ZWaveErrorCodes.Argument_Invalid);
52
+ throw new import_core.ZWaveError("Cannot encode SUC update entry, too many CCs", import_core.ZWaveErrorCodes.Argument_Invalid);
53
53
  }
54
54
  ret.set(ccList, 2);
55
55
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/common/sucUpdateEntry.ts"],
4
- "sourcesContent": ["import {\n\ttype CommandClasses,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeCCList,\n\tparseCCList,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport {\n\tSUC_UPDATE_ENTRY_SIZE,\n\tSUC_UPDATE_NODEPARM_MAX,\n} from \"../../consts.js\";\n\nexport interface SUCUpdateEntry {\n\tnodeId: number;\n\tchangeType: number; // TODO: This is some kind of enum\n\tsupportedCCs: CommandClasses[];\n\tcontrolledCCs: CommandClasses[];\n}\n\nexport function parseSUCUpdateEntry(\n\tbuffer: Uint8Array,\n\toffset: number,\n): SUCUpdateEntry | undefined {\n\tconst slice = buffer.subarray(offset, offset + SUC_UPDATE_ENTRY_SIZE);\n\tif (slice.every((b) => b === 0x00 || b === 0xff)) {\n\t\treturn;\n\t}\n\tconst nodeId = slice[0];\n\tconst changeType = slice[1];\n\tconst { supportedCCs, controlledCCs } = parseCCList(\n\t\tslice.subarray(2, SUC_UPDATE_ENTRY_SIZE),\n\t);\n\treturn {\n\t\tnodeId,\n\t\tchangeType,\n\t\tsupportedCCs: supportedCCs.filter((cc) => cc > 0),\n\t\tcontrolledCCs: controlledCCs.filter((cc) => cc > 0),\n\t};\n}\n\nexport function encodeSUCUpdateEntry(\n\tentry: SUCUpdateEntry | undefined,\n): Bytes {\n\tconst ret = new Bytes(SUC_UPDATE_ENTRY_SIZE).fill(0);\n\tif (entry) {\n\t\tret[0] = entry.nodeId;\n\t\tret[1] = entry.changeType;\n\t\tconst ccList = encodeCCList(entry.supportedCCs, entry.controlledCCs);\n\t\tif (ccList.length > SUC_UPDATE_NODEPARM_MAX) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"Cannot encode SUC update entry, too many CCs\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tret.set(ccList, 2);\n\t}\n\treturn ret;\n}\n"],
4
+ "sourcesContent": ["import {\n\ttype CommandClasses,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeCCList,\n\tparseCCList,\n} from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport {\n\tSUC_UPDATE_ENTRY_SIZE,\n\tSUC_UPDATE_NODEPARM_MAX,\n} from \"../../consts.js\";\n\nexport interface SUCUpdateEntry {\n\tnodeId: number;\n\tchangeType: number; // TODO: This is some kind of enum\n\tsupportedCCs: CommandClasses[];\n\tcontrolledCCs: CommandClasses[];\n}\n\nexport function parseSUCUpdateEntry(\n\tbuffer: Uint8Array,\n\toffset: number,\n): SUCUpdateEntry | undefined {\n\tconst slice = buffer.subarray(offset, offset + SUC_UPDATE_ENTRY_SIZE);\n\tif (slice.every((b) => b === 0x00 || b === 0xff)) {\n\t\treturn;\n\t}\n\tconst nodeId = slice[0];\n\tconst changeType = slice[1];\n\tconst { supportedCCs, controlledCCs } = parseCCList(\n\t\tslice.subarray(2, SUC_UPDATE_ENTRY_SIZE),\n\t);\n\treturn {\n\t\tnodeId,\n\t\tchangeType,\n\t\tsupportedCCs: supportedCCs.filter((cc) => cc > 0),\n\t\tcontrolledCCs: controlledCCs.filter((cc) => cc > 0),\n\t};\n}\n\nexport function encodeSUCUpdateEntry(\n\tentry: SUCUpdateEntry | undefined,\n): Bytes {\n\tconst ret = new Bytes(SUC_UPDATE_ENTRY_SIZE).fill(0);\n\tif (entry) {\n\t\tret[0] = entry.nodeId;\n\t\tret[1] = entry.changeType;\n\t\tconst ccList = encodeCCList(entry.supportedCCs, entry.controlledCCs);\n\t\tif (ccList.length > SUC_UPDATE_NODEPARM_MAX) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"Cannot encode SUC update entry, too many CCs\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tret.set(ccList, 2);\n\t}\n\treturn ret;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAAA,kBAMO;AACP,oBAAsB;AACtB,oBAGO;AASD,SAAU,oBACf,QACA,QAAc;AAEd,QAAM,QAAQ,OAAO,SAAS,QAAQ,SAAS,mCAAqB;AACpE,MAAI,MAAM,MAAM,CAAC,MAAM,MAAM,KAAQ,MAAM,GAAI,GAAG;AACjD;EACD;AACA,QAAM,SAAS,MAAM,CAAC;AACtB,QAAM,aAAa,MAAM,CAAC;AAC1B,QAAM,EAAE,cAAc,cAAa,QAAK,yBACvC,MAAM,SAAS,GAAG,mCAAqB,CAAC;AAEzC,SAAO;IACN;IACA;IACA,cAAc,aAAa,OAAO,CAAC,OAAO,KAAK,CAAC;IAChD,eAAe,cAAc,OAAO,CAAC,OAAO,KAAK,CAAC;;AAEpD;AAnBgB;AAqBV,SAAU,qBACf,OAAiC;AAEjC,QAAM,MAAM,IAAI,oBAAM,mCAAqB,EAAE,KAAK,CAAC;AACnD,MAAI,OAAO;AACV,QAAI,CAAC,IAAI,MAAM;AACf,QAAI,CAAC,IAAI,MAAM;AACf,UAAM,aAAS,0BAAa,MAAM,cAAc,MAAM,aAAa;AACnE,QAAI,OAAO,SAAS,uCAAyB;AAC5C,YAAM,IAAI,uBACT,gDACA,4BAAgB,gBAAgB;IAElC;AACA,QAAI,IAAI,QAAQ,CAAC;EAClB;AACA,SAAO;AACR;AAjBgB;",
6
6
  "names": []
7
7
  }
@@ -28,34 +28,34 @@ __export(utils_exports, {
28
28
  nvmWriteBuffer: () => nvmWriteBuffer
29
29
  });
30
30
  module.exports = __toCommonJS(utils_exports);
31
- var import_safe = require("@zwave-js/shared/safe");
31
+ var import_shared = require("@zwave-js/shared");
32
32
  async function nvmReadUInt32LE(io, position) {
33
33
  const { buffer } = await io.read(position, 4);
34
- const bytes = import_safe.Bytes.view(buffer);
34
+ const bytes = import_shared.Bytes.view(buffer);
35
35
  return bytes.readUInt32LE(0);
36
36
  }
37
37
  __name(nvmReadUInt32LE, "nvmReadUInt32LE");
38
38
  async function nvmReadUInt16LE(io, position) {
39
39
  const { buffer } = await io.read(position, 2);
40
- const bytes = import_safe.Bytes.view(buffer);
40
+ const bytes = import_shared.Bytes.view(buffer);
41
41
  return bytes.readUInt16LE(0);
42
42
  }
43
43
  __name(nvmReadUInt16LE, "nvmReadUInt16LE");
44
44
  async function nvmReadUInt32BE(io, position) {
45
45
  const { buffer } = await io.read(position, 4);
46
- const bytes = import_safe.Bytes.view(buffer);
46
+ const bytes = import_shared.Bytes.view(buffer);
47
47
  return bytes.readUInt32BE(0);
48
48
  }
49
49
  __name(nvmReadUInt32BE, "nvmReadUInt32BE");
50
50
  async function nvmReadUInt16BE(io, position) {
51
51
  const { buffer } = await io.read(position, 2);
52
- const bytes = import_safe.Bytes.view(buffer);
52
+ const bytes = import_shared.Bytes.view(buffer);
53
53
  return bytes.readUInt16BE(0);
54
54
  }
55
55
  __name(nvmReadUInt16BE, "nvmReadUInt16BE");
56
56
  async function nvmReadUInt8(io, position) {
57
57
  const { buffer } = await io.read(position, 1);
58
- const bytes = import_safe.Bytes.view(buffer);
58
+ const bytes = import_shared.Bytes.view(buffer);
59
59
  return bytes.readUInt8(0);
60
60
  }
61
61
  __name(nvmReadUInt8, "nvmReadUInt8");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/common/utils.ts"],
4
- "sourcesContent": ["import { Bytes } from \"@zwave-js/shared/safe\";\nimport type { NVMIO } from \"./definitions.js\";\n\nexport async function nvmReadUInt32LE(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 4);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt32LE(0);\n}\n\nexport async function nvmReadUInt16LE(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 2);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt16LE(0);\n}\n\nexport async function nvmReadUInt32BE(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 4);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt32BE(0);\n}\n\nexport async function nvmReadUInt16BE(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 2);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt16BE(0);\n}\n\nexport async function nvmReadUInt8(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 1);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt8(0);\n}\n\nexport async function nvmWriteBuffer(\n\tio: NVMIO,\n\tposition: number,\n\tbuffer: Uint8Array,\n): Promise<void> {\n\tconst chunkSize = await io.determineChunkSize();\n\tlet offset = 0;\n\twhile (offset < buffer.length) {\n\t\tconst chunk = buffer.subarray(offset, offset + chunkSize);\n\t\tconst { bytesWritten } = await io.write(position + offset, chunk);\n\t\toffset += bytesWritten;\n\t}\n}\n\nexport async function nvmReadBuffer(\n\tio: NVMIO,\n\tposition: number,\n\tlength: number,\n): Promise<Uint8Array> {\n\tconst ret = new Uint8Array(length);\n\tconst chunkSize = await io.determineChunkSize();\n\tlet offset = 0;\n\twhile (offset < length) {\n\t\tconst { buffer, endOfFile } = await io.read(\n\t\t\tposition + offset,\n\t\t\tMath.min(chunkSize, length - offset),\n\t\t);\n\t\tret.set(buffer, offset);\n\t\toffset += buffer.length;\n\t\tif (endOfFile) break;\n\t}\n\treturn ret.subarray(0, offset);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAAA,kBAAsB;AAGtB,eAAsB,gBACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,kBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,aAAa,CAAC;AAC5B;AAPsB;AAStB,eAAsB,gBACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,kBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,aAAa,CAAC;AAC5B;AAPsB;AAStB,eAAsB,gBACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,kBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,aAAa,CAAC;AAC5B;AAPsB;AAStB,eAAsB,gBACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,kBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,aAAa,CAAC;AAC5B;AAPsB;AAStB,eAAsB,aACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,kBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,UAAU,CAAC;AACzB;AAPsB;AAStB,eAAsB,eACrB,IACA,UACA,QAAkB;AAElB,QAAM,YAAY,MAAM,GAAG,mBAAkB;AAC7C,MAAI,SAAS;AACb,SAAO,SAAS,OAAO,QAAQ;AAC9B,UAAM,QAAQ,OAAO,SAAS,QAAQ,SAAS,SAAS;AACxD,UAAM,EAAE,aAAY,IAAK,MAAM,GAAG,MAAM,WAAW,QAAQ,KAAK;AAChE,cAAU;EACX;AACD;AAZsB;AActB,eAAsB,cACrB,IACA,UACA,QAAc;AAEd,QAAM,MAAM,IAAI,WAAW,MAAM;AACjC,QAAM,YAAY,MAAM,GAAG,mBAAkB;AAC7C,MAAI,SAAS;AACb,SAAO,SAAS,QAAQ;AACvB,UAAM,EAAE,QAAQ,UAAS,IAAK,MAAM,GAAG,KACtC,WAAW,QACX,KAAK,IAAI,WAAW,SAAS,MAAM,CAAC;AAErC,QAAI,IAAI,QAAQ,MAAM;AACtB,cAAU,OAAO;AACjB,QAAI;AAAW;EAChB;AACA,SAAO,IAAI,SAAS,GAAG,MAAM;AAC9B;AAlBsB;",
4
+ "sourcesContent": ["import { Bytes } from \"@zwave-js/shared\";\nimport type { NVMIO } from \"./definitions.js\";\n\nexport async function nvmReadUInt32LE(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 4);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt32LE(0);\n}\n\nexport async function nvmReadUInt16LE(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 2);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt16LE(0);\n}\n\nexport async function nvmReadUInt32BE(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 4);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt32BE(0);\n}\n\nexport async function nvmReadUInt16BE(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 2);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt16BE(0);\n}\n\nexport async function nvmReadUInt8(\n\tio: NVMIO,\n\tposition: number,\n): Promise<number> {\n\tconst { buffer } = await io.read(position, 1);\n\tconst bytes = Bytes.view(buffer);\n\treturn bytes.readUInt8(0);\n}\n\nexport async function nvmWriteBuffer(\n\tio: NVMIO,\n\tposition: number,\n\tbuffer: Uint8Array,\n): Promise<void> {\n\tconst chunkSize = await io.determineChunkSize();\n\tlet offset = 0;\n\twhile (offset < buffer.length) {\n\t\tconst chunk = buffer.subarray(offset, offset + chunkSize);\n\t\tconst { bytesWritten } = await io.write(position + offset, chunk);\n\t\toffset += bytesWritten;\n\t}\n}\n\nexport async function nvmReadBuffer(\n\tio: NVMIO,\n\tposition: number,\n\tlength: number,\n): Promise<Uint8Array> {\n\tconst ret = new Uint8Array(length);\n\tconst chunkSize = await io.determineChunkSize();\n\tlet offset = 0;\n\twhile (offset < length) {\n\t\tconst { buffer, endOfFile } = await io.read(\n\t\t\tposition + offset,\n\t\t\tMath.min(chunkSize, length - offset),\n\t\t);\n\t\tret.set(buffer, offset);\n\t\toffset += buffer.length;\n\t\tif (endOfFile) break;\n\t}\n\treturn ret.subarray(0, offset);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAAA,oBAAsB;AAGtB,eAAsB,gBACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,oBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,aAAa,CAAC;AAC5B;AAPsB;AAStB,eAAsB,gBACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,oBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,aAAa,CAAC;AAC5B;AAPsB;AAStB,eAAsB,gBACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,oBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,aAAa,CAAC;AAC5B;AAPsB;AAStB,eAAsB,gBACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,oBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,aAAa,CAAC;AAC5B;AAPsB;AAStB,eAAsB,aACrB,IACA,UAAgB;AAEhB,QAAM,EAAE,OAAM,IAAK,MAAM,GAAG,KAAK,UAAU,CAAC;AAC5C,QAAM,QAAQ,oBAAM,KAAK,MAAM;AAC/B,SAAO,MAAM,UAAU,CAAC;AACzB;AAPsB;AAStB,eAAsB,eACrB,IACA,UACA,QAAkB;AAElB,QAAM,YAAY,MAAM,GAAG,mBAAkB;AAC7C,MAAI,SAAS;AACb,SAAO,SAAS,OAAO,QAAQ;AAC9B,UAAM,QAAQ,OAAO,SAAS,QAAQ,SAAS,SAAS;AACxD,UAAM,EAAE,aAAY,IAAK,MAAM,GAAG,MAAM,WAAW,QAAQ,KAAK;AAChE,cAAU;EACX;AACD;AAZsB;AActB,eAAsB,cACrB,IACA,UACA,QAAc;AAEd,QAAM,MAAM,IAAI,WAAW,MAAM;AACjC,QAAM,YAAY,MAAM,GAAG,mBAAkB;AAC7C,MAAI,SAAS;AACb,SAAO,SAAS,QAAQ;AACvB,UAAM,EAAE,QAAQ,UAAS,IAAK,MAAM,GAAG,KACtC,WAAW,QACX,KAAK,IAAI,WAAW,SAAS,MAAM,CAAC;AAErC,QAAI,IAAI,QAAQ,MAAM;AACtB,cAAU,OAAO;AACjB,QAAI;AAAW;EAChB;AACA,SAAO,IAAI,SAAS,GAAG,MAAM;AAC9B;AAlBsB;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import { type NVMAccess, type NVMIO } from "../common/definitions.js";
1
+ import type { NVMAccess, NVMIO } from "../common/definitions.js";
2
2
  export declare class BufferedNVMReader implements NVMIO {
3
3
  constructor(inner: NVMIO);
4
4
  private _inner;
@@ -22,7 +22,7 @@ __export(BufferedNVMReader_exports, {
22
22
  BufferedNVMReader: () => BufferedNVMReader
23
23
  });
24
24
  module.exports = __toCommonJS(BufferedNVMReader_exports);
25
- var import_safe = require("@zwave-js/shared/safe");
25
+ var import_shared = require("@zwave-js/shared");
26
26
  class BufferedNVMReader {
27
27
  static {
28
28
  __name(this, "BufferedNVMReader");
@@ -66,7 +66,7 @@ class BufferedNVMReader {
66
66
  if (secondChunkStart > firstChunkStart) {
67
67
  chunks.push(await this.readBuffered(secondChunkStart, chunkSize));
68
68
  }
69
- const alignedBuffer = import_safe.Bytes.concat(chunks);
69
+ const alignedBuffer = import_shared.Bytes.concat(chunks);
70
70
  const endOfFile = offset + length >= this.size;
71
71
  const buffer = alignedBuffer.subarray(offset - firstChunkStart, offset - firstChunkStart + length);
72
72
  return {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/io/BufferedNVMReader.ts"],
4
- "sourcesContent": ["import { Bytes } from \"@zwave-js/shared/safe\";\nimport { type NVMAccess, type NVMIO } from \"../common/definitions.js\";\n\ninterface BufferedChunk {\n\toffset: number;\n\tdata: Uint8Array;\n}\n\nexport class BufferedNVMReader implements NVMIO {\n\tpublic constructor(inner: NVMIO) {\n\t\tthis._inner = inner;\n\t}\n\n\tprivate _inner: NVMIO;\n\t// Already-read chunks. There are a few rules to follow:\n\t// - Offsets MUST be multiples of the chunk size\n\t// - The size of each chunk must be exactly the chunk size\n\tprivate _buffer: BufferedChunk[] = [];\n\n\topen(access: NVMAccess.Read | NVMAccess.Write): Promise<NVMAccess> {\n\t\treturn this._inner.open(access);\n\t}\n\tget size(): number {\n\t\treturn this._inner.size;\n\t}\n\tget accessMode(): NVMAccess {\n\t\treturn this._inner.accessMode;\n\t}\n\tdetermineChunkSize(): Promise<number> {\n\t\treturn this._inner.determineChunkSize();\n\t}\n\n\tprivate async readBuffered(\n\t\talignedOffset: number,\n\t\tchunkSize: number,\n\t): Promise<Uint8Array> {\n\t\tlet buffered = this._buffer.find((chunk) =>\n\t\t\tchunk.offset === alignedOffset\n\t\t);\n\t\tif (!buffered) {\n\t\t\tconst { buffer: data } = await this._inner.read(\n\t\t\t\talignedOffset,\n\t\t\t\tchunkSize,\n\t\t\t);\n\t\t\tbuffered = { data, offset: alignedOffset };\n\t\t\tthis._buffer.push(buffered);\n\t\t}\n\t\treturn buffered.data;\n\t}\n\n\tasync read(\n\t\toffset: number,\n\t\tlength: number,\n\t): Promise<{ buffer: Uint8Array; endOfFile: boolean }> {\n\t\t// Limit the read size to the chunk size. This ensures we have to deal with maximum 2 chunks or read requests\n\t\tconst chunkSize = await this.determineChunkSize();\n\t\tlength = Math.min(length, chunkSize);\n\n\t\t// Figure out at which offsets to read\n\t\tconst firstChunkStart = offset - offset % chunkSize;\n\t\tconst secondChunkStart = (offset + length)\n\t\t\t- (offset + length) % chunkSize;\n\n\t\t// Read one or two chunks, depending on how many are needed\n\t\tconst chunks: Uint8Array[] = [];\n\t\tchunks.push(await this.readBuffered(firstChunkStart, chunkSize));\n\t\tif (secondChunkStart > firstChunkStart) {\n\t\t\tchunks.push(await this.readBuffered(secondChunkStart, chunkSize));\n\t\t}\n\t\tconst alignedBuffer = Bytes.concat(chunks);\n\n\t\t// Then slice out the section we need\n\t\tconst endOfFile = offset + length >= this.size;\n\t\tconst buffer = alignedBuffer.subarray(\n\t\t\toffset - firstChunkStart,\n\t\t\toffset - firstChunkStart + length,\n\t\t);\n\n\t\treturn {\n\t\t\tbuffer,\n\t\t\tendOfFile,\n\t\t};\n\t}\n\n\tasync write(\n\t\toffset: number,\n\t\tdata: Uint8Array,\n\t): Promise<{ bytesWritten: number; endOfFile: boolean }> {\n\t\tconst ret = await this._inner.write(offset, data);\n\n\t\t// Invalidate cached chunks\n\t\tconst chunkSize = await this.determineChunkSize();\n\t\t// Figure out at which offsets to read\n\t\tconst firstChunkStart = offset - offset % chunkSize;\n\t\tconst lastChunkStart = (offset + ret.bytesWritten)\n\t\t\t- (offset + ret.bytesWritten) % chunkSize;\n\n\t\t// TODO: We should update existing chunks where possible\n\t\tfor (let i = firstChunkStart; i <= lastChunkStart; i += chunkSize) {\n\t\t\tconst index = this._buffer.findIndex((chunk) => chunk.offset === i);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis._buffer.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\tclose(): Promise<void> {\n\t\treturn this._inner.close();\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,kBAAsB;AAQhB,MAAO,kBAAiB;EAR9B,OAQ8B;;;EAC7B,YAAmB,OAAY;AAC9B,SAAK,SAAS;EACf;EAEQ;;;;EAIA,UAA2B,CAAA;EAEnC,KAAK,QAAwC;AAC5C,WAAO,KAAK,OAAO,KAAK,MAAM;EAC/B;EACA,IAAI,OAAI;AACP,WAAO,KAAK,OAAO;EACpB;EACA,IAAI,aAAU;AACb,WAAO,KAAK,OAAO;EACpB;EACA,qBAAkB;AACjB,WAAO,KAAK,OAAO,mBAAkB;EACtC;EAEQ,MAAM,aACb,eACA,WAAiB;AAEjB,QAAI,WAAW,KAAK,QAAQ,KAAK,CAAC,UACjC,MAAM,WAAW,aAAa;AAE/B,QAAI,CAAC,UAAU;AACd,YAAM,EAAE,QAAQ,KAAI,IAAK,MAAM,KAAK,OAAO,KAC1C,eACA,SAAS;AAEV,iBAAW,EAAE,MAAM,QAAQ,cAAa;AACxC,WAAK,QAAQ,KAAK,QAAQ;IAC3B;AACA,WAAO,SAAS;EACjB;EAEA,MAAM,KACL,QACA,QAAc;AAGd,UAAM,YAAY,MAAM,KAAK,mBAAkB;AAC/C,aAAS,KAAK,IAAI,QAAQ,SAAS;AAGnC,UAAM,kBAAkB,SAAS,SAAS;AAC1C,UAAM,mBAAoB,SAAS,UAC/B,SAAS,UAAU;AAGvB,UAAM,SAAuB,CAAA;AAC7B,WAAO,KAAK,MAAM,KAAK,aAAa,iBAAiB,SAAS,CAAC;AAC/D,QAAI,mBAAmB,iBAAiB;AACvC,aAAO,KAAK,MAAM,KAAK,aAAa,kBAAkB,SAAS,CAAC;IACjE;AACA,UAAM,gBAAgB,kBAAM,OAAO,MAAM;AAGzC,UAAM,YAAY,SAAS,UAAU,KAAK;AAC1C,UAAM,SAAS,cAAc,SAC5B,SAAS,iBACT,SAAS,kBAAkB,MAAM;AAGlC,WAAO;MACN;MACA;;EAEF;EAEA,MAAM,MACL,QACA,MAAgB;AAEhB,UAAM,MAAM,MAAM,KAAK,OAAO,MAAM,QAAQ,IAAI;AAGhD,UAAM,YAAY,MAAM,KAAK,mBAAkB;AAE/C,UAAM,kBAAkB,SAAS,SAAS;AAC1C,UAAM,iBAAkB,SAAS,IAAI,gBACjC,SAAS,IAAI,gBAAgB;AAGjC,aAAS,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,WAAW;AAClE,YAAM,QAAQ,KAAK,QAAQ,UAAU,CAAC,UAAU,MAAM,WAAW,CAAC;AAClE,UAAI,UAAU,IAAI;AACjB,aAAK,QAAQ,OAAO,OAAO,CAAC;MAC7B;IACD;AAEA,WAAO;EACR;EAEA,QAAK;AACJ,WAAO,KAAK,OAAO,MAAK;EACzB;;",
4
+ "sourcesContent": ["import { Bytes } from \"@zwave-js/shared\";\nimport type { NVMAccess, NVMIO } from \"../common/definitions.js\";\n\ninterface BufferedChunk {\n\toffset: number;\n\tdata: Uint8Array;\n}\n\nexport class BufferedNVMReader implements NVMIO {\n\tpublic constructor(inner: NVMIO) {\n\t\tthis._inner = inner;\n\t}\n\n\tprivate _inner: NVMIO;\n\t// Already-read chunks. There are a few rules to follow:\n\t// - Offsets MUST be multiples of the chunk size\n\t// - The size of each chunk must be exactly the chunk size\n\tprivate _buffer: BufferedChunk[] = [];\n\n\topen(access: NVMAccess.Read | NVMAccess.Write): Promise<NVMAccess> {\n\t\treturn this._inner.open(access);\n\t}\n\tget size(): number {\n\t\treturn this._inner.size;\n\t}\n\tget accessMode(): NVMAccess {\n\t\treturn this._inner.accessMode;\n\t}\n\tdetermineChunkSize(): Promise<number> {\n\t\treturn this._inner.determineChunkSize();\n\t}\n\n\tprivate async readBuffered(\n\t\talignedOffset: number,\n\t\tchunkSize: number,\n\t): Promise<Uint8Array> {\n\t\tlet buffered = this._buffer.find((chunk) =>\n\t\t\tchunk.offset === alignedOffset\n\t\t);\n\t\tif (!buffered) {\n\t\t\tconst { buffer: data } = await this._inner.read(\n\t\t\t\talignedOffset,\n\t\t\t\tchunkSize,\n\t\t\t);\n\t\t\tbuffered = { data, offset: alignedOffset };\n\t\t\tthis._buffer.push(buffered);\n\t\t}\n\t\treturn buffered.data;\n\t}\n\n\tasync read(\n\t\toffset: number,\n\t\tlength: number,\n\t): Promise<{ buffer: Uint8Array; endOfFile: boolean }> {\n\t\t// Limit the read size to the chunk size. This ensures we have to deal with maximum 2 chunks or read requests\n\t\tconst chunkSize = await this.determineChunkSize();\n\t\tlength = Math.min(length, chunkSize);\n\n\t\t// Figure out at which offsets to read\n\t\tconst firstChunkStart = offset - offset % chunkSize;\n\t\tconst secondChunkStart = (offset + length)\n\t\t\t- (offset + length) % chunkSize;\n\n\t\t// Read one or two chunks, depending on how many are needed\n\t\tconst chunks: Uint8Array[] = [];\n\t\tchunks.push(await this.readBuffered(firstChunkStart, chunkSize));\n\t\tif (secondChunkStart > firstChunkStart) {\n\t\t\tchunks.push(await this.readBuffered(secondChunkStart, chunkSize));\n\t\t}\n\t\tconst alignedBuffer = Bytes.concat(chunks);\n\n\t\t// Then slice out the section we need\n\t\tconst endOfFile = offset + length >= this.size;\n\t\tconst buffer = alignedBuffer.subarray(\n\t\t\toffset - firstChunkStart,\n\t\t\toffset - firstChunkStart + length,\n\t\t);\n\n\t\treturn {\n\t\t\tbuffer,\n\t\t\tendOfFile,\n\t\t};\n\t}\n\n\tasync write(\n\t\toffset: number,\n\t\tdata: Uint8Array,\n\t): Promise<{ bytesWritten: number; endOfFile: boolean }> {\n\t\tconst ret = await this._inner.write(offset, data);\n\n\t\t// Invalidate cached chunks\n\t\tconst chunkSize = await this.determineChunkSize();\n\t\t// Figure out at which offsets to read\n\t\tconst firstChunkStart = offset - offset % chunkSize;\n\t\tconst lastChunkStart = (offset + ret.bytesWritten)\n\t\t\t- (offset + ret.bytesWritten) % chunkSize;\n\n\t\t// TODO: We should update existing chunks where possible\n\t\tfor (let i = firstChunkStart; i <= lastChunkStart; i += chunkSize) {\n\t\t\tconst index = this._buffer.findIndex((chunk) => chunk.offset === i);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis._buffer.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\tclose(): Promise<void> {\n\t\treturn this._inner.close();\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,oBAAsB;AAQhB,MAAO,kBAAiB;EAR9B,OAQ8B;;;EAC7B,YAAmB,OAAY;AAC9B,SAAK,SAAS;EACf;EAEQ;;;;EAIA,UAA2B,CAAA;EAEnC,KAAK,QAAwC;AAC5C,WAAO,KAAK,OAAO,KAAK,MAAM;EAC/B;EACA,IAAI,OAAI;AACP,WAAO,KAAK,OAAO;EACpB;EACA,IAAI,aAAU;AACb,WAAO,KAAK,OAAO;EACpB;EACA,qBAAkB;AACjB,WAAO,KAAK,OAAO,mBAAkB;EACtC;EAEQ,MAAM,aACb,eACA,WAAiB;AAEjB,QAAI,WAAW,KAAK,QAAQ,KAAK,CAAC,UACjC,MAAM,WAAW,aAAa;AAE/B,QAAI,CAAC,UAAU;AACd,YAAM,EAAE,QAAQ,KAAI,IAAK,MAAM,KAAK,OAAO,KAC1C,eACA,SAAS;AAEV,iBAAW,EAAE,MAAM,QAAQ,cAAa;AACxC,WAAK,QAAQ,KAAK,QAAQ;IAC3B;AACA,WAAO,SAAS;EACjB;EAEA,MAAM,KACL,QACA,QAAc;AAGd,UAAM,YAAY,MAAM,KAAK,mBAAkB;AAC/C,aAAS,KAAK,IAAI,QAAQ,SAAS;AAGnC,UAAM,kBAAkB,SAAS,SAAS;AAC1C,UAAM,mBAAoB,SAAS,UAC/B,SAAS,UAAU;AAGvB,UAAM,SAAuB,CAAA;AAC7B,WAAO,KAAK,MAAM,KAAK,aAAa,iBAAiB,SAAS,CAAC;AAC/D,QAAI,mBAAmB,iBAAiB;AACvC,aAAO,KAAK,MAAM,KAAK,aAAa,kBAAkB,SAAS,CAAC;IACjE;AACA,UAAM,gBAAgB,oBAAM,OAAO,MAAM;AAGzC,UAAM,YAAY,SAAS,UAAU,KAAK;AAC1C,UAAM,SAAS,cAAc,SAC5B,SAAS,iBACT,SAAS,kBAAkB,MAAM;AAGlC,WAAO;MACN;MACA;;EAEF;EAEA,MAAM,MACL,QACA,MAAgB;AAEhB,UAAM,MAAM,MAAM,KAAK,OAAO,MAAM,QAAQ,IAAI;AAGhD,UAAM,YAAY,MAAM,KAAK,mBAAkB;AAE/C,UAAM,kBAAkB,SAAS,SAAS;AAC1C,UAAM,iBAAkB,SAAS,IAAI,gBACjC,SAAS,IAAI,gBAAgB;AAGjC,aAAS,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,WAAW;AAClE,YAAM,QAAQ,KAAK,QAAQ,UAAU,CAAC,UAAU,MAAM,WAAW,CAAC;AAClE,UAAI,UAAU,IAAI;AACjB,aAAK,QAAQ,OAAO,OAAO,CAAC;MAC7B;IACD;AAEA,WAAO;EACR;EAEA,QAAK;AACJ,WAAO,KAAK,OAAO,MAAK;EACzB;;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
- import { type NVM3 } from "../NVM3.js";
2
- import { type NVMAdapter, type NVMProperty, type NVMPropertyToDataType } from "../common/definitions.js";
1
+ import type { NVM3 } from "../NVM3.js";
2
+ import type { NVMAdapter, NVMProperty, NVMPropertyToDataType } from "../common/definitions.js";
3
3
  import { NVMFile } from "./files/index.js";
4
4
  export declare class NVM3Adapter implements NVMAdapter {
5
5
  constructor(nvm: NVM3);
@@ -22,8 +22,8 @@ __export(adapter_exports, {
22
22
  NVM3Adapter: () => NVM3Adapter
23
23
  });
24
24
  module.exports = __toCommonJS(adapter_exports);
25
- var import_safe = require("@zwave-js/core/safe");
26
- var import_safe2 = require("@zwave-js/shared/safe");
25
+ var import_core = require("@zwave-js/core");
26
+ var import_shared = require("@zwave-js/shared");
27
27
  var import_helpers = require("alcalzone-shared/helpers");
28
28
  var import_consts = require("../../consts.js");
29
29
  var import_files = require("./files/index.js");
@@ -109,7 +109,7 @@ class NVM3Adapter {
109
109
  async _expectFile(fileId, skipInit = false) {
110
110
  const file = await this._getFile(fileId, skipInit);
111
111
  if (!file) {
112
- throw new import_safe.ZWaveError(`NVM file ${(0, import_safe2.num2hex)(fileId)} not found`, import_safe.ZWaveErrorCodes.NVM_ObjectNotFound);
112
+ throw new import_core.ZWaveError(`NVM file ${(0, import_shared.num2hex)(fileId)} not found`, import_core.ZWaveErrorCodes.NVM_ObjectNotFound);
113
113
  }
114
114
  return file;
115
115
  }
@@ -155,7 +155,7 @@ class NVM3Adapter {
155
155
  const file = file700 ?? file800;
156
156
  if (!file) {
157
157
  if (required) {
158
- throw new import_safe.ZWaveError("ApplicationVersionFile not found!", import_safe.ZWaveErrorCodes.NVM_ObjectNotFound);
158
+ throw new import_core.ZWaveError("ApplicationVersionFile not found!", import_core.ZWaveErrorCodes.NVM_ObjectNotFound);
159
159
  } else {
160
160
  return;
161
161
  }
@@ -347,7 +347,7 @@ class NVM3Adapter {
347
347
  }
348
348
  async setControllerNVMProperty(property, value) {
349
349
  function failFileMissing() {
350
- throw new import_safe.ZWaveError("Cannot set property in NVM for non-existing file", import_safe.ZWaveErrorCodes.NVM_ObjectNotFound);
350
+ throw new import_core.ZWaveError("Cannot set property in NVM for non-existing file", import_core.ZWaveErrorCodes.NVM_ObjectNotFound);
351
351
  }
352
352
  __name(failFileMissing, "failFileMissing");
353
353
  const expectFile = /* @__PURE__ */ __name(async (fileId) => {
@@ -379,7 +379,7 @@ class NVM3Adapter {
379
379
  const file800 = await this._getFile(import_files.ApplicationVersionFile800ID);
380
380
  const file = file700 ?? file800;
381
381
  if (!file) {
382
- throw new import_safe.ZWaveError("ApplicationVersionFile not found!", import_safe.ZWaveErrorCodes.NVM_ObjectNotFound);
382
+ throw new import_core.ZWaveError("ApplicationVersionFile not found!", import_core.ZWaveErrorCodes.NVM_ObjectNotFound);
383
383
  }
384
384
  const [major, minor, patch] = value.split(".").map((part) => parseInt(part, 10));
385
385
  file.major = major;