@willieee802/zigbee-herdsman 0.18.2 → 0.19.2

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 (329) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +67 -0
  3. package/dist/adapter/adapter.d.ts +61 -61
  4. package/dist/adapter/adapter.d.ts.map +1 -1
  5. package/dist/adapter/adapter.js +146 -146
  6. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +68 -68
  7. package/dist/adapter/deconz/adapter/deconzAdapter.js +1060 -1060
  8. package/dist/adapter/deconz/adapter/index.d.ts +2 -2
  9. package/dist/adapter/deconz/adapter/index.js +10 -10
  10. package/dist/adapter/deconz/driver/constants.d.ts +104 -104
  11. package/dist/adapter/deconz/driver/constants.js +55 -55
  12. package/dist/adapter/deconz/driver/driver.d.ts +81 -81
  13. package/dist/adapter/deconz/driver/driver.js +732 -732
  14. package/dist/adapter/deconz/driver/frame.d.ts +6 -6
  15. package/dist/adapter/deconz/driver/frame.js +13 -13
  16. package/dist/adapter/deconz/driver/frameParser.d.ts +2 -2
  17. package/dist/adapter/deconz/driver/frameParser.js +443 -443
  18. package/dist/adapter/deconz/driver/parser.d.ts +12 -12
  19. package/dist/adapter/deconz/driver/parser.js +61 -61
  20. package/dist/adapter/deconz/driver/writer.d.ts +8 -8
  21. package/dist/adapter/deconz/driver/writer.js +44 -44
  22. package/dist/adapter/events.d.ts +47 -47
  23. package/dist/adapter/events.js +14 -14
  24. package/dist/adapter/ezsp/adapter/backup.d.ts +9 -9
  25. package/dist/adapter/ezsp/adapter/backup.js +53 -53
  26. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +59 -59
  27. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  28. package/dist/adapter/ezsp/adapter/ezspAdapter.js +603 -585
  29. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  30. package/dist/adapter/ezsp/adapter/index.d.ts +2 -2
  31. package/dist/adapter/ezsp/adapter/index.js +10 -10
  32. package/dist/adapter/ezsp/driver/commands.d.ts +36 -36
  33. package/dist/adapter/ezsp/driver/commands.js +2359 -2359
  34. package/dist/adapter/ezsp/driver/consts.d.ts +10 -10
  35. package/dist/adapter/ezsp/driver/consts.js +13 -13
  36. package/dist/adapter/ezsp/driver/driver.d.ts +103 -103
  37. package/dist/adapter/ezsp/driver/driver.js +639 -639
  38. package/dist/adapter/ezsp/driver/ezsp.d.ts +96 -96
  39. package/dist/adapter/ezsp/driver/ezsp.js +586 -586
  40. package/dist/adapter/ezsp/driver/index.d.ts +3 -3
  41. package/dist/adapter/ezsp/driver/index.js +8 -8
  42. package/dist/adapter/ezsp/driver/multicast.d.ts +12 -12
  43. package/dist/adapter/ezsp/driver/multicast.js +74 -74
  44. package/dist/adapter/ezsp/driver/parser.d.ts +12 -12
  45. package/dist/adapter/ezsp/driver/parser.js +111 -111
  46. package/dist/adapter/ezsp/driver/types/basic.d.ts +62 -62
  47. package/dist/adapter/ezsp/driver/types/basic.js +208 -208
  48. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  49. package/dist/adapter/ezsp/driver/types/index.d.ts +9 -9
  50. package/dist/adapter/ezsp/driver/types/index.js +133 -133
  51. package/dist/adapter/ezsp/driver/types/named.d.ts +697 -697
  52. package/dist/adapter/ezsp/driver/types/named.js +1726 -1726
  53. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  54. package/dist/adapter/ezsp/driver/types/struct.d.ts +251 -251
  55. package/dist/adapter/ezsp/driver/types/struct.js +708 -708
  56. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  57. package/dist/adapter/ezsp/driver/uart.d.ts +44 -44
  58. package/dist/adapter/ezsp/driver/uart.js +368 -368
  59. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +2 -2
  60. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +55 -55
  61. package/dist/adapter/ezsp/driver/utils/index.d.ts +18 -18
  62. package/dist/adapter/ezsp/driver/utils/index.js +67 -67
  63. package/dist/adapter/ezsp/driver/writer.d.ts +13 -13
  64. package/dist/adapter/ezsp/driver/writer.js +88 -88
  65. package/dist/adapter/index.d.ts +4 -4
  66. package/dist/adapter/index.js +35 -35
  67. package/dist/adapter/serialPort.d.ts +8 -8
  68. package/dist/adapter/serialPort.js +22 -22
  69. package/dist/adapter/serialPort.js.map +1 -1
  70. package/dist/adapter/serialPortUtils.d.ts +12 -12
  71. package/dist/adapter/serialPortUtils.js +18 -18
  72. package/dist/adapter/socketPortUtils.d.ts +10 -10
  73. package/dist/adapter/socketPortUtils.js +16 -16
  74. package/dist/adapter/tstype.d.ts +85 -85
  75. package/dist/adapter/tstype.js +2 -2
  76. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +62 -62
  77. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  78. package/dist/adapter/z-stack/adapter/adapter-backup.js +460 -441
  79. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  80. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +150 -150
  81. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +258 -258
  82. package/dist/adapter/z-stack/adapter/endpoints.d.ts +11 -11
  83. package/dist/adapter/z-stack/adapter/endpoints.js +73 -73
  84. package/dist/adapter/z-stack/adapter/index.d.ts +2 -2
  85. package/dist/adapter/z-stack/adapter/index.js +8 -8
  86. package/dist/adapter/z-stack/adapter/manager.d.ts +86 -86
  87. package/dist/adapter/z-stack/adapter/manager.js +476 -476
  88. package/dist/adapter/z-stack/adapter/tstype.d.ts +6 -6
  89. package/dist/adapter/z-stack/adapter/tstype.js +10 -10
  90. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +81 -81
  91. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  92. package/dist/adapter/z-stack/adapter/zStackAdapter.js +868 -868
  93. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  94. package/dist/adapter/z-stack/constants/af.d.ts +23 -23
  95. package/dist/adapter/z-stack/constants/af.js +27 -27
  96. package/dist/adapter/z-stack/constants/common.d.ts +278 -278
  97. package/dist/adapter/z-stack/constants/common.js +289 -289
  98. package/dist/adapter/z-stack/constants/dbg.d.ts +22 -22
  99. package/dist/adapter/z-stack/constants/dbg.js +24 -24
  100. package/dist/adapter/z-stack/constants/index.d.ts +10 -10
  101. package/dist/adapter/z-stack/constants/index.js +47 -47
  102. package/dist/adapter/z-stack/constants/mac.d.ts +127 -127
  103. package/dist/adapter/z-stack/constants/mac.js +129 -129
  104. package/dist/adapter/z-stack/constants/sapi.d.ts +24 -24
  105. package/dist/adapter/z-stack/constants/sapi.js +26 -26
  106. package/dist/adapter/z-stack/constants/sys.d.ts +71 -71
  107. package/dist/adapter/z-stack/constants/sys.js +73 -73
  108. package/dist/adapter/z-stack/constants/util.d.ts +81 -81
  109. package/dist/adapter/z-stack/constants/util.js +83 -83
  110. package/dist/adapter/z-stack/constants/utils.d.ts +4 -4
  111. package/dist/adapter/z-stack/constants/utils.js +14 -14
  112. package/dist/adapter/z-stack/constants/zdo.d.ts +102 -102
  113. package/dist/adapter/z-stack/constants/zdo.js +104 -104
  114. package/dist/adapter/z-stack/models/index.d.ts +1 -1
  115. package/dist/adapter/z-stack/models/index.js +17 -17
  116. package/dist/adapter/z-stack/models/startup-options.d.ts +12 -12
  117. package/dist/adapter/z-stack/models/startup-options.js +2 -2
  118. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +23 -23
  119. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +45 -45
  120. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +10 -10
  121. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +22 -22
  122. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +10 -10
  123. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +21 -21
  124. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +10 -10
  125. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +23 -23
  126. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +10 -10
  127. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +24 -24
  128. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +10 -10
  129. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +23 -23
  130. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +8 -8
  131. package/dist/adapter/z-stack/structs/entries/channel-list.js +15 -15
  132. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +8 -8
  133. package/dist/adapter/z-stack/structs/entries/has-configured.js +16 -16
  134. package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
  135. package/dist/adapter/z-stack/structs/entries/index.js +32 -32
  136. package/dist/adapter/z-stack/structs/entries/nib.d.ts +10 -10
  137. package/dist/adapter/z-stack/structs/entries/nib.js +68 -68
  138. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +10 -10
  139. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +18 -18
  140. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +8 -8
  141. package/dist/adapter/z-stack/structs/entries/nwk-key.js +15 -15
  142. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +8 -8
  143. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +15 -15
  144. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +13 -13
  145. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +23 -23
  146. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +10 -10
  147. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +22 -22
  148. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +20 -20
  149. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +36 -36
  150. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +10 -10
  151. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +24 -24
  152. package/dist/adapter/z-stack/structs/index.d.ts +4 -4
  153. package/dist/adapter/z-stack/structs/index.js +20 -20
  154. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +13 -13
  155. package/dist/adapter/z-stack/structs/serializable-memory-object.js +2 -2
  156. package/dist/adapter/z-stack/structs/struct.d.ts +99 -99
  157. package/dist/adapter/z-stack/structs/struct.js +295 -295
  158. package/dist/adapter/z-stack/structs/table.d.ts +94 -94
  159. package/dist/adapter/z-stack/structs/table.js +161 -161
  160. package/dist/adapter/z-stack/unpi/constants.d.ts +28 -28
  161. package/dist/adapter/z-stack/unpi/constants.js +41 -41
  162. package/dist/adapter/z-stack/unpi/frame.d.ts +16 -16
  163. package/dist/adapter/z-stack/unpi/frame.js +48 -48
  164. package/dist/adapter/z-stack/unpi/index.d.ts +5 -5
  165. package/dist/adapter/z-stack/unpi/index.js +37 -37
  166. package/dist/adapter/z-stack/unpi/parser.d.ts +10 -10
  167. package/dist/adapter/z-stack/unpi/parser.js +74 -74
  168. package/dist/adapter/z-stack/unpi/writer.d.ts +10 -10
  169. package/dist/adapter/z-stack/unpi/writer.js +44 -44
  170. package/dist/adapter/z-stack/utils/channel-list.d.ts +20 -20
  171. package/dist/adapter/z-stack/utils/channel-list.js +40 -40
  172. package/dist/adapter/z-stack/utils/index.d.ts +2 -2
  173. package/dist/adapter/z-stack/utils/index.js +18 -18
  174. package/dist/adapter/z-stack/utils/network-options.d.ts +8 -8
  175. package/dist/adapter/z-stack/utils/network-options.js +22 -22
  176. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +11 -11
  177. package/dist/adapter/z-stack/znp/buffaloZnp.js +113 -113
  178. package/dist/adapter/z-stack/znp/definition.d.ts +5 -5
  179. package/dist/adapter/z-stack/znp/definition.js +3050 -3050
  180. package/dist/adapter/z-stack/znp/index.d.ts +3 -3
  181. package/dist/adapter/z-stack/znp/index.js +10 -10
  182. package/dist/adapter/z-stack/znp/parameterType.d.ts +22 -22
  183. package/dist/adapter/z-stack/znp/parameterType.js +25 -25
  184. package/dist/adapter/z-stack/znp/tstype.d.ts +21 -21
  185. package/dist/adapter/z-stack/znp/tstype.js +2 -2
  186. package/dist/adapter/z-stack/znp/znp.d.ts +43 -43
  187. package/dist/adapter/z-stack/znp/znp.js +325 -325
  188. package/dist/adapter/z-stack/znp/zpiObject.d.ts +19 -19
  189. package/dist/adapter/z-stack/znp/zpiObject.js +96 -96
  190. package/dist/adapter/zigate/adapter/index.d.ts +2 -2
  191. package/dist/adapter/zigate/adapter/index.js +10 -10
  192. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +69 -69
  193. package/dist/adapter/zigate/adapter/zigateAdapter.js +678 -678
  194. package/dist/adapter/zigate/debug.d.ts +7 -7
  195. package/dist/adapter/zigate/debug.js +22 -22
  196. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +18 -18
  197. package/dist/adapter/zigate/driver/buffaloZiGate.js +139 -139
  198. package/dist/adapter/zigate/driver/commandType.d.ts +41 -41
  199. package/dist/adapter/zigate/driver/commandType.js +385 -385
  200. package/dist/adapter/zigate/driver/constants.d.ts +276 -276
  201. package/dist/adapter/zigate/driver/constants.js +371 -371
  202. package/dist/adapter/zigate/driver/frame.d.ts +26 -26
  203. package/dist/adapter/zigate/driver/frame.js +172 -172
  204. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  205. package/dist/adapter/zigate/driver/messageType.d.ts +11 -11
  206. package/dist/adapter/zigate/driver/messageType.js +278 -278
  207. package/dist/adapter/zigate/driver/parameterType.d.ts +20 -20
  208. package/dist/adapter/zigate/driver/parameterType.js +23 -23
  209. package/dist/adapter/zigate/driver/ziGateObject.d.ts +23 -23
  210. package/dist/adapter/zigate/driver/ziGateObject.js +106 -106
  211. package/dist/adapter/zigate/driver/zigate.d.ts +49 -49
  212. package/dist/adapter/zigate/driver/zigate.js +303 -303
  213. package/dist/buffalo/buffalo.d.ts +50 -50
  214. package/dist/buffalo/buffalo.js +322 -322
  215. package/dist/buffalo/index.d.ts +3 -3
  216. package/dist/buffalo/index.js +33 -33
  217. package/dist/buffalo/tstype.d.ts +8 -8
  218. package/dist/buffalo/tstype.js +2 -2
  219. package/dist/controller/controller.d.ts +113 -110
  220. package/dist/controller/controller.d.ts.map +1 -1
  221. package/dist/controller/controller.js +619 -607
  222. package/dist/controller/controller.js.map +1 -1
  223. package/dist/controller/database.d.ts +18 -18
  224. package/dist/controller/database.js +93 -93
  225. package/dist/controller/events.d.ts +58 -55
  226. package/dist/controller/events.d.ts.map +1 -1
  227. package/dist/controller/events.js +101 -101
  228. package/dist/controller/events.js.map +1 -1
  229. package/dist/controller/greenPower.d.ts +12 -12
  230. package/dist/controller/greenPower.js +220 -220
  231. package/dist/controller/helpers/index.d.ts +2 -2
  232. package/dist/controller/helpers/index.js +28 -28
  233. package/dist/controller/helpers/request.d.ts +22 -22
  234. package/dist/controller/helpers/request.js +71 -71
  235. package/dist/controller/helpers/zclFrameConverter.d.ts +7 -7
  236. package/dist/controller/helpers/zclFrameConverter.js +31 -31
  237. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +5 -5
  238. package/dist/controller/helpers/zclTransactionSequenceNumber.js +13 -13
  239. package/dist/controller/index.d.ts +5 -5
  240. package/dist/controller/index.js +8 -8
  241. package/dist/controller/logger-stub.d.ts +6 -6
  242. package/dist/controller/logger-stub.js +2 -2
  243. package/dist/controller/model/device.d.ts +133 -132
  244. package/dist/controller/model/device.d.ts.map +1 -1
  245. package/dist/controller/model/device.js +717 -708
  246. package/dist/controller/model/device.js.map +1 -1
  247. package/dist/controller/model/endpoint.d.ts +131 -131
  248. package/dist/controller/model/endpoint.d.ts.map +1 -1
  249. package/dist/controller/model/endpoint.js +816 -817
  250. package/dist/controller/model/endpoint.js.map +1 -1
  251. package/dist/controller/model/entity.d.ts +14 -14
  252. package/dist/controller/model/entity.js +26 -26
  253. package/dist/controller/model/group.d.ts +38 -38
  254. package/dist/controller/model/group.js +221 -221
  255. package/dist/controller/model/index.d.ts +5 -5
  256. package/dist/controller/model/index.js +14 -14
  257. package/dist/controller/touchlink.d.ts +19 -19
  258. package/dist/controller/touchlink.js +157 -157
  259. package/dist/controller/tstype.d.ts +21 -21
  260. package/dist/controller/tstype.js +9 -9
  261. package/dist/index.d.ts +3 -3
  262. package/dist/index.js +33 -33
  263. package/dist/models/backup-storage-legacy.d.ts +26 -26
  264. package/dist/models/backup-storage-legacy.js +2 -2
  265. package/dist/models/backup-storage-unified.d.ts +49 -49
  266. package/dist/models/backup-storage-unified.js +2 -2
  267. package/dist/models/backup.d.ts +37 -37
  268. package/dist/models/backup.js +2 -2
  269. package/dist/models/index.d.ts +4 -4
  270. package/dist/models/index.js +20 -20
  271. package/dist/models/network-options.d.ts +12 -12
  272. package/dist/models/network-options.js +2 -2
  273. package/dist/utils/assertString.d.ts +2 -2
  274. package/dist/utils/assertString.js +8 -8
  275. package/dist/utils/backup.d.ts +20 -20
  276. package/dist/utils/backup.js +187 -187
  277. package/dist/utils/equalsPartial.d.ts +2 -2
  278. package/dist/utils/equalsPartial.js +11 -11
  279. package/dist/utils/index.d.ts +9 -9
  280. package/dist/utils/index.js +45 -45
  281. package/dist/utils/isNumberArray.d.ts +2 -2
  282. package/dist/utils/isNumberArray.js +6 -6
  283. package/dist/utils/queue.d.ts +11 -11
  284. package/dist/utils/queue.js +50 -50
  285. package/dist/utils/realpathSync.d.ts +2 -2
  286. package/dist/utils/realpathSync.js +12 -12
  287. package/dist/utils/wait.d.ts +2 -2
  288. package/dist/utils/wait.js +8 -8
  289. package/dist/utils/waitress.d.ts +21 -21
  290. package/dist/utils/waitress.js +61 -61
  291. package/dist/zcl/buffaloZcl.d.ts +41 -41
  292. package/dist/zcl/buffaloZcl.js +591 -591
  293. package/dist/zcl/definition/buffaloZclDataType.d.ts +17 -17
  294. package/dist/zcl/definition/buffaloZclDataType.js +20 -20
  295. package/dist/zcl/definition/cluster.d.ts +29 -29
  296. package/dist/zcl/definition/cluster.js +5335 -5335
  297. package/dist/zcl/definition/dataType.d.ts +59 -59
  298. package/dist/zcl/definition/dataType.js +64 -64
  299. package/dist/zcl/definition/direction.d.ts +5 -5
  300. package/dist/zcl/definition/direction.js +8 -8
  301. package/dist/zcl/definition/endpointDeviceType.d.ts +4 -4
  302. package/dist/zcl/definition/endpointDeviceType.js +15 -15
  303. package/dist/zcl/definition/foundation.d.ts +11 -11
  304. package/dist/zcl/definition/foundation.js +167 -167
  305. package/dist/zcl/definition/frameControl.d.ts +10 -10
  306. package/dist/zcl/definition/frameControl.js +2 -2
  307. package/dist/zcl/definition/frameType.d.ts +5 -5
  308. package/dist/zcl/definition/frameType.js +8 -8
  309. package/dist/zcl/definition/index.d.ts +13 -13
  310. package/dist/zcl/definition/index.js +51 -51
  311. package/dist/zcl/definition/manufacturerCode.d.ts +1074 -1074
  312. package/dist/zcl/definition/manufacturerCode.js +1079 -1079
  313. package/dist/zcl/definition/powerSource.d.ts +4 -4
  314. package/dist/zcl/definition/powerSource.js +12 -12
  315. package/dist/zcl/definition/status.d.ts +38 -38
  316. package/dist/zcl/definition/status.js +41 -41
  317. package/dist/zcl/definition/tstype.d.ts +16 -16
  318. package/dist/zcl/definition/tstype.js +2 -2
  319. package/dist/zcl/index.d.ts +15 -15
  320. package/dist/zcl/index.js +55 -55
  321. package/dist/zcl/tstype.d.ts +56 -56
  322. package/dist/zcl/tstype.js +10 -10
  323. package/dist/zcl/utils.d.ts +6 -6
  324. package/dist/zcl/utils.js +165 -165
  325. package/dist/zcl/zclFrame.d.ts +45 -45
  326. package/dist/zcl/zclFrame.js +347 -347
  327. package/dist/zcl/zclStatusError.d.ts +5 -5
  328. package/dist/zcl/zclStatusError.js +13 -13
  329. package/package.json +6 -6
