@project-chip/matter.js 0.12.2-alpha.0-20250128-09631d531 → 0.12.2-alpha.0-20250201-eb5d40a2f
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/cjs/device/LegacyInteractionServer.d.ts +3 -3
- package/dist/cjs/device/LegacyInteractionServer.d.ts.map +1 -1
- package/dist/cjs/device/LegacyInteractionServer.js +11 -6
- package/dist/cjs/device/LegacyInteractionServer.js.map +1 -1
- package/dist/esm/device/LegacyInteractionServer.d.ts +3 -3
- package/dist/esm/device/LegacyInteractionServer.d.ts.map +1 -1
- package/dist/esm/device/LegacyInteractionServer.js +11 -6
- package/dist/esm/device/LegacyInteractionServer.js.map +1 -1
- package/package.json +8 -8
- package/src/device/LegacyInteractionServer.ts +12 -7
|
@@ -12,11 +12,11 @@ import { TlvEventFilter, TypeFromSchema } from "#types";
|
|
|
12
12
|
export declare class LegacyInteractionServer extends InteractionServer {
|
|
13
13
|
#private;
|
|
14
14
|
constructor(context: InteractionContext);
|
|
15
|
-
protected readAttribute(path: AttributePath, attribute: AnyAttributeServer<any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message,
|
|
15
|
+
protected readAttribute(path: AttributePath, attribute: AnyAttributeServer<any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message, offline?: boolean): {
|
|
16
16
|
version: number;
|
|
17
17
|
value: any;
|
|
18
|
-
}
|
|
19
|
-
protected readEvent(path: EventPath, eventFilters: TypeFromSchema<typeof TlvEventFilter>[] | undefined, event: AnyEventServer<any, any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message
|
|
18
|
+
};
|
|
19
|
+
protected readEvent(path: EventPath, eventFilters: TypeFromSchema<typeof TlvEventFilter>[] | undefined, event: AnyEventServer<any, any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message): Promise<NumberedOccurrence[]>;
|
|
20
20
|
protected writeAttribute(path: AttributePath, attribute: AttributeServer<any>, value: any, exchange: MessageExchange, message: Message, endpoint: EndpointInterface, receivedWithinTimedInteraction?: boolean, isListWrite?: boolean): Promise<void>;
|
|
21
21
|
protected invokeCommand(path: CommandPath, command: CommandServer<any, any>, exchange: MessageExchange, commandFields: any, message: Message, endpoint: EndpointInterface, receivedWithinTimedInteraction?: boolean): Promise<{
|
|
22
22
|
code: import("#types").StatusCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegacyInteractionServer.d.ts","sourceRoot":"","sources":["../../../src/device/LegacyInteractionServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGH,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EAET,kBAAkB,EAElB,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,kBAAkB,EAGrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAkB,cAAc,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAKxE;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,iBAAiB;;gBAI9C,OAAO,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"LegacyInteractionServer.d.ts","sourceRoot":"","sources":["../../../src/device/LegacyInteractionServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGH,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EAET,kBAAkB,EAElB,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,kBAAkB,EAGrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAkB,cAAc,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAKxE;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,iBAAiB;;gBAI9C,OAAO,EAAE,kBAAkB;cAmDpB,aAAa,CAC5B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAClC,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,EAChB,OAAO,UAAQ;;;;cAiBM,SAAS,CAC9B,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,cAAc,CAAC,OAAO,cAAc,CAAC,EAAE,GAAG,SAAS,EACjE,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAC/B,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC;cAKP,cAAc,CACnC,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,EAC/B,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,8BAA8B,CAAC,EAAE,OAAO,EACxC,WAAW,CAAC,EAAE,OAAO;cAeA,aAAa,CAClC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAChC,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,GAAG,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,8BAA8B,UAAQ;;;;yBAc6c,QAAQ;;CADlgB"}
|
|
@@ -61,21 +61,26 @@ class LegacyInteractionServer extends import_protocol.InteractionServer {
|
|
|
61
61
|
#assertAccess(path, exchange, desiredAccessLevel) {
|
|
62
62
|
const { endpointId, clusterId } = path;
|
|
63
63
|
const endpoint = this.#endpointStructure.getEndpoint(endpointId);
|
|
64
|
-
if (endpoint === void 0) {
|
|
64
|
+
if (endpoint === void 0 || endpoint.number === void 0) {
|
|
65
65
|
throw new import_general.InternalError("Endpoint not found for ACL check. This should never happen.");
|
|
66
66
|
}
|
|
67
67
|
const aclManager = this.#getAclManager(exchange.session);
|
|
68
|
-
if (!aclManager.allowsPrivilege(
|
|
68
|
+
if (!aclManager.allowsPrivilege(
|
|
69
|
+
exchange.session,
|
|
70
|
+
{ number: endpoint.number, deviceTypes: [endpoint.deviceType] },
|
|
71
|
+
clusterId,
|
|
72
|
+
desiredAccessLevel
|
|
73
|
+
)) {
|
|
69
74
|
throw new import_protocol.AccessDeniedError(
|
|
70
75
|
`Access to ${endpointId}/${import_general.Diagnostic.hex(clusterId)} denied on ${exchange.session.name}.`
|
|
71
76
|
);
|
|
72
77
|
}
|
|
73
78
|
}
|
|
74
|
-
|
|
79
|
+
readAttribute(path, attribute, exchange, isFabricFiltered, message, offline = false) {
|
|
75
80
|
if (!offline) {
|
|
76
81
|
this.#assertAccess(path, exchange, attribute.readAcl);
|
|
77
82
|
}
|
|
78
|
-
const data =
|
|
83
|
+
const data = super.readAttribute(path, attribute, exchange, isFabricFiltered, message);
|
|
79
84
|
if (attribute instanceof import_protocol.FabricScopedAttributeServer && !isFabricFiltered) {
|
|
80
85
|
const { value, version } = data;
|
|
81
86
|
return {
|
|
@@ -85,9 +90,9 @@ class LegacyInteractionServer extends import_protocol.InteractionServer {
|
|
|
85
90
|
}
|
|
86
91
|
return data;
|
|
87
92
|
}
|
|
88
|
-
async readEvent(path, eventFilters, event, exchange, isFabricFiltered, message
|
|
93
|
+
async readEvent(path, eventFilters, event, exchange, isFabricFiltered, message) {
|
|
89
94
|
this.#assertAccess(path, exchange, event.readAcl);
|
|
90
|
-
return super.readEvent(path, eventFilters, event, exchange, isFabricFiltered, message
|
|
95
|
+
return super.readEvent(path, eventFilters, event, exchange, isFabricFiltered, message);
|
|
91
96
|
}
|
|
92
97
|
async writeAttribute(path, attribute, value, exchange, message, endpoint, receivedWithinTimedInteraction, isListWrite) {
|
|
93
98
|
this.#assertAccess(path, exchange, attribute.writeAcl);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/device/LegacyInteractionServer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,sBAAqC;AACrC,qBAAkD;AAElD,sBAoBO;AACP,mBAA+D;AA9B/D;AAAA;AAAA;AAAA;AAAA;AAiCA,MAAM,SAAS,sBAAO,IAAI,yBAAyB;AAM5C,MAAM,gCAAgC,kCAAkB;AAAA,EAC3D;AAAA,EACA;AAAA,EAEA,YAAY,SAA6B;AACrC,UAAM,OAAO;AACb,SAAK,qBAAqB,QAAQ;AAAA,EACtC;AAAA,EAEA,eAAe,SAAkB;AAC7B,QAAI,KAAK,gBAAgB,QAAW;AAChC,aAAO,KAAK;AAAA,IAChB;AACA,UAAM,eAAe,KAAK,mBAAmB,gBAAY,6BAAe,CAAC,CAAC;AAC1E,QAAI,iBAAiB,QAAW;AAC5B,YAAM,IAAI,6BAAc,2BAA2B;AAAA,IACvD;AACA,UAAM,aAAa,aAAa,iBAAiB,oCAAoB;AACrE,QAAI,eAAe,QAAW;AAC1B,YAAM,IAAI,6BAAc,qDAAqD;AAAA,IACjF;AACA,UAAM,aAAc,KAAK,cAAc,IAAI,qCAAqB,WAAW,WAAW,IAAI,IAAI,SAAS,KAAK,CAAC;AAC7G,eAAW,sBAAsB,MAAM;AACnC,YAAM,cAAc,WAAW,WAAW,IAAI,IAAI,SAAS,KAAK;AAChE,aAAO,KAAK,eAAe,WAAW;AACtC,iBAAW,wBAAwB,WAAW;AAAA,IAClD,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EAEA,cACI,MACA,UACA,oBACF;AACE,UAAM,EAAE,YAAY,UAAU,IAAI;AAClC,UAAM,WAAW,KAAK,mBAAmB,YAAY,UAAU;AAC/D,QAAI,aAAa,QAAW;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -12,11 +12,11 @@ import { TlvEventFilter, TypeFromSchema } from "#types";
|
|
|
12
12
|
export declare class LegacyInteractionServer extends InteractionServer {
|
|
13
13
|
#private;
|
|
14
14
|
constructor(context: InteractionContext);
|
|
15
|
-
protected readAttribute(path: AttributePath, attribute: AnyAttributeServer<any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message,
|
|
15
|
+
protected readAttribute(path: AttributePath, attribute: AnyAttributeServer<any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message, offline?: boolean): {
|
|
16
16
|
version: number;
|
|
17
17
|
value: any;
|
|
18
|
-
}
|
|
19
|
-
protected readEvent(path: EventPath, eventFilters: TypeFromSchema<typeof TlvEventFilter>[] | undefined, event: AnyEventServer<any, any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message
|
|
18
|
+
};
|
|
19
|
+
protected readEvent(path: EventPath, eventFilters: TypeFromSchema<typeof TlvEventFilter>[] | undefined, event: AnyEventServer<any, any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message): Promise<NumberedOccurrence[]>;
|
|
20
20
|
protected writeAttribute(path: AttributePath, attribute: AttributeServer<any>, value: any, exchange: MessageExchange, message: Message, endpoint: EndpointInterface, receivedWithinTimedInteraction?: boolean, isListWrite?: boolean): Promise<void>;
|
|
21
21
|
protected invokeCommand(path: CommandPath, command: CommandServer<any, any>, exchange: MessageExchange, commandFields: any, message: Message, endpoint: EndpointInterface, receivedWithinTimedInteraction?: boolean): Promise<{
|
|
22
22
|
code: import("#types").StatusCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegacyInteractionServer.d.ts","sourceRoot":"","sources":["../../../src/device/LegacyInteractionServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGH,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EAET,kBAAkB,EAElB,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,kBAAkB,EAGrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAkB,cAAc,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAKxE;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,iBAAiB;;gBAI9C,OAAO,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"LegacyInteractionServer.d.ts","sourceRoot":"","sources":["../../../src/device/LegacyInteractionServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGH,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EAET,kBAAkB,EAElB,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,kBAAkB,EAGrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAkB,cAAc,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAKxE;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,iBAAiB;;gBAI9C,OAAO,EAAE,kBAAkB;cAmDpB,aAAa,CAC5B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAClC,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,EAChB,OAAO,UAAQ;;;;cAiBM,SAAS,CAC9B,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,cAAc,CAAC,OAAO,cAAc,CAAC,EAAE,GAAG,SAAS,EACjE,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAC/B,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC;cAKP,cAAc,CACnC,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,EAC/B,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,8BAA8B,CAAC,EAAE,OAAO,EACxC,WAAW,CAAC,EAAE,OAAO;cAeA,aAAa,CAClC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAChC,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,GAAG,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,8BAA8B,UAAQ;;;;yBAc6c,QAAQ;;CADlgB"}
|
|
@@ -43,21 +43,26 @@ class LegacyInteractionServer extends InteractionServer {
|
|
|
43
43
|
#assertAccess(path, exchange, desiredAccessLevel) {
|
|
44
44
|
const { endpointId, clusterId } = path;
|
|
45
45
|
const endpoint = this.#endpointStructure.getEndpoint(endpointId);
|
|
46
|
-
if (endpoint === void 0) {
|
|
46
|
+
if (endpoint === void 0 || endpoint.number === void 0) {
|
|
47
47
|
throw new InternalError("Endpoint not found for ACL check. This should never happen.");
|
|
48
48
|
}
|
|
49
49
|
const aclManager = this.#getAclManager(exchange.session);
|
|
50
|
-
if (!aclManager.allowsPrivilege(
|
|
50
|
+
if (!aclManager.allowsPrivilege(
|
|
51
|
+
exchange.session,
|
|
52
|
+
{ number: endpoint.number, deviceTypes: [endpoint.deviceType] },
|
|
53
|
+
clusterId,
|
|
54
|
+
desiredAccessLevel
|
|
55
|
+
)) {
|
|
51
56
|
throw new AccessDeniedError(
|
|
52
57
|
`Access to ${endpointId}/${Diagnostic.hex(clusterId)} denied on ${exchange.session.name}.`
|
|
53
58
|
);
|
|
54
59
|
}
|
|
55
60
|
}
|
|
56
|
-
|
|
61
|
+
readAttribute(path, attribute, exchange, isFabricFiltered, message, offline = false) {
|
|
57
62
|
if (!offline) {
|
|
58
63
|
this.#assertAccess(path, exchange, attribute.readAcl);
|
|
59
64
|
}
|
|
60
|
-
const data =
|
|
65
|
+
const data = super.readAttribute(path, attribute, exchange, isFabricFiltered, message);
|
|
61
66
|
if (attribute instanceof FabricScopedAttributeServer && !isFabricFiltered) {
|
|
62
67
|
const { value, version } = data;
|
|
63
68
|
return {
|
|
@@ -67,9 +72,9 @@ class LegacyInteractionServer extends InteractionServer {
|
|
|
67
72
|
}
|
|
68
73
|
return data;
|
|
69
74
|
}
|
|
70
|
-
async readEvent(path, eventFilters, event, exchange, isFabricFiltered, message
|
|
75
|
+
async readEvent(path, eventFilters, event, exchange, isFabricFiltered, message) {
|
|
71
76
|
this.#assertAccess(path, exchange, event.readAcl);
|
|
72
|
-
return super.readEvent(path, eventFilters, event, exchange, isFabricFiltered, message
|
|
77
|
+
return super.readEvent(path, eventFilters, event, exchange, isFabricFiltered, message);
|
|
73
78
|
}
|
|
74
79
|
async writeAttribute(path, attribute, value, exchange, message, endpoint, receivedWithinTimedInteraction, isListWrite) {
|
|
75
80
|
this.#assertAccess(path, exchange, attribute.writeAcl);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/device/LegacyInteractionServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,4BAA4B;AACrC,SAAS,YAAY,eAAe,cAAc;AAElD;AAAA,EACI;AAAA,EACA;AAAA,EASA;AAAA,EAGA;AAAA,OAMG;AACP,SAAS,sBAAsD;AAG/D,MAAM,SAAS,OAAO,IAAI,yBAAyB;AAM5C,MAAM,gCAAgC,kBAAkB;AAAA,EAC3D;AAAA,EACA;AAAA,EAEA,YAAY,SAA6B;AACrC,UAAM,OAAO;AACb,SAAK,qBAAqB,QAAQ;AAAA,EACtC;AAAA,EAEA,eAAe,SAAkB;AAC7B,QAAI,KAAK,gBAAgB,QAAW;AAChC,aAAO,KAAK;AAAA,IAChB;AACA,UAAM,eAAe,KAAK,mBAAmB,YAAY,eAAe,CAAC,CAAC;AAC1E,QAAI,iBAAiB,QAAW;AAC5B,YAAM,IAAI,cAAc,2BAA2B;AAAA,IACvD;AACA,UAAM,aAAa,aAAa,iBAAiB,oBAAoB;AACrE,QAAI,eAAe,QAAW;AAC1B,YAAM,IAAI,cAAc,qDAAqD;AAAA,IACjF;AACA,UAAM,aAAc,KAAK,cAAc,IAAI,qBAAqB,WAAW,WAAW,IAAI,IAAI,SAAS,KAAK,CAAC;AAC7G,eAAW,sBAAsB,MAAM;AACnC,YAAM,cAAc,WAAW,WAAW,IAAI,IAAI,SAAS,KAAK;AAChE,aAAO,KAAK,eAAe,WAAW;AACtC,iBAAW,wBAAwB,WAAW;AAAA,IAClD,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EAEA,cACI,MACA,UACA,oBACF;AACE,UAAM,EAAE,YAAY,UAAU,IAAI;AAClC,UAAM,WAAW,KAAK,mBAAmB,YAAY,UAAU;AAC/D,QAAI,aAAa,QAAW;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@project-chip/matter.js",
|
|
3
|
-
"version": "0.12.2-alpha.0-
|
|
3
|
+
"version": "0.12.2-alpha.0-20250201-eb5d40a2f",
|
|
4
4
|
"description": "Matter protocol in pure js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -44,16 +44,16 @@
|
|
|
44
44
|
"#*": "./src/*"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@matter/general": "0.12.2-alpha.0-
|
|
48
|
-
"@matter/model": "0.12.2-alpha.0-
|
|
49
|
-
"@matter/node": "0.12.2-alpha.0-
|
|
50
|
-
"@matter/protocol": "0.12.2-alpha.0-
|
|
51
|
-
"@matter/types": "0.12.2-alpha.0-
|
|
47
|
+
"@matter/general": "0.12.2-alpha.0-20250201-eb5d40a2f",
|
|
48
|
+
"@matter/model": "0.12.2-alpha.0-20250201-eb5d40a2f",
|
|
49
|
+
"@matter/node": "0.12.2-alpha.0-20250201-eb5d40a2f",
|
|
50
|
+
"@matter/protocol": "0.12.2-alpha.0-20250201-eb5d40a2f",
|
|
51
|
+
"@matter/types": "0.12.2-alpha.0-20250201-eb5d40a2f",
|
|
52
52
|
"@noble/curves": "^1.8.1"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@matter/tools": "0.12.2-alpha.0-
|
|
56
|
-
"@matter/testing": "0.12.2-alpha.0-
|
|
55
|
+
"@matter/tools": "0.12.2-alpha.0-20250201-eb5d40a2f",
|
|
56
|
+
"@matter/testing": "0.12.2-alpha.0-20250201-eb5d40a2f"
|
|
57
57
|
},
|
|
58
58
|
"files": [
|
|
59
59
|
"dist/**/*",
|
|
@@ -74,31 +74,37 @@ export class LegacyInteractionServer extends InteractionServer {
|
|
|
74
74
|
) {
|
|
75
75
|
const { endpointId, clusterId } = path;
|
|
76
76
|
const endpoint = this.#endpointStructure.getEndpoint(endpointId);
|
|
77
|
-
if (endpoint === undefined) {
|
|
77
|
+
if (endpoint === undefined || endpoint.number === undefined) {
|
|
78
78
|
throw new InternalError("Endpoint not found for ACL check. This should never happen.");
|
|
79
79
|
}
|
|
80
80
|
const aclManager = this.#getAclManager(exchange.session);
|
|
81
|
-
if (
|
|
81
|
+
if (
|
|
82
|
+
!aclManager.allowsPrivilege(
|
|
83
|
+
exchange.session as SecureSession,
|
|
84
|
+
{ number: endpoint.number, deviceTypes: [endpoint.deviceType] },
|
|
85
|
+
clusterId,
|
|
86
|
+
desiredAccessLevel,
|
|
87
|
+
)
|
|
88
|
+
) {
|
|
82
89
|
throw new AccessDeniedError(
|
|
83
90
|
`Access to ${endpointId}/${Diagnostic.hex(clusterId)} denied on ${exchange.session.name}.`,
|
|
84
91
|
);
|
|
85
92
|
}
|
|
86
93
|
}
|
|
87
94
|
|
|
88
|
-
protected override
|
|
95
|
+
protected override readAttribute(
|
|
89
96
|
path: AttributePath,
|
|
90
97
|
attribute: AnyAttributeServer<any>,
|
|
91
98
|
exchange: MessageExchange,
|
|
92
99
|
isFabricFiltered: boolean,
|
|
93
100
|
message: Message,
|
|
94
|
-
endpoint: EndpointInterface,
|
|
95
101
|
offline = false,
|
|
96
102
|
) {
|
|
97
103
|
// Offline read do not require ACL checks
|
|
98
104
|
if (!offline) {
|
|
99
105
|
this.#assertAccess(path, exchange, attribute.readAcl);
|
|
100
106
|
}
|
|
101
|
-
const data =
|
|
107
|
+
const data = super.readAttribute(path, attribute, exchange, isFabricFiltered, message);
|
|
102
108
|
if (attribute instanceof FabricScopedAttributeServer && !isFabricFiltered) {
|
|
103
109
|
const { value, version } = data;
|
|
104
110
|
return {
|
|
@@ -116,10 +122,9 @@ export class LegacyInteractionServer extends InteractionServer {
|
|
|
116
122
|
exchange: MessageExchange,
|
|
117
123
|
isFabricFiltered: boolean,
|
|
118
124
|
message: Message,
|
|
119
|
-
endpoint: EndpointInterface,
|
|
120
125
|
): Promise<NumberedOccurrence[]> {
|
|
121
126
|
this.#assertAccess(path, exchange, event.readAcl);
|
|
122
|
-
return super.readEvent(path, eventFilters, event, exchange, isFabricFiltered, message
|
|
127
|
+
return super.readEvent(path, eventFilters, event, exchange, isFabricFiltered, message);
|
|
123
128
|
}
|
|
124
129
|
|
|
125
130
|
protected override async writeAttribute(
|