matterbridge 3.4.7-dev-20260113-0917d83 → 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 (438) hide show
  1. package/dist/broadcastServer.d.ts +115 -0
  2. package/dist/broadcastServer.d.ts.map +1 -0
  3. package/dist/broadcastServer.js +117 -0
  4. package/dist/broadcastServer.js.map +1 -0
  5. package/dist/broadcastServerTypes.d.ts +43 -0
  6. package/dist/broadcastServerTypes.d.ts.map +1 -0
  7. package/dist/broadcastServerTypes.js +24 -0
  8. package/dist/broadcastServerTypes.js.map +1 -0
  9. package/dist/cli.d.ts +24 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +97 -1
  12. package/dist/cli.js.map +1 -0
  13. package/dist/cliEmitter.d.ts +36 -0
  14. package/dist/cliEmitter.d.ts.map +1 -0
  15. package/dist/cliEmitter.js +37 -0
  16. package/dist/cliEmitter.js.map +1 -0
  17. package/dist/cliHistory.d.ts +42 -0
  18. package/dist/cliHistory.d.ts.map +1 -0
  19. package/dist/cliHistory.js +38 -0
  20. package/dist/cliHistory.js.map +1 -0
  21. package/dist/clusters/export.d.ts +1 -0
  22. package/dist/clusters/export.d.ts.map +1 -0
  23. package/dist/clusters/export.js +2 -0
  24. package/dist/clusters/export.js.map +1 -0
  25. package/dist/deviceManager.d.ts +108 -0
  26. package/dist/deviceManager.d.ts.map +1 -0
  27. package/dist/deviceManager.js +113 -1
  28. package/dist/deviceManager.js.map +1 -0
  29. package/dist/devices/airConditioner.d.ts +75 -0
  30. package/dist/devices/airConditioner.d.ts.map +1 -0
  31. package/dist/devices/airConditioner.js +57 -0
  32. package/dist/devices/airConditioner.js.map +1 -0
  33. package/dist/devices/batteryStorage.d.ts +43 -0
  34. package/dist/devices/batteryStorage.d.ts.map +1 -0
  35. package/dist/devices/batteryStorage.js +48 -1
  36. package/dist/devices/batteryStorage.js.map +1 -0
  37. package/dist/devices/cooktop.d.ts +55 -0
  38. package/dist/devices/cooktop.d.ts.map +1 -0
  39. package/dist/devices/cooktop.js +56 -0
  40. package/dist/devices/cooktop.js.map +1 -0
  41. package/dist/devices/dishwasher.d.ts +55 -0
  42. package/dist/devices/dishwasher.d.ts.map +1 -0
  43. package/dist/devices/dishwasher.js +57 -0
  44. package/dist/devices/dishwasher.js.map +1 -0
  45. package/dist/devices/evse.d.ts +57 -0
  46. package/dist/devices/evse.d.ts.map +1 -0
  47. package/dist/devices/evse.js +74 -10
  48. package/dist/devices/evse.js.map +1 -0
  49. package/dist/devices/export.d.ts +1 -0
  50. package/dist/devices/export.d.ts.map +1 -0
  51. package/dist/devices/export.js +5 -0
  52. package/dist/devices/export.js.map +1 -0
  53. package/dist/devices/extractorHood.d.ts +41 -0
  54. package/dist/devices/extractorHood.d.ts.map +1 -0
  55. package/dist/devices/extractorHood.js +43 -0
  56. package/dist/devices/extractorHood.js.map +1 -0
  57. package/dist/devices/heatPump.d.ts +43 -0
  58. package/dist/devices/heatPump.d.ts.map +1 -0
  59. package/dist/devices/heatPump.js +50 -2
  60. package/dist/devices/heatPump.js.map +1 -0
  61. package/dist/devices/laundryDryer.d.ts +58 -0
  62. package/dist/devices/laundryDryer.d.ts.map +1 -0
  63. package/dist/devices/laundryDryer.js +62 -3
  64. package/dist/devices/laundryDryer.js.map +1 -0
  65. package/dist/devices/laundryWasher.d.ts +64 -0
  66. package/dist/devices/laundryWasher.d.ts.map +1 -0
  67. package/dist/devices/laundryWasher.js +70 -4
  68. package/dist/devices/laundryWasher.js.map +1 -0
  69. package/dist/devices/microwaveOven.d.ts +77 -1
  70. package/dist/devices/microwaveOven.d.ts.map +1 -0
  71. package/dist/devices/microwaveOven.js +88 -5
  72. package/dist/devices/microwaveOven.js.map +1 -0
  73. package/dist/devices/oven.d.ts +82 -0
  74. package/dist/devices/oven.d.ts.map +1 -0
  75. package/dist/devices/oven.js +85 -0
  76. package/dist/devices/oven.js.map +1 -0
  77. package/dist/devices/refrigerator.d.ts +100 -0
  78. package/dist/devices/refrigerator.d.ts.map +1 -0
  79. package/dist/devices/refrigerator.js +102 -0
  80. package/dist/devices/refrigerator.js.map +1 -0
  81. package/dist/devices/roboticVacuumCleaner.d.ts +83 -0
  82. package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
  83. package/dist/devices/roboticVacuumCleaner.js +100 -9
  84. package/dist/devices/roboticVacuumCleaner.js.map +1 -0
  85. package/dist/devices/solarPower.d.ts +36 -0
  86. package/dist/devices/solarPower.d.ts.map +1 -0
  87. package/dist/devices/solarPower.js +38 -0
  88. package/dist/devices/solarPower.js.map +1 -0
  89. package/dist/devices/speaker.d.ts +79 -0
  90. package/dist/devices/speaker.d.ts.map +1 -0
  91. package/dist/devices/speaker.js +84 -0
  92. package/dist/devices/speaker.js.map +1 -0
  93. package/dist/devices/temperatureControl.d.ts +21 -0
  94. package/dist/devices/temperatureControl.d.ts.map +1 -0
  95. package/dist/devices/temperatureControl.js +24 -3
  96. package/dist/devices/temperatureControl.js.map +1 -0
  97. package/dist/devices/waterHeater.d.ts +74 -0
  98. package/dist/devices/waterHeater.d.ts.map +1 -0
  99. package/dist/devices/waterHeater.js +82 -2
  100. package/dist/devices/waterHeater.js.map +1 -0
  101. package/dist/dgram/coap.d.ts +171 -0
  102. package/dist/dgram/coap.d.ts.map +1 -0
  103. package/dist/dgram/coap.js +126 -13
  104. package/dist/dgram/coap.js.map +1 -0
  105. package/dist/dgram/dgram.d.ts +99 -0
  106. package/dist/dgram/dgram.d.ts.map +1 -0
  107. package/dist/dgram/dgram.js +114 -2
  108. package/dist/dgram/dgram.js.map +1 -0
  109. package/dist/dgram/mb_coap.d.ts +23 -0
  110. package/dist/dgram/mb_coap.d.ts.map +1 -0
  111. package/dist/dgram/mb_coap.js +41 -3
  112. package/dist/dgram/mb_coap.js.map +1 -0
  113. package/dist/dgram/mb_mdns.d.ts +23 -0
  114. package/dist/dgram/mb_mdns.d.ts.map +1 -0
  115. package/dist/dgram/mb_mdns.js +80 -24
  116. package/dist/dgram/mb_mdns.js.map +1 -0
  117. package/dist/dgram/mdns.d.ts +187 -4
  118. package/dist/dgram/mdns.d.ts.map +1 -0
  119. package/dist/dgram/mdns.js +371 -139
  120. package/dist/dgram/mdns.js.map +1 -0
  121. package/dist/dgram/multicast.d.ts +49 -0
  122. package/dist/dgram/multicast.d.ts.map +1 -0
  123. package/dist/dgram/multicast.js +62 -1
  124. package/dist/dgram/multicast.js.map +1 -0
  125. package/dist/dgram/unicast.d.ts +53 -0
  126. package/dist/dgram/unicast.d.ts.map +1 -0
  127. package/dist/dgram/unicast.js +60 -0
  128. package/dist/dgram/unicast.js.map +1 -0
  129. package/dist/frontend.d.ts +187 -0
  130. package/dist/frontend.d.ts.map +1 -0
  131. package/dist/frontend.js +485 -38
  132. package/dist/frontend.js.map +1 -0
  133. package/dist/frontendTypes.d.ts +57 -0
  134. package/dist/frontendTypes.d.ts.map +1 -0
  135. package/dist/frontendTypes.js +45 -0
  136. package/dist/frontendTypes.js.map +1 -0
  137. package/dist/helpers.d.ts +43 -0
  138. package/dist/helpers.d.ts.map +1 -0
  139. package/dist/helpers.js +53 -0
  140. package/dist/helpers.js.map +1 -0
  141. package/dist/index.d.ts +23 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +25 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/jestutils/export.d.ts +1 -0
  146. package/dist/jestutils/export.d.ts.map +1 -0
  147. package/dist/jestutils/export.js +1 -0
  148. package/dist/jestutils/export.js.map +1 -0
  149. package/dist/jestutils/jestHelpers.d.ts +255 -0
  150. package/dist/jestutils/jestHelpers.d.ts.map +1 -0
  151. package/dist/jestutils/jestHelpers.js +371 -14
  152. package/dist/jestutils/jestHelpers.js.map +1 -0
  153. package/dist/logger/export.d.ts +1 -0
  154. package/dist/logger/export.d.ts.map +1 -0
  155. package/dist/logger/export.js +1 -0
  156. package/dist/logger/export.js.map +1 -0
  157. package/dist/matter/behaviors.d.ts +1 -0
  158. package/dist/matter/behaviors.d.ts.map +1 -0
  159. package/dist/matter/behaviors.js +2 -0
  160. package/dist/matter/behaviors.js.map +1 -0
  161. package/dist/matter/clusters.d.ts +1 -0
  162. package/dist/matter/clusters.d.ts.map +1 -0
  163. package/dist/matter/clusters.js +2 -0
  164. package/dist/matter/clusters.js.map +1 -0
  165. package/dist/matter/devices.d.ts +1 -0
  166. package/dist/matter/devices.d.ts.map +1 -0
  167. package/dist/matter/devices.js +2 -0
  168. package/dist/matter/devices.js.map +1 -0
  169. package/dist/matter/endpoints.d.ts +1 -0
  170. package/dist/matter/endpoints.d.ts.map +1 -0
  171. package/dist/matter/endpoints.js +2 -0
  172. package/dist/matter/endpoints.js.map +1 -0
  173. package/dist/matter/export.d.ts +1 -0
  174. package/dist/matter/export.d.ts.map +1 -0
  175. package/dist/matter/export.js +3 -0
  176. package/dist/matter/export.js.map +1 -0
  177. package/dist/matter/types.d.ts +1 -0
  178. package/dist/matter/types.d.ts.map +1 -0
  179. package/dist/matter/types.js +3 -0
  180. package/dist/matter/types.js.map +1 -0
  181. package/dist/matterNode.d.ts +258 -0
  182. package/dist/matterNode.d.ts.map +1 -0
  183. package/dist/matterNode.js +369 -8
  184. package/dist/matterNode.js.map +1 -0
  185. package/dist/matterbridge.d.ts +353 -0
  186. package/dist/matterbridge.d.ts.map +1 -0
  187. package/dist/matterbridge.js +824 -46
  188. package/dist/matterbridge.js.map +1 -0
  189. package/dist/matterbridgeAccessoryPlatform.d.ts +36 -0
  190. package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
  191. package/dist/matterbridgeAccessoryPlatform.js +38 -0
  192. package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
  193. package/dist/matterbridgeBehaviors.d.ts +24 -0
  194. package/dist/matterbridgeBehaviors.d.ts.map +1 -0
  195. package/dist/matterbridgeBehaviors.js +68 -5
  196. package/dist/matterbridgeBehaviors.js.map +1 -0
  197. package/dist/matterbridgeDeviceTypes.d.ts +603 -0
  198. package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
  199. package/dist/matterbridgeDeviceTypes.js +635 -14
  200. package/dist/matterbridgeDeviceTypes.js.map +1 -0
  201. package/dist/matterbridgeDynamicPlatform.d.ts +36 -0
  202. package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
  203. package/dist/matterbridgeDynamicPlatform.js +38 -0
  204. package/dist/matterbridgeDynamicPlatform.js.map +1 -0
  205. package/dist/matterbridgeEndpoint.d.ts +1332 -0
  206. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  207. package/dist/matterbridgeEndpoint.js +1457 -53
  208. package/dist/matterbridgeEndpoint.js.map +1 -0
  209. package/dist/matterbridgeEndpointHelpers.d.ts +425 -0
  210. package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
  211. package/dist/matterbridgeEndpointHelpers.js +483 -20
  212. package/dist/matterbridgeEndpointHelpers.js.map +1 -0
  213. package/dist/matterbridgeEndpointTypes.d.ts +70 -0
  214. package/dist/matterbridgeEndpointTypes.d.ts.map +1 -0
  215. package/dist/matterbridgeEndpointTypes.js +25 -0
  216. package/dist/matterbridgeEndpointTypes.js.map +1 -0
  217. package/dist/matterbridgePlatform.d.ts +425 -0
  218. package/dist/matterbridgePlatform.d.ts.map +1 -0
  219. package/dist/matterbridgePlatform.js +451 -1
  220. package/dist/matterbridgePlatform.js.map +1 -0
  221. package/dist/matterbridgeTypes.d.ts +46 -0
  222. package/dist/matterbridgeTypes.d.ts.map +1 -0
  223. package/dist/matterbridgeTypes.js +26 -0
  224. package/dist/matterbridgeTypes.js.map +1 -0
  225. package/dist/pluginManager.d.ts +305 -0
  226. package/dist/pluginManager.d.ts.map +1 -0
  227. package/dist/pluginManager.js +341 -5
  228. package/dist/pluginManager.js.map +1 -0
  229. package/dist/shelly.d.ts +157 -0
  230. package/dist/shelly.d.ts.map +1 -0
  231. package/dist/shelly.js +178 -7
  232. package/dist/shelly.js.map +1 -0
  233. package/dist/storage/export.d.ts +1 -0
  234. package/dist/storage/export.d.ts.map +1 -0
  235. package/dist/storage/export.js +1 -0
  236. package/dist/storage/export.js.map +1 -0
  237. package/dist/update.d.ts +75 -0
  238. package/dist/update.d.ts.map +1 -0
  239. package/dist/update.js +93 -1
  240. package/dist/update.js.map +1 -0
  241. package/dist/utils/colorUtils.d.ts +77 -0
  242. package/dist/utils/colorUtils.d.ts.map +1 -0
  243. package/dist/utils/colorUtils.js +97 -2
  244. package/dist/utils/colorUtils.js.map +1 -0
  245. package/dist/utils/commandLine.d.ts +60 -0
  246. package/dist/utils/commandLine.d.ts.map +1 -0
  247. package/dist/utils/commandLine.js +60 -0
  248. package/dist/utils/commandLine.js.map +1 -0
  249. package/dist/utils/copyDirectory.d.ts +33 -0
  250. package/dist/utils/copyDirectory.d.ts.map +1 -0
  251. package/dist/utils/copyDirectory.js +37 -0
  252. package/dist/utils/copyDirectory.js.map +1 -0
  253. package/dist/utils/createDirectory.d.ts +32 -0
  254. package/dist/utils/createDirectory.d.ts.map +1 -0
  255. package/dist/utils/createDirectory.js +33 -0
  256. package/dist/utils/createDirectory.js.map +1 -0
  257. package/dist/utils/createZip.d.ts +38 -0
  258. package/dist/utils/createZip.d.ts.map +1 -0
  259. package/dist/utils/createZip.js +47 -2
  260. package/dist/utils/createZip.js.map +1 -0
  261. package/dist/utils/deepCopy.d.ts +31 -0
  262. package/dist/utils/deepCopy.d.ts.map +1 -0
  263. package/dist/utils/deepCopy.js +39 -0
  264. package/dist/utils/deepCopy.js.map +1 -0
  265. package/dist/utils/deepEqual.d.ts +53 -0
  266. package/dist/utils/deepEqual.d.ts.map +1 -0
  267. package/dist/utils/deepEqual.js +72 -1
  268. package/dist/utils/deepEqual.js.map +1 -0
  269. package/dist/utils/error.d.ts +42 -0
  270. package/dist/utils/error.d.ts.map +1 -0
  271. package/dist/utils/error.js +42 -0
  272. package/dist/utils/error.js.map +1 -0
  273. package/dist/utils/export.d.ts +1 -0
  274. package/dist/utils/export.d.ts.map +1 -0
  275. package/dist/utils/export.js +1 -0
  276. package/dist/utils/export.js.map +1 -0
  277. package/dist/utils/format.d.ts +49 -0
  278. package/dist/utils/format.d.ts.map +1 -0
  279. package/dist/utils/format.js +49 -0
  280. package/dist/utils/format.js.map +1 -0
  281. package/dist/utils/hex.d.ts +85 -0
  282. package/dist/utils/hex.d.ts.map +1 -0
  283. package/dist/utils/hex.js +124 -0
  284. package/dist/utils/hex.js.map +1 -0
  285. package/dist/utils/inspector.d.ts +63 -0
  286. package/dist/utils/inspector.d.ts.map +1 -0
  287. package/dist/utils/inspector.js +69 -1
  288. package/dist/utils/inspector.js.map +1 -0
  289. package/dist/utils/isValid.d.ts +93 -0
  290. package/dist/utils/isValid.d.ts.map +1 -0
  291. package/dist/utils/isValid.js +93 -0
  292. package/dist/utils/isValid.js.map +1 -0
  293. package/dist/utils/network.d.ts +116 -0
  294. package/dist/utils/network.d.ts.map +1 -0
  295. package/dist/utils/network.js +126 -5
  296. package/dist/utils/network.js.map +1 -0
  297. package/dist/utils/spawn.d.ts +32 -0
  298. package/dist/utils/spawn.d.ts.map +1 -0
  299. package/dist/utils/spawn.js +71 -1
  300. package/dist/utils/spawn.js.map +1 -0
  301. package/dist/utils/tracker.d.ts +56 -0
  302. package/dist/utils/tracker.d.ts.map +1 -0
  303. package/dist/utils/tracker.js +64 -1
  304. package/dist/utils/tracker.js.map +1 -0
  305. package/dist/utils/wait.d.ts +51 -0
  306. package/dist/utils/wait.d.ts.map +1 -0
  307. package/dist/utils/wait.js +60 -8
  308. package/dist/utils/wait.js.map +1 -0
  309. package/dist/workerGlobalPrefix.d.ts +24 -0
  310. package/dist/workerGlobalPrefix.d.ts.map +1 -0
  311. package/dist/workerGlobalPrefix.js +37 -5
  312. package/dist/workerGlobalPrefix.js.map +1 -0
  313. package/dist/workerTypes.d.ts +25 -0
  314. package/dist/workerTypes.d.ts.map +1 -0
  315. package/dist/workerTypes.js +24 -0
  316. package/dist/workerTypes.js.map +1 -0
  317. package/dist/workers.d.ts +61 -0
  318. package/dist/workers.d.ts.map +1 -0
  319. package/dist/workers.js +68 -4
  320. package/dist/workers.js.map +1 -0
  321. package/npm-shrinkwrap.json +2 -2
  322. package/package.json +2 -1
  323. package/packages/dgram/dist/coap.d.ts +171 -0
  324. package/packages/dgram/dist/coap.d.ts.map +1 -0
  325. package/packages/dgram/dist/coap.js +126 -13
  326. package/packages/dgram/dist/coap.js.map +1 -0
  327. package/packages/dgram/dist/dgram.d.ts +99 -0
  328. package/packages/dgram/dist/dgram.d.ts.map +1 -0
  329. package/packages/dgram/dist/dgram.js +115 -3
  330. package/packages/dgram/dist/dgram.js.map +1 -0
  331. package/packages/dgram/dist/export.d.ts +1 -0
  332. package/packages/dgram/dist/export.d.ts.map +1 -0
  333. package/packages/dgram/dist/export.js +1 -0
  334. package/packages/dgram/dist/export.js.map +1 -0
  335. package/packages/dgram/dist/mdns.d.ts +187 -4
  336. package/packages/dgram/dist/mdns.d.ts.map +1 -0
  337. package/packages/dgram/dist/mdns.js +371 -139
  338. package/packages/dgram/dist/mdns.js.map +1 -0
  339. package/packages/dgram/dist/multicast.d.ts +49 -0
  340. package/packages/dgram/dist/multicast.d.ts.map +1 -0
  341. package/packages/dgram/dist/multicast.js +62 -1
  342. package/packages/dgram/dist/multicast.js.map +1 -0
  343. package/packages/dgram/dist/unicast.d.ts +53 -0
  344. package/packages/dgram/dist/unicast.d.ts.map +1 -0
  345. package/packages/dgram/dist/unicast.js +60 -0
  346. package/packages/dgram/dist/unicast.js.map +1 -0
  347. package/packages/jest-utils/dist/export.d.ts +1 -0
  348. package/packages/jest-utils/dist/export.d.ts.map +1 -0
  349. package/packages/jest-utils/dist/export.js +1 -0
  350. package/packages/jest-utils/dist/export.js.map +1 -0
  351. package/packages/jest-utils/dist/jestHelpers.d.ts +56 -0
  352. package/packages/jest-utils/dist/jestHelpers.d.ts.map +1 -0
  353. package/packages/jest-utils/dist/jestHelpers.js +62 -1
  354. package/packages/jest-utils/dist/jestHelpers.js.map +1 -0
  355. package/packages/utils/dist/colorUtils.d.ts +77 -0
  356. package/packages/utils/dist/colorUtils.d.ts.map +1 -0
  357. package/packages/utils/dist/colorUtils.js +97 -2
  358. package/packages/utils/dist/colorUtils.js.map +1 -0
  359. package/packages/utils/dist/commandLine.d.ts +60 -0
  360. package/packages/utils/dist/commandLine.d.ts.map +1 -0
  361. package/packages/utils/dist/commandLine.js +60 -0
  362. package/packages/utils/dist/commandLine.js.map +1 -0
  363. package/packages/utils/dist/copyDirectory.d.ts +33 -0
  364. package/packages/utils/dist/copyDirectory.d.ts.map +1 -0
  365. package/packages/utils/dist/copyDirectory.js +37 -0
  366. package/packages/utils/dist/copyDirectory.js.map +1 -0
  367. package/packages/utils/dist/createDirectory.d.ts +32 -0
  368. package/packages/utils/dist/createDirectory.d.ts.map +1 -0
  369. package/packages/utils/dist/createDirectory.js +33 -0
  370. package/packages/utils/dist/createDirectory.js.map +1 -0
  371. package/packages/utils/dist/createZip.d.ts +38 -0
  372. package/packages/utils/dist/createZip.d.ts.map +1 -0
  373. package/packages/utils/dist/createZip.js +47 -2
  374. package/packages/utils/dist/createZip.js.map +1 -0
  375. package/packages/utils/dist/deepCopy.d.ts +31 -0
  376. package/packages/utils/dist/deepCopy.d.ts.map +1 -0
  377. package/packages/utils/dist/deepCopy.js +39 -0
  378. package/packages/utils/dist/deepCopy.js.map +1 -0
  379. package/packages/utils/dist/deepEqual.d.ts +53 -0
  380. package/packages/utils/dist/deepEqual.d.ts.map +1 -0
  381. package/packages/utils/dist/deepEqual.js +73 -1
  382. package/packages/utils/dist/deepEqual.js.map +1 -0
  383. package/packages/utils/dist/error.d.ts +42 -0
  384. package/packages/utils/dist/error.d.ts.map +1 -0
  385. package/packages/utils/dist/error.js +42 -0
  386. package/packages/utils/dist/error.js.map +1 -0
  387. package/packages/utils/dist/export.d.ts +1 -0
  388. package/packages/utils/dist/export.d.ts.map +1 -0
  389. package/packages/utils/dist/export.js +1 -0
  390. package/packages/utils/dist/export.js.map +1 -0
  391. package/packages/utils/dist/format.d.ts +49 -0
  392. package/packages/utils/dist/format.d.ts.map +1 -0
  393. package/packages/utils/dist/format.js +49 -0
  394. package/packages/utils/dist/format.js.map +1 -0
  395. package/packages/utils/dist/githubVersion.d.ts +32 -0
  396. package/packages/utils/dist/githubVersion.d.ts.map +1 -0
  397. package/packages/utils/dist/githubVersion.js +34 -1
  398. package/packages/utils/dist/githubVersion.js.map +1 -0
  399. package/packages/utils/dist/hex.d.ts +85 -0
  400. package/packages/utils/dist/hex.d.ts.map +1 -0
  401. package/packages/utils/dist/hex.js +124 -0
  402. package/packages/utils/dist/hex.js.map +1 -0
  403. package/packages/utils/dist/inspector.d.ts +63 -0
  404. package/packages/utils/dist/inspector.d.ts.map +1 -0
  405. package/packages/utils/dist/inspector.js +69 -1
  406. package/packages/utils/dist/inspector.js.map +1 -0
  407. package/packages/utils/dist/isValid.d.ts +93 -0
  408. package/packages/utils/dist/isValid.d.ts.map +1 -0
  409. package/packages/utils/dist/isValid.js +93 -0
  410. package/packages/utils/dist/isValid.js.map +1 -0
  411. package/packages/utils/dist/network.d.ts +93 -0
  412. package/packages/utils/dist/network.d.ts.map +1 -0
  413. package/packages/utils/dist/network.js +99 -3
  414. package/packages/utils/dist/network.js.map +1 -0
  415. package/packages/utils/dist/npmRoot.d.ts +28 -0
  416. package/packages/utils/dist/npmRoot.d.ts.map +1 -0
  417. package/packages/utils/dist/npmRoot.js +28 -0
  418. package/packages/utils/dist/npmRoot.js.map +1 -0
  419. package/packages/utils/dist/npmVersion.d.ts +32 -0
  420. package/packages/utils/dist/npmVersion.d.ts.map +1 -0
  421. package/packages/utils/dist/npmVersion.js +34 -1
  422. package/packages/utils/dist/npmVersion.js.map +1 -0
  423. package/packages/utils/dist/tracker.d.ts +56 -0
  424. package/packages/utils/dist/tracker.d.ts.map +1 -0
  425. package/packages/utils/dist/tracker.js +64 -1
  426. package/packages/utils/dist/tracker.js.map +1 -0
  427. package/packages/utils/dist/wait.d.ts +51 -0
  428. package/packages/utils/dist/wait.d.ts.map +1 -0
  429. package/packages/utils/dist/wait.js +60 -8
  430. package/packages/utils/dist/wait.js.map +1 -0
  431. package/packages/vitest-utils/dist/export.d.ts +1 -0
  432. package/packages/vitest-utils/dist/export.d.ts.map +1 -0
  433. package/packages/vitest-utils/dist/export.js +1 -0
  434. package/packages/vitest-utils/dist/export.js.map +1 -0
  435. package/packages/vitest-utils/dist/vitestHelpers.d.ts +37 -0
  436. package/packages/vitest-utils/dist/vitestHelpers.d.ts.map +1 -0
  437. package/packages/vitest-utils/dist/vitestHelpers.js +43 -1
  438. package/packages/vitest-utils/dist/vitestHelpers.js.map +1 -0
