homebridge 2.0.0-beta.39 → 2.0.0-beta.40
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/childBridgeFork.d.ts +0 -5
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +4 -9
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +7 -0
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js.map +1 -1
- package/dist/index.d.ts +24 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -4
- package/dist/index.js.map +1 -1
- package/dist/ipcService.d.ts +2 -4
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/ipcService.js +0 -2
- package/dist/ipcService.js.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.d.ts +2 -2
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.js +10 -8
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -1
- package/dist/matter/MatterBridgeManager.d.ts +0 -4
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -1
- package/dist/matter/MatterBridgeManager.js +0 -13
- package/dist/matter/MatterBridgeManager.js.map +1 -1
- package/dist/matter/behaviors/ColorControlBehavior.d.ts +6 -7
- package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ColorControlBehavior.js +146 -83
- package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.d.ts +2 -3
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.js +46 -24
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.spec.js +24 -12
- package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +1 -1
- package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/FanControlBehavior.js +41 -15
- package/dist/matter/behaviors/FanControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/IdentifyBehavior.d.ts +1 -2
- package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/IdentifyBehavior.js +20 -6
- package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -1
- package/dist/matter/behaviors/IdentifyBehavior.spec.js +3 -3
- package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +1 -1
- package/dist/matter/behaviors/LevelControlBehavior.d.ts +5 -6
- package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/LevelControlBehavior.js +100 -37
- package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/LevelControlBehavior.spec.js +15 -10
- package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +1 -1
- package/dist/matter/behaviors/OnOffBehavior.d.ts +3 -4
- package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/OnOffBehavior.js +64 -32
- package/dist/matter/behaviors/OnOffBehavior.js.map +1 -1
- package/dist/matter/behaviors/OnOffBehavior.spec.js +27 -15
- package/dist/matter/behaviors/OnOffBehavior.spec.js.map +1 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +1 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.js +20 -6
- package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +3 -2
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +1 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +3 -4
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js +60 -23
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +1 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.js +20 -6
- package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +3 -2
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +1 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +2 -3
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.js +38 -12
- package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +3 -2
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +1 -1
- package/dist/matter/behaviors/ThermostatBehavior.d.ts +1 -2
- package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ThermostatBehavior.js +82 -34
- package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +5 -6
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.js +102 -50
- package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -1
- package/dist/matter/errors.d.ts +178 -0
- package/dist/matter/errors.d.ts.map +1 -0
- package/dist/matter/errors.js +200 -0
- package/dist/matter/errors.js.map +1 -0
- package/dist/matter/index.d.ts +1 -0
- package/dist/matter/index.d.ts.map +1 -1
- package/dist/matter/index.js +1 -0
- package/dist/matter/index.js.map +1 -1
- package/dist/matter/server.d.ts +9 -16
- package/dist/matter/server.d.ts.map +1 -1
- package/dist/matter/server.js +60 -142
- package/dist/matter/server.js.map +1 -1
- package/dist/matter/types.d.ts +11 -50
- package/dist/matter/types.d.ts.map +1 -1
- package/dist/matter/types.js +0 -17
- package/dist/matter/types.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +0 -7
- package/dist/server.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LevelControlBehavior.spec.js","sourceRoot":"","sources":["../../../src/matter/behaviors/LevelControlBehavior.spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"LevelControlBehavior.spec.js","sourceRoot":"","sources":["../../../src/matter/behaviors/LevelControlBehavior.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles on/off commands for lights, switches, and outlets
|
|
5
5
|
*/
|
|
6
|
-
import type { MaybePromise } from '@matter/main';
|
|
7
6
|
import type { BehaviorRegistry } from './BehaviorRegistry.js';
|
|
8
7
|
import { OnOffServer } from '@matter/main/behaviors/on-off';
|
|
9
8
|
export declare class HomebridgeOnOffServer extends OnOffServer {
|
|
@@ -15,14 +14,14 @@ export declare class HomebridgeOnOffServer extends OnOffServer {
|
|
|
15
14
|
/**
|
|
16
15
|
* Handle 'on' command
|
|
17
16
|
*/
|
|
18
|
-
on():
|
|
17
|
+
on(): Promise<void>;
|
|
19
18
|
/**
|
|
20
19
|
* Handle 'off' command
|
|
21
20
|
*/
|
|
22
|
-
off():
|
|
21
|
+
off(): Promise<void>;
|
|
23
22
|
/**
|
|
24
23
|
* Handle 'toggle' command
|
|
25
24
|
*/
|
|
26
|
-
toggle():
|
|
25
|
+
toggle(): Promise<void>;
|
|
27
26
|
}
|
|
28
27
|
//# sourceMappingURL=OnOffBehavior.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnOffBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/OnOffBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"OnOffBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/OnOffBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAK3D,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIpD;;OAEG;IACY,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BlC;;OAEG;IACY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BnC;;OAEG;IACY,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CA2BvC"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Handles on/off commands for lights, switches, and outlets
|
|
5
5
|
*/
|
|
6
6
|
import { OnOffServer } from '@matter/main/behaviors/on-off';
|
|
7
|
+
import { Status, StatusResponseError } from '@matter/main/types';
|
|
8
|
+
import { MatterStatus } from '../errors.js';
|
|
7
9
|
export class HomebridgeOnOffServer extends OnOffServer {
|
|
8
10
|
static registry;
|
|
9
11
|
/**
|
|
@@ -15,49 +17,79 @@ export class HomebridgeOnOffServer extends OnOffServer {
|
|
|
15
17
|
/**
|
|
16
18
|
* Handle 'on' command
|
|
17
19
|
*/
|
|
18
|
-
on() {
|
|
20
|
+
async on() {
|
|
19
21
|
const endpointId = this.endpoint.id;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
try {
|
|
23
|
+
// Execute user handler
|
|
24
|
+
await HomebridgeOnOffServer.registry.executeHandler(endpointId, 'onOff', 'on');
|
|
25
|
+
// Only reached if handler succeeded - update Matter state
|
|
26
|
+
await super.on();
|
|
27
|
+
// Sync state to cache
|
|
28
|
+
HomebridgeOnOffServer.registry.syncStateToCache(endpointId, 'onOff', { onOff: true });
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
32
|
+
// This sends a proper Matter protocol error response to the controller
|
|
33
|
+
if (MatterStatus.isMatterProtocolError(error)) {
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
// For other errors, wrap in appropriate StatusResponseError
|
|
37
|
+
// This prevents the endpoint from crashing and keeps the device online
|
|
38
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
39
|
+
throw new StatusResponseError(`Failed to turn on: ${message}`, Status.Failure);
|
|
40
|
+
}
|
|
29
41
|
}
|
|
30
42
|
/**
|
|
31
43
|
* Handle 'off' command
|
|
32
44
|
*/
|
|
33
|
-
off() {
|
|
45
|
+
async off() {
|
|
34
46
|
const endpointId = this.endpoint.id;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
try {
|
|
48
|
+
// Execute user handler
|
|
49
|
+
await HomebridgeOnOffServer.registry.executeHandler(endpointId, 'onOff', 'off');
|
|
50
|
+
// Only reached if handler succeeded - update Matter state
|
|
51
|
+
await super.off();
|
|
52
|
+
// Sync state to cache
|
|
53
|
+
HomebridgeOnOffServer.registry.syncStateToCache(endpointId, 'onOff', { onOff: false });
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
57
|
+
// This sends a proper Matter protocol error response to the controller
|
|
58
|
+
if (MatterStatus.isMatterProtocolError(error)) {
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
// For other errors, wrap in appropriate StatusResponseError
|
|
62
|
+
// This prevents the endpoint from crashing and keeps the device online
|
|
63
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
64
|
+
throw new StatusResponseError(`Failed to turn off: ${message}`, Status.Failure);
|
|
65
|
+
}
|
|
44
66
|
}
|
|
45
67
|
/**
|
|
46
68
|
* Handle 'toggle' command
|
|
47
69
|
*/
|
|
48
|
-
toggle() {
|
|
70
|
+
async toggle() {
|
|
49
71
|
const endpointId = this.endpoint.id;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
try {
|
|
73
|
+
// Execute user handler
|
|
74
|
+
await HomebridgeOnOffServer.registry.executeHandler(endpointId, 'onOff', 'toggle');
|
|
75
|
+
// Only reached if handler succeeded - update Matter state
|
|
76
|
+
await super.toggle();
|
|
77
|
+
// Sync state to cache (toggle changes the value)
|
|
78
|
+
const currentState = this.state;
|
|
79
|
+
const newState = !currentState.onOff;
|
|
80
|
+
HomebridgeOnOffServer.registry.syncStateToCache(endpointId, 'onOff', { onOff: newState });
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
84
|
+
// This sends a proper Matter protocol error response to the controller
|
|
85
|
+
if (MatterStatus.isMatterProtocolError(error)) {
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
// For other errors, wrap in appropriate StatusResponseError
|
|
89
|
+
// This prevents the endpoint from crashing and keeps the device online
|
|
90
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
91
|
+
throw new StatusResponseError(`Failed to toggle: ${message}`, Status.Failure);
|
|
92
|
+
}
|
|
61
93
|
}
|
|
62
94
|
}
|
|
63
95
|
//# sourceMappingURL=OnOffBehavior.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnOffBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/OnOffBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"OnOffBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/OnOffBehavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,15 +54,21 @@ describe('homebridgeOnOffServer', () => {
|
|
|
54
54
|
await behavior.on();
|
|
55
55
|
expect(mockRegistry.syncStateToCache).toHaveBeenCalledWith('test-endpoint-123', 'onOff', { onOff: true });
|
|
56
56
|
});
|
|
57
|
-
it('should
|
|
57
|
+
it('should propagate handler execution errors', async () => {
|
|
58
58
|
mockRegistry.executeHandler = vi.fn().mockRejectedValue(new Error('Handler failed'));
|
|
59
|
-
// Should
|
|
60
|
-
expect(
|
|
59
|
+
// Should throw/reject when handler fails
|
|
60
|
+
await expect(behavior.on()).rejects.toThrow('Handler failed');
|
|
61
61
|
});
|
|
62
|
-
it('should sync state
|
|
62
|
+
it('should not sync state if handler fails', async () => {
|
|
63
63
|
mockRegistry.executeHandler = vi.fn().mockRejectedValue(new Error('Handler failed'));
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
try {
|
|
65
|
+
await behavior.on();
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Expected to throw
|
|
69
|
+
}
|
|
70
|
+
// State should NOT be synced when handler fails
|
|
71
|
+
expect(mockRegistry.syncStateToCache).not.toHaveBeenCalled();
|
|
66
72
|
});
|
|
67
73
|
});
|
|
68
74
|
describe('off', () => {
|
|
@@ -74,15 +80,21 @@ describe('homebridgeOnOffServer', () => {
|
|
|
74
80
|
await behavior.off();
|
|
75
81
|
expect(mockRegistry.syncStateToCache).toHaveBeenCalledWith('test-endpoint-123', 'onOff', { onOff: false });
|
|
76
82
|
});
|
|
77
|
-
it('should
|
|
83
|
+
it('should propagate handler execution errors', async () => {
|
|
78
84
|
mockRegistry.executeHandler = vi.fn().mockRejectedValue(new Error('Handler failed'));
|
|
79
|
-
// Should
|
|
80
|
-
expect(
|
|
85
|
+
// Should throw/reject when handler fails
|
|
86
|
+
await expect(behavior.off()).rejects.toThrow('Handler failed');
|
|
81
87
|
});
|
|
82
|
-
it('should sync state
|
|
88
|
+
it('should not sync state if handler fails', async () => {
|
|
83
89
|
mockRegistry.executeHandler = vi.fn().mockRejectedValue(new Error('Handler failed'));
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
try {
|
|
91
|
+
await behavior.off();
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Expected to throw
|
|
95
|
+
}
|
|
96
|
+
// State should NOT be synced when handler fails
|
|
97
|
+
expect(mockRegistry.syncStateToCache).not.toHaveBeenCalled();
|
|
86
98
|
});
|
|
87
99
|
});
|
|
88
100
|
describe('toggle', () => {
|
|
@@ -106,10 +118,10 @@ describe('homebridgeOnOffServer', () => {
|
|
|
106
118
|
// undefined -> true (! undefined = true)
|
|
107
119
|
expect(mockRegistry.syncStateToCache).toHaveBeenCalledWith('test-endpoint-123', 'onOff', { onOff: true });
|
|
108
120
|
});
|
|
109
|
-
it('should
|
|
121
|
+
it('should propagate handler execution errors', async () => {
|
|
110
122
|
mockRegistry.executeHandler = vi.fn().mockRejectedValue(new Error('Handler failed'));
|
|
111
|
-
// Should
|
|
112
|
-
expect(
|
|
123
|
+
// Should throw/reject when handler fails
|
|
124
|
+
await expect(behavior.toggle()).rejects.toThrow('Handler failed');
|
|
113
125
|
});
|
|
114
126
|
});
|
|
115
127
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnOffBehavior.spec.js","sourceRoot":"","sources":["../../../src/matter/behaviors/OnOffBehavior.spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"OnOffBehavior.spec.js","sourceRoot":"","sources":["../../../src/matter/behaviors/OnOffBehavior.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,6 @@ export declare class HomebridgeRvcCleanModeServer extends RvcCleanModeServer {
|
|
|
14
14
|
* Set the behavior registry (called once during server initialization)
|
|
15
15
|
*/
|
|
16
16
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
17
|
-
changeToMode(request: any): any
|
|
17
|
+
changeToMode(request: any): Promise<any>;
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=RvcCleanModeBehavior.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RvcCleanModeBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcCleanModeBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"RvcCleanModeBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcCleanModeBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAK1E;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,kBAAkB;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIrC,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAsBxD"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Handles robotic vacuum cleaner cleaning mode changes
|
|
5
5
|
*/
|
|
6
6
|
import { RvcCleanModeServer } from '@matter/main/behaviors/rvc-clean-mode';
|
|
7
|
+
import { Status, StatusResponseError } from '@matter/main/types';
|
|
8
|
+
import { MatterStatus } from '../errors.js';
|
|
7
9
|
/**
|
|
8
10
|
* Custom RvcCleanMode Server that calls plugin handlers
|
|
9
11
|
*/
|
|
@@ -15,13 +17,25 @@ export class HomebridgeRvcCleanModeServer extends RvcCleanModeServer {
|
|
|
15
17
|
static setRegistry(registry) {
|
|
16
18
|
this.registry = registry;
|
|
17
19
|
}
|
|
18
|
-
changeToMode(request) {
|
|
20
|
+
async changeToMode(request) {
|
|
19
21
|
const endpointId = this.endpoint.id;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
try {
|
|
23
|
+
// Execute user handler
|
|
24
|
+
await HomebridgeRvcCleanModeServer.registry.executeHandler(endpointId, 'rvcCleanMode', 'changeToMode', request);
|
|
25
|
+
// Only reached if handler succeeded - call base implementation
|
|
26
|
+
return await super.changeToMode(request);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
30
|
+
// This sends a proper Matter protocol error response to the controller
|
|
31
|
+
if (MatterStatus.isMatterProtocolError(error)) {
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
// For other errors, wrap in appropriate StatusResponseError
|
|
35
|
+
// This prevents the endpoint from crashing and keeps the device online
|
|
36
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
37
|
+
throw new StatusResponseError(`Failed to change clean mode: ${message}`, Status.Failure);
|
|
38
|
+
}
|
|
25
39
|
}
|
|
26
40
|
}
|
|
27
41
|
//# sourceMappingURL=RvcCleanModeBehavior.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RvcCleanModeBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcCleanModeBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"RvcCleanModeBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcCleanModeBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,kBAAkB;IAC1D,MAAM,CAAC,QAAQ,CAAkB;IAEzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAA0B;QAC3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAEQ,KAAK,CAAC,YAAY,CAAC,OAAY;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;QAEnC,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,4BAA4B,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;YAE/G,+DAA+D;YAC/D,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0EAA0E;YAC1E,uEAAuE;YACvE,IAAI,YAAY,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAM,KAAK,CAAA;YACb,CAAC;YAED,4DAA4D;YAC5D,uEAAuE;YACvE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,OAAO,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1F,CAAC;IACH,CAAC;CACF"}
|
|
@@ -46,10 +46,11 @@ describe('homebridgeRvcCleanModeServer', () => {
|
|
|
46
46
|
vi.clearAllMocks();
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
-
it('should handle handler execution errors gracefully', () => {
|
|
49
|
+
it('should handle handler execution errors gracefully', async () => {
|
|
50
50
|
mockRegistry.executeHandler = vi.fn().mockRejectedValue(new Error('Handler failed'));
|
|
51
51
|
const request = { newMode: 0 };
|
|
52
|
-
|
|
52
|
+
// Errors are wrapped in StatusResponseError and propagated to Matter.js
|
|
53
|
+
await expect(behavior.changeToMode(request)).rejects.toThrow('Failed to change clean mode: Handler failed');
|
|
53
54
|
});
|
|
54
55
|
});
|
|
55
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RvcCleanModeBehavior.spec.js","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcCleanModeBehavior.spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAExE,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAI,YAA8B,CAAA;IAClC,IAAI,QAAsC,CAAA;IAC1C,IAAI,YAAiB,CAAA;IAErB,UAAU,CAAC,GAAG,EAAE;QACd,uBAAuB;QACvB,YAAY,GAAG;YACb,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;SACzC,CAAA;QAER,iCAAiC;QACjC,4BAA4B,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAEtD,uBAAuB;QACvB,YAAY,GAAG;YACb,EAAE,EAAE,mBAAmB;SACxB,CAAA;QAED,kDAAkD;QAClD,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAA;QAChE,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;YAC1C,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY;YACvB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;QAEF,oBAAoB;QACpB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,4BAA4B,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;IACpH,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,WAAW,GAAG,EAAsB,CAAA;YAC1C,4BAA4B,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA,CAAC,cAAc;YAE7C,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAE9B,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACtD,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,OAAO,CACR,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,4BAA4B;YAEpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;gBACjC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;gBAE9B,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACtD,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,OAAO,CACR,CAAA;gBAED,EAAE,CAAC,aAAa,EAAE,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mDAAmD,EAAE,
|
|
1
|
+
{"version":3,"file":"RvcCleanModeBehavior.spec.js","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcCleanModeBehavior.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles robotic vacuum cleaner operational state commands
|
|
5
5
|
*/
|
|
6
|
-
import type { MaybePromise } from '@matter/main';
|
|
7
6
|
import type { BehaviorRegistry } from './BehaviorRegistry.js';
|
|
8
7
|
import { RvcOperationalStateServer } from '@matter/main/behaviors/rvc-operational-state';
|
|
9
8
|
import { RvcOperationalState } from '@matter/main/clusters';
|
|
@@ -16,8 +15,8 @@ export declare class HomebridgeRvcOperationalStateServer extends RvcOperationalS
|
|
|
16
15
|
* Set the behavior registry (called once during server initialization)
|
|
17
16
|
*/
|
|
18
17
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
19
|
-
pause():
|
|
20
|
-
resume():
|
|
21
|
-
goHome():
|
|
18
|
+
pause(): Promise<RvcOperationalState.OperationalCommandResponse>;
|
|
19
|
+
resume(): Promise<RvcOperationalState.OperationalCommandResponse>;
|
|
20
|
+
goHome(): Promise<RvcOperationalState.OperationalCommandResponse>;
|
|
22
21
|
}
|
|
23
22
|
//# sourceMappingURL=RvcOperationalStateBehavior.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RvcOperationalStateBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcOperationalStateBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"RvcOperationalStateBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcOperationalStateBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAK3D;;GAEG;AACH,qBAAa,mCAAoC,SAAQ,yBAAyB;IAChF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIrC,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC,0BAA0B,CAAC;IAuBhE,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,0BAA0B,CAAC;IAuBjE,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,0BAA0B,CAAC;CA0BjF"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { RvcOperationalStateServer } from '@matter/main/behaviors/rvc-operational-state';
|
|
7
7
|
import { RvcOperationalState } from '@matter/main/clusters';
|
|
8
|
+
import { Status, StatusResponseError } from '@matter/main/types';
|
|
9
|
+
import { MatterStatus } from '../errors.js';
|
|
8
10
|
/**
|
|
9
11
|
* Custom RvcOperationalState Server that calls plugin handlers
|
|
10
12
|
*/
|
|
@@ -16,34 +18,69 @@ export class HomebridgeRvcOperationalStateServer extends RvcOperationalStateServ
|
|
|
16
18
|
static setRegistry(registry) {
|
|
17
19
|
this.registry = registry;
|
|
18
20
|
}
|
|
19
|
-
pause() {
|
|
21
|
+
async pause() {
|
|
20
22
|
const endpointId = this.endpoint.id;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
try {
|
|
24
|
+
// Execute user handler
|
|
25
|
+
await HomebridgeRvcOperationalStateServer.registry.executeHandler(endpointId, 'rvcOperationalState', 'pause');
|
|
26
|
+
// Only reached if handler succeeded - call base implementation
|
|
27
|
+
return await super.pause();
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
31
|
+
// This sends a proper Matter protocol error response to the controller
|
|
32
|
+
if (MatterStatus.isMatterProtocolError(error)) {
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
// For other errors, wrap in appropriate StatusResponseError
|
|
36
|
+
// This prevents the endpoint from crashing and keeps the device online
|
|
37
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
38
|
+
throw new StatusResponseError(`Failed to pause: ${message}`, Status.Failure);
|
|
39
|
+
}
|
|
26
40
|
}
|
|
27
|
-
resume() {
|
|
41
|
+
async resume() {
|
|
28
42
|
const endpointId = this.endpoint.id;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
43
|
+
try {
|
|
44
|
+
// Execute user handler
|
|
45
|
+
await HomebridgeRvcOperationalStateServer.registry.executeHandler(endpointId, 'rvcOperationalState', 'resume');
|
|
46
|
+
// Only reached if handler succeeded - call base implementation
|
|
47
|
+
return await super.resume();
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
51
|
+
// This sends a proper Matter protocol error response to the controller
|
|
52
|
+
if (MatterStatus.isMatterProtocolError(error)) {
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
// For other errors, wrap in appropriate StatusResponseError
|
|
56
|
+
// This prevents the endpoint from crashing and keeps the device online
|
|
57
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
58
|
+
throw new StatusResponseError(`Failed to resume: ${message}`, Status.Failure);
|
|
59
|
+
}
|
|
34
60
|
}
|
|
35
|
-
goHome() {
|
|
61
|
+
async goHome() {
|
|
36
62
|
const endpointId = this.endpoint.id;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
}
|
|
63
|
+
try {
|
|
64
|
+
// Execute user handler
|
|
65
|
+
await HomebridgeRvcOperationalStateServer.registry.executeHandler(endpointId, 'rvcOperationalState', 'goHome');
|
|
66
|
+
// Only reached if handler succeeded - return success response
|
|
67
|
+
return {
|
|
68
|
+
commandResponseState: {
|
|
69
|
+
errorStateId: RvcOperationalState.ErrorState.NoError,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
75
|
+
// This sends a proper Matter protocol error response to the controller
|
|
76
|
+
if (MatterStatus.isMatterProtocolError(error)) {
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
// For other errors, wrap in appropriate StatusResponseError
|
|
80
|
+
// This prevents the endpoint from crashing and keeps the device online
|
|
81
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
82
|
+
throw new StatusResponseError(`Failed to go home: ${message}`, Status.Failure);
|
|
83
|
+
}
|
|
47
84
|
}
|
|
48
85
|
}
|
|
49
86
|
//# sourceMappingURL=RvcOperationalStateBehavior.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RvcOperationalStateBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcOperationalStateBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"RvcOperationalStateBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcOperationalStateBehavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,6 @@ export declare class HomebridgeRvcRunModeServer extends RvcRunModeServer {
|
|
|
14
14
|
* Set the behavior registry (called once during server initialization)
|
|
15
15
|
*/
|
|
16
16
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
17
|
-
changeToMode(request: any): any
|
|
17
|
+
changeToMode(request: any): Promise<any>;
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=RvcRunModeBehavior.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RvcRunModeBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcRunModeBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;
|
|
1
|
+
{"version":3,"file":"RvcRunModeBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/RvcRunModeBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AAKtE;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIrC,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAsBxD"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Handles robotic vacuum cleaner run mode changes
|
|
5
5
|
*/
|
|
6
6
|
import { RvcRunModeServer } from '@matter/main/behaviors/rvc-run-mode';
|
|
7
|
+
import { Status, StatusResponseError } from '@matter/main/types';
|
|
8
|
+
import { MatterStatus } from '../errors.js';
|
|
7
9
|
/**
|
|
8
10
|
* Custom RvcRunMode Server that calls plugin handlers
|
|
9
11
|
*/
|
|
@@ -15,13 +17,25 @@ export class HomebridgeRvcRunModeServer extends RvcRunModeServer {
|
|
|
15
17
|
static setRegistry(registry) {
|
|
16
18
|
this.registry = registry;
|
|
17
19
|
}
|
|
18
|
-
changeToMode(request) {
|
|
20
|
+
async changeToMode(request) {
|
|
19
21
|
const endpointId = this.endpoint.id;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
try {
|
|
23
|
+
// Execute user handler
|
|
24
|
+
await HomebridgeRvcRunModeServer.registry.executeHandler(endpointId, 'rvcRunMode', 'changeToMode', request);
|
|
25
|
+
// Only reached if handler succeeded - call base implementation
|
|
26
|
+
return await super.changeToMode(request);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
30
|
+
// This sends a proper Matter protocol error response to the controller
|
|
31
|
+
if (MatterStatus.isMatterProtocolError(error)) {
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
// For other errors, wrap in appropriate StatusResponseError
|
|
35
|
+
// This prevents the endpoint from crashing and keeps the device online
|
|
36
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
37
|
+
throw new StatusResponseError(`Failed to change run mode: ${message}`, Status.Failure);
|
|
38
|
+
}
|
|
25
39
|
}
|
|
26
40
|
}
|
|
27
41
|
//# sourceMappingURL=RvcRunModeBehavior.js.map
|