matterbridge 3.5.0 → 3.5.1-dev-20260121-22e98b4

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 (328) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bin/mb_coap.js +1 -1
  3. package/bin/mb_mdns.js +1 -1
  4. package/dist/broadcastServer.d.ts +0 -115
  5. package/dist/broadcastServer.js +1 -119
  6. package/dist/broadcastServerTypes.d.ts +0 -43
  7. package/dist/broadcastServerTypes.js +0 -24
  8. package/dist/cli.d.ts +1 -26
  9. package/dist/cli.js +2 -102
  10. package/dist/cliEmitter.d.ts +0 -36
  11. package/dist/cliEmitter.js +0 -37
  12. package/dist/cliHistory.d.ts +0 -42
  13. package/dist/cliHistory.js +1 -39
  14. package/dist/clusters/export.d.ts +0 -1
  15. package/dist/clusters/export.js +0 -2
  16. package/dist/deviceManager.d.ts +0 -108
  17. package/dist/deviceManager.js +2 -114
  18. package/dist/devices/airConditioner.d.ts +0 -75
  19. package/dist/devices/airConditioner.js +0 -57
  20. package/dist/devices/batteryStorage.d.ts +0 -43
  21. package/dist/devices/batteryStorage.js +1 -48
  22. package/dist/devices/cooktop.d.ts +0 -55
  23. package/dist/devices/cooktop.js +0 -56
  24. package/dist/devices/dishwasher.d.ts +0 -55
  25. package/dist/devices/dishwasher.js +0 -57
  26. package/dist/devices/evse.d.ts +0 -57
  27. package/dist/devices/evse.js +10 -74
  28. package/dist/devices/export.d.ts +0 -1
  29. package/dist/devices/export.js +0 -5
  30. package/dist/devices/extractorHood.d.ts +0 -41
  31. package/dist/devices/extractorHood.js +0 -43
  32. package/dist/devices/heatPump.d.ts +0 -43
  33. package/dist/devices/heatPump.js +2 -50
  34. package/dist/devices/laundryDryer.d.ts +0 -58
  35. package/dist/devices/laundryDryer.js +3 -62
  36. package/dist/devices/laundryWasher.d.ts +0 -64
  37. package/dist/devices/laundryWasher.js +4 -70
  38. package/dist/devices/microwaveOven.d.ts +1 -77
  39. package/dist/devices/microwaveOven.js +5 -88
  40. package/dist/devices/oven.d.ts +0 -82
  41. package/dist/devices/oven.js +0 -85
  42. package/dist/devices/refrigerator.d.ts +0 -100
  43. package/dist/devices/refrigerator.js +0 -102
  44. package/dist/devices/roboticVacuumCleaner.d.ts +0 -83
  45. package/dist/devices/roboticVacuumCleaner.js +9 -100
  46. package/dist/devices/solarPower.d.ts +0 -36
  47. package/dist/devices/solarPower.js +0 -38
  48. package/dist/devices/speaker.d.ts +0 -79
  49. package/dist/devices/speaker.js +0 -84
  50. package/dist/devices/temperatureControl.d.ts +0 -21
  51. package/dist/devices/temperatureControl.js +3 -24
  52. package/dist/devices/waterHeater.d.ts +0 -74
  53. package/dist/devices/waterHeater.js +2 -82
  54. package/dist/frontend.d.ts +0 -187
  55. package/dist/frontend.js +39 -505
  56. package/dist/frontendTypes.d.ts +0 -57
  57. package/dist/frontendTypes.js +0 -45
  58. package/dist/helpers.d.ts +0 -43
  59. package/dist/helpers.js +1 -54
  60. package/dist/index.d.ts +0 -23
  61. package/dist/index.js +0 -25
  62. package/dist/jestutils/export.d.ts +0 -1
  63. package/dist/jestutils/export.js +0 -1
  64. package/dist/jestutils/jestHelpers.d.ts +0 -255
  65. package/dist/jestutils/jestHelpers.js +14 -372
  66. package/dist/logger/export.d.ts +0 -1
  67. package/dist/logger/export.js +0 -1
  68. package/dist/matter/behaviors.d.ts +0 -1
  69. package/dist/matter/behaviors.js +0 -2
  70. package/dist/matter/clusters.d.ts +0 -1
  71. package/dist/matter/clusters.js +0 -2
  72. package/dist/matter/devices.d.ts +0 -1
  73. package/dist/matter/devices.js +0 -2
  74. package/dist/matter/endpoints.d.ts +0 -1
  75. package/dist/matter/endpoints.js +0 -2
  76. package/dist/matter/export.d.ts +0 -1
  77. package/dist/matter/export.js +0 -2
  78. package/dist/matter/types.d.ts +0 -1
  79. package/dist/matter/types.js +0 -2
  80. package/dist/matterNode.d.ts +0 -258
  81. package/dist/matterNode.js +9 -364
  82. package/dist/matterbridge.d.ts +0 -362
  83. package/dist/matterbridge.js +60 -860
  84. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -36
  85. package/dist/matterbridgeAccessoryPlatform.js +0 -38
  86. package/dist/matterbridgeBehaviors.d.ts +0 -24
  87. package/dist/matterbridgeBehaviors.js +5 -68
  88. package/dist/matterbridgeDeviceTypes.d.ts +0 -649
  89. package/dist/matterbridgeDeviceTypes.js +6 -673
  90. package/dist/matterbridgeDynamicPlatform.d.ts +0 -36
  91. package/dist/matterbridgeDynamicPlatform.js +0 -38
  92. package/dist/matterbridgeEndpoint.d.ts +2 -1332
  93. package/dist/matterbridgeEndpoint.js +94 -1459
  94. package/dist/matterbridgeEndpointHelpers.d.ts +0 -425
  95. package/dist/matterbridgeEndpointHelpers.js +21 -486
  96. package/dist/matterbridgeEndpointTypes.d.ts +0 -70
  97. package/dist/matterbridgeEndpointTypes.js +0 -25
  98. package/dist/matterbridgePlatform.d.ts +0 -425
  99. package/dist/matterbridgePlatform.js +2 -453
  100. package/dist/matterbridgeTypes.d.ts +0 -46
  101. package/dist/matterbridgeTypes.js +0 -26
  102. package/dist/mb_coap.d.ts +1 -0
  103. package/dist/{dgram/mb_coap.js → mb_coap.js} +3 -41
  104. package/dist/mb_mdns.d.ts +1 -0
  105. package/dist/{dgram/mb_mdns.js → mb_mdns.js} +37 -81
  106. package/dist/pluginManager.d.ts +0 -305
  107. package/dist/pluginManager.js +8 -345
  108. package/dist/shelly.d.ts +0 -157
  109. package/dist/shelly.js +7 -178
  110. package/dist/spawn.d.ts +1 -0
  111. package/dist/{utils/spawn.js → spawn.js} +3 -73
  112. package/dist/storage/export.d.ts +0 -1
  113. package/dist/storage/export.js +0 -1
  114. package/dist/update.d.ts +0 -75
  115. package/dist/update.js +7 -100
  116. package/dist/utils/export.d.ts +1 -13
  117. package/dist/utils/export.js +1 -13
  118. package/dist/workerGlobalPrefix.d.ts +0 -24
  119. package/dist/workerGlobalPrefix.js +6 -40
  120. package/dist/workerTypes.d.ts +0 -25
  121. package/dist/workerTypes.js +0 -24
  122. package/dist/workers.d.ts +0 -61
  123. package/dist/workers.js +4 -68
  124. package/npm-shrinkwrap.json +35 -5
  125. package/package.json +5 -5
  126. package/dist/broadcastServer.d.ts.map +0 -1
  127. package/dist/broadcastServer.js.map +0 -1
  128. package/dist/broadcastServerTypes.d.ts.map +0 -1
  129. package/dist/broadcastServerTypes.js.map +0 -1
  130. package/dist/cli.d.ts.map +0 -1
  131. package/dist/cli.js.map +0 -1
  132. package/dist/cliEmitter.d.ts.map +0 -1
  133. package/dist/cliEmitter.js.map +0 -1
  134. package/dist/cliHistory.d.ts.map +0 -1
  135. package/dist/cliHistory.js.map +0 -1
  136. package/dist/clusters/export.d.ts.map +0 -1
  137. package/dist/clusters/export.js.map +0 -1
  138. package/dist/deviceManager.d.ts.map +0 -1
  139. package/dist/deviceManager.js.map +0 -1
  140. package/dist/devices/airConditioner.d.ts.map +0 -1
  141. package/dist/devices/airConditioner.js.map +0 -1
  142. package/dist/devices/batteryStorage.d.ts.map +0 -1
  143. package/dist/devices/batteryStorage.js.map +0 -1
  144. package/dist/devices/cooktop.d.ts.map +0 -1
  145. package/dist/devices/cooktop.js.map +0 -1
  146. package/dist/devices/dishwasher.d.ts.map +0 -1
  147. package/dist/devices/dishwasher.js.map +0 -1
  148. package/dist/devices/evse.d.ts.map +0 -1
  149. package/dist/devices/evse.js.map +0 -1
  150. package/dist/devices/export.d.ts.map +0 -1
  151. package/dist/devices/export.js.map +0 -1
  152. package/dist/devices/extractorHood.d.ts.map +0 -1
  153. package/dist/devices/extractorHood.js.map +0 -1
  154. package/dist/devices/heatPump.d.ts.map +0 -1
  155. package/dist/devices/heatPump.js.map +0 -1
  156. package/dist/devices/laundryDryer.d.ts.map +0 -1
  157. package/dist/devices/laundryDryer.js.map +0 -1
  158. package/dist/devices/laundryWasher.d.ts.map +0 -1
  159. package/dist/devices/laundryWasher.js.map +0 -1
  160. package/dist/devices/microwaveOven.d.ts.map +0 -1
  161. package/dist/devices/microwaveOven.js.map +0 -1
  162. package/dist/devices/oven.d.ts.map +0 -1
  163. package/dist/devices/oven.js.map +0 -1
  164. package/dist/devices/refrigerator.d.ts.map +0 -1
  165. package/dist/devices/refrigerator.js.map +0 -1
  166. package/dist/devices/roboticVacuumCleaner.d.ts.map +0 -1
  167. package/dist/devices/roboticVacuumCleaner.js.map +0 -1
  168. package/dist/devices/solarPower.d.ts.map +0 -1
  169. package/dist/devices/solarPower.js.map +0 -1
  170. package/dist/devices/speaker.d.ts.map +0 -1
  171. package/dist/devices/speaker.js.map +0 -1
  172. package/dist/devices/temperatureControl.d.ts.map +0 -1
  173. package/dist/devices/temperatureControl.js.map +0 -1
  174. package/dist/devices/waterHeater.d.ts.map +0 -1
  175. package/dist/devices/waterHeater.js.map +0 -1
  176. package/dist/dgram/coap.d.ts +0 -205
  177. package/dist/dgram/coap.d.ts.map +0 -1
  178. package/dist/dgram/coap.js +0 -365
  179. package/dist/dgram/coap.js.map +0 -1
  180. package/dist/dgram/dgram.d.ts +0 -144
  181. package/dist/dgram/dgram.d.ts.map +0 -1
  182. package/dist/dgram/dgram.js +0 -363
  183. package/dist/dgram/dgram.js.map +0 -1
  184. package/dist/dgram/mb_coap.d.ts +0 -24
  185. package/dist/dgram/mb_coap.d.ts.map +0 -1
  186. package/dist/dgram/mb_coap.js.map +0 -1
  187. package/dist/dgram/mb_mdns.d.ts +0 -24
  188. package/dist/dgram/mb_mdns.d.ts.map +0 -1
  189. package/dist/dgram/mb_mdns.js.map +0 -1
  190. package/dist/dgram/mdns.d.ts +0 -371
  191. package/dist/dgram/mdns.d.ts.map +0 -1
  192. package/dist/dgram/mdns.js +0 -934
  193. package/dist/dgram/mdns.js.map +0 -1
  194. package/dist/dgram/multicast.d.ts +0 -67
  195. package/dist/dgram/multicast.d.ts.map +0 -1
  196. package/dist/dgram/multicast.js +0 -179
  197. package/dist/dgram/multicast.js.map +0 -1
  198. package/dist/dgram/unicast.d.ts +0 -64
  199. package/dist/dgram/unicast.d.ts.map +0 -1
  200. package/dist/dgram/unicast.js +0 -100
  201. package/dist/dgram/unicast.js.map +0 -1
  202. package/dist/frontend.d.ts.map +0 -1
  203. package/dist/frontend.js.map +0 -1
  204. package/dist/frontendTypes.d.ts.map +0 -1
  205. package/dist/frontendTypes.js.map +0 -1
  206. package/dist/helpers.d.ts.map +0 -1
  207. package/dist/helpers.js.map +0 -1
  208. package/dist/index.d.ts.map +0 -1
  209. package/dist/index.js.map +0 -1
  210. package/dist/jestutils/export.d.ts.map +0 -1
  211. package/dist/jestutils/export.js.map +0 -1
  212. package/dist/jestutils/jestHelpers.d.ts.map +0 -1
  213. package/dist/jestutils/jestHelpers.js.map +0 -1
  214. package/dist/logger/export.d.ts.map +0 -1
  215. package/dist/logger/export.js.map +0 -1
  216. package/dist/matter/behaviors.d.ts.map +0 -1
  217. package/dist/matter/behaviors.js.map +0 -1
  218. package/dist/matter/clusters.d.ts.map +0 -1
  219. package/dist/matter/clusters.js.map +0 -1
  220. package/dist/matter/devices.d.ts.map +0 -1
  221. package/dist/matter/devices.js.map +0 -1
  222. package/dist/matter/endpoints.d.ts.map +0 -1
  223. package/dist/matter/endpoints.js.map +0 -1
  224. package/dist/matter/export.d.ts.map +0 -1
  225. package/dist/matter/export.js.map +0 -1
  226. package/dist/matter/types.d.ts.map +0 -1
  227. package/dist/matter/types.js.map +0 -1
  228. package/dist/matterNode.d.ts.map +0 -1
  229. package/dist/matterNode.js.map +0 -1
  230. package/dist/matterbridge.d.ts.map +0 -1
  231. package/dist/matterbridge.js.map +0 -1
  232. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  233. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  234. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  235. package/dist/matterbridgeBehaviors.js.map +0 -1
  236. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  237. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  238. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  239. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  240. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  241. package/dist/matterbridgeEndpoint.js.map +0 -1
  242. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  243. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  244. package/dist/matterbridgeEndpointTypes.d.ts.map +0 -1
  245. package/dist/matterbridgeEndpointTypes.js.map +0 -1
  246. package/dist/matterbridgePlatform.d.ts.map +0 -1
  247. package/dist/matterbridgePlatform.js.map +0 -1
  248. package/dist/matterbridgeTypes.d.ts.map +0 -1
  249. package/dist/matterbridgeTypes.js.map +0 -1
  250. package/dist/pluginManager.d.ts.map +0 -1
  251. package/dist/pluginManager.js.map +0 -1
  252. package/dist/shelly.d.ts.map +0 -1
  253. package/dist/shelly.js.map +0 -1
  254. package/dist/storage/export.d.ts.map +0 -1
  255. package/dist/storage/export.js.map +0 -1
  256. package/dist/update.d.ts.map +0 -1
  257. package/dist/update.js.map +0 -1
  258. package/dist/utils/colorUtils.d.ts +0 -101
  259. package/dist/utils/colorUtils.d.ts.map +0 -1
  260. package/dist/utils/colorUtils.js +0 -282
  261. package/dist/utils/colorUtils.js.map +0 -1
  262. package/dist/utils/commandLine.d.ts +0 -66
  263. package/dist/utils/commandLine.d.ts.map +0 -1
  264. package/dist/utils/commandLine.js +0 -123
  265. package/dist/utils/commandLine.js.map +0 -1
  266. package/dist/utils/copyDirectory.d.ts +0 -35
  267. package/dist/utils/copyDirectory.d.ts.map +0 -1
  268. package/dist/utils/copyDirectory.js +0 -76
  269. package/dist/utils/copyDirectory.js.map +0 -1
  270. package/dist/utils/createDirectory.d.ts +0 -34
  271. package/dist/utils/createDirectory.d.ts.map +0 -1
  272. package/dist/utils/createDirectory.js +0 -54
  273. package/dist/utils/createDirectory.js.map +0 -1
  274. package/dist/utils/createZip.d.ts +0 -39
  275. package/dist/utils/createZip.d.ts.map +0 -1
  276. package/dist/utils/createZip.js +0 -114
  277. package/dist/utils/createZip.js.map +0 -1
  278. package/dist/utils/deepCopy.d.ts +0 -32
  279. package/dist/utils/deepCopy.d.ts.map +0 -1
  280. package/dist/utils/deepCopy.js +0 -79
  281. package/dist/utils/deepCopy.js.map +0 -1
  282. package/dist/utils/deepEqual.d.ts +0 -54
  283. package/dist/utils/deepEqual.d.ts.map +0 -1
  284. package/dist/utils/deepEqual.js +0 -129
  285. package/dist/utils/deepEqual.js.map +0 -1
  286. package/dist/utils/error.d.ts +0 -45
  287. package/dist/utils/error.d.ts.map +0 -1
  288. package/dist/utils/error.js +0 -54
  289. package/dist/utils/error.js.map +0 -1
  290. package/dist/utils/export.d.ts.map +0 -1
  291. package/dist/utils/export.js.map +0 -1
  292. package/dist/utils/format.d.ts +0 -53
  293. package/dist/utils/format.d.ts.map +0 -1
  294. package/dist/utils/format.js +0 -78
  295. package/dist/utils/format.js.map +0 -1
  296. package/dist/utils/hex.d.ts +0 -89
  297. package/dist/utils/hex.d.ts.map +0 -1
  298. package/dist/utils/hex.js +0 -242
  299. package/dist/utils/hex.js.map +0 -1
  300. package/dist/utils/inspector.d.ts +0 -87
  301. package/dist/utils/inspector.d.ts.map +0 -1
  302. package/dist/utils/inspector.js +0 -268
  303. package/dist/utils/inspector.js.map +0 -1
  304. package/dist/utils/isValid.d.ts +0 -103
  305. package/dist/utils/isValid.d.ts.map +0 -1
  306. package/dist/utils/isValid.js +0 -162
  307. package/dist/utils/isValid.js.map +0 -1
  308. package/dist/utils/network.d.ts +0 -141
  309. package/dist/utils/network.d.ts.map +0 -1
  310. package/dist/utils/network.js +0 -314
  311. package/dist/utils/network.js.map +0 -1
  312. package/dist/utils/spawn.d.ts +0 -33
  313. package/dist/utils/spawn.d.ts.map +0 -1
  314. package/dist/utils/spawn.js.map +0 -1
  315. package/dist/utils/tracker.d.ts +0 -108
  316. package/dist/utils/tracker.d.ts.map +0 -1
  317. package/dist/utils/tracker.js +0 -264
  318. package/dist/utils/tracker.js.map +0 -1
  319. package/dist/utils/wait.d.ts +0 -54
  320. package/dist/utils/wait.d.ts.map +0 -1
  321. package/dist/utils/wait.js +0 -125
  322. package/dist/utils/wait.js.map +0 -1
  323. package/dist/workerGlobalPrefix.d.ts.map +0 -1
  324. package/dist/workerGlobalPrefix.js.map +0 -1
  325. package/dist/workerTypes.d.ts.map +0 -1
  326. package/dist/workerTypes.js.map +0 -1
  327. package/dist/workers.d.ts.map +0 -1
  328. package/dist/workers.js.map +0 -1
