@project-chip/matter.js 0.12.2-alpha.0-20250130-d012e3082 → 0.12.2

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-20250130-d012e3082",
3
+ "version": "0.12.2",
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-20250130-d012e3082",
48
- "@matter/model": "0.12.2-alpha.0-20250130-d012e3082",
49
- "@matter/node": "0.12.2-alpha.0-20250130-d012e3082",
50
- "@matter/protocol": "0.12.2-alpha.0-20250130-d012e3082",
51
- "@matter/types": "0.12.2-alpha.0-20250130-d012e3082",
47
+ "@matter/general": "0.12.2",
48
+ "@matter/model": "0.12.2",
49
+ "@matter/node": "0.12.2",
50
+ "@matter/protocol": "0.12.2",
51
+ "@matter/types": "0.12.2",
52
52
  "@noble/curves": "^1.8.1"
53
53
  },
54
54
  "devDependencies": {
55
- "@matter/tools": "0.12.2-alpha.0-20250130-d012e3082",
56
- "@matter/testing": "0.12.2-alpha.0-20250130-d012e3082"
55
+ "@matter/tools": "0.12.2",
56
+ "@matter/testing": "0.12.2"
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(