matterbridge 3.5.2 → 3.5.3-dev-20260202-e19e9b6

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 (280) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/README-DOCKER.md +2 -2
  3. package/README.md +14 -9
  4. package/dist/broadcastServer.d.ts +0 -115
  5. package/dist/broadcastServer.js +0 -117
  6. package/dist/broadcastServerTypes.d.ts +0 -43
  7. package/dist/broadcastServerTypes.js +0 -24
  8. package/dist/checkUpdates.d.ts +0 -75
  9. package/dist/checkUpdates.js +1 -91
  10. package/dist/cli.d.ts +0 -24
  11. package/dist/cli.js +1 -97
  12. package/dist/cliEmitter.d.ts +0 -36
  13. package/dist/cliEmitter.js +0 -37
  14. package/dist/cliHistory.d.ts +0 -42
  15. package/dist/cliHistory.js +0 -38
  16. package/dist/clusters/export.d.ts +0 -1
  17. package/dist/clusters/export.js +0 -2
  18. package/dist/deviceManager.d.ts +0 -108
  19. package/dist/deviceManager.js +1 -114
  20. package/dist/devices/airConditioner.d.ts +0 -75
  21. package/dist/devices/airConditioner.js +0 -57
  22. package/dist/devices/basicVideoPlayer.d.ts +0 -58
  23. package/dist/devices/basicVideoPlayer.js +1 -56
  24. package/dist/devices/batteryStorage.d.ts +0 -43
  25. package/dist/devices/batteryStorage.js +1 -48
  26. package/dist/devices/castingVideoPlayer.d.ts +0 -63
  27. package/dist/devices/castingVideoPlayer.js +2 -65
  28. package/dist/devices/cooktop.d.ts +0 -55
  29. package/dist/devices/cooktop.js +0 -56
  30. package/dist/devices/dishwasher.d.ts +0 -55
  31. package/dist/devices/dishwasher.js +0 -57
  32. package/dist/devices/evse.d.ts +0 -57
  33. package/dist/devices/evse.js +10 -74
  34. package/dist/devices/export.d.ts +0 -1
  35. package/dist/devices/export.js +0 -5
  36. package/dist/devices/extractorHood.d.ts +0 -41
  37. package/dist/devices/extractorHood.js +0 -43
  38. package/dist/devices/heatPump.d.ts +0 -43
  39. package/dist/devices/heatPump.js +2 -50
  40. package/dist/devices/laundryDryer.d.ts +0 -58
  41. package/dist/devices/laundryDryer.js +3 -62
  42. package/dist/devices/laundryWasher.d.ts +0 -64
  43. package/dist/devices/laundryWasher.js +4 -70
  44. package/dist/devices/microwaveOven.d.ts +1 -77
  45. package/dist/devices/microwaveOven.js +5 -88
  46. package/dist/devices/oven.d.ts +0 -82
  47. package/dist/devices/oven.js +0 -85
  48. package/dist/devices/refrigerator.d.ts +0 -100
  49. package/dist/devices/refrigerator.js +0 -102
  50. package/dist/devices/roboticVacuumCleaner.d.ts +0 -83
  51. package/dist/devices/roboticVacuumCleaner.js +9 -100
  52. package/dist/devices/solarPower.d.ts +0 -36
  53. package/dist/devices/solarPower.js +0 -38
  54. package/dist/devices/speaker.d.ts +0 -79
  55. package/dist/devices/speaker.js +0 -84
  56. package/dist/devices/temperatureControl.d.ts +0 -21
  57. package/dist/devices/temperatureControl.js +3 -24
  58. package/dist/devices/waterHeater.d.ts +0 -74
  59. package/dist/devices/waterHeater.js +2 -82
  60. package/dist/dgram/export.d.ts +0 -1
  61. package/dist/dgram/export.js +0 -1
  62. package/dist/frontend.d.ts +0 -187
  63. package/dist/frontend.js +37 -498
  64. package/dist/frontendTypes.d.ts +0 -57
  65. package/dist/frontendTypes.js +0 -45
  66. package/dist/helpers.d.ts +0 -43
  67. package/dist/helpers.js +0 -54
  68. package/dist/index.d.ts +0 -23
  69. package/dist/index.js +0 -25
  70. package/dist/jestutils/export.d.ts +0 -1
  71. package/dist/jestutils/export.js +0 -1
  72. package/dist/jestutils/jestHelpers.d.ts +0 -255
  73. package/dist/jestutils/jestHelpers.js +15 -371
  74. package/dist/logger/export.d.ts +0 -1
  75. package/dist/logger/export.js +0 -1
  76. package/dist/matter/behaviors.d.ts +0 -1
  77. package/dist/matter/behaviors.js +0 -2
  78. package/dist/matter/clusters.d.ts +0 -1
  79. package/dist/matter/clusters.js +0 -2
  80. package/dist/matter/devices.d.ts +0 -1
  81. package/dist/matter/devices.js +0 -2
  82. package/dist/matter/endpoints.d.ts +0 -1
  83. package/dist/matter/endpoints.js +0 -2
  84. package/dist/matter/export.d.ts +0 -1
  85. package/dist/matter/export.js +0 -2
  86. package/dist/matter/types.d.ts +0 -1
  87. package/dist/matter/types.js +0 -2
  88. package/dist/matterNode.d.ts +0 -258
  89. package/dist/matterNode.js +8 -359
  90. package/dist/matterbridge.d.ts +0 -373
  91. package/dist/matterbridge.js +46 -854
  92. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -42
  93. package/dist/matterbridgeAccessoryPlatform.js +0 -50
  94. package/dist/matterbridgeBehaviors.d.ts +0 -24
  95. package/dist/matterbridgeBehaviors.js +5 -65
  96. package/dist/matterbridgeDeviceTypes.d.ts +0 -649
  97. package/dist/matterbridgeDeviceTypes.js +6 -673
  98. package/dist/matterbridgeDynamicPlatform.d.ts +0 -42
  99. package/dist/matterbridgeDynamicPlatform.js +0 -50
  100. package/dist/matterbridgeEndpoint.d.ts +0 -1369
  101. package/dist/matterbridgeEndpoint.js +54 -1507
  102. package/dist/matterbridgeEndpointHelpers.d.ts +0 -425
  103. package/dist/matterbridgeEndpointHelpers.js +20 -482
  104. package/dist/matterbridgeEndpointTypes.d.ts +0 -70
  105. package/dist/matterbridgeEndpointTypes.js +0 -25
  106. package/dist/matterbridgePlatform.d.ts +0 -434
  107. package/dist/matterbridgePlatform.js +1 -472
  108. package/dist/matterbridgePlatformTypes.d.ts +0 -29
  109. package/dist/matterbridgePlatformTypes.js +0 -24
  110. package/dist/matterbridgeTypes.d.ts +0 -46
  111. package/dist/matterbridgeTypes.js +0 -26
  112. package/dist/mb_coap.d.ts +0 -23
  113. package/dist/mb_coap.js +3 -41
  114. package/dist/mb_health.d.ts +0 -67
  115. package/dist/mb_health.js +0 -70
  116. package/dist/mb_mdns.d.ts +0 -23
  117. package/dist/mb_mdns.js +36 -94
  118. package/dist/pluginManager.d.ts +0 -305
  119. package/dist/pluginManager.js +5 -342
  120. package/dist/shelly.d.ts +0 -157
  121. package/dist/shelly.js +7 -178
  122. package/dist/spawn.d.ts +0 -32
  123. package/dist/spawn.js +1 -71
  124. package/dist/storage/export.d.ts +0 -1
  125. package/dist/storage/export.js +0 -1
  126. package/dist/utils/export.d.ts +0 -1
  127. package/dist/utils/export.js +0 -1
  128. package/dist/worker.d.ts +0 -61
  129. package/dist/worker.js +4 -65
  130. package/dist/workerCheckUpdates.d.ts +0 -24
  131. package/dist/workerCheckUpdates.js +5 -36
  132. package/dist/workerGlobalPrefix.d.ts +0 -24
  133. package/dist/workerGlobalPrefix.js +5 -36
  134. package/dist/workerTypes.d.ts +0 -25
  135. package/dist/workerTypes.js +0 -24
  136. package/frontend/build/assets/index.js +4 -4
  137. package/frontend/build/assets/vendor_emotion.js +1 -1
  138. package/frontend/build/assets/vendor_lodash.js +1 -1
  139. package/frontend/build/assets/vendor_mdi.js +1 -1
  140. package/frontend/build/assets/vendor_mui.js +22 -22
  141. package/frontend/build/assets/vendor_node_modules.js +20 -20
  142. package/frontend/build/assets/vendor_notistack.js +2 -2
  143. package/frontend/build/assets/vendor_qrcode.js +1 -1
  144. package/frontend/build/assets/vendor_rjsf.js +8 -8
  145. package/frontend/build/index.html +1 -1
  146. package/frontend/package.json +48 -47
  147. package/npm-shrinkwrap.json +77 -47
  148. package/package.json +7 -7
  149. package/dist/broadcastServer.d.ts.map +0 -1
  150. package/dist/broadcastServer.js.map +0 -1
  151. package/dist/broadcastServerTypes.d.ts.map +0 -1
  152. package/dist/broadcastServerTypes.js.map +0 -1
  153. package/dist/checkUpdates.d.ts.map +0 -1
  154. package/dist/checkUpdates.js.map +0 -1
  155. package/dist/cli.d.ts.map +0 -1
  156. package/dist/cli.js.map +0 -1
  157. package/dist/cliEmitter.d.ts.map +0 -1
  158. package/dist/cliEmitter.js.map +0 -1
  159. package/dist/cliHistory.d.ts.map +0 -1
  160. package/dist/cliHistory.js.map +0 -1
  161. package/dist/clusters/export.d.ts.map +0 -1
  162. package/dist/clusters/export.js.map +0 -1
  163. package/dist/deviceManager.d.ts.map +0 -1
  164. package/dist/deviceManager.js.map +0 -1
  165. package/dist/devices/airConditioner.d.ts.map +0 -1
  166. package/dist/devices/airConditioner.js.map +0 -1
  167. package/dist/devices/basicVideoPlayer.d.ts.map +0 -1
  168. package/dist/devices/basicVideoPlayer.js.map +0 -1
  169. package/dist/devices/batteryStorage.d.ts.map +0 -1
  170. package/dist/devices/batteryStorage.js.map +0 -1
  171. package/dist/devices/castingVideoPlayer.d.ts.map +0 -1
  172. package/dist/devices/castingVideoPlayer.js.map +0 -1
  173. package/dist/devices/cooktop.d.ts.map +0 -1
  174. package/dist/devices/cooktop.js.map +0 -1
  175. package/dist/devices/dishwasher.d.ts.map +0 -1
  176. package/dist/devices/dishwasher.js.map +0 -1
  177. package/dist/devices/evse.d.ts.map +0 -1
  178. package/dist/devices/evse.js.map +0 -1
  179. package/dist/devices/export.d.ts.map +0 -1
  180. package/dist/devices/export.js.map +0 -1
  181. package/dist/devices/extractorHood.d.ts.map +0 -1
  182. package/dist/devices/extractorHood.js.map +0 -1
  183. package/dist/devices/heatPump.d.ts.map +0 -1
  184. package/dist/devices/heatPump.js.map +0 -1
  185. package/dist/devices/laundryDryer.d.ts.map +0 -1
  186. package/dist/devices/laundryDryer.js.map +0 -1
  187. package/dist/devices/laundryWasher.d.ts.map +0 -1
  188. package/dist/devices/laundryWasher.js.map +0 -1
  189. package/dist/devices/microwaveOven.d.ts.map +0 -1
  190. package/dist/devices/microwaveOven.js.map +0 -1
  191. package/dist/devices/oven.d.ts.map +0 -1
  192. package/dist/devices/oven.js.map +0 -1
  193. package/dist/devices/refrigerator.d.ts.map +0 -1
  194. package/dist/devices/refrigerator.js.map +0 -1
  195. package/dist/devices/roboticVacuumCleaner.d.ts.map +0 -1
  196. package/dist/devices/roboticVacuumCleaner.js.map +0 -1
  197. package/dist/devices/solarPower.d.ts.map +0 -1
  198. package/dist/devices/solarPower.js.map +0 -1
  199. package/dist/devices/speaker.d.ts.map +0 -1
  200. package/dist/devices/speaker.js.map +0 -1
  201. package/dist/devices/temperatureControl.d.ts.map +0 -1
  202. package/dist/devices/temperatureControl.js.map +0 -1
  203. package/dist/devices/waterHeater.d.ts.map +0 -1
  204. package/dist/devices/waterHeater.js.map +0 -1
  205. package/dist/dgram/export.d.ts.map +0 -1
  206. package/dist/dgram/export.js.map +0 -1
  207. package/dist/frontend.d.ts.map +0 -1
  208. package/dist/frontend.js.map +0 -1
  209. package/dist/frontendTypes.d.ts.map +0 -1
  210. package/dist/frontendTypes.js.map +0 -1
  211. package/dist/helpers.d.ts.map +0 -1
  212. package/dist/helpers.js.map +0 -1
  213. package/dist/index.d.ts.map +0 -1
  214. package/dist/index.js.map +0 -1
  215. package/dist/jestutils/export.d.ts.map +0 -1
  216. package/dist/jestutils/export.js.map +0 -1
  217. package/dist/jestutils/jestHelpers.d.ts.map +0 -1
  218. package/dist/jestutils/jestHelpers.js.map +0 -1
  219. package/dist/logger/export.d.ts.map +0 -1
  220. package/dist/logger/export.js.map +0 -1
  221. package/dist/matter/behaviors.d.ts.map +0 -1
  222. package/dist/matter/behaviors.js.map +0 -1
  223. package/dist/matter/clusters.d.ts.map +0 -1
  224. package/dist/matter/clusters.js.map +0 -1
  225. package/dist/matter/devices.d.ts.map +0 -1
  226. package/dist/matter/devices.js.map +0 -1
  227. package/dist/matter/endpoints.d.ts.map +0 -1
  228. package/dist/matter/endpoints.js.map +0 -1
  229. package/dist/matter/export.d.ts.map +0 -1
  230. package/dist/matter/export.js.map +0 -1
  231. package/dist/matter/types.d.ts.map +0 -1
  232. package/dist/matter/types.js.map +0 -1
  233. package/dist/matterNode.d.ts.map +0 -1
  234. package/dist/matterNode.js.map +0 -1
  235. package/dist/matterbridge.d.ts.map +0 -1
  236. package/dist/matterbridge.js.map +0 -1
  237. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  238. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  239. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  240. package/dist/matterbridgeBehaviors.js.map +0 -1
  241. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  242. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  243. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  244. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  245. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  246. package/dist/matterbridgeEndpoint.js.map +0 -1
  247. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  248. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  249. package/dist/matterbridgeEndpointTypes.d.ts.map +0 -1
  250. package/dist/matterbridgeEndpointTypes.js.map +0 -1
  251. package/dist/matterbridgePlatform.d.ts.map +0 -1
  252. package/dist/matterbridgePlatform.js.map +0 -1
  253. package/dist/matterbridgePlatformTypes.d.ts.map +0 -1
  254. package/dist/matterbridgePlatformTypes.js.map +0 -1
  255. package/dist/matterbridgeTypes.d.ts.map +0 -1
  256. package/dist/matterbridgeTypes.js.map +0 -1
  257. package/dist/mb_coap.d.ts.map +0 -1
  258. package/dist/mb_coap.js.map +0 -1
  259. package/dist/mb_health.d.ts.map +0 -1
  260. package/dist/mb_health.js.map +0 -1
  261. package/dist/mb_mdns.d.ts.map +0 -1
  262. package/dist/mb_mdns.js.map +0 -1
  263. package/dist/pluginManager.d.ts.map +0 -1
  264. package/dist/pluginManager.js.map +0 -1
  265. package/dist/shelly.d.ts.map +0 -1
  266. package/dist/shelly.js.map +0 -1
  267. package/dist/spawn.d.ts.map +0 -1
  268. package/dist/spawn.js.map +0 -1
  269. package/dist/storage/export.d.ts.map +0 -1
  270. package/dist/storage/export.js.map +0 -1
  271. package/dist/utils/export.d.ts.map +0 -1
  272. package/dist/utils/export.js.map +0 -1
  273. package/dist/worker.d.ts.map +0 -1
  274. package/dist/worker.js.map +0 -1
  275. package/dist/workerCheckUpdates.d.ts.map +0 -1
  276. package/dist/workerCheckUpdates.js.map +0 -1
  277. package/dist/workerGlobalPrefix.d.ts.map +0 -1
  278. package/dist/workerGlobalPrefix.js.map +0 -1
  279. package/dist/workerTypes.d.ts.map +0 -1
  280. package/dist/workerTypes.js.map +0 -1