@@ -1,296 +1,296 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Struct = void 0;
4
- /**
5
- * Struct provides a builder-like interface to create Buffer-based memory
6
- * structures for read/write interfacing with data structures from adapters.
7
- */
8
- class Struct {
9
- /**
10
- * Creates an empty struct. Further calls to `member()` and `method()` functions will form the structure.
11
- * Finally call to `build()` will type the resulting structure appropriately without internal functions.
12
- */
13
- static new() {
14
- return new Struct();
15
- }
16
- constructor() {
17
- this.members = [];
18
- this.childStructs = {};
19
- this.length = 0;
20
- this.paddingByte = 0x00;
21
- }
22
- /**
23
- * Returns raw contents of the structure as a sliced Buffer.
24
- * Mutations to the returned buffer will not be reflected within struct.
25
- */
26
- serialize(alignment = "unaligned", padLength = true, parentOffset = 0) {
27
- switch (alignment) {
28
- case "unaligned": {
29
- /* update child struct values and return as-is (unaligned) */
30
- /* istanbul ignore next */
31
- for (const key of Object.keys(this.childStructs)) {
32
- const child = this.childStructs[key];
33
- this.buffer.set(child.struct.serialize(alignment), child.offset);
34
- }
35
- return Buffer.from(this.buffer);
36
- }
37
- case "aligned": {
38
- /* create 16-bit aligned buffer */
39
- const aligned = Buffer.alloc(this.getLength(alignment, padLength, parentOffset), this.paddingByte);
40
- let offset = 0;
41
- for (const member of this.members) {
42
- switch (member.type) {
43
- case "uint8":
44
- aligned.set(this.buffer.slice(member.offset, member.offset + 1), offset);
45
- offset += 1;
46
- break;
47
- case "uint16":
48
- offset += offset % 2;
49
- aligned.set(this.buffer.slice(member.offset, member.offset + 2), offset);
50
- offset += 2;
51
- break;
52
- case "uint32":
53
- offset += offset % 2;
54
- aligned.set(this.buffer.slice(member.offset, member.offset + 4), offset);
55
- offset += 4;
56
- break;
57
- case "uint8array":
58
- case "uint8array-reversed":
59
- aligned.set(this.buffer.slice(member.offset, member.offset + member.length), offset);
60
- offset += member.length;
61
- break;
62
- case "struct":
63
- const structData = this.childStructs[member.key].struct.serialize(alignment, false, offset);
64
- aligned.set(structData, offset);
65
- offset += structData.length;
66
- break;
67
- }
68
- }
69
- return aligned;
70
- }
71
- }
72
- }
73
- /**
74
- * Returns total length of the struct. Struct length is always fixed and configured
75
- * by calls to `member()` methods.
76
- */
77
- /* istanbul ignore next */
78
- getLength(alignment = "unaligned", padLength = true, parentOffset = 0) {
79
- switch (alignment) {
80
- case "unaligned": {
81
- /* return actual length */
82
- return this.length;
83
- }
84
- case "aligned": {
85
- /* compute aligned length and return */
86
- let length = this.members.reduce((offset, member) => {
87
- switch (member.type) {
88
- case "uint8":
89
- offset += 1;
90
- break;
91
- case "uint16":
92
- offset += ((parentOffset + offset) % 2) + 2;
93
- break;
94
- case "uint32":
95
- offset += ((parentOffset + offset) % 2) + 4;
96
- break;
97
- case "uint8array":
98
- case "uint8array-reversed":
99
- offset += member.length;
100
- break;
101
- case "struct":
102
- offset += this.childStructs[member.key].struct.getLength(alignment, false);
103
- break;
104
- }
105
- return offset;
106
- }, 0);
107
- if (padLength) {
108
- length += length % 2;
109
- }
110
- return length;
111
- }
112
- }
113
- }
114
- /**
115
- * Returns structure contents in JS object format.
116
- */
117
- // eslint-disable-next-line max-len
118
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/explicit-function-return-type
119
- toJSON() {
120
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
- return this.members.reduce((a, c) => { a[c.key] = this[c.key]; return a; }, {});
122
- }
123
- member(type, name, lengthOrStructFactory) {
124
- const offset = this.length;
125
- const structFactory = type === "struct" ? lengthOrStructFactory : undefined;
126
- const length = type === "struct" ?
127
- structFactory().length :
128
- lengthOrStructFactory;
129
- switch (type) {
130
- case "uint8": {
131
- Object.defineProperty(this, name, {
132
- enumerable: true,
133
- get: () => this.buffer.readUInt8(offset),
134
- set: (value) => this.buffer.writeUInt8(value, offset)
135
- });
136
- this.length += 1;
137
- break;
138
- }
139
- case "uint16": {
140
- Object.defineProperty(this, name, {
141
- enumerable: true,
142
- get: () => this.buffer.readUInt16LE(offset),
143
- set: (value) => this.buffer.writeUInt16LE(value, offset)
144
- });
145
- this.length += 2;
146
- break;
147
- }
148
- case "uint32": {
149
- Object.defineProperty(this, name, {
150
- enumerable: true,
151
- get: () => this.buffer.readUInt32LE(offset),
152
- set: (value) => this.buffer.writeUInt32LE(value, offset)
153
- });
154
- this.length += 4;
155
- break;
156
- }
157
- case "uint8array":
158
- case "uint8array-reversed": {
159
- /* istanbul ignore next */
160
- if (!length) {
161
- throw new Error("Struct builder requires length for `uint8array` and `uint8array-reversed` type");
162
- }
163
- Object.defineProperty(this, name, {
164
- enumerable: true,
165
- get: () => type === "uint8array-reversed" ?
166
- Buffer.from(this.buffer.slice(offset, offset + length)).reverse() :
167
- Buffer.from(this.buffer.slice(offset, offset + length)),
168
- set: (value) => {
169
- if (value.length !== length) {
170
- throw new Error(`Invalid length for member ${name} (expected=${length}, got=${value.length})`);
171
- }
172
- if (type === "uint8array-reversed") {
173
- value = Buffer.from(value).reverse();
174
- }
175
- for (let i = 0; i < length; i++) {
176
- this.buffer[offset + i] = value[i];
177
- }
178
- }
179
- });
180
- this.length += length;
181
- break;
182
- }
183
- case "struct": {
184
- this.childStructs[name] = { offset, struct: structFactory() };
185
- Object.defineProperty(this, name, {
186
- enumerable: true,
187
- get: () => this.childStructs[name].struct
188
- });
189
- this.length += length;
190
- }
191
- }
192
- this.members.push({ key: name, offset, type, length });
193
- return this;
194
- }
195
- /**
196
- * Adds a custom method to the struct.
197
- *
198
- * *This method is stripped from type on struct `build()`.*
199
- *
200
- * @param name Name of the method to be appended.
201
- * @param returnType Return type (eg. `Buffer.prototype`).
202
- * @param body Function implementation. Takes struct as a first and single input parameter.
203
- */
204
- method(name, returnType, body) {
205
- Object.defineProperty(this, name, {
206
- enumerable: true,
207
- configurable: false,
208
- writable: false,
209
- value: () => body.bind(this)(this)
210
- });
211
- return this;
212
- }
213
- /**
214
- * Sets default data to initialize empty struct with.
215
- *
216
- * @param data Data to initialize empty struct with.
217
- */
218
- /* istanbul ignore next */
219
- default(data) {
220
- if (data.length !== this.length) {
221
- throw new Error("Default value needs to have the length of unaligned structure.");
222
- }
223
- this.defaultData = Buffer.from(data);
224
- return this;
225
- }
226
- /**
227
- * Sets byte to use for padding.
228
- *
229
- * @param padding Byte to use for padding
230
- */
231
- /* istanbul ignore next */
232
- padding(padding = 0x00) {
233
- this.paddingByte = padding;
234
- return this;
235
- }
236
- /**
237
- * Creates the struct and optionally fills it with data. If data is provided, the length
238
- * of the provided buffer needs to match the structure length.
239
- *
240
- * *This method is stripped from type on struct `build()`.*
241
- */
242
- build(data) {
243
- if (data) {
244
- if (data.length === this.getLength("unaligned")) {
245
- this.buffer = Buffer.from(data);
246
- for (const key of Object.keys(this.childStructs)) {
247
- const child = this.childStructs[key];
248
- child.struct.build(this.buffer.slice(child.offset, child.offset + child.struct.length));
249
- }
250
- }
251
- else if (data.length === this.getLength("aligned")) {
252
- this.buffer = Buffer.alloc(this.length, this.paddingByte);
253
- let offset = 0;
254
- for (const member of this.members) {
255
- switch (member.type) {
256
- case "uint8":
257
- this.buffer.set(data.slice(offset, offset + 1), member.offset);
258
- offset += 1;
259
- break;
260
- case "uint16":
261
- offset += offset % 2;
262
- this.buffer.set(data.slice(offset, offset + 2), member.offset);
263
- offset += 2;
264
- break;
265
- case "uint32":
266
- offset += offset % 2;
267
- this.buffer.set(data.slice(offset, offset + 4), member.offset);
268
- offset += 4;
269
- break;
270
- case "uint8array":
271
- case "uint8array-reversed":
272
- this.buffer.set(data.slice(offset, offset + member.length), member.offset);
273
- offset += member.length;
274
- break;
275
- case "struct":
276
- const child = this.childStructs[member.key];
277
- child.struct.build(data.slice(offset, offset + child.struct.length));
278
- this.buffer.set(child.struct.serialize(), member.offset);
279
- offset += child.struct.length;
280
- break;
281
- }
282
- }
283
- }
284
- else {
285
- const expectedLengths = `${this.getLength("unaligned")}/${this.getLength("aligned")}`;
286
- throw new Error(`Struct length mismatch (expected=${expectedLengths}, got=${data.length})`);
287
- }
288
- }
289
- else {
290
- this.buffer = this.defaultData ? Buffer.from(this.defaultData) : Buffer.alloc(this.length);
291
- }
292
- return this;
293
- }
294
- }
295
- exports.Struct = Struct;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Struct = void 0;
4
+ /**
5
+ * Struct provides a builder-like interface to create Buffer-based memory
6
+ * structures for read/write interfacing with data structures from adapters.
7
+ */
8
+ class Struct {
9
+ /**
10
+ * Creates an empty struct. Further calls to `member()` and `method()` functions will form the structure.
11
+ * Finally call to `build()` will type the resulting structure appropriately without internal functions.
12
+ */
13
+ static new() {
14
+ return new Struct();
15
+ }
16
+ constructor() {
17
+ this.members = [];
18
+ this.childStructs = {};
19
+ this.length = 0;
20
+ this.paddingByte = 0x00;
21
+ }
22
+ /**
23
+ * Returns raw contents of the structure as a sliced Buffer.
24
+ * Mutations to the returned buffer will not be reflected within struct.
25
+ */
26
+ serialize(alignment = "unaligned", padLength = true, parentOffset = 0) {
27
+ switch (alignment) {
28
+ case "unaligned": {
29
+ /* update child struct values and return as-is (unaligned) */
30
+ /* istanbul ignore next */
31
+ for (const key of Object.keys(this.childStructs)) {
32
+ const child = this.childStructs[key];
33
+ this.buffer.set(child.struct.serialize(alignment), child.offset);
34
+ }
35
+ return Buffer.from(this.buffer);
36
+ }
37
+ case "aligned": {
38
+ /* create 16-bit aligned buffer */
39
+ const aligned = Buffer.alloc(this.getLength(alignment, padLength, parentOffset), this.paddingByte);
40
+ let offset = 0;
41
+ for (const member of this.members) {
42
+ switch (member.type) {
43
+ case "uint8":
44
+ aligned.set(this.buffer.slice(member.offset, member.offset + 1), offset);
45
+ offset += 1;
46
+ break;
47
+ case "uint16":
48
+ offset += offset % 2;
49
+ aligned.set(this.buffer.slice(member.offset, member.offset + 2), offset);
50
+ offset += 2;
51
+ break;
52
+ case "uint32":
53
+ offset += offset % 2;
54
+ aligned.set(this.buffer.slice(member.offset, member.offset + 4), offset);
55
+ offset += 4;
56
+ break;
57
+ case "uint8array":
58
+ case "uint8array-reversed":
59
+ aligned.set(this.buffer.slice(member.offset, member.offset + member.length), offset);
60
+ offset += member.length;
61
+ break;
62
+ case "struct":
63
+ const structData = this.childStructs[member.key].struct.serialize(alignment, false, offset);
64
+ aligned.set(structData, offset);
65
+ offset += structData.length;
66
+ break;
67
+ }
68
+ }
69
+ return aligned;
70
+ }
71
+ }
72
+ }
73
+ /**
74
+ * Returns total length of the struct. Struct length is always fixed and configured
75
+ * by calls to `member()` methods.
76
+ */
77
+ /* istanbul ignore next */
78
+ getLength(alignment = "unaligned", padLength = true, parentOffset = 0) {
79
+ switch (alignment) {
80
+ case "unaligned": {
81
+ /* return actual length */
82
+ return this.length;
83
+ }
84
+ case "aligned": {
85
+ /* compute aligned length and return */
86
+ let length = this.members.reduce((offset, member) => {
87
+ switch (member.type) {
88
+ case "uint8":
89
+ offset += 1;
90
+ break;
91
+ case "uint16":
92
+ offset += ((parentOffset + offset) % 2) + 2;
93
+ break;
94
+ case "uint32":
95
+ offset += ((parentOffset + offset) % 2) + 4;
96
+ break;
97
+ case "uint8array":
98
+ case "uint8array-reversed":
99
+ offset += member.length;
100
+ break;
101
+ case "struct":
102
+ offset += this.childStructs[member.key].struct.getLength(alignment, false);
103
+ break;
104
+ }
105
+ return offset;
106
+ }, 0);
107
+ if (padLength) {
108
+ length += length % 2;
109
+ }
110
+ return length;
111
+ }
112
+ }
113
+ }
114
+ /**
115
+ * Returns structure contents in JS object format.
116
+ */
117
+ // eslint-disable-next-line max-len
118
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/explicit-function-return-type
119
+ toJSON() {
120
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
+ return this.members.reduce((a, c) => { a[c.key] = this[c.key]; return a; }, {});
122
+ }
123
+ member(type, name, lengthOrStructFactory) {
124
+ const offset = this.length;
125
+ const structFactory = type === "struct" ? lengthOrStructFactory : undefined;
126
+ const length = type === "struct" ?
127
+ structFactory().length :
128
+ lengthOrStructFactory;
129
+ switch (type) {
130
+ case "uint8": {
131
+ Object.defineProperty(this, name, {
132
+ enumerable: true,
133
+ get: () => this.buffer.readUInt8(offset),
134
+ set: (value) => this.buffer.writeUInt8(value, offset)
135
+ });
136
+ this.length += 1;
137
+ break;
138
+ }
139
+ case "uint16": {
140
+ Object.defineProperty(this, name, {
141
+ enumerable: true,
142
+ get: () => this.buffer.readUInt16LE(offset),
143
+ set: (value) => this.buffer.writeUInt16LE(value, offset)
144
+ });
145
+ this.length += 2;
146
+ break;
147
+ }
148
+ case "uint32": {
149
+ Object.defineProperty(this, name, {
150
+ enumerable: true,
151
+ get: () => this.buffer.readUInt32LE(offset),
152
+ set: (value) => this.buffer.writeUInt32LE(value, offset)
153
+ });
154
+ this.length += 4;
155
+ break;
156
+ }
157
+ case "uint8array":
158
+ case "uint8array-reversed": {
159
+ /* istanbul ignore next */
160
+ if (!length) {
161
+ throw new Error("Struct builder requires length for `uint8array` and `uint8array-reversed` type");
162
+ }
163
+ Object.defineProperty(this, name, {
164
+ enumerable: true,
165
+ get: () => type === "uint8array-reversed" ?
166
+ Buffer.from(this.buffer.slice(offset, offset + length)).reverse() :
167
+ Buffer.from(this.buffer.slice(offset, offset + length)),
168
+ set: (value) => {
169
+ if (value.length !== length) {
170
+ throw new Error(`Invalid length for member ${name} (expected=${length}, got=${value.length})`);
171
+ }
172
+ if (type === "uint8array-reversed") {
173
+ value = Buffer.from(value).reverse();
174
+ }
175
+ for (let i = 0; i < length; i++) {
176
+ this.buffer[offset + i] = value[i];
177
+ }
178
+ }
179
+ });
180
+ this.length += length;
181
+ break;
182
+ }
183
+ case "struct": {
184
+ this.childStructs[name] = { offset, struct: structFactory() };
185
+ Object.defineProperty(this, name, {
186
+ enumerable: true,
187
+ get: () => this.childStructs[name].struct
188
+ });
189
+ this.length += length;
190
+ }
191
+ }
192
+ this.members.push({ key: name, offset, type, length });
193
+ return this;
194
+ }
195
+ /**
196
+ * Adds a custom method to the struct.
197
+ *
198
+ * *This method is stripped from type on struct `build()`.*
199
+ *
200
+ * @param name Name of the method to be appended.
201
+ * @param returnType Return type (eg. `Buffer.prototype`).
202
+ * @param body Function implementation. Takes struct as a first and single input parameter.
203
+ */
204
+ method(name, returnType, body) {
205
+ Object.defineProperty(this, name, {
206
+ enumerable: true,
207
+ configurable: false,
208
+ writable: false,
209
+ value: () => body.bind(this)(this)
210
+ });
211
+ return this;
212
+ }
213
+ /**
214
+ * Sets default data to initialize empty struct with.
215
+ *
216
+ * @param data Data to initialize empty struct with.
217
+ */
218
+ /* istanbul ignore next */
219
+ default(data) {
220
+ if (data.length !== this.length) {
221
+ throw new Error("Default value needs to have the length of unaligned structure.");
222
+ }
223
+ this.defaultData = Buffer.from(data);
224
+ return this;
225
+ }
226
+ /**
227
+ * Sets byte to use for padding.
228
+ *
229
+ * @param padding Byte to use for padding
230
+ */
231
+ /* istanbul ignore next */
232
+ padding(padding = 0x00) {
233
+ this.paddingByte = padding;
234
+ return this;
235
+ }
236
+ /**
237
+ * Creates the struct and optionally fills it with data. If data is provided, the length
238
+ * of the provided buffer needs to match the structure length.
239
+ *
240
+ * *This method is stripped from type on struct `build()`.*
241
+ */
242
+ build(data) {
243
+ if (data) {
244
+ if (data.length === this.getLength("unaligned")) {
245
+ this.buffer = Buffer.from(data);
246
+ for (const key of Object.keys(this.childStructs)) {
247
+ const child = this.childStructs[key];
248
+ child.struct.build(this.buffer.slice(child.offset, child.offset + child.struct.length));
249
+ }
250
+ }
251
+ else if (data.length === this.getLength("aligned")) {
252
+ this.buffer = Buffer.alloc(this.length, this.paddingByte);
253
+ let offset = 0;
254
+ for (const member of this.members) {
255
+ switch (member.type) {
256
+ case "uint8":
257
+ this.buffer.set(data.slice(offset, offset + 1), member.offset);
258
+ offset += 1;
259
+ break;
260
+ case "uint16":
261
+ offset += offset % 2;
262
+ this.buffer.set(data.slice(offset, offset + 2), member.offset);
263
+ offset += 2;
264
+ break;
265
+ case "uint32":
266
+ offset += offset % 2;
267
+ this.buffer.set(data.slice(offset, offset + 4), member.offset);
268
+ offset += 4;
269
+ break;
270
+ case "uint8array":
271
+ case "uint8array-reversed":
272
+ this.buffer.set(data.slice(offset, offset + member.length), member.offset);
273
+ offset += member.length;
274
+ break;
275
+ case "struct":
276
+ const child = this.childStructs[member.key];
277
+ child.struct.build(data.slice(offset, offset + child.struct.length));
278
+ this.buffer.set(child.struct.serialize(), member.offset);
279
+ offset += child.struct.length;
280
+ break;
281
+ }
282
+ }
283
+ }
284
+ else {
285
+ const expectedLengths = `${this.getLength("unaligned")}/${this.getLength("aligned")}`;
286
+ throw new Error(`Struct length mismatch (expected=${expectedLengths}, got=${data.length})`);
287
+ }
288
+ }
289
+ else {
290
+ this.buffer = this.defaultData ? Buffer.from(this.defaultData) : Buffer.alloc(this.length);
291
+ }
292
+ return this;
293
+ }
294
+ }
295
+ exports.Struct = Struct;
296
296
  //# sourceMappingURL=struct.js.map