package/dist/update.d.ts CHANGED
@@ -1,84 +1,9 @@
1
- /**
2
- * This file contains the check updates functions.
3
- *
4
- * @file update.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
1
  import { AnsiLogger } from 'node-ansi-logger';
25
2
  import { ApiPlugin, SharedMatterbridge } from './matterbridgeTypes.js';
26
3
  import { BroadcastServer } from './broadcastServer.js';
27
- /**
28
- * Checks for updates for Matterbridge and its plugins.
29
- * If the 'shelly' parameter is present, also checks for Shelly updates.
30
- *
31
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
32
- * @returns {Promise<void>} A promise that resolves when the update checks are complete.
33
- */
34
4
  export declare function checkUpdates(matterbridge: SharedMatterbridge): Promise<void>;
35
- /**
36
- * Checks for updates and logs from https://matterbridge.io/.
37
- * If the update check fails, logs a warning message.
38
- *
39
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
40
- * @param {AnsiLogger} log - The logger instance.
41
- * @param {BroadcastServer} server - The broadcast server instance.
42
- */
43
5
  export declare function checkUpdatesAndLog(matterbridge: SharedMatterbridge, log: AnsiLogger, server: BroadcastServer): Promise<void>;
44
- /**
45
- * Retrieves the latest version of Matterbridge and updates the matterbridgeLatestVersion property.
46
- * If there is an error retrieving the latest version, logs an error message.
47
- *
48
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
49
- * @param {AnsiLogger} log - The logger instance.
50
- * @param {BroadcastServer} server - The broadcast server instance.
51
- * @returns {Promise<string | undefined>} A promise that resolves when the latest version is retrieved.
52
- */
53
6
  export declare function getMatterbridgeLatestVersion(matterbridge: SharedMatterbridge, log: AnsiLogger, server: BroadcastServer): Promise<string | undefined>;
