matterbridge 3.4.7-dev-20260112-bd9e311 → 3.4.7

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 (449) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README-MACOS-PLIST.md +2 -4
  3. package/dist/broadcastServer.d.ts +115 -0
  4. package/dist/broadcastServer.d.ts.map +1 -0
  5. package/dist/broadcastServer.js +117 -0
  6. package/dist/broadcastServer.js.map +1 -0
  7. package/dist/broadcastServerTypes.d.ts +43 -0
  8. package/dist/broadcastServerTypes.d.ts.map +1 -0
  9. package/dist/broadcastServerTypes.js +24 -0
  10. package/dist/broadcastServerTypes.js.map +1 -0
  11. package/dist/cli.d.ts +24 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +97 -1
  14. package/dist/cli.js.map +1 -0
  15. package/dist/cliEmitter.d.ts +36 -0
  16. package/dist/cliEmitter.d.ts.map +1 -0
  17. package/dist/cliEmitter.js +37 -0
  18. package/dist/cliEmitter.js.map +1 -0
  19. package/dist/cliHistory.d.ts +42 -0
  20. package/dist/cliHistory.d.ts.map +1 -0
  21. package/dist/cliHistory.js +38 -0
  22. package/dist/cliHistory.js.map +1 -0
  23. package/dist/clusters/export.d.ts +1 -0
  24. package/dist/clusters/export.d.ts.map +1 -0
  25. package/dist/clusters/export.js +2 -0
  26. package/dist/clusters/export.js.map +1 -0
  27. package/dist/deviceManager.d.ts +108 -0
  28. package/dist/deviceManager.d.ts.map +1 -0
  29. package/dist/deviceManager.js +113 -1
  30. package/dist/deviceManager.js.map +1 -0
  31. package/dist/devices/airConditioner.d.ts +75 -0
  32. package/dist/devices/airConditioner.d.ts.map +1 -0
  33. package/dist/devices/airConditioner.js +57 -0
  34. package/dist/devices/airConditioner.js.map +1 -0
  35. package/dist/devices/batteryStorage.d.ts +43 -0
  36. package/dist/devices/batteryStorage.d.ts.map +1 -0
  37. package/dist/devices/batteryStorage.js +48 -1
  38. package/dist/devices/batteryStorage.js.map +1 -0
  39. package/dist/devices/cooktop.d.ts +55 -0
  40. package/dist/devices/cooktop.d.ts.map +1 -0
  41. package/dist/devices/cooktop.js +56 -0
  42. package/dist/devices/cooktop.js.map +1 -0
  43. package/dist/devices/dishwasher.d.ts +55 -0
  44. package/dist/devices/dishwasher.d.ts.map +1 -0
  45. package/dist/devices/dishwasher.js +57 -0
  46. package/dist/devices/dishwasher.js.map +1 -0
  47. package/dist/devices/evse.d.ts +57 -0
  48. package/dist/devices/evse.d.ts.map +1 -0
  49. package/dist/devices/evse.js +74 -10
  50. package/dist/devices/evse.js.map +1 -0
  51. package/dist/devices/export.d.ts +1 -0
  52. package/dist/devices/export.d.ts.map +1 -0
  53. package/dist/devices/export.js +5 -0
  54. package/dist/devices/export.js.map +1 -0
  55. package/dist/devices/extractorHood.d.ts +41 -0
  56. package/dist/devices/extractorHood.d.ts.map +1 -0
  57. package/dist/devices/extractorHood.js +43 -0
  58. package/dist/devices/extractorHood.js.map +1 -0
  59. package/dist/devices/heatPump.d.ts +43 -0
  60. package/dist/devices/heatPump.d.ts.map +1 -0
  61. package/dist/devices/heatPump.js +50 -2
  62. package/dist/devices/heatPump.js.map +1 -0
  63. package/dist/devices/laundryDryer.d.ts +58 -0
  64. package/dist/devices/laundryDryer.d.ts.map +1 -0
  65. package/dist/devices/laundryDryer.js +62 -3
  66. package/dist/devices/laundryDryer.js.map +1 -0
  67. package/dist/devices/laundryWasher.d.ts +64 -0
  68. package/dist/devices/laundryWasher.d.ts.map +1 -0
  69. package/dist/devices/laundryWasher.js +70 -4
  70. package/dist/devices/laundryWasher.js.map +1 -0
  71. package/dist/devices/microwaveOven.d.ts +77 -1
  72. package/dist/devices/microwaveOven.d.ts.map +1 -0
  73. package/dist/devices/microwaveOven.js +88 -5
  74. package/dist/devices/microwaveOven.js.map +1 -0
  75. package/dist/devices/oven.d.ts +82 -0
  76. package/dist/devices/oven.d.ts.map +1 -0
  77. package/dist/devices/oven.js +85 -0
  78. package/dist/devices/oven.js.map +1 -0
  79. package/dist/devices/refrigerator.d.ts +100 -0
  80. package/dist/devices/refrigerator.d.ts.map +1 -0
  81. package/dist/devices/refrigerator.js +102 -0
  82. package/dist/devices/refrigerator.js.map +1 -0
  83. package/dist/devices/roboticVacuumCleaner.d.ts +83 -0
  84. package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
  85. package/dist/devices/roboticVacuumCleaner.js +100 -9
  86. package/dist/devices/roboticVacuumCleaner.js.map +1 -0
  87. package/dist/devices/solarPower.d.ts +36 -0
  88. package/dist/devices/solarPower.d.ts.map +1 -0
  89. package/dist/devices/solarPower.js +38 -0
  90. package/dist/devices/solarPower.js.map +1 -0
  91. package/dist/devices/speaker.d.ts +79 -0
  92. package/dist/devices/speaker.d.ts.map +1 -0
  93. package/dist/devices/speaker.js +84 -0
  94. package/dist/devices/speaker.js.map +1 -0
  95. package/dist/devices/temperatureControl.d.ts +21 -0
  96. package/dist/devices/temperatureControl.d.ts.map +1 -0
  97. package/dist/devices/temperatureControl.js +24 -3
  98. package/dist/devices/temperatureControl.js.map +1 -0
  99. package/dist/devices/waterHeater.d.ts +74 -0
  100. package/dist/devices/waterHeater.d.ts.map +1 -0
  101. package/dist/devices/waterHeater.js +82 -2
  102. package/dist/devices/waterHeater.js.map +1 -0
  103. package/dist/dgram/coap.d.ts +171 -0
  104. package/dist/dgram/coap.d.ts.map +1 -0
  105. package/dist/dgram/coap.js +126 -13
  106. package/dist/dgram/coap.js.map +1 -0
  107. package/dist/dgram/dgram.d.ts +99 -0
  108. package/dist/dgram/dgram.d.ts.map +1 -0
  109. package/dist/dgram/dgram.js +114 -2
  110. package/dist/dgram/dgram.js.map +1 -0
  111. package/dist/dgram/mb_coap.d.ts +23 -0
  112. package/dist/dgram/mb_coap.d.ts.map +1 -0
  113. package/dist/dgram/mb_coap.js +41 -3
  114. package/dist/dgram/mb_coap.js.map +1 -0
  115. package/dist/dgram/mb_mdns.d.ts +23 -0
  116. package/dist/dgram/mb_mdns.d.ts.map +1 -0
  117. package/dist/dgram/mb_mdns.js +80 -24
  118. package/dist/dgram/mb_mdns.js.map +1 -0
  119. package/dist/dgram/mdns.d.ts +187 -4
  120. package/dist/dgram/mdns.d.ts.map +1 -0
  121. package/dist/dgram/mdns.js +371 -139
  122. package/dist/dgram/mdns.js.map +1 -0
  123. package/dist/dgram/multicast.d.ts +49 -0
  124. package/dist/dgram/multicast.d.ts.map +1 -0
  125. package/dist/dgram/multicast.js +62 -1
  126. package/dist/dgram/multicast.js.map +1 -0
  127. package/dist/dgram/unicast.d.ts +53 -0
  128. package/dist/dgram/unicast.d.ts.map +1 -0
  129. package/dist/dgram/unicast.js +60 -0
  130. package/dist/dgram/unicast.js.map +1 -0
  131. package/dist/frontend.d.ts +187 -0
  132. package/dist/frontend.d.ts.map +1 -0
  133. package/dist/frontend.js +485 -38
  134. package/dist/frontend.js.map +1 -0
  135. package/dist/frontendTypes.d.ts +57 -0
  136. package/dist/frontendTypes.d.ts.map +1 -0
  137. package/dist/frontendTypes.js +45 -0
  138. package/dist/frontendTypes.js.map +1 -0
  139. package/dist/helpers.d.ts +43 -0
  140. package/dist/helpers.d.ts.map +1 -0
  141. package/dist/helpers.js +53 -0
  142. package/dist/helpers.js.map +1 -0
  143. package/dist/index.d.ts +23 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +25 -0
  146. package/dist/index.js.map +1 -0
  147. package/dist/jestutils/export.d.ts +1 -0
  148. package/dist/jestutils/export.d.ts.map +1 -0
  149. package/dist/jestutils/export.js +1 -0
  150. package/dist/jestutils/export.js.map +1 -0
  151. package/dist/jestutils/jestHelpers.d.ts +255 -0
  152. package/dist/jestutils/jestHelpers.d.ts.map +1 -0
  153. package/dist/jestutils/jestHelpers.js +371 -14
  154. package/dist/jestutils/jestHelpers.js.map +1 -0
  155. package/dist/logger/export.d.ts +1 -0
  156. package/dist/logger/export.d.ts.map +1 -0
  157. package/dist/logger/export.js +1 -0
  158. package/dist/logger/export.js.map +1 -0
  159. package/dist/matter/behaviors.d.ts +1 -0
  160. package/dist/matter/behaviors.d.ts.map +1 -0
  161. package/dist/matter/behaviors.js +2 -0
  162. package/dist/matter/behaviors.js.map +1 -0
  163. package/dist/matter/clusters.d.ts +1 -0
  164. package/dist/matter/clusters.d.ts.map +1 -0
  165. package/dist/matter/clusters.js +2 -0
  166. package/dist/matter/clusters.js.map +1 -0
  167. package/dist/matter/devices.d.ts +1 -0
  168. package/dist/matter/devices.d.ts.map +1 -0
  169. package/dist/matter/devices.js +2 -0
  170. package/dist/matter/devices.js.map +1 -0
  171. package/dist/matter/endpoints.d.ts +1 -0
  172. package/dist/matter/endpoints.d.ts.map +1 -0
  173. package/dist/matter/endpoints.js +2 -0
  174. package/dist/matter/endpoints.js.map +1 -0
  175. package/dist/matter/export.d.ts +1 -0
  176. package/dist/matter/export.d.ts.map +1 -0
  177. package/dist/matter/export.js +3 -0
  178. package/dist/matter/export.js.map +1 -0
  179. package/dist/matter/types.d.ts +1 -0
  180. package/dist/matter/types.d.ts.map +1 -0
  181. package/dist/matter/types.js +3 -0
  182. package/dist/matter/types.js.map +1 -0
  183. package/dist/matterNode.d.ts +258 -0
  184. package/dist/matterNode.d.ts.map +1 -0
  185. package/dist/matterNode.js +369 -8
  186. package/dist/matterNode.js.map +1 -0
  187. package/dist/matterbridge.d.ts +353 -0
  188. package/dist/matterbridge.d.ts.map +1 -0
  189. package/dist/matterbridge.js +824 -46
  190. package/dist/matterbridge.js.map +1 -0
  191. package/dist/matterbridgeAccessoryPlatform.d.ts +36 -0
  192. package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
  193. package/dist/matterbridgeAccessoryPlatform.js +38 -0
  194. package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
  195. package/dist/matterbridgeBehaviors.d.ts +24 -0
  196. package/dist/matterbridgeBehaviors.d.ts.map +1 -0
  197. package/dist/matterbridgeBehaviors.js +68 -5
  198. package/dist/matterbridgeBehaviors.js.map +1 -0
  199. package/dist/matterbridgeDeviceTypes.d.ts +603 -0
  200. package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
  201. package/dist/matterbridgeDeviceTypes.js +635 -14
  202. package/dist/matterbridgeDeviceTypes.js.map +1 -0
  203. package/dist/matterbridgeDynamicPlatform.d.ts +36 -0
  204. package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
  205. package/dist/matterbridgeDynamicPlatform.js +38 -0
  206. package/dist/matterbridgeDynamicPlatform.js.map +1 -0
  207. package/dist/matterbridgeEndpoint.d.ts +1332 -0
  208. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  209. package/dist/matterbridgeEndpoint.js +1457 -53
  210. package/dist/matterbridgeEndpoint.js.map +1 -0
  211. package/dist/matterbridgeEndpointHelpers.d.ts +425 -0
  212. package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
  213. package/dist/matterbridgeEndpointHelpers.js +483 -20
  214. package/dist/matterbridgeEndpointHelpers.js.map +1 -0
  215. package/dist/matterbridgeEndpointTypes.d.ts +70 -0
  216. package/dist/matterbridgeEndpointTypes.d.ts.map +1 -0
  217. package/dist/matterbridgeEndpointTypes.js +25 -0
  218. package/dist/matterbridgeEndpointTypes.js.map +1 -0
  219. package/dist/matterbridgePlatform.d.ts +425 -0
  220. package/dist/matterbridgePlatform.d.ts.map +1 -0
  221. package/dist/matterbridgePlatform.js +451 -1
  222. package/dist/matterbridgePlatform.js.map +1 -0
  223. package/dist/matterbridgeTypes.d.ts +46 -0
  224. package/dist/matterbridgeTypes.d.ts.map +1 -0
  225. package/dist/matterbridgeTypes.js +26 -0
  226. package/dist/matterbridgeTypes.js.map +1 -0
  227. package/dist/pluginManager.d.ts +305 -0
  228. package/dist/pluginManager.d.ts.map +1 -0
  229. package/dist/pluginManager.js +341 -5
  230. package/dist/pluginManager.js.map +1 -0
  231. package/dist/shelly.d.ts +157 -0
  232. package/dist/shelly.d.ts.map +1 -0
  233. package/dist/shelly.js +178 -7
  234. package/dist/shelly.js.map +1 -0
  235. package/dist/storage/export.d.ts +1 -0
  236. package/dist/storage/export.d.ts.map +1 -0
  237. package/dist/storage/export.js +1 -0
  238. package/dist/storage/export.js.map +1 -0
  239. package/dist/update.d.ts +75 -0
  240. package/dist/update.d.ts.map +1 -0
  241. package/dist/update.js +93 -1
  242. package/dist/update.js.map +1 -0
  243. package/dist/utils/colorUtils.d.ts +77 -0
  244. package/dist/utils/colorUtils.d.ts.map +1 -0
  245. package/dist/utils/colorUtils.js +97 -2
  246. package/dist/utils/colorUtils.js.map +1 -0
  247. package/dist/utils/commandLine.d.ts +60 -0
  248. package/dist/utils/commandLine.d.ts.map +1 -0
  249. package/dist/utils/commandLine.js +60 -0
  250. package/dist/utils/commandLine.js.map +1 -0
  251. package/dist/utils/copyDirectory.d.ts +33 -0
  252. package/dist/utils/copyDirectory.d.ts.map +1 -0
  253. package/dist/utils/copyDirectory.js +37 -0
  254. package/dist/utils/copyDirectory.js.map +1 -0
  255. package/dist/utils/createDirectory.d.ts +32 -0
  256. package/dist/utils/createDirectory.d.ts.map +1 -0
  257. package/dist/utils/createDirectory.js +33 -0
  258. package/dist/utils/createDirectory.js.map +1 -0
  259. package/dist/utils/createZip.d.ts +38 -0
  260. package/dist/utils/createZip.d.ts.map +1 -0
  261. package/dist/utils/createZip.js +47 -2
  262. package/dist/utils/createZip.js.map +1 -0
  263. package/dist/utils/deepCopy.d.ts +31 -0
  264. package/dist/utils/deepCopy.d.ts.map +1 -0
  265. package/dist/utils/deepCopy.js +39 -0
  266. package/dist/utils/deepCopy.js.map +1 -0
  267. package/dist/utils/deepEqual.d.ts +53 -0
  268. package/dist/utils/deepEqual.d.ts.map +1 -0
  269. package/dist/utils/deepEqual.js +72 -1
  270. package/dist/utils/deepEqual.js.map +1 -0
  271. package/dist/utils/error.d.ts +42 -0
  272. package/dist/utils/error.d.ts.map +1 -0
  273. package/dist/utils/error.js +42 -0
  274. package/dist/utils/error.js.map +1 -0
  275. package/dist/utils/export.d.ts +1 -0
  276. package/dist/utils/export.d.ts.map +1 -0
  277. package/dist/utils/export.js +1 -0
  278. package/dist/utils/export.js.map +1 -0
  279. package/dist/utils/format.d.ts +49 -0
  280. package/dist/utils/format.d.ts.map +1 -0
  281. package/dist/utils/format.js +49 -0
  282. package/dist/utils/format.js.map +1 -0
  283. package/dist/utils/hex.d.ts +85 -0
  284. package/dist/utils/hex.d.ts.map +1 -0
  285. package/dist/utils/hex.js +124 -0
  286. package/dist/utils/hex.js.map +1 -0
  287. package/dist/utils/inspector.d.ts +63 -0
  288. package/dist/utils/inspector.d.ts.map +1 -0
  289. package/dist/utils/inspector.js +69 -1
  290. package/dist/utils/inspector.js.map +1 -0
  291. package/dist/utils/isValid.d.ts +93 -0
  292. package/dist/utils/isValid.d.ts.map +1 -0
  293. package/dist/utils/isValid.js +93 -0
  294. package/dist/utils/isValid.js.map +1 -0
  295. package/dist/utils/network.d.ts +116 -0
  296. package/dist/utils/network.d.ts.map +1 -0
  297. package/dist/utils/network.js +126 -5
  298. package/dist/utils/network.js.map +1 -0
  299. package/dist/utils/spawn.d.ts +32 -0
  300. package/dist/utils/spawn.d.ts.map +1 -0
  301. package/dist/utils/spawn.js +71 -1
  302. package/dist/utils/spawn.js.map +1 -0
  303. package/dist/utils/tracker.d.ts +56 -0
  304. package/dist/utils/tracker.d.ts.map +1 -0
  305. package/dist/utils/tracker.js +64 -1
  306. package/dist/utils/tracker.js.map +1 -0
  307. package/dist/utils/wait.d.ts +51 -0
  308. package/dist/utils/wait.d.ts.map +1 -0
  309. package/dist/utils/wait.js +60 -8
  310. package/dist/utils/wait.js.map +1 -0
  311. package/dist/workerGlobalPrefix.d.ts +24 -0
  312. package/dist/workerGlobalPrefix.d.ts.map +1 -0
  313. package/dist/workerGlobalPrefix.js +37 -5
  314. package/dist/workerGlobalPrefix.js.map +1 -0
  315. package/dist/workerTypes.d.ts +25 -0
  316. package/dist/workerTypes.d.ts.map +1 -0
  317. package/dist/workerTypes.js +24 -0
  318. package/dist/workerTypes.js.map +1 -0
  319. package/dist/workers.d.ts +61 -0
  320. package/dist/workers.d.ts.map +1 -0
  321. package/dist/workers.js +68 -4
  322. package/dist/workers.js.map +1 -0
  323. package/npm-shrinkwrap.json +115 -115
  324. package/package.json +2 -1
  325. package/packages/dgram/dist/coap.d.ts +171 -0
  326. package/packages/dgram/dist/coap.d.ts.map +1 -0
  327. package/packages/dgram/dist/coap.js +126 -13
  328. package/packages/dgram/dist/coap.js.map +1 -0
  329. package/packages/dgram/dist/dgram.d.ts +99 -0
  330. package/packages/dgram/dist/dgram.d.ts.map +1 -0
  331. package/packages/dgram/dist/dgram.js +115 -3
  332. package/packages/dgram/dist/dgram.js.map +1 -0
  333. package/packages/dgram/dist/export.d.ts +1 -0
  334. package/packages/dgram/dist/export.d.ts.map +1 -0
  335. package/packages/dgram/dist/export.js +1 -0
  336. package/packages/dgram/dist/export.js.map +1 -0
  337. package/packages/dgram/dist/mdns.d.ts +187 -4
  338. package/packages/dgram/dist/mdns.d.ts.map +1 -0
  339. package/packages/dgram/dist/mdns.js +371 -139
  340. package/packages/dgram/dist/mdns.js.map +1 -0
  341. package/packages/dgram/dist/multicast.d.ts +49 -0
  342. package/packages/dgram/dist/multicast.d.ts.map +1 -0
  343. package/packages/dgram/dist/multicast.js +62 -1
  344. package/packages/dgram/dist/multicast.js.map +1 -0
  345. package/packages/dgram/dist/unicast.d.ts +53 -0
  346. package/packages/dgram/dist/unicast.d.ts.map +1 -0
  347. package/packages/dgram/dist/unicast.js +60 -0
  348. package/packages/dgram/dist/unicast.js.map +1 -0
  349. package/packages/jest-utils/dist/export.d.ts +1 -0
  350. package/packages/jest-utils/dist/export.d.ts.map +1 -0
  351. package/packages/jest-utils/dist/export.js +1 -0
  352. package/packages/jest-utils/dist/export.js.map +1 -0
  353. package/packages/jest-utils/dist/jestHelpers.d.ts +56 -0
  354. package/packages/jest-utils/dist/jestHelpers.d.ts.map +1 -0
  355. package/packages/jest-utils/dist/jestHelpers.js +62 -1
  356. package/packages/jest-utils/dist/jestHelpers.js.map +1 -0
  357. package/packages/utils/dist/colorUtils.d.ts +77 -0
  358. package/packages/utils/dist/colorUtils.d.ts.map +1 -0
  359. package/packages/utils/dist/colorUtils.js +97 -2
  360. package/packages/utils/dist/colorUtils.js.map +1 -0
  361. package/packages/utils/dist/commandLine.d.ts +60 -0
  362. package/packages/utils/dist/commandLine.d.ts.map +1 -0
  363. package/packages/utils/dist/commandLine.js +60 -0
  364. package/packages/utils/dist/commandLine.js.map +1 -0
  365. package/packages/utils/dist/copyDirectory.d.ts +33 -0
  366. package/packages/utils/dist/copyDirectory.d.ts.map +1 -0
  367. package/packages/utils/dist/copyDirectory.js +37 -0
  368. package/packages/utils/dist/copyDirectory.js.map +1 -0
  369. package/packages/utils/dist/createDirectory.d.ts +32 -0
  370. package/packages/utils/dist/createDirectory.d.ts.map +1 -0
  371. package/packages/utils/dist/createDirectory.js +33 -0
  372. package/packages/utils/dist/createDirectory.js.map +1 -0
  373. package/packages/utils/dist/createZip.d.ts +38 -0
  374. package/packages/utils/dist/createZip.d.ts.map +1 -0
  375. package/packages/utils/dist/createZip.js +47 -2
  376. package/packages/utils/dist/createZip.js.map +1 -0
  377. package/packages/utils/dist/deepCopy.d.ts +31 -0
  378. package/packages/utils/dist/deepCopy.d.ts.map +1 -0
  379. package/packages/utils/dist/deepCopy.js +39 -0
  380. package/packages/utils/dist/deepCopy.js.map +1 -0
  381. package/packages/utils/dist/deepEqual.d.ts +53 -0
  382. package/packages/utils/dist/deepEqual.d.ts.map +1 -0
  383. package/packages/utils/dist/deepEqual.js +73 -1
  384. package/packages/utils/dist/deepEqual.js.map +1 -0
  385. package/packages/utils/dist/error.d.ts +42 -0
  386. package/packages/utils/dist/error.d.ts.map +1 -0
  387. package/packages/utils/dist/error.js +42 -0
  388. package/packages/utils/dist/error.js.map +1 -0
  389. package/packages/utils/dist/export.d.ts +1 -0
  390. package/packages/utils/dist/export.d.ts.map +1 -0
  391. package/packages/utils/dist/export.js +1 -0
  392. package/packages/utils/dist/export.js.map +1 -0
  393. package/packages/utils/dist/format.d.ts +49 -0
  394. package/packages/utils/dist/format.d.ts.map +1 -0
  395. package/packages/utils/dist/format.js +49 -0
  396. package/packages/utils/dist/format.js.map +1 -0
  397. package/packages/utils/dist/githubVersion.d.ts +32 -0
  398. package/packages/utils/dist/githubVersion.d.ts.map +1 -0
  399. package/packages/utils/dist/githubVersion.js +34 -1
  400. package/packages/utils/dist/githubVersion.js.map +1 -0
  401. package/packages/utils/dist/hex.d.ts +85 -0
  402. package/packages/utils/dist/hex.d.ts.map +1 -0
  403. package/packages/utils/dist/hex.js +124 -0
  404. package/packages/utils/dist/hex.js.map +1 -0
  405. package/packages/utils/dist/inspector.d.ts +63 -0
  406. package/packages/utils/dist/inspector.d.ts.map +1 -0
  407. package/packages/utils/dist/inspector.js +69 -1
  408. package/packages/utils/dist/inspector.js.map +1 -0
  409. package/packages/utils/dist/isValid.d.ts +93 -0
  410. package/packages/utils/dist/isValid.d.ts.map +1 -0
  411. package/packages/utils/dist/isValid.js +93 -0
  412. package/packages/utils/dist/isValid.js.map +1 -0
  413. package/packages/utils/dist/network.d.ts +93 -0
  414. package/packages/utils/dist/network.d.ts.map +1 -0
  415. package/packages/utils/dist/network.js +99 -3
  416. package/packages/utils/dist/network.js.map +1 -0
  417. package/packages/utils/dist/npmRoot.d.ts +28 -0
  418. package/packages/utils/dist/npmRoot.d.ts.map +1 -0
  419. package/packages/utils/dist/npmRoot.js +28 -0
  420. package/packages/utils/dist/npmRoot.js.map +1 -0
  421. package/packages/utils/dist/npmVersion.d.ts +32 -0
  422. package/packages/utils/dist/npmVersion.d.ts.map +1 -0
  423. package/packages/utils/dist/npmVersion.js +34 -1
  424. package/packages/utils/dist/npmVersion.js.map +1 -0
  425. package/packages/utils/dist/tracker.d.ts +56 -0
  426. package/packages/utils/dist/tracker.d.ts.map +1 -0
  427. package/packages/utils/dist/tracker.js +64 -1
  428. package/packages/utils/dist/tracker.js.map +1 -0
  429. package/packages/utils/dist/wait.d.ts +51 -0
  430. package/packages/utils/dist/wait.d.ts.map +1 -0
  431. package/packages/utils/dist/wait.js +60 -8
  432. package/packages/utils/dist/wait.js.map +1 -0
  433. package/packages/vitest-utils/dist/export.d.ts +1 -0
  434. package/packages/vitest-utils/dist/export.d.ts.map +1 -0
  435. package/packages/vitest-utils/dist/export.js +1 -0
  436. package/packages/vitest-utils/dist/export.js.map +1 -0
  437. package/packages/vitest-utils/dist/vitestHelpers.d.ts +37 -0
  438. package/packages/vitest-utils/dist/vitestHelpers.d.ts.map +1 -0
  439. package/packages/vitest-utils/dist/vitestHelpers.js +43 -1
  440. package/packages/vitest-utils/dist/vitestHelpers.js.map +1 -0
  441. package/bmc-button.svg +0 -22
  442. package/packages/dgram/bmc-button.svg +0 -22
  443. package/packages/dgram/matterbridge.svg +0 -50
  444. package/packages/jest-utils/bmc-button.svg +0 -22
  445. package/packages/jest-utils/matterbridge.svg +0 -50
  446. package/packages/utils/bmc-button.svg +0 -22
  447. package/packages/utils/matterbridge.svg +0 -50
  448. package/packages/vitest-utils/bmc-button.svg +0 -22
  449. package/packages/vitest-utils/matterbridge.svg +0 -50
