matterbridge 3.4.3 → 3.4.4-dev-20251214-37296cc
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.
- package/CHANGELOG.md +20 -0
- package/dist/broadcastServer.js +0 -119
- package/dist/broadcastServerTypes.js +0 -24
- package/dist/cli.js +1 -97
- package/dist/cliEmitter.js +0 -37
- package/dist/cliHistory.js +0 -38
- package/dist/clusters/export.js +0 -2
- package/dist/deviceManager.js +1 -113
- package/dist/devices/airConditioner.js +0 -57
- package/dist/devices/batteryStorage.js +1 -48
- package/dist/devices/cooktop.js +0 -56
- package/dist/devices/dishwasher.js +0 -57
- package/dist/devices/evse.js +10 -74
- package/dist/devices/export.js +0 -5
- package/dist/devices/extractorHood.js +0 -43
- package/dist/devices/heatPump.js +2 -50
- package/dist/devices/laundryDryer.js +3 -62
- package/dist/devices/laundryWasher.js +4 -70
- package/dist/devices/microwaveOven.js +5 -88
- package/dist/devices/oven.js +0 -85
- package/dist/devices/refrigerator.js +0 -102
- package/dist/devices/roboticVacuumCleaner.js +9 -100
- package/dist/devices/solarPower.js +0 -38
- package/dist/devices/speaker.js +0 -84
- package/dist/devices/temperatureControl.js +3 -24
- package/dist/devices/waterHeater.js +2 -82
- package/dist/dgram/coap.js +13 -126
- package/dist/dgram/dgram.js +2 -114
- package/dist/dgram/mb_coap.js +3 -41
- package/dist/dgram/mb_mdns.js +15 -80
- package/dist/dgram/mdns.js +137 -299
- package/dist/dgram/multicast.js +1 -62
- package/dist/dgram/unicast.js +0 -54
- package/dist/frontend.js +35 -455
- package/dist/frontendTypes.js +0 -45
- package/dist/helpers.js +0 -53
- package/dist/index.js +0 -25
- package/dist/jestutils/export.js +0 -1
- package/dist/jestutils/jestHelpers.js +14 -371
- package/dist/logger/export.js +0 -1
- package/dist/matter/behaviors.js +0 -2
- package/dist/matter/clusters.js +0 -2
- package/dist/matter/devices.js +0 -2
- package/dist/matter/endpoints.js +0 -2
- package/dist/matter/export.js +0 -3
- package/dist/matter/types.js +0 -3
- package/dist/matterNode.js +8 -369
- package/dist/matterbridge.js +46 -811
- package/dist/matterbridgeAccessoryPlatform.js +0 -38
- package/dist/matterbridgeBehaviors.js +5 -68
- package/dist/matterbridgeDeviceTypes.js +14 -635
- package/dist/matterbridgeDynamicPlatform.js +0 -38
- package/dist/matterbridgeEndpoint.js +54 -1445
- package/dist/matterbridgeEndpointHelpers.js +20 -483
- package/dist/matterbridgeEndpointTypes.js +0 -25
- package/dist/matterbridgePlatform.js +1 -451
- package/dist/matterbridgeTypes.js +0 -26
- package/dist/pluginManager.js +5 -341
- package/dist/shelly.js +7 -178
- package/dist/storage/export.js +0 -1
- package/dist/update.js +1 -93
- package/dist/utils/colorUtils.js +2 -97
- package/dist/utils/commandLine.js +0 -60
- package/dist/utils/copyDirectory.js +0 -37
- package/dist/utils/createDirectory.js +0 -33
- package/dist/utils/createZip.js +2 -47
- package/dist/utils/deepCopy.js +0 -39
- package/dist/utils/deepEqual.js +1 -72
- package/dist/utils/error.js +0 -42
- package/dist/utils/export.js +0 -1
- package/dist/utils/format.js +0 -49
- package/dist/utils/hex.js +0 -124
- package/dist/utils/inspector.js +1 -69
- package/dist/utils/isvalid.js +0 -101
- package/dist/utils/network.js +5 -96
- package/dist/utils/spawn.js +1 -71
- package/dist/utils/tracker.js +1 -64
- package/dist/utils/wait.js +8 -60
- package/dist/workerGlobalPrefix.js +5 -37
- package/dist/workerTypes.js +0 -24
- package/dist/workers.js +4 -68
- package/frontend/build/assets/index.js +4 -4
- package/frontend/build/assets/vendor_node_modules.js +1 -1
- package/frontend/package.json +1 -1
- package/npm-shrinkwrap.json +5 -5
- package/package.json +1 -2
- package/dist/broadcastServer.d.ts +0 -144
- package/dist/broadcastServer.d.ts.map +0 -1
- package/dist/broadcastServer.js.map +0 -1
- package/dist/broadcastServerTypes.d.ts +0 -841
- package/dist/broadcastServerTypes.d.ts.map +0 -1
- package/dist/broadcastServerTypes.js.map +0 -1
- package/dist/cli.d.ts +0 -30
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/cliEmitter.d.ts +0 -50
- package/dist/cliEmitter.d.ts.map +0 -1
- package/dist/cliEmitter.js.map +0 -1
- package/dist/cliHistory.d.ts +0 -48
- package/dist/cliHistory.d.ts.map +0 -1
- package/dist/cliHistory.js.map +0 -1
- package/dist/clusters/export.d.ts +0 -2
- package/dist/clusters/export.d.ts.map +0 -1
- package/dist/clusters/export.js.map +0 -1
- package/dist/deviceManager.d.ts +0 -135
- package/dist/deviceManager.d.ts.map +0 -1
- package/dist/deviceManager.js.map +0 -1
- package/dist/devices/airConditioner.d.ts +0 -98
- package/dist/devices/airConditioner.d.ts.map +0 -1
- package/dist/devices/airConditioner.js.map +0 -1
- package/dist/devices/batteryStorage.d.ts +0 -48
- package/dist/devices/batteryStorage.d.ts.map +0 -1
- package/dist/devices/batteryStorage.js.map +0 -1
- package/dist/devices/cooktop.d.ts +0 -61
- package/dist/devices/cooktop.d.ts.map +0 -1
- package/dist/devices/cooktop.js.map +0 -1
- package/dist/devices/dishwasher.d.ts +0 -71
- package/dist/devices/dishwasher.d.ts.map +0 -1
- package/dist/devices/dishwasher.js.map +0 -1
- package/dist/devices/evse.d.ts +0 -76
- package/dist/devices/evse.d.ts.map +0 -1
- package/dist/devices/evse.js.map +0 -1
- package/dist/devices/export.d.ts +0 -17
- package/dist/devices/export.d.ts.map +0 -1
- package/dist/devices/export.js.map +0 -1
- package/dist/devices/extractorHood.d.ts +0 -46
- package/dist/devices/extractorHood.d.ts.map +0 -1
- package/dist/devices/extractorHood.js.map +0 -1
- package/dist/devices/heatPump.d.ts +0 -47
- package/dist/devices/heatPump.d.ts.map +0 -1
- package/dist/devices/heatPump.js.map +0 -1
- package/dist/devices/laundryDryer.d.ts +0 -67
- package/dist/devices/laundryDryer.d.ts.map +0 -1
- package/dist/devices/laundryDryer.js.map +0 -1
- package/dist/devices/laundryWasher.d.ts +0 -81
- package/dist/devices/laundryWasher.d.ts.map +0 -1
- package/dist/devices/laundryWasher.js.map +0 -1
- package/dist/devices/microwaveOven.d.ts +0 -168
- package/dist/devices/microwaveOven.d.ts.map +0 -1
- package/dist/devices/microwaveOven.js.map +0 -1
- package/dist/devices/oven.d.ts +0 -105
- package/dist/devices/oven.d.ts.map +0 -1
- package/dist/devices/oven.js.map +0 -1
- package/dist/devices/refrigerator.d.ts +0 -118
- package/dist/devices/refrigerator.d.ts.map +0 -1
- package/dist/devices/refrigerator.js.map +0 -1
- package/dist/devices/roboticVacuumCleaner.d.ts +0 -112
- package/dist/devices/roboticVacuumCleaner.d.ts.map +0 -1
- package/dist/devices/roboticVacuumCleaner.js.map +0 -1
- package/dist/devices/solarPower.d.ts +0 -40
- package/dist/devices/solarPower.d.ts.map +0 -1
- package/dist/devices/solarPower.js.map +0 -1
- package/dist/devices/speaker.d.ts +0 -87
- package/dist/devices/speaker.d.ts.map +0 -1
- package/dist/devices/speaker.js.map +0 -1
- package/dist/devices/temperatureControl.d.ts +0 -166
- package/dist/devices/temperatureControl.d.ts.map +0 -1
- package/dist/devices/temperatureControl.js.map +0 -1
- package/dist/devices/waterHeater.d.ts +0 -111
- package/dist/devices/waterHeater.d.ts.map +0 -1
- package/dist/devices/waterHeater.js.map +0 -1
- package/dist/dgram/coap.d.ts +0 -205
- package/dist/dgram/coap.d.ts.map +0 -1
- package/dist/dgram/coap.js.map +0 -1
- package/dist/dgram/dgram.d.ts +0 -141
- package/dist/dgram/dgram.d.ts.map +0 -1
- package/dist/dgram/dgram.js.map +0 -1
- package/dist/dgram/mb_coap.d.ts +0 -24
- package/dist/dgram/mb_coap.d.ts.map +0 -1
- package/dist/dgram/mb_coap.js.map +0 -1
- package/dist/dgram/mb_mdns.d.ts +0 -24
- package/dist/dgram/mb_mdns.d.ts.map +0 -1
- package/dist/dgram/mb_mdns.js.map +0 -1
- package/dist/dgram/mdns.d.ts +0 -290
- package/dist/dgram/mdns.d.ts.map +0 -1
- package/dist/dgram/mdns.js.map +0 -1
- package/dist/dgram/multicast.d.ts +0 -67
- package/dist/dgram/multicast.d.ts.map +0 -1
- package/dist/dgram/multicast.js.map +0 -1
- package/dist/dgram/unicast.d.ts +0 -56
- package/dist/dgram/unicast.d.ts.map +0 -1
- package/dist/dgram/unicast.js.map +0 -1
- package/dist/frontend.d.ts +0 -238
- package/dist/frontend.d.ts.map +0 -1
- package/dist/frontend.js.map +0 -1
- package/dist/frontendTypes.d.ts +0 -529
- package/dist/frontendTypes.d.ts.map +0 -1
- package/dist/frontendTypes.js.map +0 -1
- package/dist/helpers.d.ts +0 -48
- package/dist/helpers.d.ts.map +0 -1
- package/dist/helpers.js.map +0 -1
- package/dist/index.d.ts +0 -34
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/jestutils/export.d.ts +0 -2
- package/dist/jestutils/export.d.ts.map +0 -1
- package/dist/jestutils/export.js.map +0 -1
- package/dist/jestutils/jestHelpers.d.ts +0 -345
- package/dist/jestutils/jestHelpers.d.ts.map +0 -1
- package/dist/jestutils/jestHelpers.js.map +0 -1
- package/dist/logger/export.d.ts +0 -2
- package/dist/logger/export.d.ts.map +0 -1
- package/dist/logger/export.js.map +0 -1
- package/dist/matter/behaviors.d.ts +0 -2
- package/dist/matter/behaviors.d.ts.map +0 -1
- package/dist/matter/behaviors.js.map +0 -1
- package/dist/matter/clusters.d.ts +0 -2
- package/dist/matter/clusters.d.ts.map +0 -1
- package/dist/matter/clusters.js.map +0 -1
- package/dist/matter/devices.d.ts +0 -2
- package/dist/matter/devices.d.ts.map +0 -1
- package/dist/matter/devices.js.map +0 -1
- package/dist/matter/endpoints.d.ts +0 -2
- package/dist/matter/endpoints.d.ts.map +0 -1
- package/dist/matter/endpoints.js.map +0 -1
- package/dist/matter/export.d.ts +0 -5
- package/dist/matter/export.d.ts.map +0 -1
- package/dist/matter/export.js.map +0 -1
- package/dist/matter/types.d.ts +0 -3
- package/dist/matter/types.d.ts.map +0 -1
- package/dist/matter/types.js.map +0 -1
- package/dist/matterNode.d.ts +0 -342
- package/dist/matterNode.d.ts.map +0 -1
- package/dist/matterNode.js.map +0 -1
- package/dist/matterbridge.d.ts +0 -492
- package/dist/matterbridge.d.ts.map +0 -1
- package/dist/matterbridge.js.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.d.ts +0 -41
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
- package/dist/matterbridgeBehaviors.d.ts +0 -2404
- package/dist/matterbridgeBehaviors.d.ts.map +0 -1
- package/dist/matterbridgeBehaviors.js.map +0 -1
- package/dist/matterbridgeDeviceTypes.d.ts +0 -698
- package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
- package/dist/matterbridgeDeviceTypes.js.map +0 -1
- package/dist/matterbridgeDynamicPlatform.d.ts +0 -41
- package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
- package/dist/matterbridgeDynamicPlatform.js.map +0 -1
- package/dist/matterbridgeEndpoint.d.ts +0 -1507
- package/dist/matterbridgeEndpoint.d.ts.map +0 -1
- package/dist/matterbridgeEndpoint.js.map +0 -1
- package/dist/matterbridgeEndpointHelpers.d.ts +0 -787
- package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
- package/dist/matterbridgeEndpointHelpers.js.map +0 -1
- package/dist/matterbridgeEndpointTypes.d.ts +0 -166
- package/dist/matterbridgeEndpointTypes.d.ts.map +0 -1
- package/dist/matterbridgeEndpointTypes.js.map +0 -1
- package/dist/matterbridgePlatform.d.ts +0 -539
- package/dist/matterbridgePlatform.d.ts.map +0 -1
- package/dist/matterbridgePlatform.js.map +0 -1
- package/dist/matterbridgeTypes.d.ts +0 -251
- package/dist/matterbridgeTypes.d.ts.map +0 -1
- package/dist/matterbridgeTypes.js.map +0 -1
- package/dist/pluginManager.d.ts +0 -372
- package/dist/pluginManager.d.ts.map +0 -1
- package/dist/pluginManager.js.map +0 -1
- package/dist/shelly.d.ts +0 -181
- package/dist/shelly.d.ts.map +0 -1
- package/dist/shelly.js.map +0 -1
- package/dist/storage/export.d.ts +0 -2
- package/dist/storage/export.d.ts.map +0 -1
- package/dist/storage/export.js.map +0 -1
- package/dist/update.d.ts +0 -84
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js.map +0 -1
- package/dist/utils/colorUtils.d.ts +0 -101
- package/dist/utils/colorUtils.d.ts.map +0 -1
- package/dist/utils/colorUtils.js.map +0 -1
- package/dist/utils/commandLine.d.ts +0 -66
- package/dist/utils/commandLine.d.ts.map +0 -1
- package/dist/utils/commandLine.js.map +0 -1
- package/dist/utils/copyDirectory.d.ts +0 -35
- package/dist/utils/copyDirectory.d.ts.map +0 -1
- package/dist/utils/copyDirectory.js.map +0 -1
- package/dist/utils/createDirectory.d.ts +0 -34
- package/dist/utils/createDirectory.d.ts.map +0 -1
- package/dist/utils/createDirectory.js.map +0 -1
- package/dist/utils/createZip.d.ts +0 -39
- package/dist/utils/createZip.d.ts.map +0 -1
- package/dist/utils/createZip.js.map +0 -1
- package/dist/utils/deepCopy.d.ts +0 -32
- package/dist/utils/deepCopy.d.ts.map +0 -1
- package/dist/utils/deepCopy.js.map +0 -1
- package/dist/utils/deepEqual.d.ts +0 -54
- package/dist/utils/deepEqual.d.ts.map +0 -1
- package/dist/utils/deepEqual.js.map +0 -1
- package/dist/utils/error.d.ts +0 -45
- package/dist/utils/error.d.ts.map +0 -1
- package/dist/utils/error.js.map +0 -1
- package/dist/utils/export.d.ts +0 -13
- package/dist/utils/export.d.ts.map +0 -1
- package/dist/utils/export.js.map +0 -1
- package/dist/utils/format.d.ts +0 -53
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/hex.d.ts +0 -89
- package/dist/utils/hex.d.ts.map +0 -1
- package/dist/utils/hex.js.map +0 -1
- package/dist/utils/inspector.d.ts +0 -87
- package/dist/utils/inspector.d.ts.map +0 -1
- package/dist/utils/inspector.js.map +0 -1
- package/dist/utils/isvalid.d.ts +0 -103
- package/dist/utils/isvalid.d.ts.map +0 -1
- package/dist/utils/isvalid.js.map +0 -1
- package/dist/utils/network.d.ts +0 -111
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js.map +0 -1
- package/dist/utils/spawn.d.ts +0 -33
- package/dist/utils/spawn.d.ts.map +0 -1
- package/dist/utils/spawn.js.map +0 -1
- package/dist/utils/tracker.d.ts +0 -108
- package/dist/utils/tracker.d.ts.map +0 -1
- package/dist/utils/tracker.js.map +0 -1
- package/dist/utils/wait.d.ts +0 -54
- package/dist/utils/wait.d.ts.map +0 -1
- package/dist/utils/wait.js.map +0 -1
- package/dist/workerGlobalPrefix.d.ts +0 -25
- package/dist/workerGlobalPrefix.d.ts.map +0 -1
- package/dist/workerGlobalPrefix.js.map +0 -1
- package/dist/workerTypes.d.ts +0 -52
- package/dist/workerTypes.d.ts.map +0 -1
- package/dist/workerTypes.js.map +0 -1
- package/dist/workers.d.ts +0 -69
- package/dist/workers.d.ts.map +0 -1
- package/dist/workers.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -28,6 +28,26 @@ Advantages:
|
|
|
28
28
|
- individual plugin isolation in childbridge mode;
|
|
29
29
|
- ability to update the plugin in childbridge mode without restarting matterbridge;
|
|
30
30
|
|
|
31
|
+
## [3.4.4] - 2025-12-19
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- [frontend]: Set autoScroll to false in mobileMode.
|
|
36
|
+
- [frontend]: Added Log length: 100, 200, 500, 1000.
|
|
37
|
+
- [frontend]: Added Log search with case-insensitive regex: use /text/ in the search field.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- [package]: Updated dependencies.
|
|
42
|
+
- [frontend]: Bumped `frontend` version to v.3.4.1.
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
- [doorLock]: Fixed DoorLock.supportedOperatingModes. Thanks Ludovic BOUÉ (https://github.com/Luligu/matterbridge/issues/454).
|
|
47
|
+
- [frontend]: Fixed mobileMode menu navigation. Thanks Calimerorulez (https://github.com/Luligu/matterbridge/issues/457).
|
|
48
|
+
|
|
49
|
+
<a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
|
|
50
|
+
|
|
31
51
|
## [3.4.3] - 2025-12-12
|
|
32
52
|
|
|
33
53
|
### Breaking Changes
|
package/dist/broadcastServer.js
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the BroadcastServer class.
|
|
3
|
-
*
|
|
4
|
-
* @file broadcastServer.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2025-10-05
|
|
7
|
-
* @version 2.0.1
|
|
8
|
-
* @license Apache-2.0
|
|
9
|
-
*
|
|
10
|
-
* Copyright 2024, 2025, 2026 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[32mBroadcastServer loaded.\u001B[40;0m');
|
|
27
3
|
import { EventEmitter } from 'node:events';
|
|
@@ -29,9 +5,6 @@ import { BroadcastChannel } from 'node:worker_threads';
|
|
|
29
5
|
import { CYAN, db, debugStringify, er } from 'node-ansi-logger';
|
|
30
6
|
import { hasParameter } from './utils/commandLine.js';
|
|
31
7
|
import { logError } from './utils/error.js';
|
|
32
|
-
/**
|
|
33
|
-
* BroadcastServer class to handle broadcast messages between workers with BroadcastChannel.
|
|
34
|
-
*/
|
|
35
8
|
export class BroadcastServer extends EventEmitter {
|
|
36
9
|
name;
|
|
37
10
|
log;
|
|
@@ -40,42 +13,21 @@ export class BroadcastServer extends EventEmitter {
|
|
|
40
13
|
closed = false;
|
|
41
14
|
debug = hasParameter('debug') || hasParameter('verbose');
|
|
42
15
|
verbose = hasParameter('verbose');
|
|
43
|
-
/**
|
|
44
|
-
* Creates an instance of BroadcastServer.
|
|
45
|
-
*
|
|
46
|
-
* @param {string} name - The name of the broadcast server.
|
|
47
|
-
* @param {AnsiLogger} log - The logger instance to use for logging.
|
|
48
|
-
* @param {string} channel - The channel name for the broadcast. Default is 'broadcast-channel'.
|
|
49
|
-
*/
|
|
50
16
|
constructor(name, log, channel = 'broadcast-channel') {
|
|
51
17
|
super();
|
|
52
18
|
this.name = name;
|
|
53
19
|
this.log = log;
|
|
54
20
|
this.channel = channel;
|
|
55
21
|
this.broadcastChannel = new BroadcastChannel(this.channel);
|
|
56
|
-
// this.broadcastChannel.unref();
|
|
57
22
|
this.broadcastChannel.onmessage = this.broadcastMessageHandler.bind(this);
|
|
58
23
|
this.broadcastChannel.onmessageerror = this.broadcastMessageErrorHandler.bind(this);
|
|
59
24
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Closes the broadcast channel.
|
|
62
|
-
*
|
|
63
|
-
* @returns {void}
|
|
64
|
-
*/
|
|
65
25
|
close() {
|
|
66
|
-
// @ts-expect-error: wrong type definition in node.d.ts
|
|
67
26
|
this.broadcastChannel.onmessage = null;
|
|
68
|
-
// @ts-expect-error: wrong type definition in node.d.ts
|
|
69
27
|
this.broadcastChannel.onmessageerror = null;
|
|
70
28
|
this.broadcastChannel.close();
|
|
71
29
|
this.closed = true;
|
|
72
30
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Handles incoming broadcast messages.
|
|
75
|
-
*
|
|
76
|
-
* @param {MessageEvent} event - The message event containing the broadcast message.
|
|
77
|
-
* @returns {void}
|
|
78
|
-
*/
|
|
79
31
|
broadcastMessageHandler(event) {
|
|
80
32
|
const msg = event.data;
|
|
81
33
|
if (msg.dst === this.name || msg.dst === 'all') {
|
|
@@ -88,30 +40,13 @@ export class BroadcastServer extends EventEmitter {
|
|
|
88
40
|
this.log.debug(`Server ${CYAN}${this.name}${db} received unrelated broadcast message: ${debugStringify(msg)}`);
|
|
89
41
|
}
|
|
90
42
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Handles incoming broadcast error messages.
|
|
93
|
-
*
|
|
94
|
-
* @param {MessageEvent} event - The message event containing the broadcast message.
|
|
95
|
-
* @returns {void}
|
|
96
|
-
*/
|
|
97
43
|
broadcastMessageErrorHandler(event) {
|
|
98
44
|
const msg = event.data;
|
|
99
45
|
this.log.error(`Server ${CYAN}${this.name}${db} received message error: ${debugStringify(msg)}`);
|
|
100
46
|
}
|
|
101
|
-
/**
|
|
102
|
-
* Generate a pseudo-random identifier between 100,000,000 and 999,999,999.
|
|
103
|
-
*
|
|
104
|
-
* @returns {number} A nine-digit identifier.
|
|
105
|
-
*/
|
|
106
47
|
getUniqueId() {
|
|
107
48
|
return Math.floor(Math.random() * 900000000) + 100000000;
|
|
108
49
|
}
|
|
109
|
-
/**
|
|
110
|
-
* Type guard to verify a value matches the WorkerMessageRequest structure.
|
|
111
|
-
*
|
|
112
|
-
* @param {unknown} value Value to test.
|
|
113
|
-
* @returns {value is WorkerMessageRequest} True when the value looks like a request message.
|
|
114
|
-
*/
|
|
115
50
|
isWorkerRequest(value) {
|
|
116
51
|
if (typeof value !== 'object' || value === null) {
|
|
117
52
|
return false;
|
|
@@ -122,22 +57,9 @@ export class BroadcastServer extends EventEmitter {
|
|
|
122
57
|
}
|
|
123
58
|
return message.result === undefined && message.error === undefined;
|
|
124
59
|
}
|
|
125
|
-
/**
|
|
126
|
-
* Type guard to verify a value matches a specific WorkerMessageRequest structure.
|
|
127
|
-
*
|
|
128
|
-
* @param {unknown} value Value to test.
|
|
129
|
-
* @param {K} type Worker message type to match.
|
|
130
|
-
* @returns {value is WorkerMessageRequest<K>} True when the value looks like a request message of the requested type.
|
|
131
|
-
*/
|
|
132
60
|
isWorkerRequestOfType(value, type) {
|
|
133
61
|
return this.isWorkerRequest(value) && value.type === type;
|
|
134
62
|
}
|
|
135
|
-
/**
|
|
136
|
-
* Type guard to verify a value matches the WorkerMessageResponse structure.
|
|
137
|
-
*
|
|
138
|
-
* @param {unknown} value Value to test.
|
|
139
|
-
* @returns {value is WorkerMessageResponse} True when the value looks like a response message.
|
|
140
|
-
*/
|
|
141
63
|
isWorkerResponse(value) {
|
|
142
64
|
if (typeof value !== 'object' || value === null) {
|
|
143
65
|
return false;
|
|
@@ -150,24 +72,9 @@ export class BroadcastServer extends EventEmitter {
|
|
|
150
72
|
const hasResult = message.result !== undefined;
|
|
151
73
|
return hasError !== hasResult;
|
|
152
74
|
}
|
|
153
|
-
/**
|
|
154
|
-
* Type guard to verify a value matches a specific WorkerMessageResponse structure.
|
|
155
|
-
*
|
|
156
|
-
* @param {unknown} value Value to test.
|
|
157
|
-
* @param {K} type Worker message type to match.
|
|
158
|
-
* @returns {value is WorkerMessageResponse<K>} True when the value looks like a response message of the requested type.
|
|
159
|
-
*/
|
|
160
75
|
isWorkerResponseOfType(value, type) {
|
|
161
76
|
return this.isWorkerResponse(value) && value.type === type;
|
|
162
77
|
}
|
|
163
|
-
/**
|
|
164
|
-
* Broadcast a message to all workers.
|
|
165
|
-
*
|
|
166
|
-
* @param {WorkerMessage} message - The message to broadcast.
|
|
167
|
-
* @returns {void}
|
|
168
|
-
*
|
|
169
|
-
* @remarks No checks are performed on the message structure.
|
|
170
|
-
*/
|
|
171
78
|
broadcast(message) {
|
|
172
79
|
if (this.closed) {
|
|
173
80
|
this.log.error('Broadcast channel is closed');
|
|
@@ -189,13 +96,6 @@ export class BroadcastServer extends EventEmitter {
|
|
|
189
96
|
logError(this.log, `Failed to broadcast message ${debugStringify(message)}${er}`, error);
|
|
190
97
|
}
|
|
191
98
|
}
|
|
192
|
-
/**
|
|
193
|
-
* Send a request message from the worker implementation.
|
|
194
|
-
*
|
|
195
|
-
* @template K
|
|
196
|
-
* @param {WorkerMessageRequest<K>} message The request message to send.
|
|
197
|
-
* @returns {void}
|
|
198
|
-
*/
|
|
199
99
|
request(message) {
|
|
200
100
|
if (this.closed) {
|
|
201
101
|
this.log.error('Broadcast channel is closed');
|
|
@@ -221,14 +121,6 @@ export class BroadcastServer extends EventEmitter {
|
|
|
221
121
|
logError(this.log, `Failed to broadcast request message ${debugStringify(message)}${er}`, error);
|
|
222
122
|
}
|
|
223
123
|
}
|
|
224
|
-
/**
|
|
225
|
-
* Send a response message from the worker implementation.
|
|
226
|
-
* It also calculates the elapsed time since the request was sent and swaps the source and destination fields.
|
|
227
|
-
*
|
|
228
|
-
* @template K
|
|
229
|
-
* @param {WorkerMessageResponse<K>} message The response message to send.
|
|
230
|
-
* @returns {void}
|
|
231
|
-
*/
|
|
232
124
|
respond(message) {
|
|
233
125
|
if (this.closed) {
|
|
234
126
|
this.log.error('Broadcast channel is closed');
|
|
@@ -257,16 +149,6 @@ export class BroadcastServer extends EventEmitter {
|
|
|
257
149
|
logError(this.log, `Failed to broadcast response message ${debugStringify(message)}${er}`, error);
|
|
258
150
|
}
|
|
259
151
|
}
|
|
260
|
-
/**
|
|
261
|
-
* Fetch data from a worker.
|
|
262
|
-
* It broadcasts a request message and waits for a valid response with the same id.
|
|
263
|
-
*
|
|
264
|
-
* @template K
|
|
265
|
-
* @param {WorkerMessageRequest<K>} message - The typed request message to fetch.
|
|
266
|
-
* @param {number} timeout - The timeout in milliseconds to wait for a response. Default is 250ms.
|
|
267
|
-
* @returns {Promise<WorkerMessageResponseSuccess<K>>} A promise that resolves with the successful response from the worker or rejects on timeout.
|
|
268
|
-
* @throws {Error} If the fetch operation times out after 250ms or if an error response is received or if the response is malformed.
|
|
269
|
-
*/
|
|
270
152
|
async fetch(message, timeout = 250) {
|
|
271
153
|
if (this.closed) {
|
|
272
154
|
return Promise.reject(new Error('Broadcast channel is closed'));
|
|
@@ -307,4 +189,3 @@ export class BroadcastServer extends EventEmitter {
|
|
|
307
189
|
});
|
|
308
190
|
}
|
|
309
191
|
}
|
|
310
|
-
//# sourceMappingURL=broadcastServer.js.map
|
|
@@ -1,25 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the BroadcastServer types.
|
|
3
|
-
*
|
|
4
|
-
* @file broadcastServerTypes.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2025-10-05
|
|
7
|
-
* @version 2.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=broadcastServerTypes.js.map
|
package/dist/cli.js
CHANGED
|
@@ -1,33 +1,6 @@
|
|
|
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 { cliEmitter } from './cliEmitter.js';
|
|
32
5
|
import { hasParameter, hasAnyParameter } from './utils/commandLine.js';
|
|
33
6
|
import { inspectError } from './utils/error.js';
|
|
@@ -37,10 +10,7 @@ import { formatBytes, formatUptime } from './utils/format.js';
|
|
|
37
10
|
export let instance;
|
|
38
11
|
export const tracker = new Tracker('Cli', false, false);
|
|
39
12
|
export const inspector = new Inspector('Cli', false, false);
|
|
40
|
-
const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4
|
|
41
|
-
/**
|
|
42
|
-
* Starts the CPU and memory tracker.
|
|
43
|
-
*/
|
|
13
|
+
const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
|
|
44
14
|
function startCpuMemoryCheck() {
|
|
45
15
|
log.debug(`Cpu memory check starting...`);
|
|
46
16
|
tracker.start();
|
|
@@ -53,50 +23,26 @@ function startCpuMemoryCheck() {
|
|
|
53
23
|
});
|
|
54
24
|
log.debug(`Cpu memory check started`);
|
|
55
25
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Stops the CPU and memory tracker.
|
|
58
|
-
*/
|
|
59
26
|
function stopCpuMemoryCheck() {
|
|
60
27
|
log.debug(`Cpu memory check stopping...`);
|
|
61
28
|
tracker.stop();
|
|
62
29
|
tracker.removeAllListeners();
|
|
63
30
|
log.debug(`Cpu memory check stopped`);
|
|
64
31
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Starts the inspector for heap sampling.
|
|
67
|
-
* This function is called when the -inspect parameter is passed.
|
|
68
|
-
*/
|
|
69
32
|
async function startInspector() {
|
|
70
33
|
await inspector.start();
|
|
71
34
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Stops the heap sampling and saves the profile.
|
|
74
|
-
* This function is called when the -inspect parameter is passed.
|
|
75
|
-
*/
|
|
76
35
|
async function stopInspector() {
|
|
77
36
|
await inspector.stop();
|
|
78
37
|
}
|
|
79
|
-
/**
|
|
80
|
-
* Takes a heap snapshot
|
|
81
|
-
*/
|
|
82
38
|
async function takeHeapSnapshot() {
|
|
83
39
|
await inspector.takeHeapSnapshot();
|
|
84
40
|
}
|
|
85
|
-
/**
|
|
86
|
-
* Triggers a manual garbage collection.
|
|
87
|
-
* This function is working only if the node process is started with --expose_gc.
|
|
88
|
-
*
|
|
89
|
-
* @remarks To check the effect of the garbage collection, add also --trace_gc or --trace_gc_verbose.
|
|
90
|
-
*/
|
|
91
41
|
function triggerGarbageCollection() {
|
|
92
42
|
inspector.runGarbageCollector();
|
|
93
43
|
}
|
|
94
|
-
/**
|
|
95
|
-
* Registers event handlers for the Matterbridge instance.
|
|
96
|
-
*/
|
|
97
44
|
function registerHandlers() {
|
|
98
45
|
log.debug('Registering event handlers...');
|
|
99
|
-
// istanbul ignore next cause registerHandlers is called only if instance is defined
|
|
100
46
|
if (!instance)
|
|
101
47
|
return;
|
|
102
48
|
instance.on('shutdown', () => shutdown());
|
|
@@ -110,9 +56,6 @@ function registerHandlers() {
|
|
|
110
56
|
instance.on('triggergarbagecollection', () => triggerGarbageCollection());
|
|
111
57
|
log.debug('Registered event handlers');
|
|
112
58
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Shuts down the Matterbridge instance and exits the process.
|
|
115
|
-
*/
|
|
116
59
|
async function shutdown() {
|
|
117
60
|
log.debug('Received shutdown event, exiting...');
|
|
118
61
|
if (hasParameter('inspect'))
|
|
@@ -121,56 +64,26 @@ async function shutdown() {
|
|
|
121
64
|
cliEmitter.emit('shutdown');
|
|
122
65
|
process.exit(0);
|
|
123
66
|
}
|
|
124
|
-
/**
|
|
125
|
-
* Restarts the Matterbridge instance.
|
|
126
|
-
*/
|
|
127
67
|
async function restart() {
|
|
128
68
|
log.debug('Received restart event, loading...');
|
|
129
69
|
const { Matterbridge } = await import('./matterbridge.js');
|
|
130
70
|
instance = await Matterbridge.loadInstance(true);
|
|
131
71
|
registerHandlers();
|
|
132
72
|
}
|
|
133
|
-
/**
|
|
134
|
-
* Updates the Matterbridge instance.
|
|
135
|
-
*/
|
|
136
73
|
async function update() {
|
|
137
74
|
log.debug('Received update event, updating...');
|
|
138
|
-
// TODO: Implement update logic outside of matterbridge
|
|
139
75
|
const { Matterbridge } = await import('./matterbridge.js');
|
|
140
76
|
instance = await Matterbridge.loadInstance(true);
|
|
141
77
|
registerHandlers();
|
|
142
78
|
}
|
|
143
|
-
/**
|
|
144
|
-
* Starts the CPU and memory check when the -startmemorycheck parameter is passed.
|
|
145
|
-
*/
|
|
146
79
|
function start() {
|
|
147
80
|
log.debug('Received start memory check event');
|
|
148
81
|
startCpuMemoryCheck();
|
|
149
82
|
}
|
|
150
|
-
/**
|
|
151
|
-
* Stops the CPU and memory check when the -stopmemorycheck parameter is passed.
|
|
152
|
-
*/
|
|
153
83
|
function stop() {
|
|
154
84
|
log.debug('Received stop memory check event');
|
|
155
85
|
stopCpuMemoryCheck();
|
|
156
86
|
}
|
|
157
|
-
/**
|
|
158
|
-
* Main function that initializes the Matterbridge instance and starts the CLI.
|
|
159
|
-
*
|
|
160
|
-
* @remarks
|
|
161
|
-
*
|
|
162
|
-
* Debug parameters:
|
|
163
|
-
*
|
|
164
|
-
* --debug enables debug logging.
|
|
165
|
-
*
|
|
166
|
-
* --verbose enables verbose logging.
|
|
167
|
-
*
|
|
168
|
-
* --loader enables loader logging.
|
|
169
|
-
*
|
|
170
|
-
* --inspect enables the inspector for heap sampling.
|
|
171
|
-
*
|
|
172
|
-
* --snapshotinterval <milliseconds> can be used to set the heap snapshot interval. Default is undefined. Minimum is 30000 ms.
|
|
173
|
-
*/
|
|
174
87
|
async function main() {
|
|
175
88
|
log.debug(`Cli main() started`);
|
|
176
89
|
startCpuMemoryCheck();
|
|
@@ -180,7 +93,6 @@ async function main() {
|
|
|
180
93
|
const { Matterbridge } = await import('./matterbridge.js');
|
|
181
94
|
instance = await Matterbridge.loadInstance(true);
|
|
182
95
|
log.debug(`***Matterbridge.loadInstance(true) exited`);
|
|
183
|
-
// Check if the instance needs to shut down from parseCommandLine()
|
|
184
96
|
if (!instance || instance.shutdown) {
|
|
185
97
|
shutdown();
|
|
186
98
|
}
|
|
@@ -198,18 +110,11 @@ main().catch((error) => {
|
|
|
198
110
|
inspectError(log, 'Matterbridge.loadInstance() failed with error', error);
|
|
199
111
|
shutdown();
|
|
200
112
|
});
|
|
201
|
-
/**
|
|
202
|
-
* Displays the version.
|
|
203
|
-
*/
|
|
204
113
|
async function version() {
|
|
205
|
-
// Dynamic JSON import (Node >= 20) with import attributes
|
|
206
114
|
const { default: pkg } = await import('../package.json', { with: { type: 'json' } });
|
|
207
115
|
console.log(`Matterbridge version ${pkg.version}`);
|
|
208
116
|
process.exit(0);
|
|
209
117
|
}
|
|
210
|
-
/**
|
|
211
|
-
* Displays the help.
|
|
212
|
-
*/
|
|
213
118
|
function help() {
|
|
214
119
|
console.log(`
|
|
215
120
|
Usage: matterbridge [options] [command]
|
|
@@ -265,4 +170,3 @@ function help() {
|
|
|
265
170
|
`);
|
|
266
171
|
process.exit(0);
|
|
267
172
|
}
|
|
268
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/cliEmitter.js
CHANGED
|
@@ -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
|
package/dist/cliHistory.js
CHANGED
|
@@ -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 './utils/tracker.js';
|
|
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, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
825
788
|
}
|
|
826
|
-
//# sourceMappingURL=cliHistory.js.map
|
package/dist/clusters/export.js
CHANGED