54
- /**
55
- * Retrieves the latest dev version of Matterbridge and updates the matterbridgeDevVersion property.
56
- * If there is an error retrieving the latest version, logs an error message.
57
- *
58
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
59
- * @param {AnsiLogger} log - The logger instance.
60
- * @param {BroadcastServer} server - The broadcast server instance.
61
- * @returns {Promise<string | undefined>} A promise that resolves when the latest dev version is retrieved.
62
- */
63
7
  export declare function getMatterbridgeDevVersion(matterbridge: SharedMatterbridge, log: AnsiLogger, server: BroadcastServer): Promise<string | undefined>;
64
- /**
65
- * Retrieves the latest version of a plugin and updates the plugin's latestVersion property.
66
- * If there is an error retrieving the latest version, logs an error message.
67
- *
68
- * @param {AnsiLogger} log - The logger instance.
69
- * @param {BroadcastServer} server - The broadcast server instance.
70
- * @param {ApiPlugin} plugin - The plugin for which to retrieve the latest version.
71
- * @returns {Promise<string | undefined>} A promise that resolves when the latest version is retrieved.
72
- */
73
8
  export declare function getPluginLatestVersion(log: AnsiLogger, server: BroadcastServer, plugin: ApiPlugin): Promise<string | undefined>;
74
- /**
75
- * Retrieves the latest dev version of a plugin and updates the plugin's devVersion property.
76
- * If there is an error retrieving the latest version, logs an error message.
77
- *
78
- * @param {AnsiLogger} log - The logger instance.
79
- * @param {BroadcastServer} server - The broadcast server instance.
80
- * @param {ApiPlugin} plugin - The plugin for which to retrieve the latest version.
81
- * @returns {Promise<string | undefined>} A promise that resolves when the latest dev version is retrieved.
82
- */
83
9
  export declare function getPluginDevVersion(log: AnsiLogger, server: BroadcastServer, plugin: ApiPlugin): Promise<string | undefined>;
