matterbridge 3.4.4 → 3.4.5-dev-20251222-5853b56
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 +14 -0
- package/README.md +17 -2
- package/dist/broadcastServer.js +0 -117
- 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 +38 -485
- 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 -824
- 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 +53 -1457
- 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/npm-shrinkwrap.json +2 -2
- 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 -245
- 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 -505
- 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 -252
- 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/marked.ps1 +0 -25
package/CHANGELOG.md
CHANGED
|
@@ -28,6 +28,20 @@ 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.5] - Dev branch
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- [DevContainer]: Refactored Dev Container setup. The Matterbridge instance can be paired on native Linux hosts or WSL 2 with Docker engine CLI integration. On Docker Desktop on Windows or macOS is not possible cause Docker Desktop runs inside a VM and not directly on the host.
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- [package]: Updated dependencies.
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
<a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
|
|
44
|
+
|
|
31
45
|
## [3.4.4] - 2025-12-19
|
|
32
46
|
|
|
33
47
|
### Added
|
package/README.md
CHANGED
|
@@ -533,6 +533,17 @@ Examples:
|
|
|
533
533
|
/error|warning/ -> match either "error" OR "warning" (double search)
|
|
534
534
|
```
|
|
535
535
|
|
|
536
|
+
## Window Covering cluster and position explained
|
|
537
|
+
|
|
538
|
+
In Matter spec the Window Covering cluster uses:
|
|
539
|
+
|
|
540
|
+
- 10000 = fully closed
|
|
541
|
+
- 0 = fully opened
|
|
542
|
+
|
|
543
|
+
So depending on the controller you pair with, you should see 100 for fully closed and 0 for fully open.
|
|
544
|
+
|
|
545
|
+
Some controllers invert the position so you need to verify your controller.
|
|
546
|
+
|
|
536
547
|
# Known general issues
|
|
537
548
|
|
|
538
549
|
## Session XYZ does not exist or Cannot find a session for ID XYZ
|
|
@@ -577,11 +588,15 @@ So far is the only controller supporting all Matter 1.2, 1.3 and 1.4 device type
|
|
|
577
588
|
|
|
578
589
|
## Google Home
|
|
579
590
|
|
|
580
|
-
If you face a problem pairing to Google Home from
|
|
591
|
+
If you face a problem pairing to Google Home from iOS app the solution is there https://github.com/Luligu/matterbridge/issues/61.
|
|
581
592
|
|
|
582
593
|
If you face a problem changing the brightness check this for the explanation: https://github.com/Luligu/matterbridge-zigbee2mqtt/issues/80
|
|
583
594
|
|
|
584
|
-
|
|
595
|
+
If you encounter a “Something Went Wrong” screen while commissioning MatterBridge devices in Google Home on Android, it’s due to an Android bug. Android fails to send the country code, which is mandatory under the Matter specification.
|
|
596
|
+
|
|
597
|
+
### Workaround
|
|
598
|
+
|
|
599
|
+
Install Google Home on an iPhone and complete the commissioning there. Once set up, the devices will appear and function normally on your Android phone and other Nest devices in your home. By [Artem Kovalov](https://github.com/artemkovalyov).
|
|
585
600
|
|
|
586
601
|
## Alexa
|
|
587
602
|
|
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,40 +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
26
|
this.broadcastChannel.onmessage = null;
|
|
67
27
|
this.broadcastChannel.onmessageerror = null;
|
|
68
28
|
this.broadcastChannel.close();
|
|
69
29
|
this.closed = true;
|
|
70
30
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Handles incoming broadcast messages.
|
|
73
|
-
*
|
|
74
|
-
* @param {MessageEvent} event - The message event containing the broadcast message.
|
|
75
|
-
* @returns {void}
|
|
76
|
-
*/
|
|
77
31
|
broadcastMessageHandler(event) {
|
|
78
32
|
const msg = event.data;
|
|
79
33
|
if (msg.dst === this.name || msg.dst === 'all') {
|
|
@@ -86,30 +40,13 @@ export class BroadcastServer extends EventEmitter {
|
|
|
86
40
|
this.log.debug(`Server ${CYAN}${this.name}${db} received unrelated broadcast message: ${debugStringify(msg)}`);
|
|
87
41
|
}
|
|
88
42
|
}
|
|
89
|
-
/**
|
|
90
|
-
* Handles incoming broadcast error messages.
|
|
91
|
-
*
|
|
92
|
-
* @param {MessageEvent} event - The message event containing the broadcast message.
|
|
93
|
-
* @returns {void}
|
|
94
|
-
*/
|
|
95
43
|
broadcastMessageErrorHandler(event) {
|
|
96
44
|
const msg = event.data;
|
|
97
45
|
this.log.error(`Server ${CYAN}${this.name}${db} received message error: ${debugStringify(msg)}`);
|
|
98
46
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Generate a pseudo-random identifier between 100,000,000 and 999,999,999.
|
|
101
|
-
*
|
|
102
|
-
* @returns {number} A nine-digit identifier.
|
|
103
|
-
*/
|
|
104
47
|
getUniqueId() {
|
|
105
48
|
return Math.floor(Math.random() * 900000000) + 100000000;
|
|
106
49
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Type guard to verify a value matches the WorkerMessageRequest structure.
|
|
109
|
-
*
|
|
110
|
-
* @param {unknown} value Value to test.
|
|
111
|
-
* @returns {value is WorkerMessageRequest} True when the value looks like a request message.
|
|
112
|
-
*/
|
|
113
50
|
isWorkerRequest(value) {
|
|
114
51
|
if (typeof value !== 'object' || value === null) {
|
|
115
52
|
return false;
|
|
@@ -120,22 +57,9 @@ export class BroadcastServer extends EventEmitter {
|
|
|
120
57
|
}
|
|
121
58
|
return message.result === undefined && message.error === undefined;
|
|
122
59
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Type guard to verify a value matches a specific WorkerMessageRequest structure.
|
|
125
|
-
*
|
|
126
|
-
* @param {unknown} value Value to test.
|
|
127
|
-
* @param {K} type Worker message type to match.
|
|
128
|
-
* @returns {value is WorkerMessageRequest<K>} True when the value looks like a request message of the requested type.
|
|
129
|
-
*/
|
|
130
60
|
isWorkerRequestOfType(value, type) {
|
|
131
61
|
return this.isWorkerRequest(value) && value.type === type;
|
|
132
62
|
}
|
|
133
|
-
/**
|
|
134
|
-
* Type guard to verify a value matches the WorkerMessageResponse structure.
|
|
135
|
-
*
|
|
136
|
-
* @param {unknown} value Value to test.
|
|
137
|
-
* @returns {value is WorkerMessageResponse} True when the value looks like a response message.
|
|
138
|
-
*/
|
|
139
63
|
isWorkerResponse(value) {
|
|
140
64
|
if (typeof value !== 'object' || value === null) {
|
|
141
65
|
return false;
|
|
@@ -148,24 +72,9 @@ export class BroadcastServer extends EventEmitter {
|
|
|
148
72
|
const hasResult = message.result !== undefined;
|
|
149
73
|
return hasError !== hasResult;
|
|
150
74
|
}
|
|
151
|
-
/**
|
|
152
|
-
* Type guard to verify a value matches a specific WorkerMessageResponse structure.
|
|
153
|
-
*
|
|
154
|
-
* @param {unknown} value Value to test.
|
|
155
|
-
* @param {K} type Worker message type to match.
|
|
156
|
-
* @returns {value is WorkerMessageResponse<K>} True when the value looks like a response message of the requested type.
|
|
157
|
-
*/
|
|
158
75
|
isWorkerResponseOfType(value, type) {
|
|
159
76
|
return this.isWorkerResponse(value) && value.type === type;
|
|
160
77
|
}
|
|
161
|
-
/**
|
|
162
|
-
* Broadcast a message to all workers.
|
|
163
|
-
*
|
|
164
|
-
* @param {WorkerMessage} message - The message to broadcast.
|
|
165
|
-
* @returns {void}
|
|
166
|
-
*
|
|
167
|
-
* @remarks No checks are performed on the message structure.
|
|
168
|
-
*/
|
|
169
78
|
broadcast(message) {
|
|
170
79
|
if (this.closed) {
|
|
171
80
|
this.log.error('Broadcast channel is closed');
|
|
@@ -187,13 +96,6 @@ export class BroadcastServer extends EventEmitter {
|
|
|
187
96
|
logError(this.log, `Failed to broadcast message ${debugStringify(message)}${er}`, error);
|
|
188
97
|
}
|
|
189
98
|
}
|
|
190
|
-
/**
|
|
191
|
-
* Send a request message from the worker implementation.
|
|
192
|
-
*
|
|
193
|
-
* @template K
|
|
194
|
-
* @param {WorkerMessageRequest<K>} message The request message to send.
|
|
195
|
-
* @returns {void}
|
|
196
|
-
*/
|
|
197
99
|
request(message) {
|
|
198
100
|
if (this.closed) {
|
|
199
101
|
this.log.error('Broadcast channel is closed');
|
|
@@ -219,14 +121,6 @@ export class BroadcastServer extends EventEmitter {
|
|
|
219
121
|
logError(this.log, `Failed to broadcast request message ${debugStringify(message)}${er}`, error);
|
|
220
122
|
}
|
|
221
123
|
}
|
|
222
|
-
/**
|
|
223
|
-
* Send a response message from the worker implementation.
|
|
224
|
-
* It also calculates the elapsed time since the request was sent and swaps the source and destination fields.
|
|
225
|
-
*
|
|
226
|
-
* @template K
|
|
227
|
-
* @param {WorkerMessageResponse<K>} message The response message to send.
|
|
228
|
-
* @returns {void}
|
|
229
|
-
*/
|
|
230
124
|
respond(message) {
|
|
231
125
|
if (this.closed) {
|
|
232
126
|
this.log.error('Broadcast channel is closed');
|
|
@@ -255,16 +149,6 @@ export class BroadcastServer extends EventEmitter {
|
|
|
255
149
|
logError(this.log, `Failed to broadcast response message ${debugStringify(message)}${er}`, error);
|
|
256
150
|
}
|
|
257
151
|
}
|
|
258
|
-
/**
|
|
259
|
-
* Fetch data from a worker.
|
|
260
|
-
* It broadcasts a request message and waits for a valid response with the same id.
|
|
261
|
-
*
|
|
262
|
-
* @template K
|
|
263
|
-
* @param {WorkerMessageRequest<K>} message - The typed request message to fetch.
|
|
264
|
-
* @param {number} timeout - The timeout in milliseconds to wait for a response. Default is 250ms.
|
|
265
|
-
* @returns {Promise<WorkerMessageResponseSuccess<K>>} A promise that resolves with the successful response from the worker or rejects on timeout.
|
|
266
|
-
* @throws {Error} If the fetch operation times out after 250ms or if an error response is received or if the response is malformed.
|
|
267
|
-
*/
|
|
268
152
|
async fetch(message, timeout = 250) {
|
|
269
153
|
if (this.closed) {
|
|
270
154
|
return Promise.reject(new Error('Broadcast channel is closed'));
|
|
@@ -305,4 +189,3 @@ export class BroadcastServer extends EventEmitter {
|
|
|
305
189
|
});
|
|
306
190
|
}
|
|
307
191
|
}
|
|
308
|
-
//# 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