@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.
@@ -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, endpoint: EndpointInterface, offline?: boolean): Promise<{
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, endpoint: EndpointInterface): Promise<NumberedOccurrence[]>;
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;cA4Cd,aAAa,CAClC,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAClC,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,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,EAChB,QAAQ,EAAE,iBAAiB,GAC5B,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;;;;yBAc4E,QAAQ;;CADjI"}
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(exchange.session, endpoint, clusterId, desiredAccessLevel)) {
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
- async readAttribute(path, attribute, exchange, isFabricFiltered, message, endpoint, offline = false) {
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 = await super.readAttribute(path, attribute, exchange, isFabricFiltered, message, endpoint);
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, endpoint) {
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, endpoint);
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": "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",
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, endpoint: EndpointInterface, offline?: boolean): Promise<{
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, endpoint: EndpointInterface): Promise<NumberedOccurrence[]>;
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;cA4Cd,aAAa,CAClC,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAClC,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,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,EAChB,QAAQ,EAAE,iBAAiB,GAC5B,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;;;;yBAc4E,QAAQ;;CADjI"}
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(exchange.session, endpoint, clusterId, desiredAccessLevel)) {
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
- async readAttribute(path, attribute, exchange, isFabricFiltered, message, endpoint, offline = false) {
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 = await super.readAttribute(path, attribute, exchange, isFabricFiltered, message, endpoint);
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, endpoint) {
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, endpoint);
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": "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",
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-20250128-09631d531",
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-20250128-09631d531",
48
- "@matter/model": "0.12.2-alpha.0-20250128-09631d531",
49
- "@matter/node": "0.12.2-alpha.0-20250128-09631d531",
50
- "@matter/protocol": "0.12.2-alpha.0-20250128-09631d531",
51
- "@matter/types": "0.12.2-alpha.0-20250128-09631d531",
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-20250128-09631d531",
56
- "@matter/testing": "0.12.2-alpha.0-20250128-09631d531"
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 (!aclManager.allowsPrivilege(exchange.session as SecureSession, endpoint, clusterId, desiredAccessLevel)) {
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 async readAttribute(
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 = await super.readAttribute(path, attribute, exchange, isFabricFiltered, message, endpoint);
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, endpoint);
127
+ return super.readEvent(path, eventFilters, event, exchange, isFabricFiltered, message);
123
128
  }
124
129
 
125
130
  protected override async writeAttribute(