matterbridge 3.4.1-dev-20251130-cfb291e → 3.4.1
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 +10 -9
- package/README-SERVICE-OPT.md +1 -0
- package/dist/broadcastServer.d.ts +136 -0
- package/dist/broadcastServer.d.ts.map +1 -0
- package/dist/broadcastServer.js +112 -1
- package/dist/broadcastServer.js.map +1 -0
- package/dist/broadcastServerTypes.d.ts +841 -0
- package/dist/broadcastServerTypes.d.ts.map +1 -0
- package/dist/broadcastServerTypes.js +24 -0
- package/dist/broadcastServerTypes.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +97 -1
- package/dist/cli.js.map +1 -0
- package/dist/cliEmitter.d.ts +50 -0
- package/dist/cliEmitter.d.ts.map +1 -0
- package/dist/cliEmitter.js +37 -0
- package/dist/cliEmitter.js.map +1 -0
- package/dist/cliHistory.d.ts +48 -0
- package/dist/cliHistory.d.ts.map +1 -0
- package/dist/cliHistory.js +38 -0
- package/dist/cliHistory.js.map +1 -0
- package/dist/clusters/export.d.ts +2 -0
- package/dist/clusters/export.d.ts.map +1 -0
- package/dist/clusters/export.js +2 -0
- package/dist/clusters/export.js.map +1 -0
- package/dist/deviceManager.d.ts +135 -0
- package/dist/deviceManager.d.ts.map +1 -0
- package/dist/deviceManager.js +113 -1
- package/dist/deviceManager.js.map +1 -0
- package/dist/devices/airConditioner.d.ts +98 -0
- package/dist/devices/airConditioner.d.ts.map +1 -0
- package/dist/devices/airConditioner.js +57 -0
- package/dist/devices/airConditioner.js.map +1 -0
- package/dist/devices/batteryStorage.d.ts +48 -0
- package/dist/devices/batteryStorage.d.ts.map +1 -0
- package/dist/devices/batteryStorage.js +48 -1
- package/dist/devices/batteryStorage.js.map +1 -0
- package/dist/devices/cooktop.d.ts +61 -0
- package/dist/devices/cooktop.d.ts.map +1 -0
- package/dist/devices/cooktop.js +56 -0
- package/dist/devices/cooktop.js.map +1 -0
- package/dist/devices/dishwasher.d.ts +71 -0
- package/dist/devices/dishwasher.d.ts.map +1 -0
- package/dist/devices/dishwasher.js +57 -0
- package/dist/devices/dishwasher.js.map +1 -0
- package/dist/devices/evse.d.ts +76 -0
- package/dist/devices/evse.d.ts.map +1 -0
- package/dist/devices/evse.js +74 -10
- package/dist/devices/evse.js.map +1 -0
- package/dist/devices/export.d.ts +17 -0
- package/dist/devices/export.d.ts.map +1 -0
- package/dist/devices/export.js +5 -0
- package/dist/devices/export.js.map +1 -0
- package/dist/devices/extractorHood.d.ts +46 -0
- package/dist/devices/extractorHood.d.ts.map +1 -0
- package/dist/devices/extractorHood.js +43 -0
- package/dist/devices/extractorHood.js.map +1 -0
- package/dist/devices/heatPump.d.ts +47 -0
- package/dist/devices/heatPump.d.ts.map +1 -0
- package/dist/devices/heatPump.js +50 -2
- package/dist/devices/heatPump.js.map +1 -0
- package/dist/devices/laundryDryer.d.ts +67 -0
- package/dist/devices/laundryDryer.d.ts.map +1 -0
- package/dist/devices/laundryDryer.js +62 -3
- package/dist/devices/laundryDryer.js.map +1 -0
- package/dist/devices/laundryWasher.d.ts +81 -0
- package/dist/devices/laundryWasher.d.ts.map +1 -0
- package/dist/devices/laundryWasher.js +70 -4
- package/dist/devices/laundryWasher.js.map +1 -0
- package/dist/devices/microwaveOven.d.ts +168 -0
- package/dist/devices/microwaveOven.d.ts.map +1 -0
- package/dist/devices/microwaveOven.js +88 -5
- package/dist/devices/microwaveOven.js.map +1 -0
- package/dist/devices/oven.d.ts +105 -0
- package/dist/devices/oven.d.ts.map +1 -0
- package/dist/devices/oven.js +85 -0
- package/dist/devices/oven.js.map +1 -0
- package/dist/devices/refrigerator.d.ts +118 -0
- package/dist/devices/refrigerator.d.ts.map +1 -0
- package/dist/devices/refrigerator.js +102 -0
- package/dist/devices/refrigerator.js.map +1 -0
- package/dist/devices/roboticVacuumCleaner.d.ts +112 -0
- package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
- package/dist/devices/roboticVacuumCleaner.js +100 -9
- package/dist/devices/roboticVacuumCleaner.js.map +1 -0
- package/dist/devices/solarPower.d.ts +40 -0
- package/dist/devices/solarPower.d.ts.map +1 -0
- package/dist/devices/solarPower.js +38 -0
- package/dist/devices/solarPower.js.map +1 -0
- package/dist/devices/speaker.d.ts +87 -0
- package/dist/devices/speaker.d.ts.map +1 -0
- package/dist/devices/speaker.js +84 -0
- package/dist/devices/speaker.js.map +1 -0
- package/dist/devices/temperatureControl.d.ts +166 -0
- package/dist/devices/temperatureControl.d.ts.map +1 -0
- package/dist/devices/temperatureControl.js +24 -3
- package/dist/devices/temperatureControl.js.map +1 -0
- package/dist/devices/waterHeater.d.ts +111 -0
- package/dist/devices/waterHeater.d.ts.map +1 -0
- package/dist/devices/waterHeater.js +82 -2
- package/dist/devices/waterHeater.js.map +1 -0
- package/dist/dgram/coap.d.ts +205 -0
- package/dist/dgram/coap.d.ts.map +1 -0
- package/dist/dgram/coap.js +126 -13
- package/dist/dgram/coap.js.map +1 -0
- package/dist/dgram/dgram.d.ts +141 -0
- package/dist/dgram/dgram.d.ts.map +1 -0
- package/dist/dgram/dgram.js +114 -2
- package/dist/dgram/dgram.js.map +1 -0
- package/dist/dgram/mb_coap.d.ts +24 -0
- package/dist/dgram/mb_coap.d.ts.map +1 -0
- package/dist/dgram/mb_coap.js +41 -3
- package/dist/dgram/mb_coap.js.map +1 -0
- package/dist/dgram/mb_mdns.d.ts +24 -0
- package/dist/dgram/mb_mdns.d.ts.map +1 -0
- package/dist/dgram/mb_mdns.js +80 -15
- package/dist/dgram/mb_mdns.js.map +1 -0
- package/dist/dgram/mdns.d.ts +290 -0
- package/dist/dgram/mdns.d.ts.map +1 -0
- package/dist/dgram/mdns.js +299 -137
- package/dist/dgram/mdns.js.map +1 -0
- package/dist/dgram/multicast.d.ts +67 -0
- package/dist/dgram/multicast.d.ts.map +1 -0
- package/dist/dgram/multicast.js +62 -1
- package/dist/dgram/multicast.js.map +1 -0
- package/dist/dgram/unicast.d.ts +56 -0
- package/dist/dgram/unicast.d.ts.map +1 -0
- package/dist/dgram/unicast.js +54 -0
- package/dist/dgram/unicast.js.map +1 -0
- package/dist/frontend.d.ts +238 -0
- package/dist/frontend.d.ts.map +1 -0
- package/dist/frontend.js +455 -35
- package/dist/frontend.js.map +1 -0
- package/dist/frontendTypes.d.ts +529 -0
- package/dist/frontendTypes.d.ts.map +1 -0
- package/dist/frontendTypes.js +45 -0
- package/dist/frontendTypes.js.map +1 -0
- package/dist/helpers.d.ts +48 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +53 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/jestutils/export.d.ts +2 -0
- package/dist/jestutils/export.d.ts.map +1 -0
- package/dist/jestutils/export.js +1 -0
- package/dist/jestutils/export.js.map +1 -0
- package/dist/jestutils/jestHelpers.d.ts +340 -0
- package/dist/jestutils/jestHelpers.d.ts.map +1 -0
- package/dist/jestutils/jestHelpers.js +373 -13
- package/dist/jestutils/jestHelpers.js.map +1 -0
- package/dist/logger/export.d.ts +2 -0
- package/dist/logger/export.d.ts.map +1 -0
- package/dist/logger/export.js +1 -0
- package/dist/logger/export.js.map +1 -0
- package/dist/matter/behaviors.d.ts +2 -0
- package/dist/matter/behaviors.d.ts.map +1 -0
- package/dist/matter/behaviors.js +2 -0
- package/dist/matter/behaviors.js.map +1 -0
- package/dist/matter/clusters.d.ts +2 -0
- package/dist/matter/clusters.d.ts.map +1 -0
- package/dist/matter/clusters.js +2 -0
- package/dist/matter/clusters.js.map +1 -0
- package/dist/matter/devices.d.ts +2 -0
- package/dist/matter/devices.d.ts.map +1 -0
- package/dist/matter/devices.js +2 -0
- package/dist/matter/devices.js.map +1 -0
- package/dist/matter/endpoints.d.ts +2 -0
- package/dist/matter/endpoints.d.ts.map +1 -0
- package/dist/matter/endpoints.js +2 -0
- package/dist/matter/endpoints.js.map +1 -0
- package/dist/matter/export.d.ts +5 -0
- package/dist/matter/export.d.ts.map +1 -0
- package/dist/matter/export.js +3 -0
- package/dist/matter/export.js.map +1 -0
- package/dist/matter/types.d.ts +3 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +3 -0
- package/dist/matter/types.js.map +1 -0
- package/dist/matterNode.d.ts +342 -0
- package/dist/matterNode.d.ts.map +1 -0
- package/dist/matterNode.js +369 -8
- package/dist/matterNode.js.map +1 -0
- package/dist/matterbridge.d.ts +493 -0
- package/dist/matterbridge.d.ts.map +1 -0
- package/dist/matterbridge.js +807 -46
- package/dist/matterbridge.js.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts +41 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.js +38 -0
- package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
- package/dist/matterbridgeBehaviors.d.ts +2404 -0
- package/dist/matterbridgeBehaviors.d.ts.map +1 -0
- package/dist/matterbridgeBehaviors.js +68 -5
- package/dist/matterbridgeBehaviors.js.map +1 -0
- package/dist/matterbridgeDeviceTypes.d.ts +698 -0
- package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
- package/dist/matterbridgeDeviceTypes.js +635 -14
- package/dist/matterbridgeDeviceTypes.js.map +1 -0
- package/dist/matterbridgeDynamicPlatform.d.ts +41 -0
- package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
- package/dist/matterbridgeDynamicPlatform.js +38 -0
- package/dist/matterbridgeDynamicPlatform.js.map +1 -0
- package/dist/matterbridgeEndpoint.d.ts +1507 -0
- package/dist/matterbridgeEndpoint.d.ts.map +1 -0
- package/dist/matterbridgeEndpoint.js +1444 -53
- package/dist/matterbridgeEndpoint.js.map +1 -0
- package/dist/matterbridgeEndpointHelpers.d.ts +787 -0
- package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
- package/dist/matterbridgeEndpointHelpers.js +483 -20
- package/dist/matterbridgeEndpointHelpers.js.map +1 -0
- package/dist/matterbridgeEndpointTypes.d.ts +166 -0
- package/dist/matterbridgeEndpointTypes.d.ts.map +1 -0
- package/dist/matterbridgeEndpointTypes.js +25 -0
- package/dist/matterbridgeEndpointTypes.js.map +1 -0
- package/dist/matterbridgePlatform.d.ts +537 -0
- package/dist/matterbridgePlatform.d.ts.map +1 -0
- package/dist/matterbridgePlatform.js +450 -1
- package/dist/matterbridgePlatform.js.map +1 -0
- package/dist/matterbridgeTypes.d.ts +251 -0
- package/dist/matterbridgeTypes.d.ts.map +1 -0
- package/dist/matterbridgeTypes.js +26 -0
- package/dist/matterbridgeTypes.js.map +1 -0
- package/dist/pluginManager.d.ts +372 -0
- package/dist/pluginManager.d.ts.map +1 -0
- package/dist/pluginManager.js +341 -5
- package/dist/pluginManager.js.map +1 -0
- package/dist/shelly.d.ts +181 -0
- package/dist/shelly.d.ts.map +1 -0
- package/dist/shelly.js +178 -7
- package/dist/shelly.js.map +1 -0
- package/dist/storage/export.d.ts +2 -0
- package/dist/storage/export.d.ts.map +1 -0
- package/dist/storage/export.js +1 -0
- package/dist/storage/export.js.map +1 -0
- package/dist/update.d.ts +84 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +93 -1
- package/dist/update.js.map +1 -0
- package/dist/utils/colorUtils.d.ts +101 -0
- package/dist/utils/colorUtils.d.ts.map +1 -0
- package/dist/utils/colorUtils.js +97 -2
- package/dist/utils/colorUtils.js.map +1 -0
- package/dist/utils/commandLine.d.ts +66 -0
- package/dist/utils/commandLine.d.ts.map +1 -0
- package/dist/utils/commandLine.js +60 -0
- package/dist/utils/commandLine.js.map +1 -0
- package/dist/utils/copyDirectory.d.ts +35 -0
- package/dist/utils/copyDirectory.d.ts.map +1 -0
- package/dist/utils/copyDirectory.js +37 -0
- package/dist/utils/copyDirectory.js.map +1 -0
- package/dist/utils/createDirectory.d.ts +34 -0
- package/dist/utils/createDirectory.d.ts.map +1 -0
- package/dist/utils/createDirectory.js +33 -0
- package/dist/utils/createDirectory.js.map +1 -0
- package/dist/utils/createZip.d.ts +39 -0
- package/dist/utils/createZip.d.ts.map +1 -0
- package/dist/utils/createZip.js +47 -2
- package/dist/utils/createZip.js.map +1 -0
- package/dist/utils/deepCopy.d.ts +32 -0
- package/dist/utils/deepCopy.d.ts.map +1 -0
- package/dist/utils/deepCopy.js +39 -0
- package/dist/utils/deepCopy.js.map +1 -0
- package/dist/utils/deepEqual.d.ts +54 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +72 -1
- package/dist/utils/deepEqual.js.map +1 -0
- package/dist/utils/error.d.ts +45 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +42 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/export.d.ts +13 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/export.js +1 -0
- package/dist/utils/export.js.map +1 -0
- package/dist/utils/format.d.ts +53 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +49 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/hex.d.ts +89 -0
- package/dist/utils/hex.d.ts.map +1 -0
- package/dist/utils/hex.js +124 -0
- package/dist/utils/hex.js.map +1 -0
- package/dist/utils/inspector.d.ts +87 -0
- package/dist/utils/inspector.d.ts.map +1 -0
- package/dist/utils/inspector.js +69 -1
- package/dist/utils/inspector.js.map +1 -0
- package/dist/utils/isvalid.d.ts +103 -0
- package/dist/utils/isvalid.d.ts.map +1 -0
- package/dist/utils/isvalid.js +101 -0
- package/dist/utils/isvalid.js.map +1 -0
- package/dist/utils/network.d.ts +111 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +96 -5
- package/dist/utils/network.js.map +1 -0
- package/dist/utils/spawn.d.ts +33 -0
- package/dist/utils/spawn.d.ts.map +1 -0
- package/dist/utils/spawn.js +71 -1
- package/dist/utils/spawn.js.map +1 -0
- package/dist/utils/tracker.d.ts +108 -0
- package/dist/utils/tracker.d.ts.map +1 -0
- package/dist/utils/tracker.js +64 -1
- package/dist/utils/tracker.js.map +1 -0
- package/dist/utils/wait.d.ts +54 -0
- package/dist/utils/wait.d.ts.map +1 -0
- package/dist/utils/wait.js +60 -8
- package/dist/utils/wait.js.map +1 -0
- package/dist/workerGlobalPrefix.d.ts +25 -0
- package/dist/workerGlobalPrefix.d.ts.map +1 -0
- package/dist/workerGlobalPrefix.js +37 -5
- package/dist/workerGlobalPrefix.js.map +1 -0
- package/dist/workerTypes.d.ts +52 -0
- package/dist/workerTypes.d.ts.map +1 -0
- package/dist/workerTypes.js +24 -0
- package/dist/workerTypes.js.map +1 -0
- package/dist/workers.d.ts +69 -0
- package/dist/workers.d.ts.map +1 -0
- package/dist/workers.js +68 -4
- package/dist/workers.js.map +1 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -14,12 +14,13 @@ The project will evolve to a multi-threaded architecture (the CLI will become th
|
|
|
14
14
|
- frontend;
|
|
15
15
|
- plugins;
|
|
16
16
|
- devices;
|
|
17
|
-
- check updates;
|
|
18
|
-
- npm install;
|
|
19
|
-
- ✅ get global node_modules;
|
|
20
17
|
- all plugins in bridge mode;
|
|
21
18
|
- each plugin in childbridge mode;
|
|
22
19
|
|
|
20
|
+
- check updates;
|
|
21
|
+
- npm install;
|
|
22
|
+
- ✅ get the global node_modules directory;
|
|
23
|
+
|
|
23
24
|
Advantages:
|
|
24
25
|
|
|
25
26
|
- real concurrency outside the Node.js main loop;
|
|
@@ -27,23 +28,23 @@ Advantages:
|
|
|
27
28
|
- individual plugin isolation in childbridge mode;
|
|
28
29
|
- ability to update the plugin in childbridge mode without restarting matterbridge;
|
|
29
30
|
|
|
30
|
-
## [3.4.1] - 2025-
|
|
31
|
+
## [3.4.1] - 2025-12-01
|
|
31
32
|
|
|
32
33
|
### Added
|
|
33
34
|
|
|
34
35
|
- [matterbridge.io]: Updated website https://matterbridge.io with all guides.
|
|
35
36
|
- [matterbridge]: Added addVirtualEndpoint() to match Matterbridge thread module.
|
|
36
37
|
- [BroadcastServer]: Backport BroadcastServer v.2.0.0 from Matterbridge thread module.
|
|
37
|
-
- [MatterbridgePrefix]: Added worker
|
|
38
|
-
- [PluginManager]: Improved the resolve method to resolve automatically also in the plugin directory Usefull for developing with DevContainer.
|
|
38
|
+
- [MatterbridgePrefix]: Added **worker thread** to get the global node_modules.
|
|
39
|
+
- [PluginManager]: Improved the resolve method to resolve automatically also in the plugin directory. Usefull for developing with DevContainer.
|
|
39
40
|
|
|
40
41
|
### Changed
|
|
41
42
|
|
|
42
43
|
- [package]: Updated dependencies.
|
|
43
44
|
- [frontend]: Updated dependencies.
|
|
44
|
-
- [frontend]: Bumped `frontend` version to 3.3.2.
|
|
45
|
-
- [platform]: Bumped MatterbridgePlatform v.1.
|
|
46
|
-
- [thread]: Bump BroadcastServer to
|
|
45
|
+
- [frontend]: Bumped `frontend` version to v.3.3.2.
|
|
46
|
+
- [platform]: Bumped `MatterbridgePlatform` v.1.6.0.
|
|
47
|
+
- [thread]: Bump `BroadcastServer` to v.2.0.0.
|
|
47
48
|
- [updates]: The update availability check now starts after 5 minutes and each 12 hours. It can also be triggered from the frontend.
|
|
48
49
|
|
|
49
50
|
### Fixed
|
package/README-SERVICE-OPT.md
CHANGED
|
@@ -114,6 +114,7 @@ Wants=network.target
|
|
|
114
114
|
Type=simple
|
|
115
115
|
Environment=NODE_ENV=production
|
|
116
116
|
Environment="NPM_CONFIG_PREFIX=/opt/matterbridge/.npm-global"
|
|
117
|
+
Environment="NPM_CONFIG_CACHE=/opt/matterbridge/.npm-cache"
|
|
117
118
|
ExecStart=matterbridge --service --nosudo
|
|
118
119
|
WorkingDirectory=/opt/matterbridge/Matterbridge
|
|
119
120
|
StandardOutput=inherit
|
|
@@ -0,0 +1,136 @@
|
|
|
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.0
|
|
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
|
+
import { EventEmitter } from 'node:events';
|
|
25
|
+
import { type AnsiLogger } from 'node-ansi-logger';
|
|
26
|
+
import type { WorkerMessage, WorkerMessageRequest, WorkerMessageRequestAny, WorkerMessageResponse, WorkerMessageResponseSuccess, WorkerMessageTypes, WorkerSrcType } from './broadcastServerTypes.js';
|
|
27
|
+
interface BroadcastServerEvents {
|
|
28
|
+
'broadcast_message': [msg: WorkerMessage];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* BroadcastServer class to handle broadcast messages between workers with BroadcastChannel.
|
|
32
|
+
*/
|
|
33
|
+
export declare class BroadcastServer extends EventEmitter<BroadcastServerEvents> {
|
|
34
|
+
readonly name: WorkerSrcType;
|
|
35
|
+
private readonly log;
|
|
36
|
+
private readonly channel;
|
|
37
|
+
private readonly broadcastChannel;
|
|
38
|
+
private readonly debug;
|
|
39
|
+
private readonly verbose;
|
|
40
|
+
/**
|
|
41
|
+
* Creates an instance of BroadcastServer.
|
|
42
|
+
*
|
|
43
|
+
* @param {string} name - The name of the broadcast server.
|
|
44
|
+
* @param {AnsiLogger} log - The logger instance to use for logging.
|
|
45
|
+
* @param {string} channel - The channel name for the broadcast. Default is 'broadcast-channel'.
|
|
46
|
+
*/
|
|
47
|
+
constructor(name: WorkerSrcType, log: AnsiLogger, channel?: string);
|
|
48
|
+
/**
|
|
49
|
+
* Closes the broadcast channel.
|
|
50
|
+
*
|
|
51
|
+
* @returns {void}
|
|
52
|
+
*/
|
|
53
|
+
close(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Generate a pseudo-random identifier between 100,000,000 and 999,999,999.
|
|
56
|
+
*
|
|
57
|
+
* @returns {number} A nine-digit identifier.
|
|
58
|
+
*/
|
|
59
|
+
getUniqueId(): number;
|
|
60
|
+
/**
|
|
61
|
+
* Type guard to verify a value matches the WorkerMessageRequest structure.
|
|
62
|
+
*
|
|
63
|
+
* @param {unknown} value Value to test.
|
|
64
|
+
* @returns {value is WorkerMessageRequest} True when the value looks like a request message.
|
|
65
|
+
*/
|
|
66
|
+
isWorkerRequest(value: unknown): value is WorkerMessageRequest;
|
|
67
|
+
/**
|
|
68
|
+
* Type guard to verify a value matches a specific WorkerMessageRequest structure.
|
|
69
|
+
*
|
|
70
|
+
* @param {unknown} value Value to test.
|
|
71
|
+
* @param {K} type Worker message type to match.
|
|
72
|
+
* @returns {value is WorkerMessageRequest<K>} True when the value looks like a request message of the requested type.
|
|
73
|
+
*/
|
|
74
|
+
isWorkerRequestOfType<K extends keyof WorkerMessageTypes>(value: unknown, type: K): value is WorkerMessageRequest<K>;
|
|
75
|
+
/**
|
|
76
|
+
* Type guard to verify a value matches the WorkerMessageResponse structure.
|
|
77
|
+
*
|
|
78
|
+
* @param {unknown} value Value to test.
|
|
79
|
+
* @returns {value is WorkerMessageResponse} True when the value looks like a response message.
|
|
80
|
+
*/
|
|
81
|
+
isWorkerResponse(value: unknown): value is WorkerMessageResponse;
|
|
82
|
+
/**
|
|
83
|
+
* Type guard to verify a value matches a specific WorkerMessageResponse structure.
|
|
84
|
+
*
|
|
85
|
+
* @param {unknown} value Value to test.
|
|
86
|
+
* @param {K} type Worker message type to match.
|
|
87
|
+
* @returns {value is WorkerMessageResponse<K>} True when the value looks like a response message of the requested type.
|
|
88
|
+
*/
|
|
89
|
+
isWorkerResponseOfType<K extends keyof WorkerMessageTypes>(value: unknown, type: K): value is WorkerMessageResponse<K>;
|
|
90
|
+
/**
|
|
91
|
+
* Handles incoming broadcast messages.
|
|
92
|
+
*
|
|
93
|
+
* @param {MessageEvent} event - The message event containing the broadcast message.
|
|
94
|
+
* @returns {void}
|
|
95
|
+
*/
|
|
96
|
+
private broadcastMessageHandler;
|
|
97
|
+
/**
|
|
98
|
+
* Broadcast a message to all workers.
|
|
99
|
+
*
|
|
100
|
+
* @param {WorkerMessage} message - The message to broadcast.
|
|
101
|
+
* @returns {void}
|
|
102
|
+
*
|
|
103
|
+
* @remarks No checks are performed on the message structure.
|
|
104
|
+
*/
|
|
105
|
+
broadcast(message: WorkerMessage): void;
|
|
106
|
+
/**
|
|
107
|
+
* Send a request message from the worker implementation.
|
|
108
|
+
*
|
|
109
|
+
* @template K
|
|
110
|
+
* @param {WorkerMessageRequest<K>} message The request message to send.
|
|
111
|
+
* @returns {void}
|
|
112
|
+
*/
|
|
113
|
+
request<K extends keyof WorkerMessageTypes>(message: WorkerMessageRequest<K>): void;
|
|
114
|
+
/**
|
|
115
|
+
* Send a response message from the worker implementation.
|
|
116
|
+
* It also calculates the elapsed time since the request was sent and swaps the source and destination fields.
|
|
117
|
+
*
|
|
118
|
+
* @template K
|
|
119
|
+
* @param {WorkerMessageResponse<K>} message The response message to send.
|
|
120
|
+
* @returns {void}
|
|
121
|
+
*/
|
|
122
|
+
respond<K extends keyof WorkerMessageTypes>(message: WorkerMessageResponse<K>): void;
|
|
123
|
+
/**
|
|
124
|
+
* Fetch data from a worker.
|
|
125
|
+
* It broadcasts a request message and waits for a valid response with the same id.
|
|
126
|
+
*
|
|
127
|
+
* @template K
|
|
128
|
+
* @param {WorkerMessageRequest<K>} message - The typed request message to fetch.
|
|
129
|
+
* @param {number} timeout - The timeout in milliseconds to wait for a response. Default is 250ms.
|
|
130
|
+
* @returns {Promise<WorkerMessageResponseSuccess<K>>} A promise that resolves with the successful response from the worker or rejects on timeout.
|
|
131
|
+
* @throws {Error} If the fetch operation times out after 250ms or if an error response is received or if the response is malformed.
|
|
132
|
+
*/
|
|
133
|
+
fetch<T extends WorkerMessageRequestAny, K extends Extract<keyof WorkerMessageTypes, T['type']>>(message: T, timeout?: number): Promise<WorkerMessageResponseSuccess<K>>;
|
|
134
|
+
}
|
|
135
|
+
export {};
|
|
136
|
+
//# sourceMappingURL=broadcastServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcastServer.d.ts","sourceRoot":"","sources":["../src/broadcastServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,KAAK,UAAU,EAAgC,MAAM,kBAAkB,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAItM,UAAU,qBAAqB;IAC7B,mBAAmB,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IAapE,QAAQ,CAAC,IAAI,EAAE,aAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAd1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoD;IAC1E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD;;;;;;OAMG;gBAEQ,IAAI,EAAE,aAAa,EACX,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,MAA4B;IAQxD;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB;IAa9D;;;;;;OAMG;IACH,qBAAqB,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAAC;IAIpH;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB;IAehE;;;;;;OAMG;IACH,sBAAsB,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,qBAAqB,CAAC,CAAC,CAAC;IAItH;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,EAAE,aAAa;IAgBhC;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAoBnF;;;;;;;OAOG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,IAAI;IAuBpF;;;;;;;;;OASG;IACG,KAAK,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,OAAO,CAAC,MAAM,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAE,MAAY,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;CAmCpL"}
|
package/dist/broadcastServer.js
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
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.0
|
|
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
|
|
1
25
|
if (process.argv.includes('--loader') || process.argv.includes('-loader'))
|
|
2
26
|
console.log('\u001B[32mBroadcastServer loaded.\u001B[40;0m');
|
|
3
27
|
import { EventEmitter } from 'node:events';
|
|
@@ -5,6 +29,9 @@ import { BroadcastChannel } from 'node:worker_threads';
|
|
|
5
29
|
import { CYAN, db, debugStringify, er } from 'node-ansi-logger';
|
|
6
30
|
import { hasParameter } from './utils/commandLine.js';
|
|
7
31
|
import { logError } from './utils/error.js';
|
|
32
|
+
/**
|
|
33
|
+
* BroadcastServer class to handle broadcast messages between workers with BroadcastChannel.
|
|
34
|
+
*/
|
|
8
35
|
export class BroadcastServer extends EventEmitter {
|
|
9
36
|
name;
|
|
10
37
|
log;
|
|
@@ -12,22 +39,46 @@ export class BroadcastServer extends EventEmitter {
|
|
|
12
39
|
broadcastChannel;
|
|
13
40
|
debug = hasParameter('debug') || hasParameter('verbose');
|
|
14
41
|
verbose = hasParameter('verbose');
|
|
42
|
+
/**
|
|
43
|
+
* Creates an instance of BroadcastServer.
|
|
44
|
+
*
|
|
45
|
+
* @param {string} name - The name of the broadcast server.
|
|
46
|
+
* @param {AnsiLogger} log - The logger instance to use for logging.
|
|
47
|
+
* @param {string} channel - The channel name for the broadcast. Default is 'broadcast-channel'.
|
|
48
|
+
*/
|
|
15
49
|
constructor(name, log, channel = 'broadcast-channel') {
|
|
16
50
|
super();
|
|
17
51
|
this.name = name;
|
|
18
52
|
this.log = log;
|
|
19
53
|
this.channel = channel;
|
|
20
54
|
this.broadcastChannel = new BroadcastChannel(this.channel);
|
|
21
|
-
this.broadcastChannel.unref();
|
|
55
|
+
// this.broadcastChannel.unref();
|
|
22
56
|
this.broadcastChannel.onmessage = this.broadcastMessageHandler.bind(this);
|
|
23
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Closes the broadcast channel.
|
|
60
|
+
*
|
|
61
|
+
* @returns {void}
|
|
62
|
+
*/
|
|
24
63
|
close() {
|
|
64
|
+
// @ts-expect-error: wrong type definition in node.d.ts
|
|
25
65
|
this.broadcastChannel.onmessage = null;
|
|
26
66
|
this.broadcastChannel.close();
|
|
27
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate a pseudo-random identifier between 100,000,000 and 999,999,999.
|
|
70
|
+
*
|
|
71
|
+
* @returns {number} A nine-digit identifier.
|
|
72
|
+
*/
|
|
28
73
|
getUniqueId() {
|
|
29
74
|
return Math.floor(Math.random() * 900000000) + 100000000;
|
|
30
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Type guard to verify a value matches the WorkerMessageRequest structure.
|
|
78
|
+
*
|
|
79
|
+
* @param {unknown} value Value to test.
|
|
80
|
+
* @returns {value is WorkerMessageRequest} True when the value looks like a request message.
|
|
81
|
+
*/
|
|
31
82
|
isWorkerRequest(value) {
|
|
32
83
|
if (typeof value !== 'object' || value === null) {
|
|
33
84
|
return false;
|
|
@@ -38,9 +89,22 @@ export class BroadcastServer extends EventEmitter {
|
|
|
38
89
|
}
|
|
39
90
|
return message.result === undefined && message.error === undefined;
|
|
40
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Type guard to verify a value matches a specific WorkerMessageRequest structure.
|
|
94
|
+
*
|
|
95
|
+
* @param {unknown} value Value to test.
|
|
96
|
+
* @param {K} type Worker message type to match.
|
|
97
|
+
* @returns {value is WorkerMessageRequest<K>} True when the value looks like a request message of the requested type.
|
|
98
|
+
*/
|
|
41
99
|
isWorkerRequestOfType(value, type) {
|
|
42
100
|
return this.isWorkerRequest(value) && value.type === type;
|
|
43
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Type guard to verify a value matches the WorkerMessageResponse structure.
|
|
104
|
+
*
|
|
105
|
+
* @param {unknown} value Value to test.
|
|
106
|
+
* @returns {value is WorkerMessageResponse} True when the value looks like a response message.
|
|
107
|
+
*/
|
|
44
108
|
isWorkerResponse(value) {
|
|
45
109
|
if (typeof value !== 'object' || value === null) {
|
|
46
110
|
return false;
|
|
@@ -53,9 +117,22 @@ export class BroadcastServer extends EventEmitter {
|
|
|
53
117
|
const hasResult = message.result !== undefined;
|
|
54
118
|
return hasError !== hasResult;
|
|
55
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Type guard to verify a value matches a specific WorkerMessageResponse structure.
|
|
122
|
+
*
|
|
123
|
+
* @param {unknown} value Value to test.
|
|
124
|
+
* @param {K} type Worker message type to match.
|
|
125
|
+
* @returns {value is WorkerMessageResponse<K>} True when the value looks like a response message of the requested type.
|
|
126
|
+
*/
|
|
56
127
|
isWorkerResponseOfType(value, type) {
|
|
57
128
|
return this.isWorkerResponse(value) && value.type === type;
|
|
58
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Handles incoming broadcast messages.
|
|
132
|
+
*
|
|
133
|
+
* @param {MessageEvent} event - The message event containing the broadcast message.
|
|
134
|
+
* @returns {void}
|
|
135
|
+
*/
|
|
59
136
|
broadcastMessageHandler(event) {
|
|
60
137
|
const msg = event.data;
|
|
61
138
|
if (msg.dst === this.name || msg.dst === 'all') {
|
|
@@ -68,6 +145,14 @@ export class BroadcastServer extends EventEmitter {
|
|
|
68
145
|
this.log.debug(`Server ${CYAN}${this.name}${db} received unrelated broadcast message: ${debugStringify(msg)}`);
|
|
69
146
|
}
|
|
70
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Broadcast a message to all workers.
|
|
150
|
+
*
|
|
151
|
+
* @param {WorkerMessage} message - The message to broadcast.
|
|
152
|
+
* @returns {void}
|
|
153
|
+
*
|
|
154
|
+
* @remarks No checks are performed on the message structure.
|
|
155
|
+
*/
|
|
71
156
|
broadcast(message) {
|
|
72
157
|
if (message.id === undefined) {
|
|
73
158
|
message.id = this.getUniqueId();
|
|
@@ -85,6 +170,13 @@ export class BroadcastServer extends EventEmitter {
|
|
|
85
170
|
logError(this.log, `Failed to broadcast message ${debugStringify(message)}${er}`, error);
|
|
86
171
|
}
|
|
87
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Send a request message from the worker implementation.
|
|
175
|
+
*
|
|
176
|
+
* @template K
|
|
177
|
+
* @param {WorkerMessageRequest<K>} message The request message to send.
|
|
178
|
+
* @returns {void}
|
|
179
|
+
*/
|
|
88
180
|
request(message) {
|
|
89
181
|
if (message.id === undefined) {
|
|
90
182
|
message.id = this.getUniqueId();
|
|
@@ -106,6 +198,14 @@ export class BroadcastServer extends EventEmitter {
|
|
|
106
198
|
logError(this.log, `Failed to broadcast request message ${debugStringify(message)}${er}`, error);
|
|
107
199
|
}
|
|
108
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Send a response message from the worker implementation.
|
|
203
|
+
* It also calculates the elapsed time since the request was sent and swaps the source and destination fields.
|
|
204
|
+
*
|
|
205
|
+
* @template K
|
|
206
|
+
* @param {WorkerMessageResponse<K>} message The response message to send.
|
|
207
|
+
* @returns {void}
|
|
208
|
+
*/
|
|
109
209
|
respond(message) {
|
|
110
210
|
if (typeof message.timestamp === 'number') {
|
|
111
211
|
message.elapsed = Date.now() - message.timestamp;
|
|
@@ -130,6 +230,16 @@ export class BroadcastServer extends EventEmitter {
|
|
|
130
230
|
logError(this.log, `Failed to broadcast response message ${debugStringify(message)}${er}`, error);
|
|
131
231
|
}
|
|
132
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* Fetch data from a worker.
|
|
235
|
+
* It broadcasts a request message and waits for a valid response with the same id.
|
|
236
|
+
*
|
|
237
|
+
* @template K
|
|
238
|
+
* @param {WorkerMessageRequest<K>} message - The typed request message to fetch.
|
|
239
|
+
* @param {number} timeout - The timeout in milliseconds to wait for a response. Default is 250ms.
|
|
240
|
+
* @returns {Promise<WorkerMessageResponseSuccess<K>>} A promise that resolves with the successful response from the worker or rejects on timeout.
|
|
241
|
+
* @throws {Error} If the fetch operation times out after 250ms or if an error response is received or if the response is malformed.
|
|
242
|
+
*/
|
|
133
243
|
async fetch(message, timeout = 250) {
|
|
134
244
|
if (message.id === undefined) {
|
|
135
245
|
message.id = this.getUniqueId();
|
|
@@ -167,3 +277,4 @@ export class BroadcastServer extends EventEmitter {
|
|
|
167
277
|
});
|
|
168
278
|
}
|
|
169
279
|
}
|
|
280
|
+
//# sourceMappingURL=broadcastServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcastServer.js","sourceRoot":"","sources":["../src/broadcastServer.ts"],"names":[],"mappings":"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"}
|