@@ -1,41 +1,9 @@
1
- /**
2
- * This file contains the check updates functions.
3
- *
4
- * @file checkUpdates.ts
5
- * @author Luca Liguori
6
- * @created 2025-02-24
7
- * @version 2.0.1
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
- // AnsiLogger module
25
1
  import { AnsiLogger, db, debugStringify, nt, wr } from 'node-ansi-logger';
26
- // Matterbridge module
27
2
  import { hasParameter, isValidString } from '@matterbridge/utils';
28
3
  import { plg } from './matterbridgeTypes.js';
29
4
  import { BroadcastServer } from './broadcastServer.js';
30
- /**
31
- * Checks for updates for Matterbridge and its plugins.
32
- * If the 'shelly' parameter is present, also checks for Shelly updates.
33
- *
34
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
35
- * @returns {Promise<void>} A promise that resolves when the update checks are complete.
36
- */
37
5
  export async function checkUpdates(matterbridge) {
38
- const log = new AnsiLogger({ logName: 'MatterbridgeUpdates', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: matterbridge.logLevel });
6
+ const log = new AnsiLogger({ logName: 'MatterbridgeUpdates', logTimestampFormat: 4, logLevel: matterbridge.logLevel });
39
7
  const server = new BroadcastServer('updates', log);
40
8
  const checkUpdatePromise = checkUpdatesAndLog(matterbridge, log, server);
41
9
  const latestVersionPromise = getMatterbridgeLatestVersion(matterbridge, log, server);
@@ -51,7 +19,6 @@ export async function checkUpdates(matterbridge) {
51
19
  }
52
20
  }
