homebridge 2.0.0-beta.44 → 2.0.0-beta.46
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/dist/api.d.ts +3 -365
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +13 -85
- package/dist/api.js.map +1 -1
- package/dist/bridgeService.d.ts +0 -25
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +32 -85
- package/dist/bridgeService.js.map +1 -1
- package/dist/childBridgeFork.d.ts +12 -15
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +152 -83
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +21 -105
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +57 -134
- package/dist/childBridgeService.js.map +1 -1
- package/dist/cli.js +0 -2
- package/dist/cli.js.map +1 -1
- package/dist/externalPortService.d.ts +0 -21
- package/dist/externalPortService.d.ts.map +1 -1
- package/dist/externalPortService.js +0 -28
- package/dist/externalPortService.js.map +1 -1
- package/dist/index.d.ts +0 -112
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -44
- package/dist/index.js.map +1 -1
- package/dist/ipcService.d.ts +23 -15
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/ipcService.js +6 -12
- package/dist/ipcService.js.map +1 -1
- package/dist/logger.d.ts +0 -46
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +13 -57
- package/dist/logger.js.map +1 -1
- package/dist/matter/BaseMatterManager.d.ts +19 -0
- package/dist/matter/BaseMatterManager.d.ts.map +1 -0
- package/dist/matter/BaseMatterManager.js +170 -0
- package/dist/matter/BaseMatterManager.js.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts +7 -69
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.js +51 -234
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -1
- package/dist/matter/ClusterCommandMapper.d.ts +5 -0
- package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
- package/dist/matter/ClusterCommandMapper.js +203 -0
- package/dist/matter/ClusterCommandMapper.js.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +0 -27
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.js +3 -28
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -1
- package/dist/matter/MatterAPIImpl.d.ts +0 -68
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -1
- package/dist/matter/MatterAPIImpl.js +7 -107
- package/dist/matter/MatterAPIImpl.js.map +1 -1
- package/dist/matter/MatterBridgeManager.d.ts +9 -60
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -1
- package/dist/matter/MatterBridgeManager.js +140 -216
- package/dist/matter/MatterBridgeManager.js.map +1 -1
- package/dist/matter/MatterConfigCollector.d.ts +1 -20
- package/dist/matter/MatterConfigCollector.d.ts.map +1 -1
- package/dist/matter/MatterConfigCollector.js +15 -28
- package/dist/matter/MatterConfigCollector.js.map +1 -1
- package/dist/matter/accessoryCache.d.ts +0 -48
- package/dist/matter/accessoryCache.d.ts.map +1 -1
- package/dist/matter/accessoryCache.js +1 -60
- package/dist/matter/accessoryCache.js.map +1 -1
- package/dist/matter/behaviors/AirQualityBehavior.d.ts +0 -42
- package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/AirQualityBehavior.js +0 -44
- package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -1
- package/dist/matter/behaviors/BehaviorRegistry.d.ts +4 -42
- package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -1
- package/dist/matter/behaviors/BehaviorRegistry.js +12 -42
- package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -1
- package/dist/matter/behaviors/ColorControlBehavior.d.ts +0 -49
- package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ColorControlBehavior.js +0 -90
- package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +0 -91
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +0 -96
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.d.ts +0 -11
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.js +0 -25
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -1
- package/dist/matter/behaviors/FanControlBehavior.d.ts +0 -11
- package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/FanControlBehavior.js +0 -25
- package/dist/matter/behaviors/FanControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/IdentifyBehavior.d.ts +0 -11
- package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/IdentifyBehavior.js +0 -17
- package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -1
- package/dist/matter/behaviors/LevelControlBehavior.d.ts +0 -20
- package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/LevelControlBehavior.js +0 -52
- package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/OnOffBehavior.d.ts +0 -17
- package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/OnOffBehavior.js +0 -38
- package/dist/matter/behaviors/OnOffBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +0 -11
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.js +0 -17
- package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +0 -11
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js +0 -29
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +0 -11
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.js +0 -17
- package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +0 -11
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.js +0 -23
- package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -1
- package/dist/matter/behaviors/ThermostatBehavior.d.ts +0 -11
- package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ThermostatBehavior.js +0 -39
- package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +0 -17
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.js +0 -56
- package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -1
- package/dist/matter/behaviors/index.d.ts +0 -5
- package/dist/matter/behaviors/index.d.ts.map +1 -1
- package/dist/matter/behaviors/index.js +0 -5
- package/dist/matter/behaviors/index.js.map +1 -1
- package/dist/matter/configValidator.d.ts +0 -55
- package/dist/matter/configValidator.d.ts.map +1 -1
- package/dist/matter/configValidator.js +1 -68
- package/dist/matter/configValidator.js.map +1 -1
- package/dist/matter/errorHandler.d.ts +0 -22
- package/dist/matter/errorHandler.d.ts.map +1 -1
- package/dist/matter/errorHandler.js +0 -32
- package/dist/matter/errorHandler.js.map +1 -1
- package/dist/matter/errors.d.ts +0 -132
- package/dist/matter/errors.d.ts.map +1 -1
- package/dist/matter/errors.js +0 -132
- package/dist/matter/errors.js.map +1 -1
- package/dist/matter/index.d.ts +0 -30
- package/dist/matter/index.d.ts.map +1 -1
- package/dist/matter/index.js +0 -13
- package/dist/matter/index.js.map +1 -1
- package/dist/matter/logFormatter.d.ts +0 -17
- package/dist/matter/logFormatter.d.ts.map +1 -1
- package/dist/matter/logFormatter.js +5 -63
- package/dist/matter/logFormatter.js.map +1 -1
- package/dist/matter/server.d.ts +12 -236
- package/dist/matter/server.d.ts.map +1 -1
- package/dist/matter/server.js +177 -488
- package/dist/matter/server.js.map +1 -1
- package/dist/matter/serverHelpers.d.ts +0 -56
- package/dist/matter/serverHelpers.d.ts.map +1 -1
- package/dist/matter/serverHelpers.js +1 -66
- package/dist/matter/serverHelpers.js.map +1 -1
- package/dist/matter/sharedTypes.d.ts +0 -83
- package/dist/matter/sharedTypes.d.ts.map +1 -1
- package/dist/matter/sharedTypes.js +0 -26
- package/dist/matter/sharedTypes.js.map +1 -1
- package/dist/matter/storage.d.ts +0 -90
- package/dist/matter/storage.d.ts.map +1 -1
- package/dist/matter/storage.js +2 -130
- package/dist/matter/storage.js.map +1 -1
- package/dist/matter/typeHelpers.d.ts +0 -30
- package/dist/matter/typeHelpers.d.ts.map +1 -1
- package/dist/matter/typeHelpers.js +0 -24
- package/dist/matter/typeHelpers.js.map +1 -1
- package/dist/matter/types.d.ts +0 -273
- package/dist/matter/types.d.ts.map +1 -1
- package/dist/matter/types.js +0 -83
- package/dist/matter/types.js.map +1 -1
- package/dist/platformAccessory.d.ts +0 -15
- package/dist/platformAccessory.d.ts.map +1 -1
- package/dist/platformAccessory.js +6 -32
- package/dist/platformAccessory.js.map +1 -1
- package/dist/plugin.d.ts +0 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +6 -29
- package/dist/plugin.js.map +1 -1
- package/dist/pluginManager.d.ts +0 -22
- package/dist/pluginManager.d.ts.map +1 -1
- package/dist/pluginManager.js +18 -41
- package/dist/pluginManager.js.map +1 -1
- package/dist/server.d.ts +9 -29
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +308 -157
- package/dist/server.js.map +1 -1
- package/dist/user.d.ts +0 -3
- package/dist/user.d.ts.map +1 -1
- package/dist/user.js +2 -5
- package/dist/user.js.map +1 -1
- package/dist/util/mac.js +0 -1
- package/dist/util/mac.js.map +1 -1
- package/package.json +4 -4
- package/dist/api.spec.d.ts +0 -2
- package/dist/api.spec.d.ts.map +0 -1
- package/dist/api.spec.js +0 -413
- package/dist/api.spec.js.map +0 -1
- package/dist/logger.spec.d.ts +0 -2
- package/dist/logger.spec.d.ts.map +0 -1
- package/dist/logger.spec.js +0 -95
- package/dist/logger.spec.js.map +0 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +0 -2
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +0 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +0 -293
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +0 -1
- package/dist/matter/accessoryCache.spec.d.ts +0 -2
- package/dist/matter/accessoryCache.spec.d.ts.map +0 -1
- package/dist/matter/accessoryCache.spec.js +0 -452
- package/dist/matter/accessoryCache.spec.js.map +0 -1
- package/dist/matter/behaviors/AirQualityBehavior.spec.d.ts +0 -5
- package/dist/matter/behaviors/AirQualityBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/AirQualityBehavior.spec.js +0 -46
- package/dist/matter/behaviors/AirQualityBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +0 -2
- package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/BehaviorRegistry.spec.js +0 -307
- package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +0 -1
- package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/ColorControlBehavior.spec.js +0 -29
- package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.d.ts +0 -5
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.js +0 -95
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/DoorLockBehavior.spec.js +0 -120
- package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/FanControlBehavior.spec.js +0 -23
- package/dist/matter/behaviors/FanControlBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/IdentifyBehavior.spec.js +0 -64
- package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/LevelControlBehavior.spec.js +0 -145
- package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/OnOffBehavior.spec.js +0 -128
- package/dist/matter/behaviors/OnOffBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +0 -57
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +0 -55
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +0 -57
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +0 -53
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/ThermostatBehavior.spec.js +0 -23
- package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +0 -27
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +0 -1
- package/dist/matter/configValidator.spec.d.ts +0 -2
- package/dist/matter/configValidator.spec.d.ts.map +0 -1
- package/dist/matter/configValidator.spec.js +0 -390
- package/dist/matter/configValidator.spec.js.map +0 -1
- package/dist/matter/errorHandler.spec.d.ts +0 -2
- package/dist/matter/errorHandler.spec.d.ts.map +0 -1
- package/dist/matter/errorHandler.spec.js +0 -159
- package/dist/matter/errorHandler.spec.js.map +0 -1
- package/dist/matter/logFormatter.spec.d.ts +0 -2
- package/dist/matter/logFormatter.spec.d.ts.map +0 -1
- package/dist/matter/logFormatter.spec.js +0 -252
- package/dist/matter/logFormatter.spec.js.map +0 -1
- package/dist/matter/serverHelpers.spec.d.ts +0 -2
- package/dist/matter/serverHelpers.spec.d.ts.map +0 -1
- package/dist/matter/serverHelpers.spec.js +0 -527
- package/dist/matter/serverHelpers.spec.js.map +0 -1
- package/dist/matter/storage.spec.d.ts +0 -2
- package/dist/matter/storage.spec.d.ts.map +0 -1
- package/dist/matter/storage.spec.js +0 -570
- package/dist/matter/storage.spec.js.map +0 -1
- package/dist/matter/typeHelpers.spec.d.ts +0 -2
- package/dist/matter/typeHelpers.spec.d.ts.map +0 -1
- package/dist/matter/typeHelpers.spec.js +0 -127
- package/dist/matter/typeHelpers.spec.js.map +0 -1
- package/dist/platformAccessory.spec.d.ts +0 -2
- package/dist/platformAccessory.spec.d.ts.map +0 -1
- package/dist/platformAccessory.spec.js +0 -126
- package/dist/platformAccessory.spec.js.map +0 -1
- package/dist/pluginManager.spec.d.ts +0 -2
- package/dist/pluginManager.spec.d.ts.map +0 -1
- package/dist/pluginManager.spec.js +0 -43
- package/dist/pluginManager.spec.js.map +0 -1
- package/dist/server.spec.d.ts +0 -2
- package/dist/server.spec.d.ts.map +0 -1
- package/dist/server.spec.js +0 -57
- package/dist/server.spec.js.map +0 -1
- package/dist/user.spec.d.ts +0 -2
- package/dist/user.spec.d.ts.map +0 -1
- package/dist/user.spec.js +0 -31
- package/dist/user.spec.js.map +0 -1
- package/dist/util/mac.spec.d.ts +0 -2
- package/dist/util/mac.spec.d.ts.map +0 -1
- package/dist/util/mac.spec.js +0 -36
- package/dist/util/mac.spec.js.map +0 -1
- package/dist/version.spec.d.ts +0 -2
- package/dist/version.spec.d.ts.map +0 -1
- package/dist/version.spec.js +0 -20
- package/dist/version.spec.js.map +0 -1
|
@@ -1,38 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WindowCovering Cluster Behavior
|
|
3
|
-
*
|
|
4
|
-
* Handles window covering commands for blinds, shades, and curtains
|
|
5
|
-
*/
|
|
6
1
|
import { WindowCoveringBaseServer } from '@matter/main/behaviors/window-covering';
|
|
7
2
|
import { Status, StatusResponseError } from '@matter/main/types';
|
|
8
3
|
import { MatterStatus } from '../errors.js';
|
|
9
|
-
/**
|
|
10
|
-
* WindowCovering state property names
|
|
11
|
-
* These correspond to the Matter.js WindowCovering cluster attribute names
|
|
12
|
-
*/
|
|
13
4
|
const WindowCoveringStateProps = {
|
|
14
5
|
targetPositionLiftPercent100ths: 'targetPositionLiftPercent100ths',
|
|
15
6
|
currentPositionLiftPercent100ths: 'currentPositionLiftPercent100ths',
|
|
16
7
|
targetPositionTiltPercent100ths: 'targetPositionTiltPercent100ths',
|
|
17
8
|
currentPositionTiltPercent100ths: 'currentPositionTiltPercent100ths',
|
|
18
9
|
};
|
|
19
|
-
/**
|
|
20
|
-
* Custom WindowCovering Server that calls plugin handlers
|
|
21
|
-
*/
|
|
22
10
|
export class HomebridgeWindowCoveringServer extends WindowCoveringBaseServer {
|
|
23
11
|
static registry;
|
|
24
|
-
/**
|
|
25
|
-
* Set the behavior registry (called once during server initialization)
|
|
26
|
-
*/
|
|
27
12
|
static setRegistry(registry) {
|
|
28
13
|
this.registry = registry;
|
|
29
14
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Sync window covering position state to cache
|
|
32
|
-
* @param endpointId - The endpoint ID
|
|
33
|
-
* @param targetProperty - Target position property name (e.g., 'targetPositionLiftPercent100ths')
|
|
34
|
-
* @param currentProperty - Current position property name (e.g., 'currentPositionLiftPercent100ths')
|
|
35
|
-
*/
|
|
36
15
|
syncPositionStateToCache(endpointId, targetProperty, currentProperty) {
|
|
37
16
|
const currentState = this.state;
|
|
38
17
|
const stateUpdate = {};
|
|
@@ -47,21 +26,14 @@ export class HomebridgeWindowCoveringServer extends WindowCoveringBaseServer {
|
|
|
47
26
|
async upOrOpen() {
|
|
48
27
|
const endpointId = this.endpoint.id;
|
|
49
28
|
try {
|
|
50
|
-
// Execute user handler
|
|
51
29
|
await HomebridgeWindowCoveringServer.registry.executeHandler(endpointId, 'windowCovering', 'upOrOpen');
|
|
52
|
-
// Only reached if handler succeeded - update Matter state
|
|
53
30
|
await super.upOrOpen();
|
|
54
|
-
// Sync state to cache - window covering opening
|
|
55
31
|
this.syncPositionStateToCache(endpointId, WindowCoveringStateProps.targetPositionLiftPercent100ths, WindowCoveringStateProps.currentPositionLiftPercent100ths);
|
|
56
32
|
}
|
|
57
33
|
catch (error) {
|
|
58
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
59
|
-
// This sends a proper Matter protocol error response to the controller
|
|
60
34
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
61
35
|
throw error;
|
|
62
36
|
}
|
|
63
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
64
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
65
37
|
const message = error instanceof Error ? error.message : String(error);
|
|
66
38
|
throw new StatusResponseError(`Failed to open window covering: ${message}`, Status.Failure);
|
|
67
39
|
}
|
|
@@ -69,21 +41,14 @@ export class HomebridgeWindowCoveringServer extends WindowCoveringBaseServer {
|
|
|
69
41
|
async downOrClose() {
|
|
70
42
|
const endpointId = this.endpoint.id;
|
|
71
43
|
try {
|
|
72
|
-
// Execute user handler
|
|
73
44
|
await HomebridgeWindowCoveringServer.registry.executeHandler(endpointId, 'windowCovering', 'downOrClose');
|
|
74
|
-
// Only reached if handler succeeded - update Matter state
|
|
75
45
|
await super.downOrClose();
|
|
76
|
-
// Sync state to cache - window covering closing
|
|
77
46
|
this.syncPositionStateToCache(endpointId, WindowCoveringStateProps.targetPositionLiftPercent100ths, WindowCoveringStateProps.currentPositionLiftPercent100ths);
|
|
78
47
|
}
|
|
79
48
|
catch (error) {
|
|
80
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
81
|
-
// This sends a proper Matter protocol error response to the controller
|
|
82
49
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
83
50
|
throw error;
|
|
84
51
|
}
|
|
85
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
86
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
87
52
|
const message = error instanceof Error ? error.message : String(error);
|
|
88
53
|
throw new StatusResponseError(`Failed to close window covering: ${message}`, Status.Failure);
|
|
89
54
|
}
|
|
@@ -91,21 +56,14 @@ export class HomebridgeWindowCoveringServer extends WindowCoveringBaseServer {
|
|
|
91
56
|
async stopMotion() {
|
|
92
57
|
const endpointId = this.endpoint.id;
|
|
93
58
|
try {
|
|
94
|
-
// Execute user handler
|
|
95
59
|
await HomebridgeWindowCoveringServer.registry.executeHandler(endpointId, 'windowCovering', 'stopMotion');
|
|
96
|
-
// Only reached if handler succeeded - update Matter state
|
|
97
60
|
await super.stopMotion();
|
|
98
|
-
// Sync state to cache - window covering stopped
|
|
99
61
|
this.syncPositionStateToCache(endpointId, WindowCoveringStateProps.targetPositionLiftPercent100ths, WindowCoveringStateProps.currentPositionLiftPercent100ths);
|
|
100
62
|
}
|
|
101
63
|
catch (error) {
|
|
102
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
103
|
-
// This sends a proper Matter protocol error response to the controller
|
|
104
64
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
105
65
|
throw error;
|
|
106
66
|
}
|
|
107
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
108
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
109
67
|
const message = error instanceof Error ? error.message : String(error);
|
|
110
68
|
throw new StatusResponseError(`Failed to stop window covering: ${message}`, Status.Failure);
|
|
111
69
|
}
|
|
@@ -113,21 +71,14 @@ export class HomebridgeWindowCoveringServer extends WindowCoveringBaseServer {
|
|
|
113
71
|
async goToLiftPercentage(request) {
|
|
114
72
|
const endpointId = this.endpoint.id;
|
|
115
73
|
try {
|
|
116
|
-
// Execute user handler
|
|
117
74
|
await HomebridgeWindowCoveringServer.registry.executeHandler(endpointId, 'windowCovering', 'goToLiftPercentage', request);
|
|
118
|
-
// Only reached if handler succeeded - update Matter state
|
|
119
75
|
await super.goToLiftPercentage(request);
|
|
120
|
-
// Sync state to cache - window covering moving to target position
|
|
121
76
|
this.syncPositionStateToCache(endpointId, WindowCoveringStateProps.targetPositionLiftPercent100ths, WindowCoveringStateProps.currentPositionLiftPercent100ths);
|
|
122
77
|
}
|
|
123
78
|
catch (error) {
|
|
124
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
125
|
-
// This sends a proper Matter protocol error response to the controller
|
|
126
79
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
127
80
|
throw error;
|
|
128
81
|
}
|
|
129
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
130
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
131
82
|
const message = error instanceof Error ? error.message : String(error);
|
|
132
83
|
throw new StatusResponseError(`Failed to set window covering position: ${message}`, Status.Failure);
|
|
133
84
|
}
|
|
@@ -135,21 +86,14 @@ export class HomebridgeWindowCoveringServer extends WindowCoveringBaseServer {
|
|
|
135
86
|
async goToTiltPercentage(request) {
|
|
136
87
|
const endpointId = this.endpoint.id;
|
|
137
88
|
try {
|
|
138
|
-
// Execute user handler
|
|
139
89
|
await HomebridgeWindowCoveringServer.registry.executeHandler(endpointId, 'windowCovering', 'goToTiltPercentage', request);
|
|
140
|
-
// Only reached if handler succeeded - update Matter state
|
|
141
90
|
await super.goToTiltPercentage(request);
|
|
142
|
-
// Sync state to cache - window covering tilting to target angle
|
|
143
91
|
this.syncPositionStateToCache(endpointId, WindowCoveringStateProps.targetPositionTiltPercent100ths, WindowCoveringStateProps.currentPositionTiltPercent100ths);
|
|
144
92
|
}
|
|
145
93
|
catch (error) {
|
|
146
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
147
|
-
// This sends a proper Matter protocol error response to the controller
|
|
148
94
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
149
95
|
throw error;
|
|
150
96
|
}
|
|
151
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
152
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
153
97
|
const message = error instanceof Error ? error.message : String(error);
|
|
154
98
|
throw new StatusResponseError(`Failed to set window covering tilt: ${message}`, Status.Failure);
|
|
155
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowCoveringBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/WindowCoveringBehavior.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WindowCoveringBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/WindowCoveringBehavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Matter Behaviors Index
|
|
3
|
-
*
|
|
4
|
-
* Exports all behavior classes and the registry
|
|
5
|
-
*/
|
|
6
1
|
export { HomebridgeAirQualityServer } from './AirQualityBehavior.js';
|
|
7
2
|
export type { MatterAccessoryMap, MatterCommandHandler } from './BehaviorRegistry.js';
|
|
8
3
|
export { BehaviorRegistry } from './BehaviorRegistry.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EACL,sDAAsD,EACtD,uDAAuD,EACvD,6CAA6C,EAC7C,4CAA4C,EAC5C,4CAA4C,GAC7C,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,mCAAmC,EAAE,MAAM,kCAAkC,CAAA;AACtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Matter Behaviors Index
|
|
3
|
-
*
|
|
4
|
-
* Exports all behavior classes and the registry
|
|
5
|
-
*/
|
|
6
1
|
export { HomebridgeAirQualityServer } from './AirQualityBehavior.js';
|
|
7
2
|
export { BehaviorRegistry } from './BehaviorRegistry.js';
|
|
8
3
|
export { HomebridgeColorControlServer } from './ColorControlBehavior.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/matter/behaviors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/matter/behaviors/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EACL,sDAAsD,EACtD,uDAAuD,EACvD,6CAA6C,EAC7C,4CAA4C,EAC5C,4CAA4C,GAC7C,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,mCAAmC,EAAE,MAAM,kCAAkC,CAAA;AACtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -1,21 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Matter Configuration Validation
|
|
3
|
-
*
|
|
4
|
-
* Provides validation utilities and orchestration for Matter configuration objects.
|
|
5
|
-
* Includes both low-level validation primitives and high-level validation methods.
|
|
6
|
-
*/
|
|
7
1
|
import type { AccessoryConfig, PlatformConfig } from '../bridgeService.js';
|
|
8
|
-
/**
|
|
9
|
-
* Port validation result
|
|
10
|
-
*/
|
|
11
2
|
export interface PortValidationResult {
|
|
12
3
|
valid: boolean;
|
|
13
4
|
error?: string;
|
|
14
5
|
warning?: string;
|
|
15
6
|
}
|
|
16
|
-
/**
|
|
17
|
-
* Sanitization result
|
|
18
|
-
*/
|
|
19
7
|
export interface SanitizationResult<T> {
|
|
20
8
|
value: T;
|
|
21
9
|
warnings: string[];
|
|
@@ -25,57 +13,14 @@ export interface MatterConfigValidationResult {
|
|
|
25
13
|
errors: string[];
|
|
26
14
|
warnings: string[];
|
|
27
15
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Validate a Matter port number
|
|
30
|
-
*
|
|
31
|
-
* @param port - Port number to validate
|
|
32
|
-
* @param checkConflicts - Whether to check for known conflicting ports
|
|
33
|
-
* @returns Validation result with error/warning messages
|
|
34
|
-
*/
|
|
35
16
|
export declare function validatePort(port: number, checkConflicts?: boolean): PortValidationResult;
|
|
36
|
-
/**
|
|
37
|
-
* Sanitize a unique ID for Matter filesystem storage
|
|
38
|
-
*
|
|
39
|
-
* Removes colons from MAC addresses and converts to uppercase for consistency.
|
|
40
|
-
* Example: "AB:CD:EF:12:34:56" -> "ABCDEF123456"
|
|
41
|
-
*
|
|
42
|
-
* @param uniqueId - Unique identifier to sanitize (typically a MAC address)
|
|
43
|
-
* @returns Sanitized unique ID and any warnings
|
|
44
|
-
*/
|
|
45
17
|
export declare function sanitizeUniqueId(uniqueId: string): SanitizationResult<string>;
|
|
46
|
-
/**
|
|
47
|
-
* Truncate a string to a maximum length with warning
|
|
48
|
-
*
|
|
49
|
-
* @param value - String to truncate
|
|
50
|
-
* @param maxLength - Maximum allowed length
|
|
51
|
-
* @param fieldName - Name of the field (for warnings)
|
|
52
|
-
* @returns Truncated value and any warnings
|
|
53
|
-
*/
|
|
54
18
|
export declare function truncateString(value: string, maxLength: number, fieldName: string): SanitizationResult<string>;
|
|
55
|
-
/**
|
|
56
|
-
* Check for port conflicts between HAP and Matter ports
|
|
57
|
-
*
|
|
58
|
-
* @param hapPort - HAP bridge port
|
|
59
|
-
* @param matterPort - Matter bridge port
|
|
60
|
-
* @returns Warning message if ports are too close, undefined otherwise
|
|
61
|
-
*/
|
|
62
19
|
export declare function checkPortProximity(hapPort: number, matterPort: number): string | undefined;
|
|
63
|
-
/**
|
|
64
|
-
* Validate Matter configuration for production readiness
|
|
65
|
-
*/
|
|
66
20
|
export declare class MatterConfigValidator {
|
|
67
|
-
/**
|
|
68
|
-
* Validate a Matter configuration object
|
|
69
|
-
*/
|
|
70
21
|
static validate(config: Record<string, unknown>): MatterConfigValidationResult;
|
|
71
22
|
private static validatePort;
|
|
72
|
-
/**
|
|
73
|
-
* Validate child Matter configuration (_bridge.matter property)
|
|
74
|
-
*/
|
|
75
23
|
static validateChildMatterConfig(config: PlatformConfig | AccessoryConfig, configType: 'platform' | 'accessory', identifier: string): MatterConfigValidationResult;
|
|
76
|
-
/**
|
|
77
|
-
* Validate all child Matter configurations in a config
|
|
78
|
-
*/
|
|
79
24
|
static validateAllChildMatterConfigs(platforms: PlatformConfig[], accessories: AccessoryConfig[]): MatterConfigValidationResult;
|
|
80
25
|
}
|
|
81
26
|
//# sourceMappingURL=configValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configValidator.d.ts","sourceRoot":"","sources":["../../src/matter/configValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configValidator.d.ts","sourceRoot":"","sources":["../../src/matter/configValidator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAS1E,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAKD,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC,CAAA;IACR,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAaD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,oBAAoB,CAqBvF;AAWD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAuB7E;AAUD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAAC,MAAM,CAAC,CAa5B;AASD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ1F;AASD,qBAAa,qBAAqB;IAIhC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,4BAA4B;IAyB9E,OAAO,CAAC,MAAM,CAAC,YAAY;IAoB3B,MAAM,CAAC,yBAAyB,CAC9B,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,UAAU,EAAE,UAAU,GAAG,WAAW,EACpC,UAAU,EAAE,MAAM,GACjB,4BAA4B;IAsD/B,MAAM,CAAC,6BAA6B,CAClC,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,EAAE,eAAe,EAAE,GAC7B,4BAA4B;CA2DhC"}
|
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Matter Configuration Validation
|
|
3
|
-
*
|
|
4
|
-
* Provides validation utilities and orchestration for Matter configuration objects.
|
|
5
|
-
* Includes both low-level validation primitives and high-level validation methods.
|
|
6
|
-
*/
|
|
7
1
|
import { Logger } from '../logger.js';
|
|
8
2
|
const log = Logger.withPrefix('Matter/Config');
|
|
9
|
-
// ============================================================================
|
|
10
|
-
// Low-level validation utilities
|
|
11
|
-
// ============================================================================
|
|
12
|
-
/**
|
|
13
|
-
* Validate a Matter port number
|
|
14
|
-
*
|
|
15
|
-
* @param port - Port number to validate
|
|
16
|
-
* @param checkConflicts - Whether to check for known conflicting ports
|
|
17
|
-
* @returns Validation result with error/warning messages
|
|
18
|
-
*/
|
|
19
3
|
export function validatePort(port, checkConflicts = false) {
|
|
20
4
|
if (!Number.isInteger(port)) {
|
|
21
5
|
return { valid: false, error: `Port must be an integer (got: ${port})` };
|
|
@@ -23,9 +7,8 @@ export function validatePort(port, checkConflicts = false) {
|
|
|
23
7
|
if (port < 1025 || port > 65534) {
|
|
24
8
|
return { valid: false, error: `Port must be between 1025 and 65534 (got: ${port})` };
|
|
25
9
|
}
|
|
26
|
-
// Check for common conflicts
|
|
27
10
|
if (checkConflicts) {
|
|
28
|
-
const conflictPorts = [5353, 8080, 8443];
|
|
11
|
+
const conflictPorts = [5353, 8080, 8443];
|
|
29
12
|
if (conflictPorts.includes(port)) {
|
|
30
13
|
return {
|
|
31
14
|
valid: true,
|
|
@@ -35,15 +18,6 @@ export function validatePort(port, checkConflicts = false) {
|
|
|
35
18
|
}
|
|
36
19
|
return { valid: true };
|
|
37
20
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Sanitize a unique ID for Matter filesystem storage
|
|
40
|
-
*
|
|
41
|
-
* Removes colons from MAC addresses and converts to uppercase for consistency.
|
|
42
|
-
* Example: "AB:CD:EF:12:34:56" -> "ABCDEF123456"
|
|
43
|
-
*
|
|
44
|
-
* @param uniqueId - Unique identifier to sanitize (typically a MAC address)
|
|
45
|
-
* @returns Sanitized unique ID and any warnings
|
|
46
|
-
*/
|
|
47
21
|
export function sanitizeUniqueId(uniqueId) {
|
|
48
22
|
const warnings = [];
|
|
49
23
|
const original = uniqueId;
|
|
@@ -53,7 +27,6 @@ export function sanitizeUniqueId(uniqueId) {
|
|
|
53
27
|
warnings: ['uniqueId is empty after trimming'],
|
|
54
28
|
};
|
|
55
29
|
}
|
|
56
|
-
// Remove colons and convert to uppercase for Matter storage paths
|
|
57
30
|
const sanitized = uniqueId.replace(/:/g, '').toUpperCase();
|
|
58
31
|
if (sanitized !== original) {
|
|
59
32
|
warnings.push(`uniqueId was sanitized from "${original}" to "${sanitized}"`);
|
|
@@ -63,14 +36,6 @@ export function sanitizeUniqueId(uniqueId) {
|
|
|
63
36
|
}
|
|
64
37
|
return { value: sanitized, warnings };
|
|
65
38
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Truncate a string to a maximum length with warning
|
|
68
|
-
*
|
|
69
|
-
* @param value - String to truncate
|
|
70
|
-
* @param maxLength - Maximum allowed length
|
|
71
|
-
* @param fieldName - Name of the field (for warnings)
|
|
72
|
-
* @returns Truncated value and any warnings
|
|
73
|
-
*/
|
|
74
39
|
export function truncateString(value, maxLength, fieldName) {
|
|
75
40
|
const warnings = [];
|
|
76
41
|
if (value.length > maxLength) {
|
|
@@ -83,13 +48,6 @@ export function truncateString(value, maxLength, fieldName) {
|
|
|
83
48
|
}
|
|
84
49
|
return { value, warnings };
|
|
85
50
|
}
|
|
86
|
-
/**
|
|
87
|
-
* Check for port conflicts between HAP and Matter ports
|
|
88
|
-
*
|
|
89
|
-
* @param hapPort - HAP bridge port
|
|
90
|
-
* @param matterPort - Matter bridge port
|
|
91
|
-
* @returns Warning message if ports are too close, undefined otherwise
|
|
92
|
-
*/
|
|
93
51
|
export function checkPortProximity(hapPort, matterPort) {
|
|
94
52
|
const MIN_PORT_SEPARATION = 10;
|
|
95
53
|
if (Math.abs(hapPort - matterPort) < MIN_PORT_SEPARATION) {
|
|
@@ -97,23 +55,13 @@ export function checkPortProximity(hapPort, matterPort) {
|
|
|
97
55
|
}
|
|
98
56
|
return undefined;
|
|
99
57
|
}
|
|
100
|
-
// ============================================================================
|
|
101
|
-
// High-level validation orchestration
|
|
102
|
-
// ============================================================================
|
|
103
|
-
/**
|
|
104
|
-
* Validate Matter configuration for production readiness
|
|
105
|
-
*/
|
|
106
58
|
export class MatterConfigValidator {
|
|
107
|
-
/**
|
|
108
|
-
* Validate a Matter configuration object
|
|
109
|
-
*/
|
|
110
59
|
static validate(config) {
|
|
111
60
|
const result = {
|
|
112
61
|
isValid: true,
|
|
113
62
|
errors: [],
|
|
114
63
|
warnings: [],
|
|
115
64
|
};
|
|
116
|
-
// Validate port configuration
|
|
117
65
|
this.validatePort(config, result);
|
|
118
66
|
result.isValid = result.errors.length === 0;
|
|
119
67
|
if (result.warnings.length > 0) {
|
|
@@ -143,22 +91,17 @@ export class MatterConfigValidator {
|
|
|
143
91
|
}
|
|
144
92
|
}
|
|
145
93
|
}
|
|
146
|
-
/**
|
|
147
|
-
* Validate child Matter configuration (_bridge.matter property)
|
|
148
|
-
*/
|
|
149
94
|
static validateChildMatterConfig(config, configType, identifier) {
|
|
150
95
|
const result = {
|
|
151
96
|
isValid: true,
|
|
152
97
|
errors: [],
|
|
153
98
|
warnings: [],
|
|
154
99
|
};
|
|
155
|
-
// If no _bridge.matter property, no validation needed
|
|
156
100
|
if (!config._bridge?.matter) {
|
|
157
101
|
return result;
|
|
158
102
|
}
|
|
159
103
|
const matterConfig = config._bridge.matter;
|
|
160
104
|
const prefix = `Child Matter bridge for ${configType} "${identifier}"`;
|
|
161
|
-
// Validate port if specified
|
|
162
105
|
if (matterConfig.port !== undefined) {
|
|
163
106
|
const validation = validatePort(matterConfig.port, false);
|
|
164
107
|
if (!validation.valid) {
|
|
@@ -169,9 +112,7 @@ export class MatterConfigValidator {
|
|
|
169
112
|
else {
|
|
170
113
|
result.warnings.push(`${prefix}: No port specified. Port will be auto-allocated.`);
|
|
171
114
|
}
|
|
172
|
-
// Check for port conflicts with HAP bridge
|
|
173
115
|
if (config._bridge && config._bridge.matter) {
|
|
174
|
-
// Ensure ports don't conflict if both HAP and Matter are configured
|
|
175
116
|
if (config._bridge.port && matterConfig.port) {
|
|
176
117
|
const proximityWarning = checkPortProximity(config._bridge.port, matterConfig.port);
|
|
177
118
|
if (proximityWarning) {
|
|
@@ -179,7 +120,6 @@ export class MatterConfigValidator {
|
|
|
179
120
|
}
|
|
180
121
|
}
|
|
181
122
|
}
|
|
182
|
-
// Log validation results
|
|
183
123
|
if (result.errors.length > 0) {
|
|
184
124
|
log.error(`${prefix} validation errors:`);
|
|
185
125
|
result.errors.forEach(error => log.error(` - ${error}`));
|
|
@@ -190,9 +130,6 @@ export class MatterConfigValidator {
|
|
|
190
130
|
}
|
|
191
131
|
return result;
|
|
192
132
|
}
|
|
193
|
-
/**
|
|
194
|
-
* Validate all child Matter configurations in a config
|
|
195
|
-
*/
|
|
196
133
|
static validateAllChildMatterConfigs(platforms, accessories) {
|
|
197
134
|
const result = {
|
|
198
135
|
isValid: true,
|
|
@@ -200,14 +137,12 @@ export class MatterConfigValidator {
|
|
|
200
137
|
warnings: [],
|
|
201
138
|
};
|
|
202
139
|
const usedPorts = new Set();
|
|
203
|
-
// Validate platform _bridge.matter configs
|
|
204
140
|
for (const platform of platforms) {
|
|
205
141
|
if (platform._bridge?.matter) {
|
|
206
142
|
const validation = this.validateChildMatterConfig(platform, 'platform', platform.platform || 'unknown');
|
|
207
143
|
result.errors.push(...validation.errors);
|
|
208
144
|
result.warnings.push(...validation.warnings);
|
|
209
145
|
result.isValid = result.isValid && validation.isValid;
|
|
210
|
-
// Check for port conflicts
|
|
211
146
|
if (platform._bridge.matter.port) {
|
|
212
147
|
if (usedPorts.has(platform._bridge.matter.port)) {
|
|
213
148
|
result.errors.push(`Duplicate Matter port ${platform._bridge.matter.port} detected. Each Matter bridge must use a unique port.`);
|
|
@@ -217,14 +152,12 @@ export class MatterConfigValidator {
|
|
|
217
152
|
}
|
|
218
153
|
}
|
|
219
154
|
}
|
|
220
|
-
// Validate accessory _bridge.matter configs
|
|
221
155
|
for (const accessory of accessories) {
|
|
222
156
|
if (accessory._bridge?.matter) {
|
|
223
157
|
const validation = this.validateChildMatterConfig(accessory, 'accessory', accessory.accessory || 'unknown');
|
|
224
158
|
result.errors.push(...validation.errors);
|
|
225
159
|
result.warnings.push(...validation.warnings);
|
|
226
160
|
result.isValid = result.isValid && validation.isValid;
|
|
227
|
-
// Check for port conflicts
|
|
228
161
|
if (accessory._bridge.matter.port) {
|
|
229
162
|
if (usedPorts.has(accessory._bridge.matter.port)) {
|
|
230
163
|
result.errors.push(`Duplicate Matter port ${accessory._bridge.matter.port} detected. Each Matter bridge must use a unique port.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/matter/configValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/matter/configValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simplified Matter Error Handler
|
|
3
|
-
*
|
|
4
|
-
* Provides basic error categorization and logging without the complexity
|
|
5
|
-
* of circuit breakers, recovery callbacks, and exponential backoff.
|
|
6
|
-
*
|
|
7
|
-
* This simplified version is more appropriate for alpha/beta releases.
|
|
8
|
-
* Advanced features can be added later based on production error patterns.
|
|
9
|
-
*/
|
|
10
1
|
import { MatterError } from './types.js';
|
|
11
|
-
/**
|
|
12
|
-
* Simplified Matter Error Handler
|
|
13
|
-
* Focuses on proper error categorization and user-friendly logging
|
|
14
|
-
*/
|
|
15
2
|
export declare class MatterErrorHandler {
|
|
16
3
|
private static instance;
|
|
17
4
|
private constructor();
|
|
18
5
|
static getInstance(): MatterErrorHandler;
|
|
19
|
-
/**
|
|
20
|
-
* Handle a Matter error with appropriate logging
|
|
21
|
-
*/
|
|
22
6
|
handleError(error: Error | MatterError, context?: string): Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Categorize a generic error into a typed MatterError
|
|
25
|
-
*/
|
|
26
7
|
private categorizeError;
|
|
27
|
-
/**
|
|
28
|
-
* Log error with appropriate severity and user-friendly messages
|
|
29
|
-
*/
|
|
30
8
|
private logError;
|
|
31
9
|
}
|
|
32
10
|
export declare const errorHandler: MatterErrorHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/matter/errorHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/matter/errorHandler.ts"],"names":[],"mappings":"AAWA,OAAO,EAGL,WAAW,EAIZ,MAAM,YAAY,CAAA;AAQnB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAE3C,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,kBAAkB;IAUlC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9E,OAAO,CAAC,eAAe;IA4EvB,OAAO,CAAC,QAAQ;CA6BjB;AAGD,eAAO,MAAM,YAAY,oBAAmC,CAAA"}
|
|
@@ -1,19 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simplified Matter Error Handler
|
|
3
|
-
*
|
|
4
|
-
* Provides basic error categorization and logging without the complexity
|
|
5
|
-
* of circuit breakers, recovery callbacks, and exponential backoff.
|
|
6
|
-
*
|
|
7
|
-
* This simplified version is more appropriate for alpha/beta releases.
|
|
8
|
-
* Advanced features can be added later based on production error patterns.
|
|
9
|
-
*/
|
|
10
1
|
import { Logger } from '../logger.js';
|
|
11
2
|
import { MatterCommissioningError, MatterDeviceError, MatterError, MatterErrorType, MatterNetworkError, MatterStorageError, } from './types.js';
|
|
12
3
|
const log = Logger.withPrefix('Matter/Errors');
|
|
13
|
-
/**
|
|
14
|
-
* Simplified Matter Error Handler
|
|
15
|
-
* Focuses on proper error categorization and user-friendly logging
|
|
16
|
-
*/
|
|
17
4
|
export class MatterErrorHandler {
|
|
18
5
|
static instance;
|
|
19
6
|
constructor() { }
|
|
@@ -23,55 +10,38 @@ export class MatterErrorHandler {
|
|
|
23
10
|
}
|
|
24
11
|
return MatterErrorHandler.instance;
|
|
25
12
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Handle a Matter error with appropriate logging
|
|
28
|
-
*/
|
|
29
13
|
async handleError(error, context) {
|
|
30
14
|
const matterError = this.categorizeError(error, context);
|
|
31
15
|
this.logError(matterError);
|
|
32
16
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Categorize a generic error into a typed MatterError
|
|
35
|
-
*/
|
|
36
17
|
categorizeError(error, context) {
|
|
37
|
-
// If already a typed MatterError, return it
|
|
38
18
|
if (error instanceof MatterError) {
|
|
39
19
|
return error;
|
|
40
20
|
}
|
|
41
21
|
const errorMessage = error.message.toLowerCase();
|
|
42
|
-
// Network errors (port conflicts, connection failures)
|
|
43
22
|
if (errorMessage.includes('eaddrinuse')) {
|
|
44
23
|
return new MatterNetworkError(`Port is already in use: ${error.message}`, { code: 'PORT_IN_USE', recoverable: false });
|
|
45
24
|
}
|
|
46
25
|
if (errorMessage.includes('econnrefused') || errorMessage.includes('etimedout')) {
|
|
47
26
|
return new MatterNetworkError(`Connection failed: ${error.message}`, { code: 'CONNECTION_FAILED', recoverable: true });
|
|
48
27
|
}
|
|
49
|
-
// Commissioning errors
|
|
50
28
|
if (errorMessage.includes('commissioning') || errorMessage.includes('pairing')) {
|
|
51
29
|
return new MatterCommissioningError(`Commissioning error: ${error.message}`, { recoverable: false });
|
|
52
30
|
}
|
|
53
|
-
// Storage errors
|
|
54
31
|
if (errorMessage.includes('storage') || errorMessage.includes('enoent') || errorMessage.includes('corrupted')) {
|
|
55
32
|
return new MatterStorageError(`Storage error: ${error.message}`, { recoverable: true });
|
|
56
33
|
}
|
|
57
|
-
// Configuration errors
|
|
58
34
|
if (errorMessage.includes('config') || errorMessage.includes('invalid')) {
|
|
59
35
|
return new MatterError(`Configuration error: ${error.message}`, 'CONFIGURATION_ERROR', { recoverable: false, type: MatterErrorType.CONFIGURATION });
|
|
60
36
|
}
|
|
61
|
-
// Device sync errors (context-based)
|
|
62
37
|
if (context?.includes('sync') || context?.includes('device')) {
|
|
63
38
|
return new MatterDeviceError(`Device sync error: ${error.message}`, { recoverable: true, context });
|
|
64
39
|
}
|
|
65
|
-
// Server errors (context-based)
|
|
66
40
|
if (context?.includes('server')) {
|
|
67
41
|
return new MatterError(`Server error: ${error.message}`, 'SERVER_ERROR', { recoverable: true, type: MatterErrorType.SERVER, context });
|
|
68
42
|
}
|
|
69
|
-
// Default to unknown error
|
|
70
43
|
return new MatterError(error.message || 'Unknown Matter error', 'UNKNOWN_ERROR', { recoverable: false, type: MatterErrorType.UNKNOWN, originalError: error });
|
|
71
44
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Log error with appropriate severity and user-friendly messages
|
|
74
|
-
*/
|
|
75
45
|
logError(error) {
|
|
76
46
|
if (error instanceof MatterNetworkError) {
|
|
77
47
|
if (error.details?.code === 'PORT_IN_USE') {
|
|
@@ -102,12 +72,10 @@ export class MatterErrorHandler {
|
|
|
102
72
|
else {
|
|
103
73
|
log.error(`Matter error: ${error.message}`);
|
|
104
74
|
}
|
|
105
|
-
// Log stack trace for non-recoverable errors
|
|
106
75
|
if (!error.recoverable && error.stack) {
|
|
107
76
|
log.debug('Stack trace:', error.stack);
|
|
108
77
|
}
|
|
109
78
|
}
|
|
110
79
|
}
|
|
111
|
-
// Export singleton instance
|
|
112
80
|
export const errorHandler = MatterErrorHandler.getInstance();
|
|
113
81
|
//# sourceMappingURL=errorHandler.js.map
|