84
- //# sourceMappingURL=update.d.ts.map
package/dist/update.js CHANGED
@@ -1,43 +1,9 @@
1
- /**
2
- * This file contains the check updates functions.
3
- *
4
- * @file update.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
2
+ import { hasParameter, isValidString } from '@matterbridge/utils';
27
3
  import { plg } from './matterbridgeTypes.js';
28
4
  import { BroadcastServer } from './broadcastServer.js';
29
- import { hasParameter } from './utils/commandLine.js';
30
- import { isValidString } from './utils/isValid.js';
31
- /**
32
- * Checks for updates for Matterbridge and its plugins.
33
- * If the 'shelly' parameter is present, also checks for Shelly updates.
34
- *
35
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
36
- * @returns {Promise<void>} A promise that resolves when the update checks are complete.
37
- */
38
5
  export async function checkUpdates(matterbridge) {
39
- /** Broadcast server */
40
- 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 });
41
7
  const server = new BroadcastServer('updates', log);
42
8
  const checkUpdatePromise = checkUpdatesAndLog(matterbridge, log, server);
43
9
  const latestVersionPromise = getMatterbridgeLatestVersion(matterbridge, log, server);
@@ -58,16 +24,8 @@ export async function checkUpdates(matterbridge) {
58
24
  await Promise.all([checkUpdatePromise, latestVersionPromise, devVersionPromise, ...pluginsVersionPromises, ...pluginsDevVersionPromises, ...shellyUpdatesPromises]);
59
25
  server.close();
60
26
  }