53
21
  catch (error) {
54
- // istanbul ignore next cause it's just an error log
55
22
  log.debug(`Error fetching plugins for update check: ${error instanceof Error ? error.message : error}`);
56
23
  }
57
24
  if (hasParameter('shelly')) {
@@ -62,14 +29,6 @@ export async function checkUpdates(matterbridge) {
62
29
  await Promise.all([checkUpdatePromise, latestVersionPromise, devVersionPromise, ...pluginsVersionPromises, ...pluginsDevVersionPromises, ...shellyUpdatesPromises]);
63
30
  server.close();
64
31
  }
65
- /**
66
- * Checks for updates and logs from https://matterbridge.io/.
67
- * If the update check fails, logs a warning message.
68
- *
69
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
70
- * @param {AnsiLogger} log - The logger instance.
71
- * @param {BroadcastServer} server - The broadcast server instance.
72
- */
73
32
  export async function checkUpdatesAndLog(matterbridge, log, server) {
74
33
  const { getGitHubUpdate } = await import('@matterbridge/utils');
75
34
  const branch = matterbridge.matterbridgeVersion.includes('-dev-') ? 'dev' : 'main';
@@ -86,29 +45,17 @@ export async function checkUpdatesAndLog(matterbridge, log, server) {
86
45
  dst: 'frontend',
87
46
  params: { message: branch === 'main' ? updateJson.latestMessage : updateJson.devMessage, timeout: 0, severity: branch === 'main' ? updateJson.latestMessageSeverity : updateJson.devMessageSeverity },
88
47
  });
89
- // matterbridge.frontend.wssSendSnackbarMessage(branch === 'main' ? updateJson.latestMessage : updateJson.devMessage, 0, branch === 'main' ? updateJson.latestMessageSeverity : updateJson.devMessageSeverity);
90
48
  }
