@willieee802/zigbee-herdsman 0.18.2 → 0.18.3

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 (327) hide show
  1. package/dist/adapter/adapter.d.ts +61 -61
  2. package/dist/adapter/adapter.d.ts.map +1 -1
  3. package/dist/adapter/adapter.js +146 -146
  4. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +68 -68
  5. package/dist/adapter/deconz/adapter/deconzAdapter.js +1060 -1060
  6. package/dist/adapter/deconz/adapter/index.d.ts +2 -2
  7. package/dist/adapter/deconz/adapter/index.js +10 -10
  8. package/dist/adapter/deconz/driver/constants.d.ts +104 -104
  9. package/dist/adapter/deconz/driver/constants.js +55 -55
  10. package/dist/adapter/deconz/driver/driver.d.ts +81 -81
  11. package/dist/adapter/deconz/driver/driver.js +732 -732
  12. package/dist/adapter/deconz/driver/frame.d.ts +6 -6
  13. package/dist/adapter/deconz/driver/frame.js +13 -13
  14. package/dist/adapter/deconz/driver/frameParser.d.ts +2 -2
  15. package/dist/adapter/deconz/driver/frameParser.js +443 -443
  16. package/dist/adapter/deconz/driver/parser.d.ts +12 -12
  17. package/dist/adapter/deconz/driver/parser.js +61 -61
  18. package/dist/adapter/deconz/driver/writer.d.ts +8 -8
  19. package/dist/adapter/deconz/driver/writer.js +44 -44
  20. package/dist/adapter/events.d.ts +47 -47
  21. package/dist/adapter/events.js +14 -14
  22. package/dist/adapter/ezsp/adapter/backup.d.ts +9 -9
  23. package/dist/adapter/ezsp/adapter/backup.js +53 -53
  24. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +59 -59
  25. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  26. package/dist/adapter/ezsp/adapter/ezspAdapter.js +603 -585
  27. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  28. package/dist/adapter/ezsp/adapter/index.d.ts +2 -2
  29. package/dist/adapter/ezsp/adapter/index.js +10 -10
  30. package/dist/adapter/ezsp/driver/commands.d.ts +36 -36
  31. package/dist/adapter/ezsp/driver/commands.js +2359 -2359
  32. package/dist/adapter/ezsp/driver/consts.d.ts +10 -10
  33. package/dist/adapter/ezsp/driver/consts.js +13 -13
  34. package/dist/adapter/ezsp/driver/driver.d.ts +103 -103
  35. package/dist/adapter/ezsp/driver/driver.js +639 -639
  36. package/dist/adapter/ezsp/driver/ezsp.d.ts +96 -96
  37. package/dist/adapter/ezsp/driver/ezsp.js +586 -586
  38. package/dist/adapter/ezsp/driver/index.d.ts +3 -3
  39. package/dist/adapter/ezsp/driver/index.js +8 -8
  40. package/dist/adapter/ezsp/driver/multicast.d.ts +12 -12
  41. package/dist/adapter/ezsp/driver/multicast.js +74 -74
  42. package/dist/adapter/ezsp/driver/parser.d.ts +12 -12
  43. package/dist/adapter/ezsp/driver/parser.js +111 -111
  44. package/dist/adapter/ezsp/driver/types/basic.d.ts +62 -62
  45. package/dist/adapter/ezsp/driver/types/basic.js +208 -208
  46. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  47. package/dist/adapter/ezsp/driver/types/index.d.ts +9 -9
  48. package/dist/adapter/ezsp/driver/types/index.js +133 -133
  49. package/dist/adapter/ezsp/driver/types/named.d.ts +697 -697
  50. package/dist/adapter/ezsp/driver/types/named.js +1726 -1726
  51. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  52. package/dist/adapter/ezsp/driver/types/struct.d.ts +251 -251
  53. package/dist/adapter/ezsp/driver/types/struct.js +708 -708
  54. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  55. package/dist/adapter/ezsp/driver/uart.d.ts +44 -44
  56. package/dist/adapter/ezsp/driver/uart.js +368 -368
  57. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +2 -2
  58. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +55 -55
  59. package/dist/adapter/ezsp/driver/utils/index.d.ts +18 -18
  60. package/dist/adapter/ezsp/driver/utils/index.js +67 -67
  61. package/dist/adapter/ezsp/driver/writer.d.ts +13 -13
  62. package/dist/adapter/ezsp/driver/writer.js +88 -88
  63. package/dist/adapter/index.d.ts +4 -4
  64. package/dist/adapter/index.js +35 -35
  65. package/dist/adapter/serialPort.d.ts +8 -8
  66. package/dist/adapter/serialPort.js +22 -22
  67. package/dist/adapter/serialPort.js.map +1 -1
  68. package/dist/adapter/serialPortUtils.d.ts +12 -12
  69. package/dist/adapter/serialPortUtils.js +18 -18
  70. package/dist/adapter/socketPortUtils.d.ts +10 -10
  71. package/dist/adapter/socketPortUtils.js +16 -16
  72. package/dist/adapter/tstype.d.ts +85 -85
  73. package/dist/adapter/tstype.js +2 -2
  74. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +62 -62
  75. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  76. package/dist/adapter/z-stack/adapter/adapter-backup.js +460 -441
  77. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  78. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +150 -150
  79. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +258 -258
  80. package/dist/adapter/z-stack/adapter/endpoints.d.ts +11 -11
  81. package/dist/adapter/z-stack/adapter/endpoints.js +73 -73
  82. package/dist/adapter/z-stack/adapter/index.d.ts +2 -2
  83. package/dist/adapter/z-stack/adapter/index.js +8 -8
  84. package/dist/adapter/z-stack/adapter/manager.d.ts +86 -86
  85. package/dist/adapter/z-stack/adapter/manager.js +476 -476
  86. package/dist/adapter/z-stack/adapter/tstype.d.ts +6 -6
  87. package/dist/adapter/z-stack/adapter/tstype.js +10 -10
  88. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +81 -81
  89. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  90. package/dist/adapter/z-stack/adapter/zStackAdapter.js +868 -868
  91. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  92. package/dist/adapter/z-stack/constants/af.d.ts +23 -23
  93. package/dist/adapter/z-stack/constants/af.js +27 -27
  94. package/dist/adapter/z-stack/constants/common.d.ts +278 -278
  95. package/dist/adapter/z-stack/constants/common.js +289 -289
  96. package/dist/adapter/z-stack/constants/dbg.d.ts +22 -22
  97. package/dist/adapter/z-stack/constants/dbg.js +24 -24
  98. package/dist/adapter/z-stack/constants/index.d.ts +10 -10
  99. package/dist/adapter/z-stack/constants/index.js +47 -47
  100. package/dist/adapter/z-stack/constants/mac.d.ts +127 -127
  101. package/dist/adapter/z-stack/constants/mac.js +129 -129
  102. package/dist/adapter/z-stack/constants/sapi.d.ts +24 -24
  103. package/dist/adapter/z-stack/constants/sapi.js +26 -26
  104. package/dist/adapter/z-stack/constants/sys.d.ts +71 -71
  105. package/dist/adapter/z-stack/constants/sys.js +73 -73
  106. package/dist/adapter/z-stack/constants/util.d.ts +81 -81
  107. package/dist/adapter/z-stack/constants/util.js +83 -83
  108. package/dist/adapter/z-stack/constants/utils.d.ts +4 -4
  109. package/dist/adapter/z-stack/constants/utils.js +14 -14
  110. package/dist/adapter/z-stack/constants/zdo.d.ts +102 -102
  111. package/dist/adapter/z-stack/constants/zdo.js +104 -104
  112. package/dist/adapter/z-stack/models/index.d.ts +1 -1
  113. package/dist/adapter/z-stack/models/index.js +17 -17
  114. package/dist/adapter/z-stack/models/startup-options.d.ts +12 -12
  115. package/dist/adapter/z-stack/models/startup-options.js +2 -2
  116. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +23 -23
  117. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +45 -45
  118. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +10 -10
  119. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +22 -22
  120. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +10 -10
  121. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +21 -21
  122. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +10 -10
  123. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +23 -23
  124. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +10 -10
  125. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +24 -24
  126. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +10 -10
  127. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +23 -23
  128. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +8 -8
  129. package/dist/adapter/z-stack/structs/entries/channel-list.js +15 -15
  130. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +8 -8
  131. package/dist/adapter/z-stack/structs/entries/has-configured.js +16 -16
  132. package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
  133. package/dist/adapter/z-stack/structs/entries/index.js +32 -32
  134. package/dist/adapter/z-stack/structs/entries/nib.d.ts +10 -10
  135. package/dist/adapter/z-stack/structs/entries/nib.js +68 -68
  136. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +10 -10
  137. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +18 -18
  138. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +8 -8
  139. package/dist/adapter/z-stack/structs/entries/nwk-key.js +15 -15
  140. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +8 -8
  141. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +15 -15
  142. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +13 -13
  143. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +23 -23
  144. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +10 -10
  145. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +22 -22
  146. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +20 -20
  147. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +36 -36
  148. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +10 -10
  149. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +24 -24
  150. package/dist/adapter/z-stack/structs/index.d.ts +4 -4
  151. package/dist/adapter/z-stack/structs/index.js +20 -20
  152. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +13 -13
  153. package/dist/adapter/z-stack/structs/serializable-memory-object.js +2 -2
  154. package/dist/adapter/z-stack/structs/struct.d.ts +99 -99
  155. package/dist/adapter/z-stack/structs/struct.js +295 -295
  156. package/dist/adapter/z-stack/structs/table.d.ts +94 -94
  157. package/dist/adapter/z-stack/structs/table.js +161 -161
  158. package/dist/adapter/z-stack/unpi/constants.d.ts +28 -28
  159. package/dist/adapter/z-stack/unpi/constants.js +41 -41
  160. package/dist/adapter/z-stack/unpi/frame.d.ts +16 -16
  161. package/dist/adapter/z-stack/unpi/frame.js +48 -48
  162. package/dist/adapter/z-stack/unpi/index.d.ts +5 -5
  163. package/dist/adapter/z-stack/unpi/index.js +37 -37
  164. package/dist/adapter/z-stack/unpi/parser.d.ts +10 -10
  165. package/dist/adapter/z-stack/unpi/parser.js +74 -74
  166. package/dist/adapter/z-stack/unpi/writer.d.ts +10 -10
  167. package/dist/adapter/z-stack/unpi/writer.js +44 -44
  168. package/dist/adapter/z-stack/utils/channel-list.d.ts +20 -20
  169. package/dist/adapter/z-stack/utils/channel-list.js +40 -40
  170. package/dist/adapter/z-stack/utils/index.d.ts +2 -2
  171. package/dist/adapter/z-stack/utils/index.js +18 -18
  172. package/dist/adapter/z-stack/utils/network-options.d.ts +8 -8
  173. package/dist/adapter/z-stack/utils/network-options.js +22 -22
  174. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +11 -11
  175. package/dist/adapter/z-stack/znp/buffaloZnp.js +113 -113
  176. package/dist/adapter/z-stack/znp/definition.d.ts +5 -5
  177. package/dist/adapter/z-stack/znp/definition.js +3050 -3050
  178. package/dist/adapter/z-stack/znp/index.d.ts +3 -3
  179. package/dist/adapter/z-stack/znp/index.js +10 -10
  180. package/dist/adapter/z-stack/znp/parameterType.d.ts +22 -22
  181. package/dist/adapter/z-stack/znp/parameterType.js +25 -25
  182. package/dist/adapter/z-stack/znp/tstype.d.ts +21 -21
  183. package/dist/adapter/z-stack/znp/tstype.js +2 -2
  184. package/dist/adapter/z-stack/znp/znp.d.ts +43 -43
  185. package/dist/adapter/z-stack/znp/znp.js +325 -325
  186. package/dist/adapter/z-stack/znp/zpiObject.d.ts +19 -19
  187. package/dist/adapter/z-stack/znp/zpiObject.js +96 -96
  188. package/dist/adapter/zigate/adapter/index.d.ts +2 -2
  189. package/dist/adapter/zigate/adapter/index.js +10 -10
  190. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +69 -69
  191. package/dist/adapter/zigate/adapter/zigateAdapter.js +678 -678
  192. package/dist/adapter/zigate/debug.d.ts +7 -7
  193. package/dist/adapter/zigate/debug.js +22 -22
  194. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +18 -18
  195. package/dist/adapter/zigate/driver/buffaloZiGate.js +139 -139
  196. package/dist/adapter/zigate/driver/commandType.d.ts +41 -41
  197. package/dist/adapter/zigate/driver/commandType.js +385 -385
  198. package/dist/adapter/zigate/driver/constants.d.ts +276 -276
  199. package/dist/adapter/zigate/driver/constants.js +371 -371
  200. package/dist/adapter/zigate/driver/frame.d.ts +26 -26
  201. package/dist/adapter/zigate/driver/frame.js +172 -172
  202. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  203. package/dist/adapter/zigate/driver/messageType.d.ts +11 -11
  204. package/dist/adapter/zigate/driver/messageType.js +278 -278
  205. package/dist/adapter/zigate/driver/parameterType.d.ts +20 -20
  206. package/dist/adapter/zigate/driver/parameterType.js +23 -23
  207. package/dist/adapter/zigate/driver/ziGateObject.d.ts +23 -23
  208. package/dist/adapter/zigate/driver/ziGateObject.js +106 -106
  209. package/dist/adapter/zigate/driver/zigate.d.ts +49 -49
  210. package/dist/adapter/zigate/driver/zigate.js +303 -303
  211. package/dist/buffalo/buffalo.d.ts +50 -50
  212. package/dist/buffalo/buffalo.js +322 -322
  213. package/dist/buffalo/index.d.ts +3 -3
  214. package/dist/buffalo/index.js +33 -33
  215. package/dist/buffalo/tstype.d.ts +8 -8
  216. package/dist/buffalo/tstype.js +2 -2
  217. package/dist/controller/controller.d.ts +113 -110
  218. package/dist/controller/controller.d.ts.map +1 -1
  219. package/dist/controller/controller.js +619 -607
  220. package/dist/controller/controller.js.map +1 -1
  221. package/dist/controller/database.d.ts +18 -18
  222. package/dist/controller/database.js +93 -93
  223. package/dist/controller/events.d.ts +58 -55
  224. package/dist/controller/events.d.ts.map +1 -1
  225. package/dist/controller/events.js +101 -101
  226. package/dist/controller/events.js.map +1 -1
  227. package/dist/controller/greenPower.d.ts +12 -12
  228. package/dist/controller/greenPower.js +220 -220
  229. package/dist/controller/helpers/index.d.ts +2 -2
  230. package/dist/controller/helpers/index.js +28 -28
  231. package/dist/controller/helpers/request.d.ts +22 -22
  232. package/dist/controller/helpers/request.js +71 -71
  233. package/dist/controller/helpers/zclFrameConverter.d.ts +7 -7
  234. package/dist/controller/helpers/zclFrameConverter.js +31 -31
  235. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +5 -5
  236. package/dist/controller/helpers/zclTransactionSequenceNumber.js +13 -13
  237. package/dist/controller/index.d.ts +5 -5
  238. package/dist/controller/index.js +8 -8
  239. package/dist/controller/logger-stub.d.ts +6 -6
  240. package/dist/controller/logger-stub.js +2 -2
  241. package/dist/controller/model/device.d.ts +133 -132
  242. package/dist/controller/model/device.d.ts.map +1 -1
  243. package/dist/controller/model/device.js +717 -708
  244. package/dist/controller/model/device.js.map +1 -1
  245. package/dist/controller/model/endpoint.d.ts +131 -131
  246. package/dist/controller/model/endpoint.d.ts.map +1 -1
  247. package/dist/controller/model/endpoint.js +816 -817
  248. package/dist/controller/model/endpoint.js.map +1 -1
  249. package/dist/controller/model/entity.d.ts +14 -14
  250. package/dist/controller/model/entity.js +26 -26
  251. package/dist/controller/model/group.d.ts +38 -38
  252. package/dist/controller/model/group.js +221 -221
  253. package/dist/controller/model/index.d.ts +5 -5
  254. package/dist/controller/model/index.js +14 -14
  255. package/dist/controller/touchlink.d.ts +19 -19
  256. package/dist/controller/touchlink.js +157 -157
  257. package/dist/controller/tstype.d.ts +21 -21
  258. package/dist/controller/tstype.js +9 -9
  259. package/dist/index.d.ts +3 -3
  260. package/dist/index.js +33 -33
  261. package/dist/models/backup-storage-legacy.d.ts +26 -26
  262. package/dist/models/backup-storage-legacy.js +2 -2
  263. package/dist/models/backup-storage-unified.d.ts +49 -49
  264. package/dist/models/backup-storage-unified.js +2 -2
  265. package/dist/models/backup.d.ts +37 -37
  266. package/dist/models/backup.js +2 -2
  267. package/dist/models/index.d.ts +4 -4
  268. package/dist/models/index.js +20 -20
  269. package/dist/models/network-options.d.ts +12 -12
  270. package/dist/models/network-options.js +2 -2
  271. package/dist/utils/assertString.d.ts +2 -2
  272. package/dist/utils/assertString.js +8 -8
  273. package/dist/utils/backup.d.ts +20 -20
  274. package/dist/utils/backup.js +187 -187
  275. package/dist/utils/equalsPartial.d.ts +2 -2
  276. package/dist/utils/equalsPartial.js +11 -11
  277. package/dist/utils/index.d.ts +9 -9
  278. package/dist/utils/index.js +45 -45
  279. package/dist/utils/isNumberArray.d.ts +2 -2
  280. package/dist/utils/isNumberArray.js +6 -6
  281. package/dist/utils/queue.d.ts +11 -11
  282. package/dist/utils/queue.js +50 -50
  283. package/dist/utils/realpathSync.d.ts +2 -2
  284. package/dist/utils/realpathSync.js +12 -12
  285. package/dist/utils/wait.d.ts +2 -2
  286. package/dist/utils/wait.js +8 -8
  287. package/dist/utils/waitress.d.ts +21 -21
  288. package/dist/utils/waitress.js +61 -61
  289. package/dist/zcl/buffaloZcl.d.ts +41 -41
  290. package/dist/zcl/buffaloZcl.js +591 -591
  291. package/dist/zcl/definition/buffaloZclDataType.d.ts +17 -17
  292. package/dist/zcl/definition/buffaloZclDataType.js +20 -20
  293. package/dist/zcl/definition/cluster.d.ts +29 -29
  294. package/dist/zcl/definition/cluster.js +5335 -5335
  295. package/dist/zcl/definition/dataType.d.ts +59 -59
  296. package/dist/zcl/definition/dataType.js +64 -64
  297. package/dist/zcl/definition/direction.d.ts +5 -5
  298. package/dist/zcl/definition/direction.js +8 -8
  299. package/dist/zcl/definition/endpointDeviceType.d.ts +4 -4
  300. package/dist/zcl/definition/endpointDeviceType.js +15 -15
  301. package/dist/zcl/definition/foundation.d.ts +11 -11
  302. package/dist/zcl/definition/foundation.js +167 -167
  303. package/dist/zcl/definition/frameControl.d.ts +10 -10
  304. package/dist/zcl/definition/frameControl.js +2 -2
  305. package/dist/zcl/definition/frameType.d.ts +5 -5
  306. package/dist/zcl/definition/frameType.js +8 -8
  307. package/dist/zcl/definition/index.d.ts +13 -13
  308. package/dist/zcl/definition/index.js +51 -51
  309. package/dist/zcl/definition/manufacturerCode.d.ts +1074 -1074
  310. package/dist/zcl/definition/manufacturerCode.js +1079 -1079
  311. package/dist/zcl/definition/powerSource.d.ts +4 -4
  312. package/dist/zcl/definition/powerSource.js +12 -12
  313. package/dist/zcl/definition/status.d.ts +38 -38
  314. package/dist/zcl/definition/status.js +41 -41
  315. package/dist/zcl/definition/tstype.d.ts +16 -16
  316. package/dist/zcl/definition/tstype.js +2 -2
  317. package/dist/zcl/index.d.ts +15 -15
  318. package/dist/zcl/index.js +55 -55
  319. package/dist/zcl/tstype.d.ts +56 -56
  320. package/dist/zcl/tstype.js +10 -10
  321. package/dist/zcl/utils.d.ts +6 -6
  322. package/dist/zcl/utils.js +165 -165
  323. package/dist/zcl/zclFrame.d.ts +45 -45
  324. package/dist/zcl/zclFrame.js +347 -347
  325. package/dist/zcl/zclStatusError.d.ts +5 -5
  326. package/dist/zcl/zclStatusError.js +13 -13
  327. package/package.json +1 -1
@@ -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