61
- /**
62
- * Checks for updates and logs from https://matterbridge.io/.
63
- * If the update check fails, logs a warning message.
64
- *
65
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
66
- * @param {AnsiLogger} log - The logger instance.
67
- * @param {BroadcastServer} server - The broadcast server instance.
68
- */
69
27
  export async function checkUpdatesAndLog(matterbridge, log, server) {
70
- const { getGitHubUpdate } = await import('./utils/network.js');
28
+ const { getGitHubUpdate } = await import('@matterbridge/utils');
71
29
  const branch = matterbridge.matterbridgeVersion.includes('-dev-') ? 'dev' : 'main';
72
30
  try {
73
31
  const updateJson = await getGitHubUpdate(branch, 'update.json', 5_000);
@@ -82,29 +40,17 @@ export async function checkUpdatesAndLog(matterbridge, log, server) {
82
40
  dst: 'frontend',
83
41
  params: { message: branch === 'main' ? updateJson.latestMessage : updateJson.devMessage, timeout: 0, severity: branch === 'main' ? updateJson.latestMessageSeverity : updateJson.devMessageSeverity },
84
42
  });
85
- // matterbridge.frontend.wssSendSnackbarMessage(branch === 'main' ? updateJson.latestMessage : updateJson.devMessage, 0, branch === 'main' ? updateJson.latestMessageSeverity : updateJson.devMessageSeverity);
86
43
  }
87
44
  }
88
45
  catch (error) {
89
46
  log.debug(`Error checking GitHub ${branch} updates: ${error instanceof Error ? error.message : error}`);
90
47
  }
91
48
  }