91
49
  }
92
50
  catch (error) {
93
51
  log.debug(`Error checking GitHub ${branch} updates: ${error instanceof Error ? error.message : error}`);
94
52
  }
95
53
  }
96
- /**
97
- * Retrieves the latest version of Matterbridge and updates the matterbridgeLatestVersion property.
98
- * If there is an error retrieving the latest version, logs an error message.
99
- *
100
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
101
- * @param {AnsiLogger} log - The logger instance.
102
- * @param {BroadcastServer} server - The broadcast server instance.
103
- * @returns {Promise<string | undefined>} A promise that resolves when the latest version is retrieved.
104
- */
105
54
  export async function getMatterbridgeLatestVersion(matterbridge, log, server) {
106
55
  const { getNpmPackageVersion } = await import('@matterbridge/utils');
107
56
  try {
108
57
  const version = await getNpmPackageVersion('matterbridge');
109
58
  server.request({ type: 'matterbridge_latest_version', src: server.name, dst: 'matterbridge', params: { version } });
110
- // matterbridge.matterbridgeLatestVersion = version;
111
- // await matterbridge.nodeContext?.set<string>('matterbridgeLatestVersion', matterbridge.matterbridgeLatestVersion);
112
59
  if (matterbridge.matterbridgeVersion !== version) {
113
60
  log.notice(`Matterbridge is out of date. Current version: ${matterbridge.matterbridgeVersion}. Latest version: ${version}.`);
114
61
  server.request({
@@ -117,11 +64,8 @@ export async function getMatterbridgeLatestVersion(matterbridge, log, server) {
117
64
  dst: 'frontend',
118
65
  params: { message: 'Matterbridge latest update available', timeout: 0, severity: 'info' },
119
66
  });
120
- // matterbridge.frontend.wssSendSnackbarMessage('Matterbridge latest update available', 0, 'info');
121
67
  server.request({ type: 'frontend_updaterequired', src: server.name, dst: 'frontend', params: { devVersion: false } });
122
- // matterbridge.frontend.wssSendUpdateRequired();
123
68
  server.request({ type: 'frontend_refreshrequired', src: server.name, dst: 'frontend', params: { changed: 'settings' } });
124
- // matterbridge.frontend.wssSendRefreshRequired('settings');
125
69
  }
126
70
  else {
127
71
  log.debug(`Matterbridge is up to date. Current version: ${matterbridge.matterbridgeVersion}. Latest version: ${version}.`);
@@ -129,26 +73,14 @@ export async function getMatterbridgeLatestVersion(matterbridge, log, server) {
129
73
  return version;
130
74
  }
131
75
  catch (error) {
132
- // logError(matterbridge.log, `Error getting Matterbridge latest version`, error);
133
76
  log.warn(`Error getting Matterbridge latest version: ${error instanceof Error ? error.message : error}`);
134
77
  }
135
78
  }
136
- /**
137
- * Retrieves the latest dev version of Matterbridge and updates the matterbridgeDevVersion property.
138
- * If there is an error retrieving the latest version, logs an error message.
139
- *
140
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
141
- * @param {AnsiLogger} log - The logger instance.
142
- * @param {BroadcastServer} server - The broadcast server instance.
143
- * @returns {Promise<string | undefined>} A promise that resolves when the latest dev version is retrieved.
144
- */
145
79
  export async function getMatterbridgeDevVersion(matterbridge, log, server) {
146
80
  const { getNpmPackageVersion } = await import('@matterbridge/utils');
147
81
  try {
148
82
  const version = await getNpmPackageVersion('matterbridge', 'dev');
149
83
  server.request({ type: 'matterbridge_dev_version', src: server.name, dst: 'matterbridge', params: { version } });
150
- // matterbridge.matterbridgeDevVersion = version;
151
- // await matterbridge.nodeContext?.set<string>('matterbridgeDevVersion', version);
152
84
  if (matterbridge.matterbridgeVersion.includes('-dev-') && matterbridge.matterbridgeVersion !== version) {
153
85
  log.notice(`Matterbridge@dev is out of date. Current version: ${matterbridge.matterbridgeVersion}. Latest dev version: ${version}.`);
154
86
  server.request({
@@ -157,11 +89,8 @@ export async function getMatterbridgeDevVersion(matterbridge, log, server) {
157
89
  dst: 'frontend',
158
90
  params: { message: 'Matterbridge dev update available', timeout: 0, severity: 'info' },
159
91
  });
160
- // matterbridge.frontend.wssSendSnackbarMessage('Matterbridge dev update available', 0, 'info');
161
92
  server.request({ type: 'frontend_updaterequired', src: server.name, dst: 'frontend', params: { devVersion: true } });
162
- // matterbridge.frontend.wssSendUpdateRequired(true);
163
93
  server.request({ type: 'frontend_refreshrequired', src: server.name, dst: 'frontend', params: { changed: 'settings' } });
164
- // matterbridge.frontend.wssSendRefreshRequired('settings');
165
94
  }
166
95
  else if (matterbridge.matterbridgeVersion.includes('-dev-') && matterbridge.matterbridgeVersion === version) {
167
96
  log.debug(`Matterbridge@dev is up to date. Current version: ${matterbridge.matterbridgeVersion}. Latest dev version: ${version}.`);
@@ -172,15 +101,6 @@ export async function getMatterbridgeDevVersion(matterbridge, log, server) {
172
101
  log.warn(`Error getting Matterbridge latest dev version: ${error instanceof Error ? error.message : error}`);
173
102
  }
174
103
  }
175
- /**
176
- * Retrieves the latest version of a plugin and updates the plugin's latestVersion property.
177
- * If there is an error retrieving the latest version, logs an error message.
178
- *
179
- * @param {AnsiLogger} log - The logger instance.
180
- * @param {BroadcastServer} server - The broadcast server instance.
181
- * @param {ApiPlugin} plugin - The plugin for which to retrieve the latest version.
182
- * @returns {Promise<string | undefined>} A promise that resolves when the latest version is retrieved.
183
- */
184
104
  export async function getPluginLatestVersion(log, server, plugin) {
185
105
  const { getNpmPackageVersion } = await import('@matterbridge/utils');
186
106
  try {
@@ -200,15 +120,6 @@ export async function getPluginLatestVersion(log, server, plugin) {
200
120
  log.warn(`Error getting plugin ${plg}${plugin.name}${wr} latest version: ${error instanceof Error ? error.message : error}`);
201
121
  }
202
122
  }
203
- /**
204
- * Retrieves the latest dev version of a plugin and updates the plugin's devVersion property.
205
- * If there is an error retrieving the latest version, logs an error message.
206
- *
207
- * @param {AnsiLogger} log - The logger instance.
208
- * @param {BroadcastServer} server - The broadcast server instance.
209
- * @param {ApiPlugin} plugin - The plugin for which to retrieve the latest version.
210
- * @returns {Promise<string | undefined>} A promise that resolves when the latest dev version is retrieved.
211
- */
212
123
  export async function getPluginDevVersion(log, server, plugin) {
213
124
  const { getNpmPackageVersion } = await import('@matterbridge/utils');
214
125
  try {
@@ -228,4 +139,3 @@ export async function getPluginDevVersion(log, server, plugin) {
228
139
  log.debug(`Error getting plugin ${plg}${plugin.name}${db} latest dev version: ${error instanceof Error ? error.message : error}`);
229
140
  }
230
141
  }
231
- //# sourceMappingURL=checkUpdates.js.map
package/dist/cli.d.ts CHANGED
@@ -1,29 +1,5 @@
1
- /**
2
- * This file contains the CLI entry point of Matterbridge.
3
- *
4
- * @file cli.ts
5
- * @author Luca Liguori
6
- * @created 2023-12-29
7
- * @version 3.0.0
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2023, 2024, 2025 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
1
  import { Inspector, Tracker } from '@matterbridge/utils';
25
2
  import type { Matterbridge } from './matterbridge.js';
26
3
  export declare let instance: Matterbridge | undefined;
27
4
  export declare const tracker: Tracker;
28
5
  export declare const inspector: Inspector;
29
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js CHANGED
@@ -1,42 +1,12 @@
1
- /**
2
- * This file contains the CLI entry point of Matterbridge.
3
- *
4
- * @file cli.ts
5
- * @author Luca Liguori
6
- * @created 2023-12-29
7
- * @version 3.0.0
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2023, 2024, 2025 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 */
25
- /* eslint-disable n/no-process-exit */
26
1
  if (process.argv.includes('--loader') || process.argv.includes('-loader'))
27
2
  console.log('\u001B[32mCli loaded.\u001B[40;0m');
28
- // AnsiLogger module
29
3
  import { AnsiLogger } from 'node-ansi-logger';
30
- // Cli
31
4
  import { formatBytes, formatUptime, hasAnyParameter, hasParameter, Inspector, inspectError, Tracker } from '@matterbridge/utils';
32
5
  import { cliEmitter } from './cliEmitter.js';
33
6
  export let instance;
34
7
  export const tracker = new Tracker('Cli', false, false);
35
8
  export const inspector = new Inspector('Cli', false, false);
36
- const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: hasParameter('debug') ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
37
- /**
38
- * Starts the CPU and memory tracker.
39
- */
9
+ const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
40
10
  function startCpuMemoryCheck() {
41
11
  log.debug(`Cpu memory check starting...`);
42
12
  tracker.start();
@@ -49,50 +19,26 @@ function startCpuMemoryCheck() {
49
19
  });
50
20
  log.debug(`Cpu memory check started`);
51
21
  }
52
- /**
53
- * Stops the CPU and memory tracker.
54
- */
55
22
  function stopCpuMemoryCheck() {
56
23
  log.debug(`Cpu memory check stopping...`);
57
24
  tracker.stop();
58
25
  tracker.removeAllListeners();
59
26
  log.debug(`Cpu memory check stopped`);
60
27
  }
61
- /**
62
- * Starts the inspector for heap sampling.
63
- * This function is called when the -inspect parameter is passed.
64
- */
65
28
  async function startInspector() {
66
29
  await inspector.start();
67
30
  }
68
- /**
69
- * Stops the heap sampling and saves the profile.
70
- * This function is called when the -inspect parameter is passed.
71
- */
72
31
  async function stopInspector() {
73
32
  await inspector.stop();
74
33
  }
75
- /**
76
- * Takes a heap snapshot
77
- */
78
34
  async function takeHeapSnapshot() {
79
35
  await inspector.takeHeapSnapshot();
80
36
  }
81
- /**
82
- * Triggers a manual garbage collection.
83
- * This function is working only if the node process is started with --expose_gc.
84
- *
85
- * @remarks To check the effect of the garbage collection, add also --trace_gc or --trace_gc_verbose.
86
- */
87
37
  function triggerGarbageCollection() {
88
38
  inspector.runGarbageCollector();
89
39
  }
90
- /**
91
- * Registers event handlers for the Matterbridge instance.
92
- */
93
40
  function registerHandlers() {
94
41
  log.debug('Registering event handlers...');
95
- // istanbul ignore next cause registerHandlers is called only if instance is defined
96
42
  if (!instance)
97
43
  return;
98
44
  instance.on('shutdown', () => shutdown());
@@ -106,9 +52,6 @@ function registerHandlers() {
106
52
  instance.on('triggergarbagecollection', () => triggerGarbageCollection());
107
53
  log.debug('Registered event handlers');
108
54
  }
109
- /**
110
- * Shuts down the Matterbridge instance and exits the process.
111
- */
112
55
  async function shutdown() {
113
56
  log.debug('Received shutdown event, exiting...');
114
57
  if (hasParameter('inspect'))
@@ -117,56 +60,26 @@ async function shutdown() {
117
60
  cliEmitter.emit('shutdown');
118
61
  process.exit(0);
119
62
  }
120
- /**
121
- * Restarts the Matterbridge instance.
122
- */
123
63
  async function restart() {
124
64
  log.debug('Received restart event, loading...');
125
65
  const { Matterbridge } = await import('./matterbridge.js');
126
66
  instance = await Matterbridge.loadInstance(true);
127
67
  registerHandlers();
128
68
  }
129
- /**
130
- * Updates the Matterbridge instance.
131
- */
132
69
  async function update() {
133
70
  log.debug('Received update event, updating...');
134
- // TODO: Implement update logic outside of matterbridge
135
71
  const { Matterbridge } = await import('./matterbridge.js');
136
72
  instance = await Matterbridge.loadInstance(true);
137
73
  registerHandlers();
138
74
  }
139
- /**
140
- * Starts the CPU and memory check when the -startmemorycheck parameter is passed.
141
- */
142
75
  function start() {
143
76
  log.debug('Received start memory check event');
144
77
  startCpuMemoryCheck();
145
78
  }
146
- /**
147
- * Stops the CPU and memory check when the -stopmemorycheck parameter is passed.
148
- */
149
79
  function stop() {
150
80
  log.debug('Received stop memory check event');
151
81
  stopCpuMemoryCheck();
152
82
  }
153
- /**
154
- * Main function that initializes the Matterbridge instance and starts the CLI.
155
- *
156
- * @remarks
157
- *
158
- * Debug parameters:
159
- *
160
- * --debug enables debug logging.
161
- *
162
- * --verbose enables verbose logging.
163
- *
164
- * --loader enables loader logging.
165
- *
166
- * --inspect enables the inspector for heap sampling.
167
- *
168
- * --snapshotinterval <milliseconds> can be used to set the heap snapshot interval. Default is undefined. Minimum is 30000 ms.
169
- */
170
83
  async function main() {
171
84
  log.debug(`Cli main() started`);
172
85
  startCpuMemoryCheck();
@@ -176,7 +89,6 @@ async function main() {
176
89
  const { Matterbridge } = await import('./matterbridge.js');
177
90
  instance = await Matterbridge.loadInstance(true);
178
91
  log.debug(`***Matterbridge.loadInstance(true) exited`);
179
- // Check if the instance needs to shut down from parseCommandLine()
180
92
  if (!instance || instance.shutdown) {
181
93
  shutdown();
182
94
  }
@@ -194,18 +106,11 @@ main().catch((error) => {
194
106
  inspectError(log, 'Matterbridge.loadInstance() failed with error', error);
195
107
  shutdown();
196
108
  });
197
- /**
198
- * Displays the version.
199
- */
200
109
  async function version() {
201
- // Dynamic JSON import (Node >= 20) with import attributes
202
110
  const { default: pkg } = await import('../package.json', { with: { type: 'json' } });
203
111
  console.log(`Matterbridge version ${pkg.version}`);
204
112
  process.exit(0);
205
113
  }
206
- /**
207
- * Displays the help.
208
- */
209
114
  function help() {
210
115
  console.log(`
211
116
  Usage: matterbridge [options] [command]
@@ -262,4 +167,3 @@ function help() {
262
167
  `);
263
168
  process.exit(0);
264
169
  }
265
- //# sourceMappingURL=cli.js.map
@@ -1,26 +1,3 @@
1
- /**
2
- * This file contains the CLI emitter.
3
- *
4
- * @file cliEmitter.ts
5
- * @author Luca Liguori
6
- * @created 2025-07-04
7
- * @version 1.0.2
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
1
  import { EventEmitter } from 'node:events';
25
2
  interface CliEvents {
26
3
  shutdown: [];
@@ -32,19 +9,6 @@ interface CliEvents {
32
9
  export declare const cliEmitter: EventEmitter<CliEvents>;
33
10
  export declare let lastOsCpuUsage: number;
34
11
  export declare let lastProcessCpuUsage: number;
35
- /**
36
- * Sets the last os CPU usage.
37
- *
38
- * @param {number} val - The os CPU usage percentage to set.
39
- * @returns {void}
40
- */
41
12
  export declare function setLastOsCpuUsage(val: number): void;
42
- /**
43
- * Sets the last process CPU usage.
44
- *
45
- * @param {number} val - The process CPU usage percentage to set.
46
- * @returns {void}
47
- */
48
13
  export declare function setLastProcessCpuUsage(val: number): void;
49
14
  export {};
50
- //# sourceMappingURL=cliEmitter.d.ts.map
@@ -1,49 +1,12 @@
1
- /**
2
- * This file contains the CLI emitter.
3
- *
4
- * @file cliEmitter.ts
5
- * @author Luca Liguori
6
- * @created 2025-07-04
7
- * @version 1.0.2
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-next-line no-console
25
1
  if (process.argv.includes('--loader') || process.argv.includes('-loader'))
26
2
  console.log('\u001B[32mCli emitter loaded.\u001B[40;0m');
27
3
  import { EventEmitter } from 'node:events';
28
4
  export const cliEmitter = new EventEmitter();
29
5
  export let lastOsCpuUsage = 0;
30
6
  export let lastProcessCpuUsage = 0;
31
- /**
32
- * Sets the last os CPU usage.
33
- *
34
- * @param {number} val - The os CPU usage percentage to set.
35
- * @returns {void}
36
- */
37
7
  export function setLastOsCpuUsage(val) {
38
8
  lastOsCpuUsage = val;
39
9
  }
40
- /**
41
- * Sets the last process CPU usage.
42
- *
43
- * @param {number} val - The process CPU usage percentage to set.
44
- * @returns {void}
45
- */
46
10
  export function setLastProcessCpuUsage(val) {
47
11
  lastProcessCpuUsage = val;
48
12
  }
49
- //# sourceMappingURL=cliEmitter.js.map
@@ -1,48 +1,6 @@
1
- /**
2
- * This file contains the CLI history page generator.
3
- *
4
- * @file cliHistory.ts
5
- * @author Luca Liguori
6
- * @created 2025-10-09
7
- * @version 1.0.1
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
1
  export type GenerateHistoryPageOptions = {
25
- /**
26
- * Full path (file name included) for the generated HTML file.
27
- * Defaults to `<current working directory>/history.html`.
28
- */
29
2
  outputPath?: string;
30
- /**
31
- * Title shown in the generated page and browser tab.
32
- * Defaults to `Matterbridge CPU & Memory History`.
33
- */
34
3
  pageTitle?: string;
35
- /**
36
- * Hostname shown in the generated page and browser tab.
37
- */
38
4
  hostname?: string;
39
5
  };
40
- /**
41
- * Generates a static HTML dashboard displaying CPU and memory history.
42
- *
43
- * @param {GenerateHistoryPageOptions} [options] - Optional configuration for output path, page title, and refresh interval.
44
- *
45
- * @returns {string | undefined} The absolute path to the generated HTML file, or undefined if no samples exist.
46
- */
47
6
  export declare function generateHistoryPage(options?: GenerateHistoryPageOptions): string | undefined;
48
- //# sourceMappingURL=cliHistory.d.ts.map
@@ -1,40 +1,9 @@
1
- /**
2
- * This file contains the CLI history page generator.
3
- *
4
- * @file cliHistory.ts
5
- * @author Luca Liguori
6
- * @created 2025-10-09
7
- * @version 1.0.1
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-next-line no-console
25
1
  if (process.argv.includes('--loader') || process.argv.includes('-loader'))
26
2
  console.log('\u001B[32mCli history loaded.\u001B[40;0m');
27
3
  import { writeFileSync } from 'node:fs';
28
4
  import path from 'node:path';
29
5
  import os from 'node:os';
30
6
  import { Tracker } from '@matterbridge/utils';
31
- /**
32
- * Generates a static HTML dashboard displaying CPU and memory history.
33
- *
34
- * @param {GenerateHistoryPageOptions} [options] - Optional configuration for output path, page title, and refresh interval.
35
- *
36
- * @returns {string | undefined} The absolute path to the generated HTML file, or undefined if no samples exist.
37
- */
38
7
  export function generateHistoryPage(options = {}) {
39
8
  const pageTitle = options.pageTitle ?? 'Matterbridge CPU & Memory History';
40
9
  const hostname = options.hostname ?? os.hostname();
@@ -814,13 +783,6 @@ export function generateHistoryPage(options = {}) {
814
783
  writeFileSync(outputPath, html, { encoding: 'utf-8' });
815
784
  return outputPath;
816
785
  }
817
- /**
818
- * Escapes HTML special characters to prevent breaking embedded markup.
819
- *
820
- * @param {string} input - The string to escape.
821
- * @returns {string} The escaped string safe for HTML contexts.
822
- */
823
786
  function escapeHtml(input) {
824
787
  return input.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
825
788
  }
826
- //# sourceMappingURL=cliHistory.js.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=export.d.ts.map
@@ -1,3 +1 @@
1
1
  export {};
2
- // Nothing to export right now, but this file is here to make it easier to add exports in the future
3
- //# sourceMappingURL=export.js.map