@@ -1,8 +1,35 @@
1
+ /**
2
+ * @description This file contains the class Dgram.
3
+ * @file dgram.ts
4
+ * @author Luca Liguori
5
+ * @created 2025-03-22
6
+ * @version 1.0.3
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2025, 2026, 2027 Luca Liguori.
10
+ *
11
+ * Licensed under the Apache License, Version 2.0 (the "License");
12
+ * you may not use this file except in compliance with the License.
13
+ * You may obtain a copy of the License at
14
+ *
15
+ * http://www.apache.org/licenses/LICENSE-2.0
16
+ *
17
+ * Unless required by applicable law or agreed to in writing, software
18
+ * distributed under the License is distributed on an "AS IS" BASIS,
19
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ * See the License for the specific language governing permissions and
21
+ * limitations under the License.
22
+ */
23
+ // Node.js imports
1
24
  import dgram from 'node:dgram';
2
25
  import EventEmitter from 'node:events';
3
26
  import os from 'node:os';
27
+ // AnsiLogger imports
4
28
  import { AnsiLogger, BLUE, db, idn, nf, rs } from 'node-ansi-logger';
5
29
  import { hasParameter } from '@matterbridge/utils';
30
+ /**
31
+ * This class implements a dgram socket.
32
+ */
6
33
  export class Dgram extends EventEmitter {
7
34
  verbose = hasParameter('v') || hasParameter('verbose');
8
35
  debug = hasParameter('d') || hasParameter('debug') || hasParameter('v') || hasParameter('verbose');
@@ -15,12 +42,21 @@ export class Dgram extends EventEmitter {
15
42
  interfaceAddress;
16
43
  interfaceNetmask;
17
44
  excludedInterfaceNamePattern = /(tailscale|wireguard|wintun|openvpn|\bwg\d*\b|\btun\d*\b|\btap\d*\b|\butun\d*\b|zerotier|hamachi|hyper-?v|v\s*ethernet|wsl|default switch|vmware|vmnet|vbox|virtualbox|virbr|docker|podman|\bveth\b|\bbr-\b|cni|kube|flannel|calico|teredo|isatap)/i;
45
+ /**
46
+ * Creates an instance of Dgram.
47
+ *
48
+ * @param {string} name - The name of the socket.
49
+ * @param {'udp4' | 'udp6'} socketType - The type of the socket (IPv4 or IPv6).
50
+ * @param {boolean | undefined} reuseAddr - Whether to allow address reuse. Defaults to true.
51
+ * @param {string} [interfaceName] - The name of the network interface to bind to.
52
+ * @param {string} [interfaceAddress] - The address of the network interface to bind to.
53
+ */
18
54
  constructor(name, socketType, reuseAddr = true, interfaceName, interfaceAddress) {
19
55
  super();
20
56
  this.log = new AnsiLogger({
21
57
  logName: name,
22
- logTimestampFormat: 4,
23
- logLevel: this.debug ? "debug" : this.silent ? "notice" : "info",
58
+ logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */,
59
+ logLevel: this.debug ? "debug" /* LogLevel.DEBUG */ : this.silent ? "notice" /* LogLevel.NOTICE */ : "info" /* LogLevel.INFO */,
24
60
  });
25
61
  this.socket = dgram.createSocket({ type: socketType, reuseAddr });
26
62
  this.socketType = socketType;
@@ -56,6 +92,13 @@ export class Dgram extends EventEmitter {
56
92
  this.onListening(address);
57
93
  });
58
94
  }
95
+ /**
96
+ * Sends a message to the specified server.
97
+ *
98
+ * @param {Buffer} msg - The message buffer to send.
99
+ * @param {string} serverAddress - The IPv4 address of the destination server.
100
+ * @param {number} serverPort - The port of the destination server.
101
+ */
59
102
  send(msg, serverAddress, serverPort) {
60
103
  this.socket.send(msg, 0, msg.length, serverPort, serverAddress, (error) => {
61
104
  if (error) {
@@ -93,20 +136,32 @@ export class Dgram extends EventEmitter {
93
136
  this.log.info(`Socket ready on ${BLUE}${address.family}${nf} ${BLUE}${address.address}${nf}:${BLUE}${address.port}${nf}`);
94
137
  this.emit('ready', address);
95
138
  }
139
+ /**
140
+ * Retrieves the IPv4 address of the specified network interface or the first external IPv4 interface if no interface is specified.
141
+ * Throws an error if no suitable interface or address is found.
142
+ *
143
+ * @param {string} networkInterface - The name of the network interface to retrieve the IPv4 address from. If not specified, the first external IPv4 interface will be used.
144
+ * @returns {string | undefined} The IPv4 address of the specified network interface or the first external IPv4 interface.
145
+ * @throws {Error} if no suitable interface or address is found.
146
+ */
96
147
  getIpv4InterfaceAddress(networkInterface) {
148
+ // Normalize the interface name: treat an empty string as undefined.
97
149
  if (networkInterface === '')
98
150
  networkInterface = undefined;
99
151
  const interfaces = os.networkInterfaces();
152
+ // If a specific interface is provided but not found, warn and fall back.
100
153
  if (networkInterface && !interfaces[networkInterface]) {
101
154
  this.log.warn(`Interface "${networkInterface}" not found. Using first external IPv4 interface.`);
102
155
  networkInterface = undefined;
103
156
  }
157
+ // If no interface was specified or the provided one doesn't exist, find the first external IPv4 interface.
104
158
  if (!networkInterface) {
105
159
  for (const [interfaceName, interfaceDetails] of Object.entries(interfaces)) {
106
160
  if (!networkInterface && this.excludedInterfaceNamePattern.test(interfaceName))
107
161
  continue;
108
162
  if (!interfaceDetails)
109
163
  continue;
164
+ // Check if at least one external IPv4 address exists on this interface.
110
165
  for (const detail of interfaceDetails) {
111
166
  if (detail.family === 'IPv4' && !detail.internal) {
112
167
  networkInterface = interfaceName;
@@ -120,6 +175,7 @@ export class Dgram extends EventEmitter {
120
175
  if (!networkInterface) {
121
176
  throw new Error(`Didn't find an external IPv4 network interface`);
122
177
  }
178
+ // Select the first external IPv4 address from the interface.
123
179
  const addresses = interfaces[networkInterface];
124
180
  const ipv4Address = addresses?.find((addr) => addr.family === 'IPv4' && !addr.internal);
125
181
  if (!ipv4Address) {
@@ -127,14 +183,25 @@ export class Dgram extends EventEmitter {
127
183
  }
128
184
  return ipv4Address.address;
129
185
  }
186
+ /**
187
+ * Retrieves the IPv6 address of the specified network interface or the first external IPv6 interface if no interface is specified.
188
+ * Throws an error if no suitable interface or address is found.
189
+ *
190
+ * @param {string} [networkInterface] - The name of the network interface to retrieve the IPv6 address from. If not specified, the first external IPv6 interface will be used.
191
+ * @returns {string | undefined} The IPv6 address of the specified network interface or the first external IPv6 interface.
192
+ * @throws {Error} If no suitable interface or address is found.
193
+ */
130
194
  getIpv6InterfaceAddress(networkInterface) {
195
+ // Normalize the interface name: treat an empty string as undefined.
131
196
  if (networkInterface === '')
132
197
  networkInterface = undefined;
133
198
  const interfaces = os.networkInterfaces();
199
+ // If a specific interface is provided, verify it exists. Otherwise, warn and use the first external IPv6 interface.
134
200
  if (networkInterface && !interfaces[networkInterface]) {
135
201
  this.log.warn(`Interface "${networkInterface}" not found. Using first external IPv6 interface.`);
136
202
  networkInterface = undefined;
137
203
  }
204
+ // If no network interface was specified, search for the first external IPv6 interface.
138
205
  if (!networkInterface) {
139
206
  for (const [interfaceName, interfaceDetails] of Object.entries(interfaces)) {
140
207
  if (!networkInterface && this.excludedInterfaceNamePattern.test(interfaceName))
@@ -155,18 +222,21 @@ export class Dgram extends EventEmitter {
155
222
  throw new Error(`Didn't find an external IPv6 network interface`);
156
223
  }
157
224
  const addresses = interfaces[networkInterface];
225
+ // Try to find a link-local address and use scopeid
158
226
  const linkLocalAddress = addresses?.find((addr) => addr.family === 'IPv6' && !addr.internal && addr.address.startsWith('fe80'));
159
227
  if (linkLocalAddress) {
160
228
  this.log.debug('Found IPv6 link-local address');
161
229
  return linkLocalAddress.scopeid ? `${linkLocalAddress.address}%${process.platform !== 'win32' ? networkInterface : linkLocalAddress.scopeid}` : linkLocalAddress.address;
162
230
  }
163
231
  this.log.debug('No IPv6 link-local address found');
232
+ // Try to find a unique local address
164
233
  const ulaAddress = addresses?.find((addr) => addr.family === 'IPv6' && !addr.internal && addr.address.startsWith('fd') && addr.netmask === 'ffff:ffff:ffff:ffff::');
165
234
  if (ulaAddress) {
166
235
  this.log.debug('Found IPv6 Unique Local Addresses (ULA) unicast address');
167
236
  return ulaAddress.address;
168
237
  }
169
238
  this.log.debug('No IPv6 Unique Local Addresses (ULA) unicast address found');
239
+ // Try to find a unique local address
170
240
  const uniqueLocalAddress = addresses?.find((addr) => addr.family === 'IPv6' && !addr.internal && addr.address.startsWith('fd'));
171
241
  if (uniqueLocalAddress) {
172
242
  this.log.debug('Found IPv6 Unique Local Addresses (ULA) address');
@@ -175,6 +245,11 @@ export class Dgram extends EventEmitter {
175
245
  this.log.debug('No IPv6 Unique Local Addresses (ULA) address found');
176
246
  throw new Error(`Interface ${networkInterface} does not have a suitable external IPv6 address`);
177
247
  }
248
+ /**
249
+ * Retrieves the names of all available network interfaces.
250
+ *
251
+ * @returns {string[]} An array of network interface names.
252
+ */
178
253
  getInterfacesNames() {
179
254
  const interfaces = os.networkInterfaces();
180
255
  const interfaceNames = [];
@@ -185,6 +260,12 @@ export class Dgram extends EventEmitter {
185
260
  }
186
261
  return interfaceNames;
187
262
  }
263
+ /**
264
+ * Retrieves the scope ID of the first found IPv6 address on the specified network interface or on any interface if none is specified.
265
+ *
266
+ * @param {string} [interfaceName] - The name of the network interface. If not provided, the first found IPv6 address will be used.
267
+ * @returns {string} The scope ID of the first found IPv6 address or an empty string.
268
+ */
188
269
  getIpv6ScopeId(interfaceName) {
189
270
  const interfaces = os.networkInterfaces();
190
271
  for (const name in interfaces) {
@@ -196,17 +277,24 @@ export class Dgram extends EventEmitter {
196
277
  if (iface) {
197
278
  const ipv6Address = iface.find((addr) => addr.family === 'IPv6' && !addr.internal && addr.scopeid);
198
279
  if (ipv6Address) {
199
- return process.platform === 'win32' ? '%' + String(ipv6Address.scopeid) : '%' + name;
280
+ return process.platform === 'win32' ? '%' + String(ipv6Address.scopeid) : '%' + name; // Use the scope ID for Windows, or the interface name for non-Windows platforms
200
281
  }
201
282
  }
202
283
  }
203
284
  return '';
204
285
  }
286
+ /**
287
+ * Retrieves the interface name from the scope id of an IPv6 address.
288
+ *
289
+ * @param {number} scopeId - The scope id of the IPv6 address.
290
+ * @returns {string | undefined} The interface name or undefined if not found.
291
+ */
205
292
  getInterfaceNameFromScopeId(scopeId) {
206
293
  const nets = os.networkInterfaces();
207
294
  for (const ifaceName in nets) {
208
295
  const addresses = nets[ifaceName] || [];
209
296
  for (const addr of addresses) {
297
+ // Check for IPv6 addresses with a matching scope id.
210
298
  if (addr.family === 'IPv6' && addr.scopeid === scopeId) {
211
299
  return ifaceName;
212
300
  }
@@ -214,8 +302,16 @@ export class Dgram extends EventEmitter {
214
302
  }
215
303
  return undefined;
216
304
  }
305
+ /**
306
+ * Retrieves the netmask of the specified interface address.
307
+ *
308
+ * @param {string} interfaceAddress - The interface address for which to retrieve the netmask.
309
+ * @returns {string | undefined} The netmask of the specified interface address or undefined if not found.
310
+ */
217
311
  getNetmask(interfaceAddress) {
312
+ // Remove zone index if present (e.g. for IPv6 "fe80::1%eth0")
218
313
  const noZoneAddress = interfaceAddress.includes('%') ? interfaceAddress.split('%')[0] : interfaceAddress;
314
+ // Iterate over all interfaces.
219
315
  const nets = os.networkInterfaces();
220
316
  for (const ifaceName in nets) {
221
317
  const ifaceAddresses = nets[ifaceName];
@@ -229,6 +325,13 @@ export class Dgram extends EventEmitter {
229
325
  }
230
326
  return undefined;
231
327
  }
328
+ /**
329
+ * Computes the broadcast address given an IPv4 address and netmask.
330
+ *
331
+ * @param {string | undefined} [ipAddress] - The IPv4 address e.g. "192.168.1.20"
332
+ * @param {string | undefined} [netmask] - The IPv4 netmask e.g. "255.255.255.0"
333
+ * @returns {string | undefined} The computed broadcast address, e.g. "192.168.1.255"
334
+ */
232
335
  getIpv4BroadcastAddress(ipAddress, netmask) {
233
336
  if (!ipAddress || !netmask) {
234
337
  return undefined;
@@ -238,9 +341,17 @@ export class Dgram extends EventEmitter {
238
341
  const broadcastParts = ipParts.map((octet, i) => (octet & maskParts[i]) | (255 - maskParts[i]));
239
342
  return broadcastParts.join('.');
240
343
  }
344
+ /**
345
+ * Returns the broadcast IPv6 address.
346
+ *
347
+ * @returns {string} The broadcast IPv6 address, e.g. "ff02::1"
348
+ */
241
349
  getIpv6BroadcastAddress() {
242
350
  return 'ff02::1';
243
351
  }
352
+ /**
353
+ * Logs all available network interfaces and their details.
354
+ */
244
355
  listNetworkInterfaces() {
245
356
  const interfaces = os.networkInterfaces();
246
357
  for (const [name, addresses] of Object.entries(interfaces)) {
@@ -253,3 +364,4 @@ export class Dgram extends EventEmitter {
253
364
  }
254
365
  }
255
366
  }
367
+ //# sourceMappingURL=dgram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dgram.js","sourceRoot":"","sources":["../src/dgram.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ export * from './multicast.js';
3
3
  export * from './unicast.js';
4
4
  export * from './mdns.js';
5
5
  export * from './coap.js';
6
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -3,3 +3,4 @@ export * from './multicast.js';
3
3
  export * from './unicast.js';
4
4
  export * from './mdns.js';
5
5
  export * from './coap.js';
6
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -1,3 +1,25 @@
1
+ /**
2
+ * @description This file contains the class Mdns.
3
+ * @file mdns.ts
4
+ * @author Luca Liguori
5
+ * @created 2025-03-22
6
+ * @version 1.0.0
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2025, 2026, 2027 Luca Liguori.
10
+ *
11
+ * Licensed under the Apache License, Version 2.0 (the "License");
12
+ * you may not use this file except in compliance with the License.
13
+ * You may obtain a copy of the License at
14
+ *
15
+ * http://www.apache.org/licenses/LICENSE-2.0
16
+ *
17
+ * Unless required by applicable law or agreed to in writing, software
18
+ * distributed under the License is distributed on an "AS IS" BASIS,
19
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ * See the License for the specific language governing permissions and
21
+ * limitations under the License.
22
+ */
1
23
  import dgram from 'node:dgram';
2
24
  import { AnsiLogger } from 'node-ansi-logger';
3
25
  import { Multicast } from './multicast.js';
@@ -94,13 +116,13 @@ export declare const enum DnsRecordType {
94
116
  DLV = 32769
95
117
  }
96
118
  export declare const enum DnsClass {
97
- IN = 1,
98
- CH = 3,
99
- HS = 4,
119
+ IN = 1,// Internet
120
+ CH = 3,// Chaos
121
+ HS = 4,// Hesiod
100
122
  ANY = 255
101
123
  }
102
124
  export declare const enum DnsClassFlag {
103
- FLUSH = 32768,
125
+ FLUSH = 32768,// For answers (resource records)
104
126
  QU = 32768
105
127
  }
106
128
  export interface MdnsMessage {
@@ -134,8 +156,26 @@ interface MdnsRecord {
134
156
  ttl: number;
135
157
  data: string;
136
158
  }
159
+ /**
160
+ * Checks if a given message is an mDNS message.
161
+ *
162
+ * @param {Buffer} message - The message buffer to check.
163
+ * @returns {boolean} True if the message is an mDNS message, false otherwise.
164
+ */
137
165
  export declare function isMdns(message: Buffer): boolean;
166
+ /**
167
+ * Checks if a given mDNS message is a query.
168
+ *
169
+ * @param {Buffer} message - The mDNS message buffer to check.
170
+ * @returns {boolean} True if the message is a query, false otherwise.
171
+ */
138
172
  export declare function isMdnsQuery(message: Buffer): boolean;
173
+ /**
174
+ * Checks if a given mDNS message is a query.
175
+ *
176
+ * @param {Buffer} message - The mDNS message buffer to check.
177
+ * @returns {boolean} True if the message is a query, false otherwise.
178
+ */
139
179
  export declare function isMdnsResponse(message: Buffer): boolean;
140
180
  export declare class Mdns extends Multicast {
141
181
  deviceQueries: Map<string, {
@@ -148,30 +188,143 @@ export declare class Mdns extends Multicast {
148
188
  dataPTR?: string;
149
189
  }>;
150
190
  filters: string[];
191
+ /**
192
+ * Creates an instance of the Mdns class.
193
+ *
194
+ * @param {string} name - The internal name of the mDNS server for the logs.
195
+ * @param {string} multicastAddress - The multicast address for mDNS (i.e. 224.0.0.251 for udp4 or ff02::fb for udp6).
196
+ * @param {number} multicastPort - The port for mDNS (i.e. 5353).
197
+ * @param {('udp4' | 'udp6')} socketType - The type of socket to create (either 'udp4' or 'udp6').
198
+ * @param {boolean} [reuseAddr] - Whether to reuse the address. Defaults to true.
199
+ * @param {string} [interfaceName] - The optional name of the network interface to use.
200
+ * @param {string} [interfaceAddress] - The optional IP address of the network interface to use.
201
+ * @param {string} [outgoingInterfaceAddress] - The address of the outgoing network interface.
202
+ */
151
203
  constructor(name: string, multicastAddress: string, multicastPort: number, socketType: 'udp4' | 'udp6', reuseAddr?: boolean | undefined, interfaceName?: string, interfaceAddress?: string, outgoingInterfaceAddress?: string);
152
204
  onQuery(rinfo: dgram.RemoteInfo, _query: MdnsMessage): void;
153
205
  onResponse(rinfo: dgram.RemoteInfo, _response: MdnsMessage): void;
154
206
  onMessage(msg: Buffer, rinfo: dgram.RemoteInfo): void;
207
+ /**
208
+ * Decodes an mDNS message, including the header, question section, answer section,
209
+ * authority section, and additional section.
210
+ *
211
+ * @param {Buffer} msg - The raw mDNS message buffer.
212
+ * @returns {MdnsMessage} An object representing the decoded mDNS message.
213
+ * @throws {Error} if the message is too short.
214
+ */
155
215
  decodeMdnsMessage(msg: Buffer): MdnsMessage;
216
+ /**
217
+ * Decodes a DNS name from a buffer, handling compression.
218
+ *
219
+ * @param {Buffer} msg - The full mDNS message buffer.
220
+ * @param {number} offset - The offset at which the DNS name starts.
221
+ * @returns {{ name: string; newOffset: number }} An object with the decoded name and the new offset.
222
+ * @throws {Error} if the offset exceeds the buffer length or too many iterations are performed.
223
+ */
156
224
  decodeDnsName(msg: Buffer, offset: number): {
157
225
  name: string;
158
226
  newOffset: number;
159
227
  };
228
+ /**
229
+ * Encodes a domain name into the DNS label format.
230
+ *
231
+ * For example, "example.local" becomes:
232
+ * [7] "example" [5] "local" [0]
233
+ *
234
+ * @param {string} name - The domain name to encode.
235
+ * @returns {Buffer} The encoded domain name as a Buffer.
236
+ */
160
237
  encodeDnsName(name: string): Buffer;
238
+ /**
239
+ * Encodes TXT record RDATA.
240
+ *
241
+ * In DNS/mDNS, TXT RDATA is a sequence of one or more <character-string>,
242
+ * each encoded as: [length byte][UTF-8 bytes].
243
+ *
244
+ * @param {string[]} txt - Array of TXT entries, e.g. ["key=value", "path=/"].
245
+ * @returns {Buffer} Encoded TXT RDATA.
246
+ * @throws {Error} If any entry exceeds 255 bytes.
247
+ *
248
+ * @example
249
+ * const txtRdata = mdns.encodeTxtRdata(['txtvers=1', 'path=/']);
250
+ * mdns.sendResponse([
251
+ * { name: 'example._http._tcp.local', rtype: DnsRecordType.TXT, rclass: DnsClass.IN | DnsClassFlag.FLUSH, ttl: 120, rdata: txtRdata },
252
+ * ]);
253
+ */
161
254
  encodeTxtRdata(txt: string[]): Buffer;
255
+ /**
256
+ * Encodes SRV record RDATA.
257
+ *
258
+ * SRV RDATA layout (RFC 2782):
259
+ * - priority (2 bytes)
260
+ * - weight (2 bytes)
261
+ * - port (2 bytes)
262
+ * - target (DNS name)
263
+ *
264
+ * @param {number} priority - SRV priority.
265
+ * @param {number} weight - SRV weight.
266
+ * @param {number} port - Service port.
267
+ * @param {string} target - Target hostname (e.g. "matterbridge.local").
268
+ * @returns {Buffer} Encoded SRV RDATA.
269
+ */
162
270
  encodeSrvRdata(priority: number, weight: number, port: number, target: string): Buffer;
271
+ /**
272
+ * Encodes an IPv4 address for an A record RDATA (4 bytes).
273
+ *
274
+ * @param {string} ipv4 - IPv4 address, e.g. "192.168.1.10".
275
+ * @returns {Buffer} 4-byte buffer.
276
+ * @throws {Error} If the address is not a valid dotted-quad.
277
+ */
163
278
  encodeA(ipv4: string): Buffer;
279
+ /**
280
+ * Encodes an IPv6 address for an AAAA record RDATA (16 bytes).
281
+ *
282
+ * Supports the "::" zero-compression form and ignores an optional scope id
283
+ * suffix (e.g. "fe80::1%12" or "fe80::1%eth0").
284
+ *
285
+ * @param {string} ipv6WithOptionalScope - IPv6 address (optionally with scope id).
286
+ * @returns {Buffer} 16-byte buffer.
287
+ * @throws {Error} If the address is not a valid IPv6 literal.
288
+ */
164
289
  encodeAAAA(ipv6WithOptionalScope: string): Buffer;
290
+ /**
291
+ * Decodes a DNS resource record.
292
+ *
293
+ * @param {Buffer} msg - The full mDNS message buffer.
294
+ * @param {number} offset - The offset at which the resource record starts.
295
+ * @returns {{ record: MdnsRecord; newOffset: number }} An object containing the decoded record and the new offset.
296
+ */
165
297
  decodeResourceRecord(msg: Buffer, offset: number): {
166
298
  record: MdnsRecord;
167
299
  newOffset: number;
168
300
  };
301
+ /**
302
+ * Sends a DNS query with multiple questions.
303
+ *
304
+ * @param {Array<{ name: string; type: number; class: number; unicastResponse?: boolean }>} questions - Array of questions
305
+ * to include in the query.
306
+ * @returns {Buffer<ArrayBuffer>} The constructed query buffer.
307
+ *
308
+ * @remarks
309
+ * Each question should have a name (e.g., "_http._tcp.local"), type (e.g., DnsRecordType.PTR), class (e.g., DnsClass.IN),
310
+ * and an optional unicastResponse flag (this will add the DnsClassFlag.QU flag to the query).
311
+ */
169
312
  sendQuery(questions: {
170
313
  name: string;
171
314
  type: number;
172
315
  class: number;
173
316
  unicastResponse?: boolean;
174
317
  }[]): Buffer<ArrayBuffer>;
318
+ /**
319
+ * Constructs an mDNS response packet and sends it to the multicast address and port.
320
+ *
321
+ * @param {Array<{ name: string; rtype: number; rclass: number; ttl: number; rdata: Buffer }>} answers - Array of answer records.
322
+ * @returns {Buffer<ArrayBuffer>} The constructed response buffer.
323
+ *
324
+ * @example
325
+ * const ptrRdata = mdnsIpv4.encodeDnsName('matterbridge._http._tcp.local');
326
+ * mdnsIpv4.sendResponse([{ name: '_http._tcp.local', rtype: DnsRecordType.PTR, rclass: DnsClass.IN, ttl: 120, rdata: ptrRdata }]);
327
+ */
175
328
  sendResponse(answers: {
176
329
  name: string;
177
330
  rtype: number;
@@ -179,10 +332,40 @@ export declare class Mdns extends Multicast {
179
332
  ttl: number;
180
333
  rdata: Buffer;
181
334
  }[]): Buffer<ArrayBuffer>;
335
+ /**
336
+ * Converts a DNS record type numeric value to its string representation.
337
+ *
338
+ * @param {number} type - The numeric DNS record type.
339
+ * @returns {string} The string representation of the record type.
340
+ */
182
341
  dnsTypeToString(type: number): string;
342
+ /**
343
+ * Converts a DNS response class numeric value to its string representation.
344
+ *
345
+ * @param {number} cls - The numeric DNS class.
346
+ * @returns {string} The string representation of the DNS class.
347
+ */
183
348
  dnsResponseClassToString(cls: number): string;
349
+ /**
350
+ * Converts a DNS question class to a human-readable string.
351
+ * Adds support for mDNS QU (unicast-response) bit.
352
+ *
353
+ * @param {number} cls - The numeric question class.
354
+ * @returns {string} The string representation, e.g. "IN|QU"
355
+ */
184
356
  dnsQuestionClassToString(cls: number): string;
357
+ /**
358
+ * Logs the decoded mDNS message header.
359
+ *
360
+ * @param {MdnsMessage} msg - The mDNS message header object.
361
+ * @param {AnsiLogger} [log] - The logger to use (defaults to this.log).
362
+ * @param {string} [text] - Optional additional text to include in the log.
363
+ */
185
364
  logMdnsMessage(msg: MdnsMessage, log?: AnsiLogger, text?: string): void;
365
+ /**
366
+ * Logs the discovered devices from the mDNS queries and responses.
367
+ */
186
368
  logDevices(): void;
187
369
  }
188
370
  export {};
371
+ //# sourceMappingURL=mdns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdns.d.ts","sourceRoot":"","sources":["../src/mdns.ts"],"names":[],"mappings":"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"}