92
- /**
93
- * Retrieves the latest version of Matterbridge and updates the matterbridgeLatestVersion property.
94
- * If there is an error retrieving the latest version, logs an error message.
95
- *
96
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
97
- * @param {AnsiLogger} log - The logger instance.
98
- * @param {BroadcastServer} server - The broadcast server instance.
99
- * @returns {Promise<string | undefined>} A promise that resolves when the latest version is retrieved.
100
- */
101
49
  export async function getMatterbridgeLatestVersion(matterbridge, log, server) {
102
- const { getNpmPackageVersion } = await import('./utils/network.js');
50
+ const { getNpmPackageVersion } = await import('@matterbridge/utils');
103
51
  try {
104
52
  const version = await getNpmPackageVersion('matterbridge');
105
53
  server.request({ type: 'matterbridge_latest_version', src: server.name, dst: 'matterbridge', params: { version } });
106
- // matterbridge.matterbridgeLatestVersion = version;
107
- // await matterbridge.nodeContext?.set<string>('matterbridgeLatestVersion', matterbridge.matterbridgeLatestVersion);
108
54
  if (matterbridge.matterbridgeVersion !== version) {
109
55
  log.notice(`Matterbridge is out of date. Current version: ${matterbridge.matterbridgeVersion}. Latest version: ${version}.`);
110
56
  server.request({
@@ -113,11 +59,8 @@ export async function getMatterbridgeLatestVersion(matterbridge, log, server) {
113
59
  dst: 'frontend',
114
60
  params: { message: 'Matterbridge latest update available', timeout: 0, severity: 'info' },
115
61
  });
116
- // matterbridge.frontend.wssSendSnackbarMessage('Matterbridge latest update available', 0, 'info');
117
62
  server.request({ type: 'frontend_updaterequired', src: server.name, dst: 'frontend', params: { devVersion: false } });
118
- // matterbridge.frontend.wssSendUpdateRequired();
119
63
  server.request({ type: 'frontend_refreshrequired', src: server.name, dst: 'frontend', params: { changed: 'settings' } });
120
- // matterbridge.frontend.wssSendRefreshRequired('settings');
121
64
  }
122
65
  else {
123
66
  log.debug(`Matterbridge is up to date. Current version: ${matterbridge.matterbridgeVersion}. Latest version: ${version}.`);
@@ -125,26 +68,14 @@ export async function getMatterbridgeLatestVersion(matterbridge, log, server) {
125
68
  return version;
126
69
  }
127
70
  catch (error) {
128
- // logError(matterbridge.log, `Error getting Matterbridge latest version`, error);
129
71
  log.warn(`Error getting Matterbridge latest version: ${error instanceof Error ? error.message : error}`);
130
72
  }
131
73
  }
132
- /**
133
- * Retrieves the latest dev version of Matterbridge and updates the matterbridgeDevVersion property.
134
- * If there is an error retrieving the latest version, logs an error message.
135
- *
136
- * @param {SharedMatterbridge} matterbridge - The Matterbridge instance.
137
- * @param {AnsiLogger} log - The logger instance.
138
- * @param {BroadcastServer} server - The broadcast server instance.
139
- * @returns {Promise<string | undefined>} A promise that resolves when the latest dev version is retrieved.
140
- */
141
74
  export async function getMatterbridgeDevVersion(matterbridge, log, server) {
142
- const { getNpmPackageVersion } = await import('./utils/network.js');
75
+ const { getNpmPackageVersion } = await import('@matterbridge/utils');
143
76
  try {
144
77
  const version = await getNpmPackageVersion('matterbridge', 'dev');
145
78
  server.request({ type: 'matterbridge_dev_version', src: server.name, dst: 'matterbridge', params: { version } });
146
- // matterbridge.matterbridgeDevVersion = version;
147
- // await matterbridge.nodeContext?.set<string>('matterbridgeDevVersion', version);
148
79
  if (matterbridge.matterbridgeVersion.includes('-dev-') && matterbridge.matterbridgeVersion !== version) {
149
80
  log.notice(`Matterbridge@dev is out of date. Current version: ${matterbridge.matterbridgeVersion}. Latest dev version: ${version}.`);
150
81
  server.request({
@@ -153,11 +84,8 @@ export async function getMatterbridgeDevVersion(matterbridge, log, server) {
153
84
  dst: 'frontend',
154
85
  params: { message: 'Matterbridge dev update available', timeout: 0, severity: 'info' },
155
86
  });
156
- // matterbridge.frontend.wssSendSnackbarMessage('Matterbridge dev update available', 0, 'info');
157
87
  server.request({ type: 'frontend_updaterequired', src: server.name, dst: 'frontend', params: { devVersion: true } });
158
- // matterbridge.frontend.wssSendUpdateRequired(true);
159
88
  server.request({ type: 'frontend_refreshrequired', src: server.name, dst: 'frontend', params: { changed: 'settings' } });
160
- // matterbridge.frontend.wssSendRefreshRequired('settings');
161
89
  }
162
90
  else if (matterbridge.matterbridgeVersion.includes('-dev-') && matterbridge.matterbridgeVersion === version) {
163
91
  log.debug(`Matterbridge@dev is up to date. Current version: ${matterbridge.matterbridgeVersion}. Latest dev version: ${version}.`);
@@ -168,17 +96,8 @@ export async function getMatterbridgeDevVersion(matterbridge, log, server) {
168
96
  log.warn(`Error getting Matterbridge latest dev version: ${error instanceof Error ? error.message : error}`);
169
97
  }
170
98
  }
171
- /**
172
- * Retrieves the latest version of a plugin and updates the plugin's latestVersion property.
173
- * If there is an error retrieving the latest version, logs an error message.
174
- *
175
- * @param {AnsiLogger} log - The logger instance.
176
- * @param {BroadcastServer} server - The broadcast server instance.
177
- * @param {ApiPlugin} plugin - The plugin for which to retrieve the latest version.
178
- * @returns {Promise<string | undefined>} A promise that resolves when the latest version is retrieved.
179
- */
180
99
  export async function getPluginLatestVersion(log, server, plugin) {
181
- const { getNpmPackageVersion } = await import('./utils/network.js');
100
+ const { getNpmPackageVersion } = await import('@matterbridge/utils');
182
101
  try {
183
102
  const version = await getNpmPackageVersion(plugin.name);
184
103
  plugin.latestVersion = version;
@@ -186,7 +105,6 @@ export async function getPluginLatestVersion(log, server, plugin) {
186
105
  if (plugin.version !== plugin.latestVersion) {
187
106
  log.notice(`The plugin ${plg}${plugin.name}${nt} is out of date. Current version: ${plugin.version}. Latest version: ${plugin.latestVersion}.`);
188
107
  server.request({ type: 'frontend_refreshrequired', src: server.name, dst: 'frontend', params: { changed: 'plugins' } });
189
- // matterbridge.frontend.wssSendRefreshRequired('plugins');
190
108
  }
191
109
  else {
192
110
  log.debug(`The plugin ${plg}${plugin.name}${db} is up to date. Current version: ${plugin.version}. Latest version: ${plugin.latestVersion}.`);
@@ -197,17 +115,8 @@ export async function getPluginLatestVersion(log, server, plugin) {
197
115
  log.warn(`Error getting plugin ${plg}${plugin.name}${wr} latest version: ${error instanceof Error ? error.message : error}`);
198
116
  }
199
117
  }
200
- /**
201
- * Retrieves the latest dev version of a plugin and updates the plugin's devVersion property.
202
- * If there is an error retrieving the latest version, logs an error message.
203
- *
204
- * @param {AnsiLogger} log - The logger instance.
205
- * @param {BroadcastServer} server - The broadcast server instance.
206
- * @param {ApiPlugin} plugin - The plugin for which to retrieve the latest version.
207
- * @returns {Promise<string | undefined>} A promise that resolves when the latest dev version is retrieved.
208
- */
209
118
  export async function getPluginDevVersion(log, server, plugin) {
210
- const { getNpmPackageVersion } = await import('./utils/network.js');
119
+ const { getNpmPackageVersion } = await import('@matterbridge/utils');
211
120
  try {
212
121
  const version = await getNpmPackageVersion(plugin.name, 'dev');
213
122
  plugin.devVersion = version;
@@ -215,7 +124,6 @@ export async function getPluginDevVersion(log, server, plugin) {
215
124
  if (plugin.version.includes('-dev-') && plugin.version !== plugin.devVersion) {
216
125
  log.notice(`The plugin ${plg}${plugin.name}${nt} is out of date. Current version: ${plugin.version}. Latest dev version: ${plugin.devVersion}.`);
217
126
  server.request({ type: 'frontend_refreshrequired', src: server.name, dst: 'frontend', params: { changed: 'plugins' } });
218
- // matterbridge.frontend.wssSendRefreshRequired('plugins');
219
127
  }
220
128
  else if (plugin.version.includes('-dev-') && plugin.version === plugin.devVersion) {
221
129
  log.debug(`The plugin ${plg}${plugin.name}${db} is up to date. Current version: ${plugin.version}. Latest dev version: ${plugin.devVersion}.`);
@@ -226,4 +134,3 @@ export async function getPluginDevVersion(log, server, plugin) {
226
134
  log.debug(`Error getting plugin ${plg}${plugin.name}${db} latest dev version: ${error instanceof Error ? error.message : error}`);
227
135
  }
228
136
  }
229
- //# sourceMappingURL=update.js.map
@@ -1,13 +1 @@
1
- export * from './network.js';
2
- export * from './commandLine.js';
3
- export * from './isValid.js';
4
- export * from './colorUtils.js';
5
- export * from './deepCopy.js';
6
- export * from './deepEqual.js';
7
- export * from './copyDirectory.js';
8
- export * from './createDirectory.js';
9
- export * from './createZip.js';
10
- export * from './wait.js';
11
- export * from './hex.js';
12
- export * from './error.js';
13
- //# sourceMappingURL=export.d.ts.map
1
+ export * from '@matterbridge/utils';
@@ -1,13 +1 @@
1
- export * from './network.js';
2
- export * from './commandLine.js';
3
- export * from './isValid.js';
4
- export * from './colorUtils.js';
5
- export * from './deepCopy.js';
6
- export * from './deepEqual.js';
7
- export * from './copyDirectory.js';
8
- export * from './createDirectory.js';
9
- export * from './createZip.js';
10
- export * from './wait.js';
11
- export * from './hex.js';
12
- export * from './error.js';
13
- //# sourceMappingURL=export.js.map
1
+ export * from '@matterbridge/utils';
@@ -1,25 +1 @@
1
- /**
2
- * This file contains the workerGlobalPrefix functions.
3
- *
4
- * @file workerGlobalPrefix.ts
5
- * @author Luca Liguori
6
- * @created 2025-11-25
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
1
  export {};
25
- //# sourceMappingURL=workerGlobalPrefix.d.ts.map
@@ -1,46 +1,17 @@
1
- /**
2
- * This file contains the workerGlobalPrefix functions.
3
- *
4
- * @file workerGlobalPrefix.ts
5
- * @author Luca Liguori
6
- * @created 2025-11-25
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
1
  import { threadId, isMainThread, parentPort, workerData } from 'node:worker_threads';
25
2
  import { AnsiLogger } from 'node-ansi-logger';
26
- import { getGlobalNodeModules } from './utils/network.js';
3
+ import { getGlobalNodeModules, hasParameter, inspectError } from '@matterbridge/utils';
27
4
  import { BroadcastServer } from './broadcastServer.js';
28
- import { inspectError } from './utils/error.js';
29
5
  import { logWorkerInfo, parentLog, parentPost } from './workers.js';
30
- import { hasParameter } from './utils/commandLine.js';
31
6
  const debug = hasParameter('debug') || hasParameter('verbose');
32
7
  const verbose = hasParameter('verbose');
33
- // Send init message
34
- // istanbul ignore next cause it's available only in worker threads
35
8
  if (!isMainThread && parentPort) {
36
9
  parentPost({ type: 'init', threadId, threadName: workerData.threadName, success: true });
37
10
  if (debug)
38
- parentLog('MatterbridgePrefix', "info" /* LogLevel.INFO */, `Worker ${workerData.threadName}:${threadId} initialized.`);
11
+ parentLog('MatterbridgePrefix', "info", `Worker ${workerData.threadName}:${threadId} initialized.`);
39
12
  }
40
- // Broadcast server
41
- const log = new AnsiLogger({ logName: 'MatterbridgePrefix', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: debug ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
13
+ const log = new AnsiLogger({ logName: 'MatterbridgePrefix', logTimestampFormat: 4, logLevel: debug ? "debug" : "info" });
42
14
  const server = new BroadcastServer('matterbridge', log);
43
- // Log worker info
44
15
  if (verbose)
45
16
  logWorkerInfo(log, verbose);
46
17
  let prefix;
@@ -51,21 +22,16 @@ try {
51
22
  server.request({ type: 'matterbridge_global_prefix', src: `matterbridge`, dst: 'matterbridge', params: { prefix } });
52
23
  success = true;
53
24
  if (!isMainThread && parentPort)
54
- parentLog('MatterbridgePrefix', "debug" /* LogLevel.DEBUG */, `Global node_modules Directory: ${prefix}`);
25
+ parentLog('MatterbridgePrefix', "debug", `Global node_modules Directory: ${prefix}`);
55
26
  }
56
27
  catch (error) {
57
- // istanbul ignore next cause it's just an error log
58
28
  const errorMessage = inspectError(log, `Failed to get global node modules`, error);
59
- // istanbul ignore next cause it's just an error log
60
29
  if (!isMainThread && parentPort)
61
- parentLog('MatterbridgePrefix', "error" /* LogLevel.ERROR */, errorMessage);
30
+ parentLog('MatterbridgePrefix', "error", errorMessage);
62
31
  }
63
32
  server.close();
64
- // Send exit message
65
- // istanbul ignore next cause it's available only in worker threads
66
33
  if (!isMainThread && parentPort) {
67
34
  parentPost({ type: 'exit', threadId, threadName: workerData.threadName, success });
68
35
  if (debug)
69
- parentLog('MatterbridgePrefix', "info" /* LogLevel.INFO */, `Worker ${workerData.threadName}:${threadId} exiting with success: ${success}.`);
36
+ parentLog('MatterbridgePrefix', "info", `Worker ${workerData.threadName}:${threadId} exiting with success: ${success}.`);
70
37
  }
71
- //# sourceMappingURL=workerGlobalPrefix.js.map
@@ -1,28 +1,4 @@
1
- /**
2
- * This file contains the worker types.
3
- *
4
- * @file workerTypes.ts
5
- * @author Luca Liguori
6
- * @created 2025-11-25
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
1
  import { LogLevel } from 'node-ansi-logger';
25
- /** Control messages sent through parentPort manager <-> workers */
26
2
  export type ParentPortMessage = {
27
3
  type: 'init';
28
4
  threadName: string | null;
@@ -49,4 +25,3 @@ export type ParentPortMessage = {
49
25
  threadId: number;
50
26
  success: boolean;
51
27
  };
52
- //# sourceMappingURL=workerTypes.d.ts.map
@@ -1,25 +1 @@
1
- /**
2
- * This file contains the worker types.
3
- *
4
- * @file workerTypes.ts
5
- * @author Luca Liguori
6
- * @created 2025-11-25
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
1
  export {};
25
- //# sourceMappingURL=workerTypes.js.map
package/dist/workers.d.ts CHANGED
@@ -1,69 +1,8 @@
1
- /**
2
- * This file contains the worker functions.
3
- *
4
- * @file workers.ts
5
- * @author Luca Liguori
6
- * @created 2025-11-25
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
1
  import { Worker } from 'node:worker_threads';
25
2
  import { AnsiLogger, LogLevel } from 'node-ansi-logger';
26
3
  import type { ParentPortMessage } from './workerTypes.js';
27
- /**
28
- * Sends a control message to the parent through parentPort
29
- *
30
- * @param {ControlMessage} message - The control message to send.
31
- */
32
4
  export declare function parentPost(message: ParentPortMessage): void;
33
- /**
34
- * Sends a control message to the parent through parentPort to log a message.
35
- *
36
- * @param {string | undefined} logName - The name of the logger.
37
- * @param {LogLevel} logLevel - The log level of the message.
38
- * @param {string} message - The log message to send.
39
- */
40
5
  export declare function parentLog(logName: string | undefined, logLevel: LogLevel, message: string): void;
41
- /**
42
- * Typed helper to create an ESM Worker.
43
- *
44
- * This function uses pathToFileURL to convert the relative path to a file URL,
45
- * which is necessary for ESM modules. It also sets the worker type to 'module'.
46
- *
47
- * @param {string} name - name of the worker
48
- * @param {string} relativePath - path to the worker file code: it must be an ESM module in javascript
49
- * @param {Record<string, boolean | number | string | object>} [workerData] - optional data to pass to the worker
50
- * @param {string[]} [argv] - optional command line arguments to pass to the worker. If not provided, inherits from the main thread.
51
- * @param {NodeJS.ProcessEnv} [env] - optional environment variables to pass to the worker. If not provided, inherits from the main thread.
52
- * @param {string[]} [execArgv] - optional execArgv to pass to the worker. If not provided no execArgv are passed.
53
- * @returns {Worker} - the created Worker instance
54
- *
55
- * @example
56
- * ```typescript
57
- * createESMWorker('NpmCommand', './dist/npmCommand.js', { command: 'npm list --global --depth=0' });
58
- * ```
59
- */
60
6
  export declare function createESMWorker(name: string, relativePath: string, workerData?: Record<string, boolean | number | string | object>, argv?: string[], env?: NodeJS.ProcessEnv, execArgv?: string[]): Worker;
61
- /**
62
- * Log worker information.
63
- *
64
- * @param {AnsiLogger} log - The logger instance to use for logging.
65
- * @param {boolean} [logEnv] - Whether to log environment variables. Defaults to false.
66
- */
67
7
  export declare function logWorkerInfo(log: AnsiLogger, logEnv?: boolean): void;
68
8
  export { ParentPortMessage };
69
- //# sourceMappingURL=workers.d.ts.map
package/dist/workers.js CHANGED
@@ -1,94 +1,31 @@
1
- /**
2
- * This file contains the worker functions.
3
- *
4
- * @file workers.ts
5
- * @author Luca Liguori
6
- * @created 2025-11-25
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
1
  import { isMainThread, parentPort, threadId, Worker, workerData } from 'node:worker_threads';
25
2
  import { pathToFileURL } from 'node:url';
26
3
  import { resolve } from 'node:path';
27
4
  import { inspect } from 'node:util';
28
- /**
29
- * Sends a control message to the parent through parentPort
30
- *
31
- * @param {ControlMessage} message - The control message to send.
32
- */
33
- // istanbul ignore next cause it's available only in worker threads
34
5
  export function parentPost(message) {
35
6
  if (!parentPort)
36
7
  throw new Error(`WorkerServer ${workerData.threadName}: parentPort is not available.`);
37
8
  parentPort.postMessage(message);
38
9
  }
39
- /**
40
- * Sends a control message to the parent through parentPort to log a message.
41
- *
42
- * @param {string | undefined} logName - The name of the logger.
43
- * @param {LogLevel} logLevel - The log level of the message.
44
- * @param {string} message - The log message to send.
45
- */
46
- // istanbul ignore next cause it's available only in worker threads
47
10
  export function parentLog(logName, logLevel, message) {
48
11
  if (!parentPort)
49
12
  throw new Error(`WorkerServer ${workerData.threadName}: parentPort is not available.`);
50
13
  const logMessage = { type: 'log', threadId, threadName: workerData.threadName, logName, logLevel, message };
51
14
  parentPort.postMessage(logMessage);
52
15
  }
53
- /**
54
- * Typed helper to create an ESM Worker.
55
- *
56
- * This function uses pathToFileURL to convert the relative path to a file URL,
57
- * which is necessary for ESM modules. It also sets the worker type to 'module'.
58
- *
59
- * @param {string} name - name of the worker
60
- * @param {string} relativePath - path to the worker file code: it must be an ESM module in javascript
61
- * @param {Record<string, boolean | number | string | object>} [workerData] - optional data to pass to the worker
62
- * @param {string[]} [argv] - optional command line arguments to pass to the worker. If not provided, inherits from the main thread.
63
- * @param {NodeJS.ProcessEnv} [env] - optional environment variables to pass to the worker. If not provided, inherits from the main thread.
64
- * @param {string[]} [execArgv] - optional execArgv to pass to the worker. If not provided no execArgv are passed.
65
- * @returns {Worker} - the created Worker instance
66
- *
67
- * @example
68
- * ```typescript
69
- * createESMWorker('NpmCommand', './dist/npmCommand.js', { command: 'npm list --global --depth=0' });
70
- * ```
71
- */
72
16
  export function createESMWorker(name, relativePath, workerData, argv, env, execArgv) {
73
17
  const fileURL = pathToFileURL(resolve(relativePath));
74
18
  const options = {
75
- workerData: { ...workerData, threadName: name }, // Pass threadName in workerData cause worker_threads don't have it natively in node 20
19
+ workerData: { ...workerData, threadName: name },
76
20
  type: 'module',
77
21
  name,
78
- argv: argv ?? process.argv.slice(2), // Pass command line arguments to worker
79
- env: env ?? process.env, // Inherit environment variables
80
- execArgv, // execArgv for node like --inspect
22
+ argv: argv ?? process.argv.slice(2),
23
+ env: env ?? process.env,
24
+ execArgv,
81
25
  };
82
26
  return new Worker(fileURL, options);
83
27
  }
84
- /**
85
- * Log worker information.
86
- *
87
- * @param {AnsiLogger} log - The logger instance to use for logging.
88
- * @param {boolean} [logEnv] - Whether to log environment variables. Defaults to false.
89
- */
90
28
  export function logWorkerInfo(log, logEnv = false) {
91
- // Log worker info
92
29
  log.debug(`${isMainThread ? 'Main thread' : 'Worker thread'}: ${workerData?.threadName}:${threadId} Pid: ${process.pid}`);
93
30
  log.debug(`ParentPort: ${parentPort ? 'active' : 'not active'}`);
94
31
  log.debug(`WorkerData: ${workerData ? inspect(workerData, true, 10, true) : 'none'}`);
@@ -96,4 +33,3 @@ export function logWorkerInfo(log, logEnv = false) {
96
33
  log.debug(`Argv: ${argv.length ? argv.join(' ') : 'none'}`);
97
34
  log.debug(`Env: ${logEnv ? inspect(process.env, true, 10, true) : 'not logged'}`);
98
35
  }
99
- //# sourceMappingURL=workers.js.map