homebridge 2.0.0-alpha.40 → 2.0.0-alpha.41
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/config-sample.json +1 -12
- package/dist/api.d.ts +4 -20
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +1 -27
- package/dist/api.js.map +1 -1
- package/dist/bridgeService.d.ts +12 -15
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +7 -7
- package/dist/bridgeService.js.map +1 -1
- package/dist/childBridgeService.d.ts +1 -0
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +1 -0
- package/dist/childBridgeService.js.map +1 -1
- package/dist/childMatterBridgeFork.d.ts +108 -0
- package/dist/childMatterBridgeFork.d.ts.map +1 -0
- package/dist/childMatterBridgeFork.js +330 -0
- package/dist/childMatterBridgeFork.js.map +1 -0
- package/dist/childMatterBridgeService.d.ts +166 -0
- package/dist/childMatterBridgeService.d.ts.map +1 -0
- package/dist/childMatterBridgeService.js +623 -0
- package/dist/childMatterBridgeService.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ipcService.d.ts +19 -3
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/ipcService.js +13 -0
- package/dist/ipcService.js.map +1 -1
- package/dist/matter/index.d.ts +13 -0
- package/dist/matter/index.d.ts.map +1 -0
- package/dist/matter/index.js +12 -0
- package/dist/matter/index.js.map +1 -0
- package/dist/matter/matterBridge.d.ts +64 -0
- package/dist/matter/matterBridge.d.ts.map +1 -0
- package/dist/matter/matterBridge.js +154 -0
- package/dist/matter/matterBridge.js.map +1 -0
- package/dist/matter/matterConfigValidator.d.ts +27 -0
- package/dist/matter/matterConfigValidator.d.ts.map +1 -0
- package/dist/matter/matterConfigValidator.js +162 -0
- package/dist/matter/matterConfigValidator.js.map +1 -0
- package/dist/matter/matterDevice.d.ts +107 -0
- package/dist/matter/matterDevice.d.ts.map +1 -0
- package/dist/matter/matterDevice.js +913 -0
- package/dist/matter/matterDevice.js.map +1 -0
- package/dist/matter/matterDiagnostics.d.ts +121 -0
- package/dist/matter/matterDiagnostics.d.ts.map +1 -0
- package/dist/matter/matterDiagnostics.js +323 -0
- package/dist/matter/matterDiagnostics.js.map +1 -0
- package/dist/matter/matterErrorHandler.d.ts +113 -0
- package/dist/matter/matterErrorHandler.d.ts.map +1 -0
- package/dist/matter/matterErrorHandler.js +482 -0
- package/dist/matter/matterErrorHandler.js.map +1 -0
- package/dist/matter/matterNetworkMonitor.d.ts +65 -0
- package/dist/matter/matterNetworkMonitor.d.ts.map +1 -0
- package/dist/matter/matterNetworkMonitor.js +227 -0
- package/dist/matter/matterNetworkMonitor.js.map +1 -0
- package/dist/matter/matterServer.d.ts +110 -0
- package/dist/matter/matterServer.d.ts.map +1 -0
- package/dist/matter/matterServer.js +584 -0
- package/dist/matter/matterServer.js.map +1 -0
- package/dist/matter/matterSharedTypes.d.ts +167 -0
- package/dist/matter/matterSharedTypes.d.ts.map +1 -0
- package/dist/matter/matterSharedTypes.js +55 -0
- package/dist/matter/matterSharedTypes.js.map +1 -0
- package/dist/{matterTypes.d.ts → matter/matterTypes.d.ts} +15 -0
- package/dist/matter/matterTypes.d.ts.map +1 -0
- package/dist/{matterTypes.js → matter/matterTypes.js} +4 -4
- package/dist/matter/matterTypes.js.map +1 -0
- package/dist/matter/portAllocator.d.ts +85 -0
- package/dist/matter/portAllocator.d.ts.map +1 -0
- package/dist/matter/portAllocator.js +296 -0
- package/dist/matter/portAllocator.js.map +1 -0
- package/dist/server.d.ts +9 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +363 -31
- package/dist/server.js.map +1 -1
- package/package.json +10 -10
- package/dist/matterConfigValidator.d.ts +0 -34
- package/dist/matterConfigValidator.d.ts.map +0 -1
- package/dist/matterConfigValidator.js +0 -249
- package/dist/matterConfigValidator.js.map +0 -1
- package/dist/matterService.d.ts +0 -168
- package/dist/matterService.d.ts.map +0 -1
- package/dist/matterService.js +0 -677
- package/dist/matterService.js.map +0 -1
- package/dist/matterTypes.d.ts.map +0 -1
- package/dist/matterTypes.js.map +0 -1
- package/dist/util/matter-cli.d.ts +0 -3
- package/dist/util/matter-cli.d.ts.map +0 -1
- package/dist/util/matter-cli.js +0 -211
- package/dist/util/matter-cli.js.map +0 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAGnC,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;AAE5B;;GAEG;AACH,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,0BAA0B,EAC1B,GAAG,EACH,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,UAAU,CAAA;AAEjB;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE/C;;GAEG;AACH,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,GACf,MAAM,oBAAoB,CAAA;AAE3B;;GAEG;AACH,YAAY,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAE1E;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC;;GAEG;AACH,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAElD;;GAEG;AACH,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,8 @@ export { APIEvent, PluginType } from './api.js';
|
|
|
6
6
|
* Export Logger const enums
|
|
7
7
|
*/
|
|
8
8
|
export { LogLevel } from './logger.js';
|
|
9
|
-
export {
|
|
9
|
+
export { ChildMatterMessageType, MatterBridgeStatus, } from './matter/matterSharedTypes.js';
|
|
10
|
+
export { getMatterClustersForHAPService, getMatterDeviceTypeForHAPService, MatterClusters, MatterDeviceTypes, } from './matter/matterTypes.js';
|
|
10
11
|
/**
|
|
11
12
|
* Export Platform Accessory const enums
|
|
12
13
|
*/
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA6BA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAiB/C;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA6BA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAiB/C;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAmBtC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,+BAA+B,CAAA;AAYtC,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,cAAc,EACd,iBAAiB,GAClB,MAAM,yBAAyB,CAAA;AAEhC;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAiB/D;;;;GAIG;AACH,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,gCAAgC,EAChC,8BAA8B,EAC9B,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,wBAAwB,EACxB,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,8BAA8B,EAC9B,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,KAAK,EACL,SAAS,EACT,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,MAAM,EACN,KAAK,GACN,MAAM,YAAY,CAAA"}
|
package/dist/ipcService.d.ts
CHANGED
|
@@ -3,15 +3,31 @@ export declare const enum IpcIncomingEvent {
|
|
|
3
3
|
RESTART_CHILD_BRIDGE = "restartChildBridge",
|
|
4
4
|
STOP_CHILD_BRIDGE = "stopChildBridge",
|
|
5
5
|
START_CHILD_BRIDGE = "startChildBridge",
|
|
6
|
-
CHILD_BRIDGE_METADATA_REQUEST = "childBridgeMetadataRequest"
|
|
6
|
+
CHILD_BRIDGE_METADATA_REQUEST = "childBridgeMetadataRequest",
|
|
7
|
+
RESTART_MATTER_BRIDGE = "restartMatterBridge",
|
|
8
|
+
STOP_MATTER_BRIDGE = "stopMatterBridge",
|
|
9
|
+
START_MATTER_BRIDGE = "startMatterBridge",
|
|
10
|
+
MATTER_BRIDGE_METADATA_REQUEST = "matterBridgeMetadataRequest",
|
|
11
|
+
MATTER_ACCESSORIES_REQUEST = "matterAccessoriesRequest",
|
|
12
|
+
TOGGLE_MATTER_DEVICE = "toggleMatterDevice",
|
|
13
|
+
MATTER_COMMISSIONING_INFO_REQUEST = "matterCommissioningInfoRequest"
|
|
7
14
|
}
|
|
8
15
|
export declare const enum IpcOutgoingEvent {
|
|
9
16
|
SERVER_STATUS_UPDATE = "serverStatusUpdate",
|
|
10
17
|
CHILD_BRIDGE_METADATA_RESPONSE = "childBridgeMetadataResponse",
|
|
11
|
-
CHILD_BRIDGE_STATUS_UPDATE = "childBridgeStatusUpdate"
|
|
18
|
+
CHILD_BRIDGE_STATUS_UPDATE = "childBridgeStatusUpdate",
|
|
19
|
+
MATTER_BRIDGE_METADATA_RESPONSE = "matterBridgeMetadataResponse",
|
|
20
|
+
MATTER_BRIDGE_STATUS_UPDATE = "matterBridgeStatusUpdate",
|
|
21
|
+
MATTER_ACCESSORIES_RESPONSE = "matterAccessoriesResponse",
|
|
22
|
+
MATTER_DEVICE_STATUS_UPDATE = "matterDeviceStatusUpdate",
|
|
23
|
+
MATTER_COMMISSIONING_STATUS = "matterCommissioningStatus",
|
|
24
|
+
MATTER_COMMISSIONING_INFO_RESPONSE = "matterCommissioningInfoResponse"
|
|
12
25
|
}
|
|
13
26
|
export declare interface IpcService {
|
|
14
|
-
on: ((event: IpcIncomingEvent.RESTART_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.STOP_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.START_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.CHILD_BRIDGE_METADATA_REQUEST, listener: () => void) => this)
|
|
27
|
+
on: ((event: IpcIncomingEvent.RESTART_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.STOP_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.START_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.CHILD_BRIDGE_METADATA_REQUEST, listener: () => void) => this) & ((event: IpcIncomingEvent.RESTART_MATTER_BRIDGE, listener: (matterBridgeId: string) => void) => this) & ((event: IpcIncomingEvent.STOP_MATTER_BRIDGE, listener: (matterBridgeId: string) => void) => this) & ((event: IpcIncomingEvent.START_MATTER_BRIDGE, listener: (matterBridgeId: string) => void) => this) & ((event: IpcIncomingEvent.MATTER_BRIDGE_METADATA_REQUEST, listener: () => void) => this) & ((event: IpcIncomingEvent.MATTER_ACCESSORIES_REQUEST, listener: () => void) => this) & ((event: IpcIncomingEvent.TOGGLE_MATTER_DEVICE, listener: (data: {
|
|
28
|
+
uuid: string;
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
}) => void) => this) & ((event: IpcIncomingEvent.MATTER_COMMISSIONING_INFO_REQUEST, listener: (matterBridgeId: string) => void) => this);
|
|
15
31
|
}
|
|
16
32
|
export declare class IpcService extends EventEmitter {
|
|
17
33
|
constructor();
|
package/dist/ipcService.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipcService.d.ts","sourceRoot":"","sources":["../src/ipcService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,0BAAkB,gBAAgB;IAChC,oBAAoB,uBAAuB;IAC3C,iBAAiB,oBAAoB;IACrC,kBAAkB,qBAAqB;IACvC,6BAA6B,+BAA+B;
|
|
1
|
+
{"version":3,"file":"ipcService.d.ts","sourceRoot":"","sources":["../src/ipcService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,0BAAkB,gBAAgB;IAChC,oBAAoB,uBAAuB;IAC3C,iBAAiB,oBAAoB;IACrC,kBAAkB,qBAAqB;IACvC,6BAA6B,+BAA+B;IAC5D,qBAAqB,wBAAwB;IAC7C,kBAAkB,qBAAqB;IACvC,mBAAmB,sBAAsB;IACzC,8BAA8B,gCAAgC;IAC9D,0BAA0B,6BAA6B;IACvD,oBAAoB,uBAAuB;IAC3C,iCAAiC,mCAAmC;CACrE;AAGD,0BAAkB,gBAAgB;IAChC,oBAAoB,uBAAuB;IAC3C,8BAA8B,gCAAgC;IAC9D,0BAA0B,4BAA4B;IACtD,+BAA+B,iCAAiC;IAChE,2BAA2B,6BAA6B;IACxD,2BAA2B,8BAA8B;IACzD,2BAA2B,6BAA6B;IACxD,2BAA2B,8BAA8B;IACzD,kCAAkC,oCAAoC;CACvE;AAGD,MAAM,CAAC,OAAO,WAAW,UAAU;IACjC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,6BAA6B,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,qBAAqB,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,8BAA8B,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,0BAA0B,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,iCAAiC,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,CAAA;CAC7mC;AAGD,qBAAa,UAAW,SAAQ,YAAY;;IAK1C;;;OAGG;IACI,KAAK,IAAI,IAAI;IASpB;;;;OAIG;IACI,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;CAQ9D"}
|
package/dist/ipcService.js
CHANGED
|
@@ -7,6 +7,13 @@ export var IpcIncomingEvent;
|
|
|
7
7
|
IpcIncomingEvent["STOP_CHILD_BRIDGE"] = "stopChildBridge";
|
|
8
8
|
IpcIncomingEvent["START_CHILD_BRIDGE"] = "startChildBridge";
|
|
9
9
|
IpcIncomingEvent["CHILD_BRIDGE_METADATA_REQUEST"] = "childBridgeMetadataRequest";
|
|
10
|
+
IpcIncomingEvent["RESTART_MATTER_BRIDGE"] = "restartMatterBridge";
|
|
11
|
+
IpcIncomingEvent["STOP_MATTER_BRIDGE"] = "stopMatterBridge";
|
|
12
|
+
IpcIncomingEvent["START_MATTER_BRIDGE"] = "startMatterBridge";
|
|
13
|
+
IpcIncomingEvent["MATTER_BRIDGE_METADATA_REQUEST"] = "matterBridgeMetadataRequest";
|
|
14
|
+
IpcIncomingEvent["MATTER_ACCESSORIES_REQUEST"] = "matterAccessoriesRequest";
|
|
15
|
+
IpcIncomingEvent["TOGGLE_MATTER_DEVICE"] = "toggleMatterDevice";
|
|
16
|
+
IpcIncomingEvent["MATTER_COMMISSIONING_INFO_REQUEST"] = "matterCommissioningInfoRequest";
|
|
10
17
|
})(IpcIncomingEvent || (IpcIncomingEvent = {}));
|
|
11
18
|
// eslint-disable-next-line no-restricted-syntax
|
|
12
19
|
export var IpcOutgoingEvent;
|
|
@@ -14,6 +21,12 @@ export var IpcOutgoingEvent;
|
|
|
14
21
|
IpcOutgoingEvent["SERVER_STATUS_UPDATE"] = "serverStatusUpdate";
|
|
15
22
|
IpcOutgoingEvent["CHILD_BRIDGE_METADATA_RESPONSE"] = "childBridgeMetadataResponse";
|
|
16
23
|
IpcOutgoingEvent["CHILD_BRIDGE_STATUS_UPDATE"] = "childBridgeStatusUpdate";
|
|
24
|
+
IpcOutgoingEvent["MATTER_BRIDGE_METADATA_RESPONSE"] = "matterBridgeMetadataResponse";
|
|
25
|
+
IpcOutgoingEvent["MATTER_BRIDGE_STATUS_UPDATE"] = "matterBridgeStatusUpdate";
|
|
26
|
+
IpcOutgoingEvent["MATTER_ACCESSORIES_RESPONSE"] = "matterAccessoriesResponse";
|
|
27
|
+
IpcOutgoingEvent["MATTER_DEVICE_STATUS_UPDATE"] = "matterDeviceStatusUpdate";
|
|
28
|
+
IpcOutgoingEvent["MATTER_COMMISSIONING_STATUS"] = "matterCommissioningStatus";
|
|
29
|
+
IpcOutgoingEvent["MATTER_COMMISSIONING_INFO_RESPONSE"] = "matterCommissioningInfoResponse";
|
|
17
30
|
})(IpcOutgoingEvent || (IpcOutgoingEvent = {}));
|
|
18
31
|
// eslint-disable-next-line ts/no-unsafe-declaration-merging
|
|
19
32
|
export class IpcService extends EventEmitter {
|
package/dist/ipcService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipcService.js","sourceRoot":"","sources":["../src/ipcService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,gDAAgD;AAChD,MAAM,CAAN,IAAkB,
|
|
1
|
+
{"version":3,"file":"ipcService.js","sourceRoot":"","sources":["../src/ipcService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,gDAAgD;AAChD,MAAM,CAAN,IAAkB,gBAYjB;AAZD,WAAkB,gBAAgB;IAChC,+DAA2C,CAAA;IAC3C,yDAAqC,CAAA;IACrC,2DAAuC,CAAA;IACvC,gFAA4D,CAAA;IAC5D,iEAA6C,CAAA;IAC7C,2DAAuC,CAAA;IACvC,6DAAyC,CAAA;IACzC,kFAA8D,CAAA;IAC9D,2EAAuD,CAAA;IACvD,+DAA2C,CAAA;IAC3C,wFAAoE,CAAA;AACtE,CAAC,EAZiB,gBAAgB,KAAhB,gBAAgB,QAYjC;AAED,gDAAgD;AAChD,MAAM,CAAN,IAAkB,gBAUjB;AAVD,WAAkB,gBAAgB;IAChC,+DAA2C,CAAA;IAC3C,kFAA8D,CAAA;IAC9D,0EAAsD,CAAA;IACtD,oFAAgE,CAAA;IAChE,4EAAwD,CAAA;IACxD,6EAAyD,CAAA;IACzD,4EAAwD,CAAA;IACxD,6EAAyD,CAAA;IACzD,0FAAsE,CAAA;AACxE,CAAC,EAViB,gBAAgB,KAAhB,gBAAgB,QAUjC;AAOD,4DAA4D;AAC5D,MAAM,OAAO,UAAW,SAAQ,YAAY;IAC1C;QACE,KAAK,EAAE,CAAA;IACT,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAoC,EAAE,EAAE;YAC7D,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC3D,OAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,EAAoB,EAAE,IAAa;QACpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE;gBACF,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matter Protocol Support for Homebridge
|
|
3
|
+
*
|
|
4
|
+
* This module provides Matter protocol support alongside the existing HAP bridge,
|
|
5
|
+
* allowing Homebridge accessories to be exposed to Matter-compatible controllers.
|
|
6
|
+
*/
|
|
7
|
+
export { MatterBridge } from './matterBridge.js';
|
|
8
|
+
export { type MatterConfigValidationResult, MatterConfigValidator } from './matterConfigValidator.js';
|
|
9
|
+
export { MatterDevice } from './matterDevice.js';
|
|
10
|
+
export { MatterServer } from './matterServer.js';
|
|
11
|
+
export { type MatterBridgeOptions, type MatterConfiguration } from './matterTypes.js';
|
|
12
|
+
export { getMatterClustersForHAPService, getMatterDeviceTypeForHAPService, HAPToMatterClusterMapping, HAPToMatterDeviceMapping, MatterClusters, MatterDeviceTypes, } from './matterTypes.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/matter/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,KAAK,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACrF,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAClB,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matter Protocol Support for Homebridge
|
|
3
|
+
*
|
|
4
|
+
* This module provides Matter protocol support alongside the existing HAP bridge,
|
|
5
|
+
* allowing Homebridge accessories to be exposed to Matter-compatible controllers.
|
|
6
|
+
*/
|
|
7
|
+
export { MatterBridge } from './matterBridge.js';
|
|
8
|
+
export { MatterConfigValidator } from './matterConfigValidator.js';
|
|
9
|
+
export { MatterDevice } from './matterDevice.js';
|
|
10
|
+
export { MatterServer } from './matterServer.js';
|
|
11
|
+
export { getMatterClustersForHAPService, getMatterDeviceTypeForHAPService, HAPToMatterClusterMapping, HAPToMatterDeviceMapping, MatterClusters, MatterDeviceTypes, } from './matterTypes.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/matter/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAqC,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAClB,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matter Bridge Implementation
|
|
3
|
+
*
|
|
4
|
+
* Main interface for Homebridge to interact with Matter.js
|
|
5
|
+
* Manages the Matter server and device lifecycle
|
|
6
|
+
*/
|
|
7
|
+
import { PlatformAccessory } from '../platformAccessory.js';
|
|
8
|
+
import { MatterDevice } from './matterDevice.js';
|
|
9
|
+
import { MatterServerConfig } from './matterServer.js';
|
|
10
|
+
/**
|
|
11
|
+
* Main Matter bridge class that manages the Matter integration
|
|
12
|
+
*/
|
|
13
|
+
export declare class MatterBridge {
|
|
14
|
+
private matterServer;
|
|
15
|
+
private isInitialized;
|
|
16
|
+
constructor(config?: MatterServerConfig);
|
|
17
|
+
/**
|
|
18
|
+
* Initialize and start the Matter server
|
|
19
|
+
*/
|
|
20
|
+
initialize(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Add a HAP accessory to the Matter bridge
|
|
23
|
+
*/
|
|
24
|
+
createBridgedEndpoint(accessory: PlatformAccessory): Promise<MatterDevice | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Remove a bridged accessory from Matter
|
|
27
|
+
*/
|
|
28
|
+
removeBridgedEndpoint(accessory: PlatformAccessory): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Get Matter server information
|
|
31
|
+
*/
|
|
32
|
+
getServerInfo(): any;
|
|
33
|
+
/**
|
|
34
|
+
* Get all bridged devices
|
|
35
|
+
*/
|
|
36
|
+
getBridgedEndpoints(): Map<string, MatterDevice>;
|
|
37
|
+
/**
|
|
38
|
+
* Check if using real Matter implementation
|
|
39
|
+
*/
|
|
40
|
+
isUsingRealMatter(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Get the port the Matter server is running on
|
|
43
|
+
*/
|
|
44
|
+
getPort(): number;
|
|
45
|
+
/**
|
|
46
|
+
* Check if the Matter bridge is commissioned
|
|
47
|
+
*/
|
|
48
|
+
isCommissioned(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get commissioning information for the Matter bridge
|
|
51
|
+
*/
|
|
52
|
+
getCommissioningInfo(): {
|
|
53
|
+
qrCode?: string;
|
|
54
|
+
manualPairingCode?: string;
|
|
55
|
+
passcode?: number;
|
|
56
|
+
discriminator?: number;
|
|
57
|
+
commissioned: boolean;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Clean up and stop the Matter bridge
|
|
61
|
+
*/
|
|
62
|
+
cleanup(): Promise<void>;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=matterBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matterBridge.d.ts","sourceRoot":"","sources":["../../src/matter/matterBridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAgB,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAIpE;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAQ;gBAEjB,MAAM,GAAE,kBAAuB;IAK3C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BjC;;OAEG;IACG,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAqBvF;;OAEG;IACG,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxE;;OAEG;IACH,aAAa,IAAI,GAAG;IAcpB;;OAEG;IACH,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAQhD;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,OAAO,IAAI,MAAM;IAOjB;;OAEG;IACH,cAAc,IAAI,OAAO;IAOzB;;OAEG;IACH,oBAAoB,IAAI;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,YAAY,EAAE,OAAO,CAAA;KACtB;IASD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAY/B"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matter Bridge Implementation
|
|
3
|
+
*
|
|
4
|
+
* Main interface for Homebridge to interact with Matter.js
|
|
5
|
+
* Manages the Matter server and device lifecycle
|
|
6
|
+
*/
|
|
7
|
+
import { Logger } from '../logger.js';
|
|
8
|
+
import { MatterServer } from './matterServer.js';
|
|
9
|
+
const log = Logger.withPrefix('Matter');
|
|
10
|
+
/**
|
|
11
|
+
* Main Matter bridge class that manages the Matter integration
|
|
12
|
+
*/
|
|
13
|
+
export class MatterBridge {
|
|
14
|
+
matterServer = null;
|
|
15
|
+
isInitialized = false;
|
|
16
|
+
constructor(config = {}) {
|
|
17
|
+
// Create Matter server with provided config
|
|
18
|
+
this.matterServer = new MatterServer(config);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Initialize and start the Matter server
|
|
22
|
+
*/
|
|
23
|
+
async initialize() {
|
|
24
|
+
if (this.isInitialized) {
|
|
25
|
+
log.warn('Matter bridge already initialized');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!this.matterServer) {
|
|
29
|
+
throw new Error('Matter server not created');
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
log.info('Initializing Matter bridge...');
|
|
33
|
+
// Start the Matter server
|
|
34
|
+
await this.matterServer.start();
|
|
35
|
+
this.isInitialized = true;
|
|
36
|
+
const info = this.matterServer.getInfo();
|
|
37
|
+
log.info(`Matter bridge initialized on port ${info.port}`);
|
|
38
|
+
log.info('Homebridge is now ready to bridge accessories to Matter');
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
log.error('Failed to initialize Matter bridge:', error);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add a HAP accessory to the Matter bridge
|
|
47
|
+
*/
|
|
48
|
+
async createBridgedEndpoint(accessory) {
|
|
49
|
+
if (!this.isInitialized || !this.matterServer) {
|
|
50
|
+
log.error('Matter bridge not initialized');
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
// Add accessory to Matter server
|
|
55
|
+
const device = await this.matterServer.addAccessory(accessory);
|
|
56
|
+
if (device) {
|
|
57
|
+
log.info(`Successfully bridged ${accessory.displayName} to Matter`);
|
|
58
|
+
}
|
|
59
|
+
return device;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
log.error(`Failed to bridge accessory ${accessory.displayName}:`, error);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Remove a bridged accessory from Matter
|
|
68
|
+
*/
|
|
69
|
+
async removeBridgedEndpoint(accessory) {
|
|
70
|
+
if (!this.isInitialized || !this.matterServer) {
|
|
71
|
+
log.error('Matter bridge not initialized');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
await this.matterServer.removeAccessory(accessory);
|
|
76
|
+
log.info(`Removed ${accessory.displayName} from Matter bridge`);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
log.error(`Failed to remove accessory ${accessory.displayName}:`, error);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get Matter server information
|
|
84
|
+
*/
|
|
85
|
+
getServerInfo() {
|
|
86
|
+
if (!this.matterServer) {
|
|
87
|
+
return {
|
|
88
|
+
running: false,
|
|
89
|
+
initialized: false,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
initialized: this.isInitialized,
|
|
94
|
+
...this.matterServer.getInfo(),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get all bridged devices
|
|
99
|
+
*/
|
|
100
|
+
getBridgedEndpoints() {
|
|
101
|
+
if (!this.matterServer) {
|
|
102
|
+
return new Map();
|
|
103
|
+
}
|
|
104
|
+
return this.matterServer.getDevices();
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if using real Matter implementation
|
|
108
|
+
*/
|
|
109
|
+
isUsingRealMatter() {
|
|
110
|
+
return true; // This is the real implementation
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get the port the Matter server is running on
|
|
114
|
+
*/
|
|
115
|
+
getPort() {
|
|
116
|
+
if (!this.matterServer) {
|
|
117
|
+
return 0;
|
|
118
|
+
}
|
|
119
|
+
return this.matterServer.getInfo().port;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if the Matter bridge is commissioned
|
|
123
|
+
*/
|
|
124
|
+
isCommissioned() {
|
|
125
|
+
if (!this.matterServer) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
return this.matterServer.isCommissioned();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get commissioning information for the Matter bridge
|
|
132
|
+
*/
|
|
133
|
+
getCommissioningInfo() {
|
|
134
|
+
if (!this.matterServer) {
|
|
135
|
+
return {
|
|
136
|
+
commissioned: false,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return this.matterServer.getCommissioningInfo();
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Clean up and stop the Matter bridge
|
|
143
|
+
*/
|
|
144
|
+
async cleanup() {
|
|
145
|
+
log.info('Cleaning up Matter bridge...');
|
|
146
|
+
if (this.matterServer) {
|
|
147
|
+
await this.matterServer.stop();
|
|
148
|
+
}
|
|
149
|
+
this.isInitialized = false;
|
|
150
|
+
this.matterServer = null;
|
|
151
|
+
log.info('Matter bridge cleanup completed');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=matterBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matterBridge.js","sourceRoot":"","sources":["../../src/matter/matterBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AccessoryConfig, PlatformConfig } from '../bridgeService.js';
|
|
2
|
+
import { MatterConfiguration } from './matterTypes.js';
|
|
3
|
+
export interface MatterConfigValidationResult {
|
|
4
|
+
isValid: boolean;
|
|
5
|
+
errors: string[];
|
|
6
|
+
warnings: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Validate Matter configuration for production readiness
|
|
10
|
+
*/
|
|
11
|
+
export declare class MatterConfigValidator {
|
|
12
|
+
/**
|
|
13
|
+
* Validate a Matter configuration object
|
|
14
|
+
*/
|
|
15
|
+
static validate(config: MatterConfiguration): MatterConfigValidationResult;
|
|
16
|
+
private static validatePort;
|
|
17
|
+
private static validateDeviceName;
|
|
18
|
+
/**
|
|
19
|
+
* Validate child Matter configuration (_matter property)
|
|
20
|
+
*/
|
|
21
|
+
static validateChildMatterConfig(config: PlatformConfig | AccessoryConfig, configType: 'platform' | 'accessory', identifier: string): MatterConfigValidationResult;
|
|
22
|
+
/**
|
|
23
|
+
* Validate all child Matter configurations in a config
|
|
24
|
+
*/
|
|
25
|
+
static validateAllChildMatterConfigs(platforms: PlatformConfig[], accessories: AccessoryConfig[]): MatterConfigValidationResult;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=matterConfigValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matterConfigValidator.d.ts","sourceRoot":"","sources":["../../src/matter/matterConfigValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAG1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAItD,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,4BAA4B;IA4B1E,OAAO,CAAC,MAAM,CAAC,YAAY;IAgB3B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAoBjC;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAC9B,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,UAAU,EAAE,UAAU,GAAG,WAAW,EACpC,UAAU,EAAE,MAAM,GACjB,4BAA4B;IA4D/B;;OAEG;IACH,MAAM,CAAC,6BAA6B,CAClC,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,EAAE,eAAe,EAAE,GAC7B,4BAA4B;CA2DhC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { Logger } from '../logger.js';
|
|
2
|
+
const log = Logger.withPrefix('Matter');
|
|
3
|
+
/**
|
|
4
|
+
* Validate Matter configuration for production readiness
|
|
5
|
+
*/
|
|
6
|
+
export class MatterConfigValidator {
|
|
7
|
+
/**
|
|
8
|
+
* Validate a Matter configuration object
|
|
9
|
+
*/
|
|
10
|
+
static validate(config) {
|
|
11
|
+
const result = {
|
|
12
|
+
isValid: true,
|
|
13
|
+
errors: [],
|
|
14
|
+
warnings: [],
|
|
15
|
+
};
|
|
16
|
+
// Validate port configuration
|
|
17
|
+
this.validatePort(config, result);
|
|
18
|
+
// Validate device name
|
|
19
|
+
this.validateDeviceName(config, result);
|
|
20
|
+
result.isValid = result.errors.length === 0;
|
|
21
|
+
if (result.warnings.length > 0) {
|
|
22
|
+
log.warn('Matter configuration warnings:');
|
|
23
|
+
result.warnings.forEach(warning => log.warn(` - ${warning}`));
|
|
24
|
+
}
|
|
25
|
+
if (result.errors.length > 0) {
|
|
26
|
+
log.error('Matter configuration errors:');
|
|
27
|
+
result.errors.forEach(error => log.error(` - ${error}`));
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
static validatePort(config, result) {
|
|
32
|
+
const port = config.port;
|
|
33
|
+
if (port !== undefined) {
|
|
34
|
+
if (!Number.isInteger(port) || port < 1024 || port > 65535) {
|
|
35
|
+
result.errors.push(`Port ${port} is invalid. Must be an integer between 1024-65535.`);
|
|
36
|
+
}
|
|
37
|
+
// Check for common conflicts
|
|
38
|
+
const conflictPorts = [5353, 8080, 8443]; // mDNS, common HTTP ports
|
|
39
|
+
if (conflictPorts.includes(port)) {
|
|
40
|
+
result.warnings.push(`Port ${port} may conflict with other services. Consider using a different port.`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
static validateDeviceName(config, result) {
|
|
45
|
+
const deviceName = config.name;
|
|
46
|
+
if (deviceName !== undefined) {
|
|
47
|
+
if (deviceName.length === 0) {
|
|
48
|
+
result.errors.push('Device name cannot be empty.');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (deviceName.length > 32) {
|
|
52
|
+
result.errors.push(`Device name "${deviceName}" is too long. Must be 32 characters or less.`);
|
|
53
|
+
}
|
|
54
|
+
// Check for invalid characters
|
|
55
|
+
if (!/^[\x20-\x7E]*$/.test(deviceName)) {
|
|
56
|
+
result.errors.push(`Device name "${deviceName}" contains invalid characters. Use only printable ASCII characters.`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Validate child Matter configuration (_matter property)
|
|
62
|
+
*/
|
|
63
|
+
static validateChildMatterConfig(config, configType, identifier) {
|
|
64
|
+
const result = {
|
|
65
|
+
isValid: true,
|
|
66
|
+
errors: [],
|
|
67
|
+
warnings: [],
|
|
68
|
+
};
|
|
69
|
+
// If no _matter property, no validation needed
|
|
70
|
+
if (!config._matter) {
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
const matterConfig = config._matter;
|
|
74
|
+
const prefix = `Child Matter bridge for ${configType} "${identifier}"`;
|
|
75
|
+
// Validate port if specified
|
|
76
|
+
if (matterConfig.port !== undefined) {
|
|
77
|
+
if (!Number.isInteger(matterConfig.port) || matterConfig.port < 1024 || matterConfig.port > 65535) {
|
|
78
|
+
result.errors.push(`${prefix}: Port ${matterConfig.port} is invalid. Must be between 1024-65535.`);
|
|
79
|
+
result.isValid = false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
result.warnings.push(`${prefix}: No port specified. Port will be auto-allocated.`);
|
|
84
|
+
}
|
|
85
|
+
// Validate name if specified
|
|
86
|
+
if (matterConfig.name !== undefined) {
|
|
87
|
+
if (matterConfig.name.length === 0) {
|
|
88
|
+
result.errors.push(`${prefix}: Name cannot be empty.`);
|
|
89
|
+
result.isValid = false;
|
|
90
|
+
}
|
|
91
|
+
else if (matterConfig.name.length > 32) {
|
|
92
|
+
result.errors.push(`${prefix}: Name "${matterConfig.name}" is too long. Must be 32 characters or less.`);
|
|
93
|
+
result.isValid = false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Check for conflicts with HAP bridge
|
|
97
|
+
if (config._bridge && config._matter) {
|
|
98
|
+
result.warnings.push(`${prefix}: Both _bridge and _matter are configured. Accessories will be exposed via both HAP and Matter protocols.`);
|
|
99
|
+
// Ensure ports don't conflict
|
|
100
|
+
if (config._bridge.port && matterConfig.port && Math.abs(config._bridge.port - matterConfig.port) < 10) {
|
|
101
|
+
result.warnings.push(`${prefix}: HAP and Matter ports are very close. Consider spacing them further apart.`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Log validation results
|
|
105
|
+
if (result.errors.length > 0) {
|
|
106
|
+
log.error(`${prefix} validation errors:`);
|
|
107
|
+
result.errors.forEach(error => log.error(` - ${error}`));
|
|
108
|
+
}
|
|
109
|
+
if (result.warnings.length > 0) {
|
|
110
|
+
log.warn(`${prefix} validation warnings:`);
|
|
111
|
+
result.warnings.forEach(warning => log.warn(` - ${warning}`));
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Validate all child Matter configurations in a config
|
|
117
|
+
*/
|
|
118
|
+
static validateAllChildMatterConfigs(platforms, accessories) {
|
|
119
|
+
const result = {
|
|
120
|
+
isValid: true,
|
|
121
|
+
errors: [],
|
|
122
|
+
warnings: [],
|
|
123
|
+
};
|
|
124
|
+
const usedPorts = new Set();
|
|
125
|
+
// Validate platform _matter configs
|
|
126
|
+
for (const platform of platforms) {
|
|
127
|
+
if (platform._matter) {
|
|
128
|
+
const validation = this.validateChildMatterConfig(platform, 'platform', platform.platform || 'unknown');
|
|
129
|
+
result.errors.push(...validation.errors);
|
|
130
|
+
result.warnings.push(...validation.warnings);
|
|
131
|
+
result.isValid = result.isValid && validation.isValid;
|
|
132
|
+
// Check for port conflicts
|
|
133
|
+
if (platform._matter.port) {
|
|
134
|
+
if (usedPorts.has(platform._matter.port)) {
|
|
135
|
+
result.errors.push(`Duplicate Matter port ${platform._matter.port} detected. Each Matter bridge must use a unique port.`);
|
|
136
|
+
result.isValid = false;
|
|
137
|
+
}
|
|
138
|
+
usedPorts.add(platform._matter.port);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Validate accessory _matter configs
|
|
143
|
+
for (const accessory of accessories) {
|
|
144
|
+
if (accessory._matter) {
|
|
145
|
+
const validation = this.validateChildMatterConfig(accessory, 'accessory', accessory.accessory || 'unknown');
|
|
146
|
+
result.errors.push(...validation.errors);
|
|
147
|
+
result.warnings.push(...validation.warnings);
|
|
148
|
+
result.isValid = result.isValid && validation.isValid;
|
|
149
|
+
// Check for port conflicts
|
|
150
|
+
if (accessory._matter.port) {
|
|
151
|
+
if (usedPorts.has(accessory._matter.port)) {
|
|
152
|
+
result.errors.push(`Duplicate Matter port ${accessory._matter.port} detected. Each Matter bridge must use a unique port.`);
|
|
153
|
+
result.isValid = false;
|
|
154
|
+
}
|
|
155
|
+
usedPorts.add(accessory._matter.port);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=matterConfigValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matterConfigValidator.js","sourceRoot":"","sources":["../../src/matter/matterConfigValidator.ts"],"names":[],"mappings":"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"}
|