homebridge 2.0.3-beta.9 → 2.1.0
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/bridgeService.d.ts +78 -6
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +124 -30
- package/dist/bridgeService.js.map +1 -1
- package/dist/childBridgeFork.d.ts +12 -0
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +56 -25
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +13 -7
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +75 -53
- package/dist/childBridgeService.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -4
- package/dist/cli.js.map +1 -1
- package/dist/ipcService.d.ts +6 -1
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/matter/BaseMatterManager.d.ts +13 -0
- package/dist/matter/BaseMatterManager.d.ts.map +1 -1
- package/dist/matter/BaseMatterManager.js +43 -11
- package/dist/matter/BaseMatterManager.js.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.d.ts +41 -2
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.js +103 -6
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -1
- package/dist/matter/ChildBridgeMatterMessageHandler.d.ts.map +1 -1
- package/dist/matter/ChildBridgeMatterMessageHandler.js +13 -6
- package/dist/matter/ChildBridgeMatterMessageHandler.js.map +1 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.js +25 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -1
- package/dist/matter/MatterAPIImpl.d.ts +17 -0
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -1
- package/dist/matter/MatterAPIImpl.js +29 -0
- package/dist/matter/MatterAPIImpl.js.map +1 -1
- package/dist/matter/MatterBridgeManager.d.ts +38 -3
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -1
- package/dist/matter/MatterBridgeManager.js +115 -12
- package/dist/matter/MatterBridgeManager.js.map +1 -1
- package/dist/matter/MatterError.d.ts +76 -0
- package/dist/matter/MatterError.d.ts.map +1 -0
- package/dist/matter/MatterError.js +90 -0
- package/dist/matter/MatterError.js.map +1 -0
- package/dist/matter/MatterPortAllocator.d.ts.map +1 -1
- package/dist/matter/MatterPortAllocator.js +7 -1
- package/dist/matter/MatterPortAllocator.js.map +1 -1
- package/dist/matter/accessoryCache.d.ts +12 -0
- package/dist/matter/accessoryCache.d.ts.map +1 -1
- package/dist/matter/accessoryCache.js +19 -0
- package/dist/matter/accessoryCache.js.map +1 -1
- package/dist/matter/behaviors/BehaviorRegistry.d.ts +3 -2
- package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -1
- package/dist/matter/behaviors/BehaviorRegistry.js +10 -1
- package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.js +10 -4
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -1
- package/dist/matter/config.d.ts +73 -1
- package/dist/matter/config.d.ts.map +1 -1
- package/dist/matter/config.js +138 -10
- package/dist/matter/config.js.map +1 -1
- package/dist/matter/configValidator.d.ts.map +1 -1
- package/dist/matter/configValidator.js +15 -0
- package/dist/matter/configValidator.js.map +1 -1
- package/dist/matter/ipc-types.d.ts +7 -0
- package/dist/matter/ipc-types.d.ts.map +1 -1
- package/dist/matter/logFormatter.d.ts.map +1 -1
- package/dist/matter/logFormatter.js +7 -60
- package/dist/matter/logFormatter.js.map +1 -1
- package/dist/matter/managerTypes.d.ts +4 -4
- package/dist/matter/managerTypes.d.ts.map +1 -1
- package/dist/matter/server/AccessoryManager.d.ts.map +1 -1
- package/dist/matter/server/AccessoryManager.js +9 -2
- package/dist/matter/server/AccessoryManager.js.map +1 -1
- package/dist/matter/server/ServerLifecycle.d.ts +23 -4
- package/dist/matter/server/ServerLifecycle.d.ts.map +1 -1
- package/dist/matter/server/ServerLifecycle.js +127 -22
- package/dist/matter/server/ServerLifecycle.js.map +1 -1
- package/dist/matter/server.js +1 -1
- package/dist/matter/server.js.map +1 -1
- package/dist/matter/types.d.ts +21 -57
- package/dist/matter/types.d.ts.map +1 -1
- package/dist/matter/types.js +6 -71
- package/dist/matter/types.js.map +1 -1
- package/dist/matter/utils.d.ts +2 -0
- package/dist/matter/utils.d.ts.map +1 -1
- package/dist/matter/utils.js +3 -1
- package/dist/matter/utils.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +2 -14
- package/dist/plugin.js.map +1 -1
- package/dist/pluginManager.d.ts +11 -0
- package/dist/pluginManager.d.ts.map +1 -1
- package/dist/pluginManager.js +26 -14
- package/dist/pluginManager.js.map +1 -1
- package/dist/server.d.ts +29 -7
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +141 -51
- package/dist/server.js.map +1 -1
- package/package.json +8 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessoryCache.d.ts","sourceRoot":"","sources":["../../src/matter/accessoryCache.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AASzD;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,QAAQ,EAAE;QACR,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAA;SACjC,CAAA;KACF,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,QAAQ,CAAC,EAAE;QACT,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAA;SACjC,CAAA;KACF,CAAA;IACD,KAAK,CAAC,EAAE,6BAA6B,EAAE,CAAA;CACxC;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,iBAAiB,CAAoD;IAC7E,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAO;gBAE5B,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIjD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAsD7D;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,IAAI;IAcpE;;;;OAIG;IACG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5E;;;OAGG;YACW,WAAW;IAoCzB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS;IAI9D;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;;OAMG;IACH,YAAY,IAAI,yBAAyB,EAAE;IAI3C;;OAEG;IACH,OAAO,CAAC,kBAAkB;CA0C3B"}
|
|
1
|
+
{"version":3,"file":"accessoryCache.d.ts","sourceRoot":"","sources":["../../src/matter/accessoryCache.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AASzD;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,QAAQ,EAAE;QACR,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAA;SACjC,CAAA;KACF,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,QAAQ,CAAC,EAAE;QACT,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAA;SACjC,CAAA;KACF,CAAA;IACD,KAAK,CAAC,EAAE,6BAA6B,EAAE,CAAA;CACxC;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,iBAAiB,CAAoD;IAC7E,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAO;gBAE5B,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIjD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAsD7D;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,IAAI;IAcpE;;;;;;;;;;OAUG;IACH,iBAAiB,IAAI,OAAO;IAS5B;;;;OAIG;IACG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5E;;;OAGG;YACW,WAAW;IAoCzB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS;IAI9D;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;;OAMG;IACH,YAAY,IAAI,yBAAyB,EAAE;IAI3C;;OAEG;IACH,OAAO,CAAC,kBAAkB;CA0C3B"}
|
|
@@ -85,6 +85,25 @@ export class MatterAccessoryCache {
|
|
|
85
85
|
});
|
|
86
86
|
}, this.SAVE_DEBOUNCE_MS);
|
|
87
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Cancel any pending debounced save without writing.
|
|
90
|
+
*
|
|
91
|
+
* A debounced save captures the live accessories map by reference. If a
|
|
92
|
+
* timer is still armed when the owning server tears down and clears that
|
|
93
|
+
* map, the timer would later fire and persist an empty map — wiping the
|
|
94
|
+
* cache. Callers that are about to clear the map (e.g. ServerLifecycle.stop)
|
|
95
|
+
* must cancel first.
|
|
96
|
+
*
|
|
97
|
+
* @returns true if a pending save was cancelled, false if none was armed
|
|
98
|
+
*/
|
|
99
|
+
cancelPendingSave() {
|
|
100
|
+
if (this.saveDebounceTimer) {
|
|
101
|
+
clearTimeout(this.saveDebounceTimer);
|
|
102
|
+
this.saveDebounceTimer = null;
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
88
107
|
/**
|
|
89
108
|
* Save accessories to cache immediately (serialized to prevent concurrent write conflicts)
|
|
90
109
|
* Uses a queue pattern to ensure saves are truly serialized even when called concurrently
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessoryCache.js","sourceRoot":"","sources":["../../src/matter/accessoryCache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"accessoryCache.js","sourceRoot":"","sources":["../../src/matter/accessoryCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,8 @@ export declare class BehaviorRegistry {
|
|
|
45
45
|
* @param commandName - Command name
|
|
46
46
|
* @param args - Optional arguments to pass to the handler
|
|
47
47
|
* @param context - Optional context information
|
|
48
|
-
* @returns True
|
|
48
|
+
* @returns True once the handler has run successfully
|
|
49
|
+
* @throws Error if no handler is registered for the endpoint/cluster/command
|
|
49
50
|
*/
|
|
50
51
|
executeHandler(endpointId: string, clusterName: string, commandName: string, args?: unknown, context?: MatterHandlerContext): Promise<boolean>;
|
|
51
52
|
/**
|
|
@@ -71,7 +72,7 @@ export declare class BehaviorRegistry {
|
|
|
71
72
|
* — handlers retain plugin closures and prevent the accessory's resources
|
|
72
73
|
* from being collected.
|
|
73
74
|
*/
|
|
74
|
-
removeEndpoint(endpointId: string):
|
|
75
|
+
removeEndpoint(endpointId: string): string[];
|
|
75
76
|
/**
|
|
76
77
|
* Clear all handlers (for cleanup)
|
|
77
78
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviorRegistry.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAMhF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;AAErE;;;GAGG;AACH,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,QAAQ,CAAoE;IAGpF,OAAO,CAAC,aAAa,CAA4D;IAGjF,OAAO,CAAC,cAAc,CAAoB;IAG1C,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,cAAc,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,YAAY;IAKrE;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIrC;;OAEG;IACH,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,oBAAoB,GAC5B,IAAI;IAgBP;;OAEG;IACH,UAAU,CACR,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,oBAAoB,GAAG,SAAS;IAInC
|
|
1
|
+
{"version":3,"file":"BehaviorRegistry.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAMhF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;AAErE;;;GAGG;AACH,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,QAAQ,CAAoE;IAGpF,OAAO,CAAC,aAAa,CAA4D;IAGjF,OAAO,CAAC,cAAc,CAAoB;IAG1C,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,cAAc,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,YAAY;IAKrE;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIrC;;OAEG;IACH,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,oBAAoB,GAC5B,IAAI;IAgBP;;OAEG;IACH,UAAU,CACR,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,oBAAoB,GAAG,SAAS;IAInC;;;;;;;;;;OAUG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC;IAenB;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlF;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAI3F;;;OAGG;IACH,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI;IAwDP;;;;;;OAMG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAoB5C;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,QAAQ,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAaxD"}
|
|
@@ -58,7 +58,8 @@ export class BehaviorRegistry {
|
|
|
58
58
|
* @param commandName - Command name
|
|
59
59
|
* @param args - Optional arguments to pass to the handler
|
|
60
60
|
* @param context - Optional context information
|
|
61
|
-
* @returns True
|
|
61
|
+
* @returns True once the handler has run successfully
|
|
62
|
+
* @throws Error if no handler is registered for the endpoint/cluster/command
|
|
62
63
|
*/
|
|
63
64
|
async executeHandler(endpointId, clusterName, commandName, args, context) {
|
|
64
65
|
const handler = this.getHandler(endpointId, clusterName, commandName);
|
|
@@ -145,6 +146,10 @@ export class BehaviorRegistry {
|
|
|
145
146
|
* from being collected.
|
|
146
147
|
*/
|
|
147
148
|
removeEndpoint(endpointId) {
|
|
149
|
+
// Track every endpoint id we drop (the accessory itself + any of its part
|
|
150
|
+
// endpoints) so callers can mirror the same cleanup in other registries
|
|
151
|
+
// (e.g. RegistryManager, which has no parent-aware sweep of its own).
|
|
152
|
+
const removed = [endpointId];
|
|
148
153
|
this.handlers.delete(endpointId);
|
|
149
154
|
// Sweep any part endpoints whose parent matches the unregistering UUID,
|
|
150
155
|
// and drop their handler tables too.
|
|
@@ -152,8 +157,12 @@ export class BehaviorRegistry {
|
|
|
152
157
|
if (info.parentUuid === endpointId || partId === endpointId) {
|
|
153
158
|
this.partEndpoints.delete(partId);
|
|
154
159
|
this.handlers.delete(partId);
|
|
160
|
+
if (partId !== endpointId) {
|
|
161
|
+
removed.push(partId);
|
|
162
|
+
}
|
|
155
163
|
}
|
|
156
164
|
}
|
|
165
|
+
return removed;
|
|
157
166
|
}
|
|
158
167
|
/**
|
|
159
168
|
* Clear all handlers (for cleanup)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviorRegistry.js","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAajD;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAC3B,uEAAuE;IAC/D,QAAQ,GAAG,IAAI,GAAG,EAA0D,CAAA;IAEpF,8DAA8D;IACtD,aAAa,GAAG,IAAI,GAAG,EAAkD,CAAA;IAEjF,uDAAuD;IAC/C,cAAc,CAAoB;IAE1C,2DAA2D;IACnD,MAAM,CAAe;IAE7B,YAAY,cAAkC,EAAE,MAAqB;QACnE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAoB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,eAAe,CACb,UAAkB,EAClB,WAAmB,EACnB,WAAmB,EACnB,OAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAE,CAAA;QACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAE,CAAA;QAC1D,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAEzC,GAAG,CAAC,KAAK,CAAC,uBAAuB,UAAU,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED;;OAEG;IACH,UAAU,CACR,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;IAC1E,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"BehaviorRegistry.js","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoorLockBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/DoorLockBehavior.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAM1D;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D;;OAEG;IACH,OAAO,CAAC,WAAW;IAIJ,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"DoorLockBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/DoorLockBehavior.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAM1D;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D;;OAEG;IACH,OAAO,CAAC,WAAW;IAIJ,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B1D,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CA4B9E"}
|
|
@@ -30,8 +30,12 @@ export class HomebridgeDoorLockServer extends DoorLockBehavior {
|
|
|
30
30
|
try {
|
|
31
31
|
// Execute user handler
|
|
32
32
|
await registry.executeHandler(endpointId, 'doorLock', 'lockDoor', request);
|
|
33
|
-
// Only reached if handler succeeded - update Matter
|
|
34
|
-
|
|
33
|
+
// Only reached if handler succeeded - update the Matter attribute.
|
|
34
|
+
// We extend the featureless DoorLockBehavior (not DoorLockServer) to avoid
|
|
35
|
+
// advertising credential features, which means there is no working
|
|
36
|
+
// super.lockDoor() to delegate to — calling it throws. Set the lockState
|
|
37
|
+
// attribute directly, mirroring DoorLockServer.lockDoor().
|
|
38
|
+
this.state.lockState = DoorLock.LockState.Locked;
|
|
35
39
|
// Sync lock state to cache
|
|
36
40
|
registry.syncStateToCache(endpointId, 'doorLock', { lockState: DoorLock.LockState.Locked });
|
|
37
41
|
}
|
|
@@ -53,8 +57,10 @@ export class HomebridgeDoorLockServer extends DoorLockBehavior {
|
|
|
53
57
|
try {
|
|
54
58
|
// Execute user handler
|
|
55
59
|
await registry.executeHandler(endpointId, 'doorLock', 'unlockDoor', request);
|
|
56
|
-
// Only reached if handler succeeded - update Matter
|
|
57
|
-
|
|
60
|
+
// Only reached if handler succeeded - update the Matter attribute.
|
|
61
|
+
// See lockDoor() above: the featureless base has no working super.unlockDoor(),
|
|
62
|
+
// so set the lockState attribute directly, mirroring DoorLockServer.unlockDoor().
|
|
63
|
+
this.state.lockState = DoorLock.LockState.Unlocked;
|
|
58
64
|
// Sync lock state to cache
|
|
59
65
|
registry.syncStateToCache(endpointId, 'doorLock', { lockState: DoorLock.LockState.Unlocked });
|
|
60
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoorLockBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/DoorLockBehavior.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,OAAO,wBAAyB,SAAQ,gBAAgB;IAC5D;;OAEG;IACK,WAAW;QACjB,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxE,CAAC;IAEQ,KAAK,CAAC,QAAQ,CAAC,OAAiC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEnC,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAE1E,
|
|
1
|
+
{"version":3,"file":"DoorLockBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/DoorLockBehavior.ts"],"names":[],"mappings":"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"}
|
package/dist/matter/config.d.ts
CHANGED
|
@@ -6,6 +6,69 @@
|
|
|
6
6
|
* Matter configured.
|
|
7
7
|
*/
|
|
8
8
|
import type { HomebridgeConfig } from '../bridgeService.js';
|
|
9
|
+
import type { MatterConfig } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Whether a Matter config block represents an *enabled* Matter setup.
|
|
12
|
+
* The block being present means Matter is configured; `enabled: false` means
|
|
13
|
+
* it is configured but intentionally turned off (storage + port preserved so
|
|
14
|
+
* it can be re-enabled without re-commissioning). Missing `enabled` = enabled,
|
|
15
|
+
* which keeps every pre-existing config working unchanged.
|
|
16
|
+
*
|
|
17
|
+
* Note: this does NOT distinguish "the main matter server should start" from
|
|
18
|
+
* "the matter API surface should be exposed to plugins". Use
|
|
19
|
+
* `shouldStartMatterServer` for the former — it additionally accounts for
|
|
20
|
+
* externalsOnly mode, where the API is exposed but the bridge server is not
|
|
21
|
+
* started.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isMatterConfigEnabled(matter: MatterConfig | undefined): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Whether the main Matter server should start for this bridge — i.e. Matter
|
|
26
|
+
* is configured, enabled, and NOT in externalsOnly mode. In externalsOnly
|
|
27
|
+
* mode the API is still loaded (so plugins can publish externals via their
|
|
28
|
+
* own per-accessory MatterServer instances) but the bridge aggregator does
|
|
29
|
+
* not come up.
|
|
30
|
+
*/
|
|
31
|
+
export declare function shouldStartMatterServer(matter: MatterConfig | undefined): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Whether Matter is "active" for this bridge in any form — either fully on,
|
|
34
|
+
* or in externalsOnly mode (api.matter loaded, manager listening for external
|
|
35
|
+
* publish events, main bridge server NOT started). Returns false only when
|
|
36
|
+
* matter is missing or fully disabled (`enabled: false` without `externalsOnly`).
|
|
37
|
+
*
|
|
38
|
+
* Use this for gates like "should api.matter be loaded?" and "should the
|
|
39
|
+
* matter manager be constructed?". Use `shouldStartMatterServer` for the
|
|
40
|
+
* tighter gate of "should the bridge aggregator come up?".
|
|
41
|
+
*/
|
|
42
|
+
export declare function isMatterActive(matter: MatterConfig | undefined): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Normalise the coherence of `matter.externalsOnly` for a single bridge block.
|
|
45
|
+
*
|
|
46
|
+
* `externalsOnly: true` is meant to be paired with `enabled: false` (the two
|
|
47
|
+
* flags together confirm "bridge node off, externals still publish"). If a
|
|
48
|
+
* config sets `externalsOnly: true` on its own we honour the unambiguous
|
|
49
|
+
* intent rather than failing the whole process — we warn and set
|
|
50
|
+
* `enabled: false` in place so the block matches the canonical externalsOnly
|
|
51
|
+
* form every downstream check expects. This mirrors the log-and-continue
|
|
52
|
+
* behaviour of the port validators rather than taking the whole instance down
|
|
53
|
+
* over one stray flag.
|
|
54
|
+
*
|
|
55
|
+
* For accessory child bridges, callers should use
|
|
56
|
+
* `stripMatterExternalsOnlyForAccessory` instead — externals are not
|
|
57
|
+
* supported on accessory plugins, so the field is dropped with a warning
|
|
58
|
+
* before this check runs.
|
|
59
|
+
*
|
|
60
|
+
* Mutates the passed matter block in place.
|
|
61
|
+
*/
|
|
62
|
+
export declare function validateMatterExternalsOnly(matter: MatterConfig, bridgeLabel: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Strip `matter.externalsOnly` (if set) from an accessory child bridge's
|
|
65
|
+
* matter block, logging a warning. Externals are not supported via the
|
|
66
|
+
* accessory plugin API, so the flag is meaningless there — mirrors the
|
|
67
|
+
* accessory-side behaviour of `hap.externalsOnly`.
|
|
68
|
+
*
|
|
69
|
+
* Mutates the passed matter block in place.
|
|
70
|
+
*/
|
|
71
|
+
export declare function stripMatterExternalsOnlyForAccessory(matter: MatterConfig, bridgeLabel: string): void;
|
|
9
72
|
/**
|
|
10
73
|
* Lightweight config collector that doesn't require Matter.js imports
|
|
11
74
|
*/
|
|
@@ -15,7 +78,16 @@ export declare class MatterConfigCollector {
|
|
|
15
78
|
*/
|
|
16
79
|
static hasMatterConfig(config: HomebridgeConfig): boolean;
|
|
17
80
|
/**
|
|
18
|
-
* Collect all configured Matter ports from config to avoid conflicts
|
|
81
|
+
* Collect all configured Matter ports from config to avoid conflicts.
|
|
82
|
+
*
|
|
83
|
+
* Ports are collected from every bridge block that declares one, regardless
|
|
84
|
+
* of `enabled`/`externalsOnly` state. This is deliberate: a disabled-in-place
|
|
85
|
+
* bridge (`enabled: false`) keeps its configured port reserved so that
|
|
86
|
+
* re-enabling it later reuses the same port (no re-commissioning) and the
|
|
87
|
+
* allocator never hands that port to an automatic Matter/external allocation
|
|
88
|
+
* in the meantime. The trade-off is that a disabled bridge's port stays
|
|
89
|
+
* unavailable for auto-allocation even though no server currently binds it —
|
|
90
|
+
* that is the cost of the "port preserved" contract on `enabled`.
|
|
19
91
|
*/
|
|
20
92
|
static collectConfiguredMatterPorts(config: HomebridgeConfig): number[];
|
|
21
93
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/matter/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAmB,gBAAgB,EAAkB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/matter/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAmB,gBAAgB,EAAkB,MAAM,qBAAqB,CAAA;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAE/E;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAEjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAExE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,GAClB,IAAI,CAON;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,GAClB,IAAI,CAKN;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAWzD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE;IAsBvE;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAc9D;;;;OAIG;WACU,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwF1E;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;CA+BlC"}
|
package/dist/matter/config.js
CHANGED
|
@@ -7,6 +7,84 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Logger } from '../logger.js';
|
|
9
9
|
const log = Logger.withPrefix('Matter/Config');
|
|
10
|
+
/**
|
|
11
|
+
* Whether a Matter config block represents an *enabled* Matter setup.
|
|
12
|
+
* The block being present means Matter is configured; `enabled: false` means
|
|
13
|
+
* it is configured but intentionally turned off (storage + port preserved so
|
|
14
|
+
* it can be re-enabled without re-commissioning). Missing `enabled` = enabled,
|
|
15
|
+
* which keeps every pre-existing config working unchanged.
|
|
16
|
+
*
|
|
17
|
+
* Note: this does NOT distinguish "the main matter server should start" from
|
|
18
|
+
* "the matter API surface should be exposed to plugins". Use
|
|
19
|
+
* `shouldStartMatterServer` for the former — it additionally accounts for
|
|
20
|
+
* externalsOnly mode, where the API is exposed but the bridge server is not
|
|
21
|
+
* started.
|
|
22
|
+
*/
|
|
23
|
+
export function isMatterConfigEnabled(matter) {
|
|
24
|
+
return !!matter && matter.enabled !== false;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Whether the main Matter server should start for this bridge — i.e. Matter
|
|
28
|
+
* is configured, enabled, and NOT in externalsOnly mode. In externalsOnly
|
|
29
|
+
* mode the API is still loaded (so plugins can publish externals via their
|
|
30
|
+
* own per-accessory MatterServer instances) but the bridge aggregator does
|
|
31
|
+
* not come up.
|
|
32
|
+
*/
|
|
33
|
+
export function shouldStartMatterServer(matter) {
|
|
34
|
+
return isMatterConfigEnabled(matter) && !matter?.externalsOnly;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Whether Matter is "active" for this bridge in any form — either fully on,
|
|
38
|
+
* or in externalsOnly mode (api.matter loaded, manager listening for external
|
|
39
|
+
* publish events, main bridge server NOT started). Returns false only when
|
|
40
|
+
* matter is missing or fully disabled (`enabled: false` without `externalsOnly`).
|
|
41
|
+
*
|
|
42
|
+
* Use this for gates like "should api.matter be loaded?" and "should the
|
|
43
|
+
* matter manager be constructed?". Use `shouldStartMatterServer` for the
|
|
44
|
+
* tighter gate of "should the bridge aggregator come up?".
|
|
45
|
+
*/
|
|
46
|
+
export function isMatterActive(matter) {
|
|
47
|
+
return !!matter && (matter.enabled !== false || matter.externalsOnly === true);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Normalise the coherence of `matter.externalsOnly` for a single bridge block.
|
|
51
|
+
*
|
|
52
|
+
* `externalsOnly: true` is meant to be paired with `enabled: false` (the two
|
|
53
|
+
* flags together confirm "bridge node off, externals still publish"). If a
|
|
54
|
+
* config sets `externalsOnly: true` on its own we honour the unambiguous
|
|
55
|
+
* intent rather than failing the whole process — we warn and set
|
|
56
|
+
* `enabled: false` in place so the block matches the canonical externalsOnly
|
|
57
|
+
* form every downstream check expects. This mirrors the log-and-continue
|
|
58
|
+
* behaviour of the port validators rather than taking the whole instance down
|
|
59
|
+
* over one stray flag.
|
|
60
|
+
*
|
|
61
|
+
* For accessory child bridges, callers should use
|
|
62
|
+
* `stripMatterExternalsOnlyForAccessory` instead — externals are not
|
|
63
|
+
* supported on accessory plugins, so the field is dropped with a warning
|
|
64
|
+
* before this check runs.
|
|
65
|
+
*
|
|
66
|
+
* Mutates the passed matter block in place.
|
|
67
|
+
*/
|
|
68
|
+
export function validateMatterExternalsOnly(matter, bridgeLabel) {
|
|
69
|
+
if (matter.externalsOnly === true && matter.enabled !== false) {
|
|
70
|
+
log.warn(`${bridgeLabel}: 'matter.externalsOnly: true' was set without 'matter.enabled: false'. Proceeding in externalsOnly mode (the bridge node will not start). Set 'matter.enabled: false' to confirm intent and silence this warning.`);
|
|
71
|
+
matter.enabled = false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Strip `matter.externalsOnly` (if set) from an accessory child bridge's
|
|
76
|
+
* matter block, logging a warning. Externals are not supported via the
|
|
77
|
+
* accessory plugin API, so the flag is meaningless there — mirrors the
|
|
78
|
+
* accessory-side behaviour of `hap.externalsOnly`.
|
|
79
|
+
*
|
|
80
|
+
* Mutates the passed matter block in place.
|
|
81
|
+
*/
|
|
82
|
+
export function stripMatterExternalsOnlyForAccessory(matter, bridgeLabel) {
|
|
83
|
+
if (matter.externalsOnly === true) {
|
|
84
|
+
log.warn(`${bridgeLabel}: 'matter.externalsOnly' is not supported on accessory child bridges. Ignoring.`);
|
|
85
|
+
delete matter.externalsOnly;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
10
88
|
/**
|
|
11
89
|
* Lightweight config collector that doesn't require Matter.js imports
|
|
12
90
|
*/
|
|
@@ -15,12 +93,24 @@ export class MatterConfigCollector {
|
|
|
15
93
|
* Check if any Matter configuration exists in the config
|
|
16
94
|
*/
|
|
17
95
|
static hasMatterConfig(config) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
96
|
+
// Use isMatterActive so externalsOnly bridges are considered configured —
|
|
97
|
+
// they still need api.matter loaded and the manager set up to attach
|
|
98
|
+
// their external-publish listeners.
|
|
99
|
+
return (isMatterActive(config.bridge.matter)
|
|
100
|
+
|| config.platforms.some((p) => isMatterActive(p._bridge?.matter))
|
|
101
|
+
|| config.accessories.some((a) => isMatterActive(a._bridge?.matter)));
|
|
21
102
|
}
|
|
22
103
|
/**
|
|
23
|
-
* Collect all configured Matter ports from config to avoid conflicts
|
|
104
|
+
* Collect all configured Matter ports from config to avoid conflicts.
|
|
105
|
+
*
|
|
106
|
+
* Ports are collected from every bridge block that declares one, regardless
|
|
107
|
+
* of `enabled`/`externalsOnly` state. This is deliberate: a disabled-in-place
|
|
108
|
+
* bridge (`enabled: false`) keeps its configured port reserved so that
|
|
109
|
+
* re-enabling it later reuses the same port (no re-commissioning) and the
|
|
110
|
+
* allocator never hands that port to an automatic Matter/external allocation
|
|
111
|
+
* in the meantime. The trade-off is that a disabled bridge's port stays
|
|
112
|
+
* unavailable for auto-allocation even though no server currently binds it —
|
|
113
|
+
* that is the cost of the "port preserved" contract on `enabled`.
|
|
24
114
|
*/
|
|
25
115
|
static collectConfiguredMatterPorts(config) {
|
|
26
116
|
const configuredMatterPorts = [];
|
|
@@ -69,10 +159,31 @@ export class MatterConfigCollector {
|
|
|
69
159
|
if (!this.hasMatterConfig(config)) {
|
|
70
160
|
return;
|
|
71
161
|
}
|
|
162
|
+
// externalsOnly coherence checks run first so misconfigurations throw with
|
|
163
|
+
// a clear message before downstream validators get the chance to silently
|
|
164
|
+
// strip the matter block on unrelated errors. Accessory child bridges have
|
|
165
|
+
// externalsOnly stripped with a warning here too (mirrors hap.externalsOnly).
|
|
166
|
+
if (config.bridge.matter) {
|
|
167
|
+
validateMatterExternalsOnly(config.bridge.matter, 'main bridge');
|
|
168
|
+
}
|
|
169
|
+
for (const platform of config.platforms) {
|
|
170
|
+
if (platform._bridge?.matter) {
|
|
171
|
+
validateMatterExternalsOnly(platform._bridge.matter, `platform "${platform.platform}" child bridge`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
for (const accessory of config.accessories) {
|
|
175
|
+
if (accessory._bridge?.matter) {
|
|
176
|
+
stripMatterExternalsOnlyForAccessory(accessory._bridge.matter, `accessory "${accessory.accessory}" child bridge`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
72
179
|
// Lazy-load the full validator (which has heavier dependencies)
|
|
73
180
|
const { MatterConfigValidator } = await import('./configValidator.js');
|
|
74
|
-
// Validate main bridge Matter config
|
|
75
|
-
|
|
181
|
+
// Validate the main bridge Matter config only when it will actually start a
|
|
182
|
+
// server. A disabled (`enabled: false`) or externalsOnly main bridge is
|
|
183
|
+
// preserved as-is (disabled-in-place) — mirroring the child validator —
|
|
184
|
+
// since stripping it would lose config/storage the user expects to survive
|
|
185
|
+
// so it can be re-enabled without re-commissioning.
|
|
186
|
+
if (config.bridge.matter && shouldStartMatterServer(config.bridge.matter)) {
|
|
76
187
|
const validation = MatterConfigValidator.validate(config.bridge.matter);
|
|
77
188
|
if (!validation.isValid) {
|
|
78
189
|
log.error('Main bridge Matter configuration is invalid. Matter will not be enabled for the main bridge.');
|
|
@@ -80,18 +191,35 @@ export class MatterConfigCollector {
|
|
|
80
191
|
}
|
|
81
192
|
}
|
|
82
193
|
// Reserve the main bridge's Matter port so the child validator catches
|
|
83
|
-
// child↔main port collisions in the same pass
|
|
194
|
+
// child↔main port collisions in the same pass — but only when the main
|
|
195
|
+
// Matter server will actually bind it. A disabled or externalsOnly main
|
|
196
|
+
// bridge never starts its bridge server, so its configured port must not
|
|
197
|
+
// block a child bridge from legitimately using the same number.
|
|
84
198
|
const reserved = new Set();
|
|
85
|
-
if (config.bridge.matter?.port) {
|
|
199
|
+
if (shouldStartMatterServer(config.bridge.matter) && config.bridge.matter?.port) {
|
|
86
200
|
reserved.add(config.bridge.matter.port);
|
|
87
201
|
}
|
|
88
202
|
// Validate all child bridge Matter configs and check for port conflicts
|
|
89
203
|
const childMatterValidation = MatterConfigValidator.validateAllChildMatterConfigs(config.platforms, config.accessories, reserved);
|
|
90
204
|
if (!childMatterValidation.isValid) {
|
|
91
205
|
log.error('Some child bridge Matter configurations were invalid and have been disabled. The remaining configuration will start as normal.');
|
|
206
|
+
// Surface the specific per-child errors (which platform/accessory and
|
|
207
|
+
// which port) so the user knows what to fix. Previously these details
|
|
208
|
+
// were collected into the result but never logged, leaving only the
|
|
209
|
+
// generic line above — the user couldn't tell what had been disabled.
|
|
210
|
+
for (const error of childMatterValidation.errors) {
|
|
211
|
+
log.error(error);
|
|
212
|
+
}
|
|
92
213
|
}
|
|
93
|
-
//
|
|
94
|
-
|
|
214
|
+
// Surface any non-fatal child Matter warnings too — also collected by the
|
|
215
|
+
// validator but not previously logged by this caller.
|
|
216
|
+
for (const warning of childMatterValidation.warnings) {
|
|
217
|
+
log.warn(warning);
|
|
218
|
+
}
|
|
219
|
+
// Check for conflicts between main bridge Matter port and child bridge
|
|
220
|
+
// ports — again only when the main server will actually bind its port,
|
|
221
|
+
// so a disabled/externalsOnly main doesn't raise a spurious conflict.
|
|
222
|
+
if (shouldStartMatterServer(config.bridge.matter) && config.bridge.matter?.port) {
|
|
95
223
|
this.checkPortConflicts(config);
|
|
96
224
|
}
|
|
97
225
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/matter/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/matter/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configValidator.d.ts","sourceRoot":"","sources":["../../src/matter/configValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"configValidator.d.ts","sourceRoot":"","sources":["../../src/matter/configValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAQ1E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,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;AAMD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,oBAAoB,CAqBvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAuB7E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAAC,MAAM,CAAC,CAa5B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ1F;AAMD;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,4BAA4B;IAyB9E,OAAO,CAAC,MAAM,CAAC,YAAY;IAiB3B;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAC9B,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,UAAU,EAAE,UAAU,GAAG,WAAW,EACpC,UAAU,EAAE,MAAM,GACjB,4BAA4B;IAmD/B;;;;;;;OAOG;IACH,MAAM,CAAC,6BAA6B,CAClC,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,EAAE,eAAe,EAAE,EAC9B,aAAa,GAAE,GAAG,CAAC,MAAM,CAAa,GACrC,4BAA4B;CA2FhC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Includes both low-level validation primitives and high-level validation methods.
|
|
6
6
|
*/
|
|
7
7
|
import { Logger } from '../logger.js';
|
|
8
|
+
import { shouldStartMatterServer } from './config.js';
|
|
8
9
|
const log = Logger.withPrefix('Matter/Config');
|
|
9
10
|
const COLON_RE = /:/g;
|
|
10
11
|
// ============================================================================
|
|
@@ -209,6 +210,15 @@ export class MatterConfigValidator {
|
|
|
209
210
|
// Validate platform _bridge.matter configs
|
|
210
211
|
for (const platform of platforms) {
|
|
211
212
|
if (platform._bridge?.matter) {
|
|
213
|
+
// Disabled-in-place (`enabled: false`) and externalsOnly child configs
|
|
214
|
+
// never start a bridge server or bind their configured port, so preserve
|
|
215
|
+
// them as-is: don't validate, strip, or reserve a port for them.
|
|
216
|
+
// Otherwise an unrelated active Matter config triggering validation could
|
|
217
|
+
// delete a user's intentionally-disabled config (it's meant to survive so
|
|
218
|
+
// it can be re-enabled without re-commissioning).
|
|
219
|
+
if (!shouldStartMatterServer(platform._bridge.matter)) {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
212
222
|
const validation = this.validateChildMatterConfig(platform, 'platform', platform.platform || 'unknown');
|
|
213
223
|
if (!validation.isValid) {
|
|
214
224
|
// Strip the invalid Matter config so the bridge doesn't try to
|
|
@@ -235,6 +245,11 @@ export class MatterConfigValidator {
|
|
|
235
245
|
// Validate accessory _bridge.matter configs
|
|
236
246
|
for (const accessory of accessories) {
|
|
237
247
|
if (accessory._bridge?.matter) {
|
|
248
|
+
// See the platform loop above: disabled-in-place / externalsOnly configs
|
|
249
|
+
// are preserved untouched — they neither start a server nor bind a port.
|
|
250
|
+
if (!shouldStartMatterServer(accessory._bridge.matter)) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
238
253
|
const validation = this.validateChildMatterConfig(accessory, 'accessory', accessory.accessory || 'unknown');
|
|
239
254
|
if (!validation.isValid) {
|
|
240
255
|
result.errors.push(...validation.errors);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/matter/configValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/matter/configValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,13 @@ export interface MatterStatusInfo {
|
|
|
27
27
|
serialNumber?: string;
|
|
28
28
|
commissioned?: boolean;
|
|
29
29
|
deviceCount?: number;
|
|
30
|
+
/**
|
|
31
|
+
* When true, the Matter bridge node itself is NOT advertised but plugins
|
|
32
|
+
* may still publish external Matter accessories. The UI uses this to show
|
|
33
|
+
* a distinct status colour (the bridge is configured but the node is
|
|
34
|
+
* intentionally suppressed). Mirrors `bridge.hap.externalsOnly`.
|
|
35
|
+
*/
|
|
36
|
+
externalsOnly?: boolean;
|
|
30
37
|
}
|
|
31
38
|
/**
|
|
32
39
|
* Server status update message sent from Homebridge to parent process
|