@@ -1,5 +1,34 @@
1
+ /**
2
+ * @description This file contains the network functions.
3
+ * @file network.ts
4
+ * @author Luca Liguori
5
+ * @created 2024-02-17
6
+ * @version 1.0.3
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2024, 2025, 2026 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 modules
1
24
  import os from 'node:os';
25
+ // AnsiLogger module
2
26
  import { AnsiLogger, BLUE, CYAN, nf } from 'node-ansi-logger';
27
+ /**
28
+ * Retrieves the first non-internal network interface details.
29
+ *
30
+ * @returns {os.NetworkInterfaceInfo | undefined} The details of the selected network interface, or undefined if not found.
31
+ */
3
32
  export function getInterfaceDetails() {
4
33
  const result = {
5
34
  interfaceName: '',
@@ -26,6 +55,11 @@ export function getInterfaceDetails() {
26
55
  if (result.interfaceName)
27
56
  return result;
28
57
  }
58
+ /**
59
+ * Retrieves the first non-internal network interface name.
60
+ *
61
+ * @returns {string | undefined} The name of the selected network interface, or undefined if not found.
62
+ */
29
63
  export function getInterfaceName() {
30
64
  for (const [interfaceName, interfaceDetails] of Object.entries(os.networkInterfaces())) {
31
65
  if (!interfaceName || !interfaceDetails || interfaceDetails.length === 0)
@@ -36,6 +70,18 @@ export function getInterfaceName() {
36
70
  }
37
71
  }
38
72
  }
73
+ /**
74
+ * Retrieves the IPv4 address of the first non-internal network interface.
75
+ *
76
+ * @returns {string | undefined} The IPv4 address of the selected network interface, or undefined if not found.
77
+ *
78
+ * @remarks
79
+ * Type of ipv4 addresses:
80
+ * - 192.168.x.x, 10.x.x.x, 172.16–31.x.x: RFC 1918 = Private networks
81
+ * - 172.16.0.0 → 172.31.255.255: RFC 1918 = Private IP address used inside local networks, VMs, WSL2 and containers
82
+ * - 169.254.0.0 → 169.254.255.255: APIPA = Automatic Private IP Addressing used when a device fails to obtain an IP address via DHCP
83
+ * - 100.64.0.0 → 100.127.255.255: CGNAT = Carrier-Grade NAT RFC 6598 = Shared Address Space
84
+ */
39
85
  export function getIpv4InterfaceAddress() {
40
86
  for (const [interfaceName, interfaceDetails] of Object.entries(os.networkInterfaces())) {
41
87
  if (!interfaceName || !interfaceDetails || interfaceDetails.length === 0)
@@ -46,6 +92,34 @@ export function getIpv4InterfaceAddress() {
46
92
  }
47
93
  }
48
94
  }
95
+ /**
96
+ * Retrieves the IPv6 address of the first non-internal network interface.
97
+ *
98
+ * If `scope` is true, appends a zone id (scope) for link-local addresses when
99
+ * available:
100
+ * - On Windows: uses `%<scopeid>` (e.g. `...%11`)
101
+ * - On other platforms: uses `%<interfaceName>` (e.g. `...%eth0`)
102
+ *
103
+ * @param {boolean} [scope] - Whether to append a zone id when available.
104
+ * @returns {string | undefined} The IPv6 address of the selected network interface, or undefined if not found.
105
+ *
106
+ * @remarks
107
+ * Type of IPv6 addresses (preferred order for Matter)
108
+ *
109
+ * fd00::/8
110
+ * - IPv6 ULA (Unique Local Address)
111
+ * - Private IPv6 networks (RFC 4193)
112
+ * - ✔ PREFERRED
113
+ *
114
+ * 2000::/3
115
+ * - Global Unicast IPv6
116
+ * - Publicly routable IPv6
117
+ * - ⚠ OPTIONAL (advanced setups only)
118
+ *
119
+ * fe80::/10
120
+ * - IPv6 Link-Local
121
+ * - Interface-scoped only, non-routable
122
+ */
49
123
  export function getIpv6InterfaceAddress(scope = false) {
50
124
  for (const [interfaceName, interfaceDetails] of Object.entries(os.networkInterfaces())) {
51
125
  if (!interfaceName || !interfaceDetails || interfaceDetails.length === 0)
@@ -55,6 +129,7 @@ export function getIpv6InterfaceAddress(scope = false) {
55
129
  const address = detail.address;
56
130
  if (!scope)
57
131
  return address;
132
+ // Defensive check: if already has a zone id, keep it. Should never happen from os.networkInterfaces().
58
133
  if (address.includes('%'))
59
134
  return address;
60
135
  const isWindows = os.platform() === 'win32';
@@ -67,6 +142,11 @@ export function getIpv6InterfaceAddress(scope = false) {
67
142
  }
68
143
  }
69
144
  }
145
+ /**
146
+ * Retrieves the mac address of the first non-internal network interface.
147
+ *
148
+ * @returns {string | undefined} The mac address, or undefined if not found.
149
+ */
70
150
  export function getMacAddress() {
71
151
  for (const [interfaceName, interfaceDetails] of Object.entries(os.networkInterfaces())) {
72
152
  if (!interfaceName || !interfaceDetails || interfaceDetails.length === 0)
@@ -77,9 +157,14 @@ export function getMacAddress() {
77
157
  }
78
158
  }
79
159
  }
160
+ /**
161
+ * Logs the available network interfaces and their details.
162
+ *
163
+ * @returns {void}
164
+ */
80
165
  export function logInterfaces() {
81
- const log = new AnsiLogger({ logName: 'MatterbridgeUtils', logTimestampFormat: 4, logLevel: "info" });
82
- log.logLevel = "info";
166
+ const log = new AnsiLogger({ logName: 'MatterbridgeUtils', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: "info" /* LogLevel.INFO */ });
167
+ log.logLevel = "info" /* LogLevel.INFO */;
83
168
  log.logName = 'LogInterfaces';
84
169
  log.info('Available Network Interfaces:');
85
170
  const availableAddresses = Object.entries(os.networkInterfaces());
@@ -93,13 +178,24 @@ export function logInterfaces() {
93
178
  }
94
179
  }
95
180
  }
181
+ /**
182
+ * Resolves the given hostname to an IP address.
183
+ *
184
+ * @param {string} hostname - The hostname to resolve.
185
+ * @param {0 | 4 | 6} [family] - The address family to use (0 for any, 4 for IPv4, 6 for IPv6). Default is 4.
186
+ * @returns {Promise<string | null>} - A promise that resolves to the IP address or null if not found.
187
+ *
188
+ * @remarks
189
+ * This function uses DNS lookup to resolve the hostname, which can take some time to complete.
190
+ */
96
191
  export async function resolveHostname(hostname, family = 4) {
97
192
  const dns = await import('node:dns');
98
193
  try {
99
- const addresses = await dns.promises.lookup(hostname.toLowerCase(), { family });
194
+ const addresses = await dns.promises.lookup(hostname.toLowerCase() /* + '.local'*/, { family });
100
195
  return addresses.address;
101
196
  }
102
197
  catch (_error) {
103
198
  return null;
104
199
  }
105
200
  }
201
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
@@ -1 +1,29 @@
1
+ /**
2
+ * @description This file contains the getGlobalNodeModules function.
3
+ * @file npmRoot.ts
4
+ * @author Luca Liguori
5
+ * @created 2024-02-17
6
+ * @version 1.0.0
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2024, 2025, 2026 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
+ /**
24
+ * Retrieves the path to the global Node.js modules directory.
25
+ *
26
+ * @returns {Promise<string>} A promise that resolves to the path of the global Node.js modules directory.
27
+ */
1
28
  export declare function getGlobalNodeModules(): Promise<string>;
29
+ //# sourceMappingURL=npmRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npmRoot.d.ts","sourceRoot":"","sources":["../src/npmRoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;;;;GAIG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAW5D"}
@@ -1,3 +1,30 @@
1
+ /**
2
+ * @description This file contains the getGlobalNodeModules function.
3
+ * @file npmRoot.ts
4
+ * @author Luca Liguori
5
+ * @created 2024-02-17
6
+ * @version 1.0.0
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2024, 2025, 2026 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
+ /**
24
+ * Retrieves the path to the global Node.js modules directory.
25
+ *
26
+ * @returns {Promise<string>} A promise that resolves to the path of the global Node.js modules directory.
27
+ */
1
28
  export async function getGlobalNodeModules() {
2
29
  const { exec } = await import('node:child_process');
3
30
  return new Promise((resolve, reject) => {
@@ -11,3 +38,4 @@ export async function getGlobalNodeModules() {
11
38
  });
12
39
  });
13
40
  }
41
+ //# sourceMappingURL=npmRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npmRoot.js","sourceRoot":"","sources":["../src/npmRoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC,KAA2B,EAAE,MAAc,EAAE,EAAE;YAClE,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1,33 @@
1
+ /**
2
+ * @description This file contains the getNpmPackageVersion function.
3
+ * @file npmVersion.ts
4
+ * @author Luca Liguori
5
+ * @created 2024-02-17
6
+ * @version 1.0.0
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2024, 2025, 2026 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
+ /**
24
+ * Retrieves the version of an npm package from the npm registry.
25
+ *
26
+ * @param {string} packageName - The name of the npm package.
27
+ * @param {string} [tag] - The tag of the package version to retrieve (default is 'latest').
28
+ * @param {number} [timeout] - The timeout duration in milliseconds (default is 10000ms).
29
+ * @returns {Promise<string>} A promise that resolves to the version string of the package.
30
+ * @throws {Error} If the request fails or the tag is not found.
31
+ */
1
32
  export declare function getNpmPackageVersion(packageName: string, tag?: string, timeout?: number): Promise<string>;
33
+ //# sourceMappingURL=npmVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npmVersion.d.ts","sourceRoot":"","sources":["../src/npmVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,MAAiB,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA8ChI"}
@@ -1,3 +1,34 @@
1
+ /**
2
+ * @description This file contains the getNpmPackageVersion function.
3
+ * @file npmVersion.ts
4
+ * @author Luca Liguori
5
+ * @created 2024-02-17
6
+ * @version 1.0.0
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2024, 2025, 2026 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
+ /**
24
+ * Retrieves the version of an npm package from the npm registry.
25
+ *
26
+ * @param {string} packageName - The name of the npm package.
27
+ * @param {string} [tag] - The tag of the package version to retrieve (default is 'latest').
28
+ * @param {number} [timeout] - The timeout duration in milliseconds (default is 10000ms).
29
+ * @returns {Promise<string>} A promise that resolves to the version string of the package.
30
+ * @throws {Error} If the request fails or the tag is not found.
31
+ */
1
32
  export async function getNpmPackageVersion(packageName, tag = 'latest', timeout = 10000) {
2
33
  const https = await import('node:https');
3
34
  return new Promise((resolve, reject) => {
@@ -11,7 +42,7 @@ export async function getNpmPackageVersion(packageName, tag = 'latest', timeout
11
42
  let data = '';
12
43
  if (res.statusCode !== 200) {
13
44
  clearTimeout(timeoutId);
14
- res.resume();
45
+ res.resume(); // Discard response data to close the socket properly
15
46
  reject(new Error(`Failed to fetch data. Status code: ${res.statusCode}`));
16
47
  return;
17
48
  }
@@ -22,6 +53,7 @@ export async function getNpmPackageVersion(packageName, tag = 'latest', timeout
22
53
  clearTimeout(timeoutId);
23
54
  try {
24
55
  const jsonData = JSON.parse(data);
56
+ // console.log(`Package ${packageName} tag ${tag}`, jsonData);
25
57
  const version = jsonData['dist-tags']?.[tag];
26
58
  if (version) {
27
59
  resolve(version);
@@ -41,3 +73,4 @@ export async function getNpmPackageVersion(packageName, tag = 'latest', timeout
41
73
  });
42
74
  });
43
75
  }
76
+ //# sourceMappingURL=npmVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npmVersion.js","sourceRoot":"","sources":["../src/npmVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,MAAc,QAAQ,EAAE,UAAkB,KAAK;IAC7G,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,8BAA8B,WAAW,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;QACzE,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAChE,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,qDAAqD;gBACnE,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YAED,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClC,8DAA8D;oBAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC7C,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,4BAA4B,WAAW,GAAG,CAAC,CAAC,CAAC;oBAC3E,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACxG,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,26 @@
1
+ /**
2
+ * This file contains the Tracker class.
3
+ *
4
+ * @file tracker.ts
5
+ * @author Luca Liguori
6
+ * @created 2025-10-10
7
+ * @version 1.0.0
8
+ * @license Apache-2.0
9
+ *
10
+ * Copyright 2025, 2026, 2027 Luca Liguori.
11
+ *
12
+ * Licensed under the Apache License, Version 2.0 (the "License");
13
+ * you may not use this file except in compliance with the License.
14
+ * You may obtain a copy of the License at
15
+ *
16
+ * http://www.apache.org/licenses/LICENSE-2.0
17
+ *
18
+ * Unless required by applicable law or agreed to in writing, software
19
+ * distributed under the License is distributed on an "AS IS" BASIS,
20
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ * See the License for the specific language governing permissions and
22
+ * limitations under the License.
23
+ */
1
24
  import EventEmitter from 'node:events';
2
25
  export type TrackerSnapshot = {
3
26
  timestamp: number;
@@ -21,15 +44,25 @@ export type TrackerSnapshot = {
21
44
  peakArrayBuffers: number;
22
45
  };
23
46
  interface TrackerEvents {
47
+ /** Start tracking */
24
48
  start: [];
49
+ /** Stop tracking */
25
50
  stop: [];
51
+ /** Uptime event */
26
52
  uptime: [os: number, process: number];
53
+ /** CPU event */
27
54
  cpu: [os: number, process: number];
55
+ /** Memory event */
28
56
  memory: [free: number, total: number, rss: number, heapUsed: number, heapTotal: number, external: number, arrayBuffers: number];
57
+ /** Snapshot event */
29
58
  snapshot: [snapshot: TrackerSnapshot];
59
+ /** Reset peaks */
30
60
  reset_peaks: [];
61
+ /** Reset peaks done event */
31
62
  reset_peaks_done: [];
63
+ /** Run garbage collection */
32
64
  gc: [];
65
+ /** Garbage collection done event */
33
66
  gc_done: [type: 'major' | 'minor', execution: 'sync' | 'async'];
34
67
  }
35
68
  export declare class Tracker extends EventEmitter<TrackerEvents> {
@@ -44,9 +77,32 @@ export declare class Tracker extends EventEmitter<TrackerEvents> {
44
77
  private prevCpuUsage;
45
78
  private log;
46
79
  constructor(name?: string, debug?: boolean, verbose?: boolean);
80
+ /**
81
+ * Start tracking cpu and memory usage with a given interval in ms
82
+ *
83
+ * @param {number} sampleIntervalMs Sample interval in milliseconds. Default is 10000 (10 seconds).
84
+ */
47
85
  start(sampleIntervalMs?: number): void;
86
+ /**
87
+ * Reset peak values to the currently stored values
88
+ */
48
89
  resetPeaks(): void;
90
+ /**
91
+ * Manually trigger garbage collection to free memory (if exposed with --expose-gc)
92
+ *
93
+ * @param {'major' | 'minor'} type - The type of garbage collection to perform ('major' or 'minor'). Default is 'major'.
94
+ * @param {'sync' | 'async'} execution - The execution mode of garbage collection ('sync' or 'async'). Default is 'async'.
95
+ *
96
+ * @remarks
97
+ * - major collection refers to old-generation mark-sweep/mark-compact cycles.
98
+ * - minor collection refers to young-generation collections (scavenges).
99
+ * - sync execution blocks the main thread until GC is complete, which can cause pauses.
100
+ */
49
101
  runGarbageCollector(type?: 'major' | 'minor', execution?: 'sync' | 'async'): void;
102
+ /**
103
+ * Stop tracking, clear interval, log history
104
+ */
50
105
  stop(): void;
51
106
  }
52
107
  export {};
108
+ //# sourceMappingURL=tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,OAAO,YAAY,MAAM,aAAa,CAAC;AAOvC,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAGF,UAAU,aAAa;IACrB,qBAAqB;IACrB,KAAK,EAAE,EAAE,CAAC;IACV,oBAAoB;IACpB,IAAI,EAAE,EAAE,CAAC;IACT,mBAAmB;IACnB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,gBAAgB;IAChB,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnC,mBAAmB;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChI,qBAAqB;IACrB,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACtC,kBAAkB;IAClB,WAAW,EAAE,EAAE,CAAC;IAChB,6BAA6B;IAC7B,gBAAgB,EAAE,EAAE,CAAC;IACrB,6BAA6B;IAC7B,EAAE,EAAE,EAAE,CAAC;IACP,oCAAoC;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CACjE;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,aAAa,CAAC;IAmCpD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IApC1B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,MAAM,CAAC,YAAY,SAAK;IAExB,MAAM,CAAC,QAAQ,CAAC,WAAW,QAAQ;IACnC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAwBxC;IACF,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,GAAG,CAAa;gBAGL,IAAI,GAAE,MAAkB,EACxB,KAAK,GAAE,OAAe,EACtB,OAAO,GAAE,OAAe;IAkC3C;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,GAAE,MAAc;IAiGtC;;OAEG;IACH,UAAU;IAaV;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,IAAI,GAAE,OAAO,GAAG,OAAiB,EAAE,SAAS,GAAE,MAAM,GAAG,OAAiB;IAgB5F;;OAEG;IACH,IAAI;CAgCL"}
@@ -1,3 +1,27 @@
1
+ /**
2
+ * This file contains the Tracker class.
3
+ *
4
+ * @file tracker.ts
5
+ * @author Luca Liguori
6
+ * @created 2025-10-10
7
+ * @version 1.0.0
8
+ * @license Apache-2.0
9
+ *
10
+ * Copyright 2025, 2026, 2027 Luca Liguori.
11
+ *
12
+ * Licensed under the Apache License, Version 2.0 (the "License");
13
+ * you may not use this file except in compliance with the License.
14
+ * You may obtain a copy of the License at
15
+ *
16
+ * http://www.apache.org/licenses/LICENSE-2.0
17
+ *
18
+ * Unless required by applicable law or agreed to in writing, software
19
+ * distributed under the License is distributed on an "AS IS" BASIS,
20
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ * See the License for the specific language governing permissions and
22
+ * limitations under the License.
23
+ */
24
+ /* eslint-disable no-console */
1
25
  if (process.argv.includes('--loader') || process.argv.includes('-loader'))
2
26
  console.log('\u001B[32mTracker loaded.\u001B[40;0m');
3
27
  import os from 'node:os';
@@ -10,6 +34,7 @@ export class Tracker extends EventEmitter {
10
34
  verbose;
11
35
  trackerInterval;
12
36
  static historyIndex = 0;
37
+ // History for 8h at 1 sample each 10 seconds = 2880 entries
13
38
  static historySize = 2880;
14
39
  static history = Array.from({ length: this.historySize }, () => ({
15
40
  timestamp: 0,
@@ -46,7 +71,7 @@ export class Tracker extends EventEmitter {
46
71
  if (process.argv.includes('--verbose') || process.argv.includes('-verbose')) {
47
72
  this.verbose = true;
48
73
  }
49
- this.log = new AnsiLogger({ logName: name, logTimestampFormat: 4, logLevel: this.debug ? "debug" : "info" });
74
+ this.log = new AnsiLogger({ logName: name, logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: this.debug ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
50
75
  this.log.logNameColor = YELLOW;
51
76
  if (this.verbose) {
52
77
  this.log.debug(`os.cpus():\n${RESET}`, os.cpus());
@@ -66,6 +91,11 @@ export class Tracker extends EventEmitter {
66
91
  this.runGarbageCollector();
67
92
  });
68
93
  }
94
+ /**
95
+ * Start tracking cpu and memory usage with a given interval in ms
96
+ *
97
+ * @param {number} sampleIntervalMs Sample interval in milliseconds. Default is 10000 (10 seconds).
98
+ */
69
99
  start(sampleIntervalMs = 10000) {
70
100
  if (this.trackerInterval)
71
101
  return;
@@ -74,15 +104,21 @@ export class Tracker extends EventEmitter {
74
104
  this.prevCpus = os.cpus();
75
105
  this.prevCpuUsage = process.cpuUsage();
76
106
  this.trackerInterval = setInterval(() => {
107
+ // Increment tryGcCount and check if we can run garbage collector each hour cause memory might grow over time because of our even small allocations
77
108
  tryGcCount += sampleIntervalMs / 1000;
78
109
  if (tryGcCount > 60 * 60) {
79
110
  this.runGarbageCollector();
80
111
  tryGcCount = 0;
81
112
  }
113
+ // Get current history entry in circular buffer
82
114
  const entry = Tracker.history[Tracker.historyIndex];
115
+ // Get previous history entry in circular buffer
83
116
  const prevEntry = Tracker.history[(Tracker.historyIndex + Tracker.historySize - 1) % Tracker.historySize];
117
+ // Set the timestamp
84
118
  entry.timestamp = Date.now();
119
+ // Emit uptime event
85
120
  this.emit('uptime', os.uptime(), process.uptime());
121
+ // Track CPU usage
86
122
  const currentCpus = os.cpus();
87
123
  const loads = currentCpus.map((cpu, idx) => {
88
124
  const prev = this.prevCpus[idx]?.times;
@@ -94,6 +130,7 @@ export class Tracker extends EventEmitter {
94
130
  const totalDelta = busyDelta + idleDelta;
95
131
  if (totalDelta <= 0)
96
132
  return 0;
133
+ // istanbul ignore next cause is practically impossible to hit this branch
97
134
  return busyDelta / totalDelta;
98
135
  });
99
136
  this.prevCpus = currentCpus;
@@ -101,13 +138,16 @@ export class Tracker extends EventEmitter {
101
138
  const osCpu = Number((avgLoad * 100).toFixed(2));
102
139
  entry.osCpu = osCpu;
103
140
  entry.peakOsCpu = Math.max(prevEntry.peakOsCpu, osCpu);
141
+ // Track process CPU usage
104
142
  const diff = process.cpuUsage(this.prevCpuUsage);
105
143
  this.prevCpuUsage = process.cpuUsage();
106
144
  const totalMs = (diff.user + diff.system) / 1000;
107
145
  const processCpu = Number((((totalMs / sampleIntervalMs) * 100) / currentCpus.length).toFixed(2));
108
146
  entry.processCpu = processCpu;
109
147
  entry.peakProcessCpu = Math.max(prevEntry.peakProcessCpu, processCpu);
148
+ // Emit cpu event
110
149
  this.emit('cpu', entry.osCpu, entry.processCpu);
150
+ // Track memory usage
111
151
  entry.freeMemory = os.freemem();
112
152
  entry.peakFreeMemory = Math.max(prevEntry.peakFreeMemory, entry.freeMemory);
113
153
  entry.totalMemory = os.totalmem();
@@ -124,7 +164,9 @@ export class Tracker extends EventEmitter {
124
164
  entry.arrayBuffers = mem.arrayBuffers;
125
165
  entry.peakArrayBuffers = Math.max(prevEntry.peakArrayBuffers, mem.arrayBuffers);
126
166
  this.emit('memory', entry.freeMemory, entry.totalMemory, entry.rss, entry.heapUsed, entry.heapTotal, entry.external, entry.arrayBuffers);
167
+ // Emit tracker event with current snapshot
127
168
  this.emit('snapshot', entry);
169
+ // Debug output
128
170
  if (this.debug) {
129
171
  this.log.debug(`Time: ${formatTimeStamp(entry.timestamp)} ` +
130
172
  `os ${CYAN}${BRIGHT}${formatPercent(entry.osCpu)}${RESET}${db} (${entry.peakOsCpu > prevEntry.peakOsCpu ? RED : ''}${formatPercent(entry.peakOsCpu)}${db}) ` +
@@ -135,10 +177,14 @@ export class Tracker extends EventEmitter {
135
177
  `external: ${CYAN}${BRIGHT}${formatBytes(entry.external)}${RESET}${db} (${entry.peakExternal > prevEntry.peakExternal ? RED : ''}${formatBytes(entry.peakExternal)}${db}) ` +
136
178
  `arrayBuffers: ${CYAN}${BRIGHT}${formatBytes(entry.arrayBuffers)}${RESET}${db} (${entry.peakArrayBuffers > prevEntry.peakArrayBuffers ? RED : ''}${formatBytes(entry.peakArrayBuffers)}${db})`);
137
179
  }
180
+ // Move to next history index of circular buffer
138
181
  Tracker.historyIndex = (Tracker.historyIndex + 1) % Tracker.historySize;
139
182
  }, sampleIntervalMs);
140
183
  this.log.debug(`Tracker started`);
141
184
  }
185
+ /**
186
+ * Reset peak values to the currently stored values
187
+ */
142
188
  resetPeaks() {
143
189
  const prevHistoryIndex = (Tracker.historyIndex + Tracker.historySize - 1) % Tracker.historySize;
144
190
  Tracker.history[prevHistoryIndex].peakOsCpu = 0;
@@ -152,6 +198,17 @@ export class Tracker extends EventEmitter {
152
198
  this.log.debug(`${CYAN}${BRIGHT}Peaks reset at ${new Date(Date.now()).toLocaleString()}.${RESET}${db}`);
153
199
  this.emit('reset_peaks_done');
154
200
  }
201
+ /**
202
+ * Manually trigger garbage collection to free memory (if exposed with --expose-gc)
203
+ *
204
+ * @param {'major' | 'minor'} type - The type of garbage collection to perform ('major' or 'minor'). Default is 'major'.
205
+ * @param {'sync' | 'async'} execution - The execution mode of garbage collection ('sync' or 'async'). Default is 'async'.
206
+ *
207
+ * @remarks
208
+ * - major collection refers to old-generation mark-sweep/mark-compact cycles.
209
+ * - minor collection refers to young-generation collections (scavenges).
210
+ * - sync execution blocks the main thread until GC is complete, which can cause pauses.
211
+ */
155
212
  runGarbageCollector(type = 'major', execution = 'async') {
156
213
  if (global.gc && typeof global.gc === 'function') {
157
214
  try {
@@ -172,15 +229,20 @@ export class Tracker extends EventEmitter {
172
229
  this.log.debug(`${CYAN}${BRIGHT}Garbage collection not exposed. Start Node.js with --expose-gc to enable manual garbage collection.${RESET}${db}`);
173
230
  }
174
231
  }
232
+ /**
233
+ * Stop tracking, clear interval, log history
234
+ */
175
235
  stop() {
176
236
  this.log.debug(`Tracker stopping...`);
177
237
  if (this.trackerInterval) {
178
238
  clearInterval(this.trackerInterval);
179
239
  this.trackerInterval = undefined;
180
240
  }
241
+ // Log all history entries
181
242
  if (this.debug) {
182
243
  this.log.debug(`Tracker history for ${YELLOW}${BRIGHT}${this.name}:${RESET}`);
183
244
  this.log.debug('Timestamp Host cpu Process cpu Rss Heap Used Heap Total External ArrayBuffers');
245
+ // 10/10/2025, 20:52:12 4.76 % ( 4.76 %) 0.16 % ( 0.16 %) 38.45 MB ( 38.45 MB) 3.75 MB ( 3.75 MB) 5.29 MB ( 5.29 MB) 1.66 MB ( 1.66 MB) 10.25 KB ( 10.25 KB)
184
246
  for (let i = 0; i < Tracker.historySize; i++) {
185
247
  const index = (Tracker.historyIndex + i) % Tracker.historySize;
186
248
  const entry = Tracker.history[index];
@@ -199,3 +261,4 @@ export class Tracker extends EventEmitter {
199
261
  this.log.debug(`Tracker stopped`);
200
262
  }
201
263
  }
264
+ //# sourceMappingURL=tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}