@matter/protocol 0.13.1-alpha.0-20250509-28e1567e1 → 0.13.1-alpha.0-20250511-74ef153aa

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.
Files changed (118) hide show
  1. package/dist/cjs/action/protocols.d.ts +59 -2
  2. package/dist/cjs/action/protocols.d.ts.map +1 -1
  3. package/dist/cjs/action/request/Read.d.ts +2 -2
  4. package/dist/cjs/action/request/Read.d.ts.map +1 -1
  5. package/dist/cjs/action/request/Read.js +4 -4
  6. package/dist/cjs/action/request/Read.js.map +1 -1
  7. package/dist/cjs/action/response/ReadResult.d.ts +6 -2
  8. package/dist/cjs/action/response/ReadResult.d.ts.map +1 -1
  9. package/dist/cjs/action/server/AttributeResponse.d.ts +46 -17
  10. package/dist/cjs/action/server/AttributeResponse.d.ts.map +1 -1
  11. package/dist/cjs/action/server/AttributeResponse.js +128 -110
  12. package/dist/cjs/action/server/AttributeResponse.js.map +2 -2
  13. package/dist/cjs/action/server/AttributeSubscriptionResponse.d.ts +36 -0
  14. package/dist/cjs/action/server/AttributeSubscriptionResponse.d.ts.map +1 -0
  15. package/dist/cjs/action/server/AttributeSubscriptionResponse.js +86 -0
  16. package/dist/cjs/action/server/AttributeSubscriptionResponse.js.map +6 -0
  17. package/dist/cjs/action/server/DataResponse.d.ts +45 -0
  18. package/dist/cjs/action/server/DataResponse.d.ts.map +1 -0
  19. package/dist/cjs/action/server/DataResponse.js +69 -0
  20. package/dist/cjs/action/server/DataResponse.js.map +6 -0
  21. package/dist/cjs/action/server/EventResponse.d.ts +28 -0
  22. package/dist/cjs/action/server/EventResponse.d.ts.map +1 -0
  23. package/dist/cjs/action/server/EventResponse.js +318 -0
  24. package/dist/cjs/action/server/EventResponse.js.map +6 -0
  25. package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
  26. package/dist/cjs/action/server/ServerInteraction.js +15 -2
  27. package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
  28. package/dist/cjs/action/server/index.d.ts +3 -0
  29. package/dist/cjs/action/server/index.d.ts.map +1 -1
  30. package/dist/cjs/action/server/index.js +3 -0
  31. package/dist/cjs/action/server/index.js.map +1 -1
  32. package/dist/cjs/events/OccurrenceManager.d.ts +20 -11
  33. package/dist/cjs/events/OccurrenceManager.d.ts.map +1 -1
  34. package/dist/cjs/events/OccurrenceManager.js +113 -74
  35. package/dist/cjs/events/OccurrenceManager.js.map +1 -1
  36. package/dist/cjs/interaction/InteractionMessenger.d.ts +14 -2
  37. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  38. package/dist/cjs/interaction/InteractionMessenger.js +87 -3
  39. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  40. package/dist/cjs/interaction/index.d.ts +0 -1
  41. package/dist/cjs/interaction/index.d.ts.map +1 -1
  42. package/dist/cjs/interaction/index.js +0 -1
  43. package/dist/cjs/interaction/index.js.map +1 -1
  44. package/dist/cjs/peer/ControllerCommissioningFlow.js +1 -1
  45. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  46. package/dist/cjs/protocol/MessageExchange.js +11 -1
  47. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  48. package/dist/esm/action/protocols.d.ts +59 -2
  49. package/dist/esm/action/protocols.d.ts.map +1 -1
  50. package/dist/esm/action/request/Read.d.ts +2 -2
  51. package/dist/esm/action/request/Read.d.ts.map +1 -1
  52. package/dist/esm/action/request/Read.js +4 -4
  53. package/dist/esm/action/request/Read.js.map +1 -1
  54. package/dist/esm/action/response/ReadResult.d.ts +6 -2
  55. package/dist/esm/action/response/ReadResult.d.ts.map +1 -1
  56. package/dist/esm/action/server/AttributeResponse.d.ts +46 -17
  57. package/dist/esm/action/server/AttributeResponse.d.ts.map +1 -1
  58. package/dist/esm/action/server/AttributeResponse.js +129 -113
  59. package/dist/esm/action/server/AttributeResponse.js.map +1 -1
  60. package/dist/esm/action/server/AttributeSubscriptionResponse.d.ts +36 -0
  61. package/dist/esm/action/server/AttributeSubscriptionResponse.d.ts.map +1 -0
  62. package/dist/esm/action/server/AttributeSubscriptionResponse.js +66 -0
  63. package/dist/esm/action/server/AttributeSubscriptionResponse.js.map +6 -0
  64. package/dist/esm/action/server/DataResponse.d.ts +45 -0
  65. package/dist/esm/action/server/DataResponse.d.ts.map +1 -0
  66. package/dist/esm/action/server/DataResponse.js +49 -0
  67. package/dist/esm/action/server/DataResponse.js.map +6 -0
  68. package/dist/esm/action/server/EventResponse.d.ts +28 -0
  69. package/dist/esm/action/server/EventResponse.d.ts.map +1 -0
  70. package/dist/esm/action/server/EventResponse.js +305 -0
  71. package/dist/esm/action/server/EventResponse.js.map +6 -0
  72. package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
  73. package/dist/esm/action/server/ServerInteraction.js +16 -3
  74. package/dist/esm/action/server/ServerInteraction.js.map +1 -1
  75. package/dist/esm/action/server/index.d.ts +3 -0
  76. package/dist/esm/action/server/index.d.ts.map +1 -1
  77. package/dist/esm/action/server/index.js +3 -0
  78. package/dist/esm/action/server/index.js.map +1 -1
  79. package/dist/esm/events/OccurrenceManager.d.ts +20 -11
  80. package/dist/esm/events/OccurrenceManager.d.ts.map +1 -1
  81. package/dist/esm/events/OccurrenceManager.js +117 -80
  82. package/dist/esm/events/OccurrenceManager.js.map +1 -1
  83. package/dist/esm/interaction/InteractionMessenger.d.ts +14 -2
  84. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  85. package/dist/esm/interaction/InteractionMessenger.js +87 -3
  86. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  87. package/dist/esm/interaction/index.d.ts +0 -1
  88. package/dist/esm/interaction/index.d.ts.map +1 -1
  89. package/dist/esm/interaction/index.js +0 -1
  90. package/dist/esm/interaction/index.js.map +1 -1
  91. package/dist/esm/peer/ControllerCommissioningFlow.js +1 -1
  92. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  93. package/dist/esm/protocol/MessageExchange.js +11 -1
  94. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  95. package/package.json +6 -6
  96. package/src/action/protocols.ts +68 -2
  97. package/src/action/request/Read.ts +2 -2
  98. package/src/action/response/ReadResult.ts +8 -1
  99. package/src/action/server/AttributeResponse.ts +145 -118
  100. package/src/action/server/AttributeSubscriptionResponse.ts +90 -0
  101. package/src/action/server/DataResponse.ts +70 -0
  102. package/src/action/server/EventResponse.ts +381 -0
  103. package/src/action/server/ServerInteraction.ts +18 -4
  104. package/src/action/server/index.ts +3 -0
  105. package/src/events/OccurrenceManager.ts +126 -100
  106. package/src/interaction/InteractionMessenger.ts +93 -8
  107. package/src/interaction/index.ts +0 -1
  108. package/src/peer/ControllerCommissioningFlow.ts +1 -1
  109. package/src/protocol/MessageExchange.ts +13 -1
  110. package/dist/cjs/interaction/ServerSubscription.d.ts +0 -116
  111. package/dist/cjs/interaction/ServerSubscription.d.ts.map +0 -1
  112. package/dist/cjs/interaction/ServerSubscription.js +0 -778
  113. package/dist/cjs/interaction/ServerSubscription.js.map +0 -6
  114. package/dist/esm/interaction/ServerSubscription.d.ts +0 -116
  115. package/dist/esm/interaction/ServerSubscription.d.ts.map +0 -1
  116. package/dist/esm/interaction/ServerSubscription.js +0 -778
  117. package/dist/esm/interaction/ServerSubscription.js.map +0 -6
  118. package/src/interaction/ServerSubscription.ts +0 -1038
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Project CHIP Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AccessLevel } from "#model";
7
+ import { BitmapSchema, NodeId, WildcardPathFlagsBitmap } from "#types";
8
+ const WildcardPathFlagsCodec = BitmapSchema(WildcardPathFlagsBitmap);
9
+ const FallbackLimits = {
10
+ fabricScoped: false,
11
+ fabricSensitive: false,
12
+ readable: true,
13
+ readLevel: AccessLevel.View,
14
+ timed: false,
15
+ writable: true,
16
+ writeLevel: AccessLevel.Administer
17
+ };
18
+ class DataResponse {
19
+ // Configuration
20
+ #session;
21
+ #node;
22
+ // The node ID may be expensive to retrieve and is invariant so we cache it here
23
+ #cachedNodeId;
24
+ constructor(node, session) {
25
+ this.#node = node;
26
+ this.#session = session;
27
+ }
28
+ get node() {
29
+ return this.#node;
30
+ }
31
+ get session() {
32
+ return this.#session;
33
+ }
34
+ /**
35
+ * The node ID used to filter paths with node ID specified. Unsure if this is ever actually used.
36
+ */
37
+ get nodeId() {
38
+ if (this.#cachedNodeId === void 0) {
39
+ this.#cachedNodeId = (this.#session.fabric && this.#node.nodeIdFor(this.#session.fabric)) ?? NodeId.UNSPECIFIED_NODE_ID;
40
+ }
41
+ return this.#cachedNodeId;
42
+ }
43
+ }
44
+ export {
45
+ DataResponse,
46
+ FallbackLimits,
47
+ WildcardPathFlagsCodec
48
+ };
49
+ //# sourceMappingURL=DataResponse.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/action/server/DataResponse.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,mBAAmB;AAC5B,SAAS,cAAc,QAAQ,+BAA+B;AAEvD,MAAM,yBAAyB,aAAa,uBAAuB;AACnE,MAAM,iBAAuC;AAAA,EAChD,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,WAAW,YAAY;AAAA,EACvB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY,YAAY;AAC5B;AAEO,MAAe,aAA6E;AAAA;AAAA,EAE/F;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EAEA,YAAY,MAAoB,SAAmB;AAC/C,SAAK,QAAQ;AACb,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAc,OAAO;AACjB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,UAAU;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,SAAS;AACnB,QAAI,KAAK,kBAAkB,QAAW;AAClC,WAAK,iBACA,KAAK,SAAS,UAAU,KAAK,MAAM,UAAU,KAAK,SAAS,MAAM,MAAM,OAAO;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAkBJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Project CHIP Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { NodeProtocol } from "#action/protocols.js";
7
+ import { Read } from "#action/request/Read.js";
8
+ import { ReadResult } from "#action/response/ReadResult.js";
9
+ import { AccessControl } from "#action/server/AccessControl.js";
10
+ import { DataResponse } from "#action/server/DataResponse.js";
11
+ /**
12
+ * Implements read of event data for Matter "read" and "subscribe" interactions.
13
+ *
14
+ * We collect all allowed event paths at first and then iterate over all events and use the ones matching to the paths.
15
+ *
16
+ * TODO - profile; ensure nested functions are properly JITed and/or inlined
17
+ */
18
+ export declare class EventResponse<SessionT extends AccessControl.Session = AccessControl.Session> extends DataResponse<SessionT> {
19
+ #private;
20
+ constructor(node: NodeProtocol, session: SessionT);
21
+ process({ eventFilters, eventRequests, isFabricFiltered, }: Read.Events): AsyncGenerator<ReadResult.Chunk, void, void>;
22
+ get counts(): {
23
+ status: number;
24
+ value: number;
25
+ existent: number;
26
+ };
27
+ }
28
+ //# sourceMappingURL=EventResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/EventResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwD,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAkB,MAAM,gCAAgC,CAAC;AAiB9E;;;;;;GAMG;AACH,qBAAa,aAAa,CACtB,QAAQ,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAChE,SAAQ,YAAY,CAAC,QAAQ,CAAC;;gBAmBhB,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ;IAI1C,OAAO,CAAC,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,GACnB,EAAE,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IAsC7D,IAAI,MAAM;;;;MAMT;CAiRJ"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Project CHIP Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AccessControl } from "#action/server/AccessControl.js";
7
+ import { DataResponse, FallbackLimits } from "#action/server/DataResponse.js";
8
+ import { InternalError, isObject, Logger } from "#general";
9
+ import { DataModelPath, ElementTag } from "#model";
10
+ import {
11
+ EventNumber,
12
+ FabricIndex,
13
+ NodeId,
14
+ Status,
15
+ StatusCode,
16
+ StatusResponseError
17
+ } from "#types";
18
+ const logger = Logger.get("EventResponse");
19
+ class EventResponse extends DataResponse {
20
+ // Normalized Event Filter to just our node-id
21
+ #eventMinVersion;
22
+ // The Fabric filtering is done when we read the data from OccurrenceManager, so we can determine the parameter once
23
+ #filteredForFabricIndex;
24
+ // The following state updates as data producers execute. This serves both to convey state between functions and as
25
+ // a cache between producers that touch the same endpoint and/or cluster
26
+ #currentEndpoint;
27
+ #currentCluster;
28
+ // Collected allowed and existing event paths to consider when reading events
29
+ #allowedEventPaths = /* @__PURE__ */ new Map();
30
+ // Count how many attribute status (on error) and attribute values (on success) we have emitted
31
+ #statusCount = 0;
32
+ #valueCount = 0;
33
+ constructor(node, session) {
34
+ super(node, session);
35
+ }
36
+ async *process({
37
+ eventFilters,
38
+ eventRequests,
39
+ isFabricFiltered
40
+ }) {
41
+ const nodeId = this.session.fabric === void 0 ? NodeId.UNSPECIFIED_NODE_ID : this.nodeId;
42
+ if (eventFilters !== void 0) {
43
+ for (const { nodeId: filterNodeId, eventMin } of eventFilters) {
44
+ if (filterNodeId === void 0 || filterNodeId === nodeId) {
45
+ this.#eventMinVersion = EventNumber(eventMin);
46
+ break;
47
+ }
48
+ }
49
+ }
50
+ if (isFabricFiltered) {
51
+ this.#filteredForFabricIndex = this.session.fabric ?? FabricIndex.NO_FABRIC;
52
+ }
53
+ for (const path of eventRequests) {
54
+ if (path.endpointId === void 0 || path.clusterId === void 0 || path.eventId === void 0) {
55
+ this.#addWildcard(path);
56
+ } else {
57
+ const status = this.#addConcrete(path);
58
+ if (status !== void 0) {
59
+ yield [status];
60
+ this.#statusCount++;
61
+ }
62
+ }
63
+ }
64
+ for await (const data of this.#readAllowedEvents()) {
65
+ yield [data];
66
+ this.#valueCount++;
67
+ }
68
+ }
69
+ get counts() {
70
+ return {
71
+ status: this.#statusCount,
72
+ value: this.#valueCount,
73
+ existent: this.#allowedEventPaths.size
74
+ };
75
+ }
76
+ /** Guarded accessor for this.#currentEndpoint. This should never be undefined */
77
+ get #guardedCurrentEndpoint() {
78
+ if (this.#currentEndpoint === void 0) {
79
+ throw new InternalError("currentEndpoint is not set. Should never happen");
80
+ }
81
+ return this.#currentEndpoint;
82
+ }
83
+ /** Guarded accessor for this.#currentCluster. This should never be undefined */
84
+ get #guardedCurrentCluster() {
85
+ if (this.#currentCluster === void 0) {
86
+ throw new InternalError("currentCluster is not set. Should never happen");
87
+ }
88
+ return this.#currentCluster;
89
+ }
90
+ /**
91
+ * Validate a wildcard path and update the internal state.
92
+ */
93
+ #addWildcard(path) {
94
+ const { nodeId, clusterId, endpointId, eventId } = path;
95
+ if (clusterId === void 0 && eventId !== void 0) {
96
+ throw new StatusResponseError("Illegal read request with wildcard cluster ID", StatusCode.InvalidAction);
97
+ }
98
+ if (nodeId !== void 0 && nodeId !== this.nodeId) {
99
+ return;
100
+ }
101
+ if (endpointId === void 0) {
102
+ for (const endpoint2 of this.node) {
103
+ this.#addEndpointForWildcard(endpoint2, path);
104
+ }
105
+ return;
106
+ }
107
+ const endpoint = this.node[endpointId];
108
+ if (endpoint) {
109
+ return this.#addEndpointForWildcard(endpoint, path);
110
+ }
111
+ }
112
+ /**
113
+ * Validate a concrete path and update the internal state.
114
+ */
115
+ #addConcrete(path) {
116
+ const { nodeId, endpointId, clusterId, eventId } = path;
117
+ if (nodeId !== void 0 && this.nodeId !== nodeId) {
118
+ return this.#asStatus(path, Status.UnsupportedNode);
119
+ }
120
+ const endpoint = this.node[endpointId];
121
+ const cluster = endpoint?.[clusterId];
122
+ const event = cluster?.type.events[eventId];
123
+ let limits;
124
+ if (event === void 0) {
125
+ const modelEvent = this.node.matter.member(path.clusterId, [ElementTag.Cluster])?.member(path.eventId, [ElementTag.Event]);
126
+ if (modelEvent) {
127
+ limits = AccessControl(modelEvent).limits;
128
+ } else {
129
+ limits = FallbackLimits;
130
+ }
131
+ } else {
132
+ limits = event.limits;
133
+ }
134
+ const location = {
135
+ ...cluster?.location ?? {
136
+ path: DataModelPath.none,
137
+ endpoint: endpointId,
138
+ cluster: clusterId
139
+ },
140
+ owningFabric: this.session.fabric
141
+ };
142
+ const permission = this.session.authorityAt(limits.readLevel, location);
143
+ switch (permission) {
144
+ case AccessControl.Authority.Granted:
145
+ break;
146
+ case AccessControl.Authority.Unauthorized:
147
+ return this.#asStatus(path, Status.UnsupportedAccess);
148
+ case AccessControl.Authority.Restricted:
149
+ return this.#asStatus(path, Status.AccessRestricted);
150
+ default:
151
+ throw new InternalError(`Unsupported authorization state ${permission}`);
152
+ }
153
+ if (endpoint === void 0) {
154
+ return this.#asStatus(path, Status.UnsupportedEndpoint);
155
+ }
156
+ if (cluster === void 0) {
157
+ return this.#asStatus(path, Status.UnsupportedCluster);
158
+ }
159
+ if (event === void 0 || !cluster.type.events[event.id]) {
160
+ return this.#asStatus(path, Status.UnsupportedEvent);
161
+ }
162
+ if (this.#currentEndpoint !== endpoint) {
163
+ this.#currentEndpoint = endpoint;
164
+ this.#currentCluster = cluster;
165
+ } else if (this.#currentCluster !== cluster) {
166
+ this.#currentCluster = cluster;
167
+ }
168
+ this.#registerEventPath(path);
169
+ }
170
+ /**
171
+ * Starts new chunk or adds to current chunk all values from {@link endpoint} selected by {@link path}.
172
+ *
173
+ * Emits previous chunk if it exists and was not for this endpoint. This means that our chunk size is one endpoint
174
+ * worth of data, except for the initial error chunk if there are path errors.
175
+ *
176
+ * TODO - skip endpoints for which subject is unauthorized
177
+ */
178
+ #addEndpointForWildcard(endpoint, path) {
179
+ if (this.#currentEndpoint !== endpoint) {
180
+ this.#currentEndpoint = endpoint;
181
+ this.#currentCluster = void 0;
182
+ }
183
+ const { clusterId } = path;
184
+ if (clusterId === void 0) {
185
+ for (const cluster of endpoint) {
186
+ this.#addClusterForWildcard(cluster, { ...path, endpointId: endpoint.id });
187
+ }
188
+ } else {
189
+ const cluster = endpoint[clusterId];
190
+ if (cluster !== void 0) {
191
+ this.#addClusterForWildcard(cluster, { ...path, endpointId: endpoint.id });
192
+ }
193
+ }
194
+ }
195
+ /**
196
+ * Read values from a specific {@link cluster} for a wildcard path.
197
+ *
198
+ * Depends on state initialized by {@link #addEndpointForWildcard}.
199
+ *
200
+ * TODO - skip endpoints for which subject is unauthorized as optimization
201
+ */
202
+ #addClusterForWildcard(cluster, path) {
203
+ if (this.#currentCluster !== cluster) {
204
+ this.#currentCluster = cluster;
205
+ }
206
+ const { eventId } = path;
207
+ if (eventId === void 0) {
208
+ for (const event of cluster.type.events) {
209
+ this.#addEventForWildcard(event, {
210
+ ...path,
211
+ clusterId: cluster.type.id
212
+ });
213
+ }
214
+ } else {
215
+ const event = cluster.type.events[eventId];
216
+ if (event !== void 0) {
217
+ this.#addEventForWildcard(event, {
218
+ ...path,
219
+ clusterId: cluster.type.id
220
+ });
221
+ }
222
+ }
223
+ }
224
+ /**
225
+ * Read values from a specific {@link event} for a wildcard path.
226
+ *
227
+ * Depends on state initialized by {@link #addClusterForWildcard}.
228
+ */
229
+ #addEventForWildcard(event, path) {
230
+ if (!this.#guardedCurrentCluster.type.events[event.id]) {
231
+ return;
232
+ }
233
+ if (this.session.authorityAt(event.limits.readLevel, this.#guardedCurrentCluster.location) !== AccessControl.Authority.Granted) {
234
+ return;
235
+ }
236
+ this.#registerEventPath({ ...path, eventId: event.id });
237
+ }
238
+ #createEventKey(path) {
239
+ const { endpointId, clusterId, eventId } = path;
240
+ return `${endpointId}:${clusterId}:${eventId}`;
241
+ }
242
+ #registerEventPath(path) {
243
+ const { eventId } = path;
244
+ this.#allowedEventPaths.set(
245
+ this.#createEventKey({
246
+ ...path,
247
+ endpointId: this.#guardedCurrentEndpoint.id,
248
+ clusterId: this.#guardedCurrentCluster.type.id,
249
+ eventId
250
+ }),
251
+ this.#guardedCurrentCluster.type.events[eventId].tlv
252
+ );
253
+ }
254
+ async *#readAllowedEvents() {
255
+ for await (const event of this.node.eventHandler.get(this.#eventMinVersion)) {
256
+ const tlv = this.#allowedEventPaths.get(this.#createEventKey(event));
257
+ if (tlv === void 0) {
258
+ continue;
259
+ }
260
+ if (this.#filteredForFabricIndex !== void 0) {
261
+ const { payload } = event;
262
+ if (!isObject(payload)) {
263
+ continue;
264
+ }
265
+ const { fabricIndex } = payload;
266
+ if (fabricIndex !== void 0 && fabricIndex !== this.#filteredForFabricIndex) {
267
+ continue;
268
+ }
269
+ }
270
+ yield this.#asValue(event, tlv);
271
+ }
272
+ }
273
+ /**
274
+ * Add a status value.
275
+ */
276
+ #asStatus(path, status) {
277
+ logger.debug(`Error reading event ${this.node.inspectPath(path)}: Status=${StatusCode[status]}(${status})`);
278
+ const report = {
279
+ kind: "event-status",
280
+ path,
281
+ status
282
+ };
283
+ return report;
284
+ }
285
+ /**
286
+ * Add event values as separate entries to the result.
287
+ */
288
+ #asValue(event, tlv) {
289
+ const { number, epochTimestamp: timestamp, priority, payload: value, endpointId, clusterId, eventId } = event;
290
+ const report = {
291
+ kind: "event-value",
292
+ path: { endpointId, clusterId, eventId },
293
+ number,
294
+ priority,
295
+ timestamp,
296
+ value,
297
+ tlv
298
+ };
299
+ return report;
300
+ }
301
+ }
302
+ export {
303
+ EventResponse
304
+ };
305
+ //# sourceMappingURL=EventResponse.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/action/server/EventResponse.ts"],
4
+ "mappings": "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",
5
+ "names": ["endpoint"]
6
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ServerInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/server/ServerInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE;;;;;;;;;GASG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CACzF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAIrB,IAAI,EAAE,YAAY;IAIvB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAG,UAAU;IAUzD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;IAKpE,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IAKxE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;CAI9E"}
1
+ {"version":3,"file":"ServerInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/server/ServerInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAOhE;;;;;;;;;GASG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CACzF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAIrB,IAAI,EAAE,YAAY;IAIvB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAG,UAAU;IAqBzD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;IAKpE,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IAKxE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;CAI9E"}
@@ -4,17 +4,30 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Read } from "#action/request/Read.js";
7
- import { NotImplementedError } from "#general";
7
+ import { EventResponse } from "#action/server/EventResponse.js";
8
+ import { Logger, NotImplementedError } from "#general";
8
9
  import { AttributeResponse } from "./AttributeResponse.js";
10
+ const logger = Logger.get("ServerInteraction");
9
11
  class ServerInteraction {
10
12
  #node;
11
13
  constructor(node) {
12
14
  this.#node = node;
13
15
  }
14
16
  async *read(request, session) {
15
- if (Read.isAttribute(request)) {
16
- yield* new AttributeResponse(this.#node, session, request);
17
+ let readInfo = "";
18
+ if (Read.containsAttribute(request)) {
19
+ const attributeReader = new AttributeResponse(this.#node, session);
20
+ yield* attributeReader.process(request);
21
+ const { existent, status, value } = attributeReader.counts;
22
+ readInfo = `${existent} matching attributes (${status ? `${status} status, ` : ""}${value ? `${value} values` : ""})`;
17
23
  }
24
+ if (Read.containsEvent(request)) {
25
+ const eventReader = new EventResponse(this.#node, session);
26
+ yield* eventReader.process(request);
27
+ const { existent, status, value } = eventReader.counts;
28
+ readInfo += `${readInfo.length > 0 ? ", " : ""}${existent} matching events (${status ? `${status} status, ` : ""}${value ? `${value} values` : ""})`;
29
+ }
30
+ logger.debug(`Read request resolved to ${readInfo}`);
18
31
  }
19
32
  subscribe(_request, _session) {
20
33
  throw new NotImplementedError();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/server/ServerInteraction.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AASA,SAAS,YAAY;AAQrB,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAY3B,MAAM,kBAEb;AAAA,EACI;AAAA,EAEA,YAAY,MAAoB;AAC5B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,OAAO,KAAK,SAAe,SAA+B;AAGtD,QAAI,KAAK,YAAY,OAAO,GAAG;AAC3B,aAAO,IAAI,kBAAkB,KAAK,OAAO,SAAS,OAAO;AAAA,IAC7D;AAAA,EAGJ;AAAA,EAEA,UAAU,UAAqB,UAAsC;AAEjE,UAAM,IAAI,oBAAoB;AAAA,EAClC;AAAA,EAEA,MAAuB,UAAa,UAAqC;AAErE,UAAM,IAAI,oBAAoB;AAAA,EAClC;AAAA,EAEA,OAAyB,UAAa,UAAsC;AAExE,UAAM,IAAI,oBAAoB;AAAA,EAClC;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AASA,SAAS,YAAY;AAQrB,SAAS,qBAAqB;AAC9B,SAAS,QAAQ,2BAA2B;AAC5C,SAAS,yBAAyB;AAElC,MAAM,SAAS,OAAO,IAAI,mBAAmB;AAYtC,MAAM,kBAEb;AAAA,EACI;AAAA,EAEA,YAAY,MAAoB;AAC5B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,OAAO,KAAK,SAAe,SAA+B;AAGtD,QAAI,WAAW;AACf,QAAI,KAAK,kBAAkB,OAAO,GAAG;AACjC,YAAM,kBAAkB,IAAI,kBAAkB,KAAK,OAAO,OAAO;AACjE,aAAO,gBAAgB,QAAQ,OAAO;AAEtC,YAAM,EAAE,UAAU,QAAQ,MAAM,IAAI,gBAAgB;AACpD,iBAAW,GAAG,QAAQ,yBAAyB,SAAS,GAAG,MAAM,cAAc,EAAE,GAAG,QAAQ,GAAG,KAAK,YAAY,EAAE;AAAA,IACtH;AAEA,QAAI,KAAK,cAAc,OAAO,GAAG;AAC7B,YAAM,cAAc,IAAI,cAAc,KAAK,OAAO,OAAO;AACzD,aAAO,YAAY,QAAQ,OAAO;AAClC,YAAM,EAAE,UAAU,QAAQ,MAAM,IAAI,YAAY;AAChD,kBAAY,GAAG,SAAS,SAAS,IAAI,OAAO,EAAE,GAAG,QAAQ,qBAAqB,SAAS,GAAG,MAAM,cAAc,EAAE,GAAG,QAAQ,GAAG,KAAK,YAAY,EAAE;AAAA,IACrJ;AACA,WAAO,MAAM,4BAA4B,QAAQ,EAAE;AAAA,EACvD;AAAA,EAEA,UAAU,UAAqB,UAAsC;AAEjE,UAAM,IAAI,oBAAoB;AAAA,EAClC;AAAA,EAEA,MAAuB,UAAa,UAAqC;AAErE,UAAM,IAAI,oBAAoB;AAAA,EAClC;AAAA,EAEA,OAAyB,UAAa,UAAsC;AAExE,UAAM,IAAI,oBAAoB;AAAA,EAClC;AACJ;",
5
5
  "names": []
6
6
  }
@@ -5,5 +5,8 @@
5
5
  */
6
6
  export * from "./AccessControl.js";
7
7
  export * from "./AttributeResponse.js";
8
+ export * from "./AttributeSubscriptionResponse.js";
9
+ export * from "./DataResponse.js";
10
+ export * from "./EventResponse.js";
8
11
  export * from "./ServerInteraction.js";
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/action/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/action/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -5,5 +5,8 @@
5
5
  */
6
6
  export * from "./AccessControl.js";
7
7
  export * from "./AttributeResponse.js";
8
+ export * from "./AttributeSubscriptionResponse.js";
9
+ export * from "./DataResponse.js";
10
+ export * from "./EventResponse.js";
8
11
  export * from "./ServerInteraction.js";
9
12
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/server/index.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
5
  "names": []
6
6
  }
@@ -3,8 +3,8 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Construction, MaybePromise } from "#general";
7
- import { FabricIndex, TlvEventFilter, TlvEventPath, TypeFromSchema } from "#types";
6
+ import { Construction, MaybePromise, Observable } from "#general";
7
+ import { EventNumber, FabricIndex, TlvEventFilter, TlvEventPath, TypeFromSchema } from "#types";
8
8
  import { EventStore } from "./EventStore.js";
9
9
  import { NumberedOccurrence, Occurrence } from "./Occurrence.js";
10
10
  export interface OccurrenceManagerContext {
@@ -27,8 +27,26 @@ export declare class OccurrenceManager {
27
27
  get construction(): Construction<OccurrenceManager>;
28
28
  static create(context: OccurrenceManagerContext): Promise<OccurrenceManager>;
29
29
  constructor({ store, bufferConfig }: OccurrenceManagerContext);
30
+ get added(): Observable<[occurrence: NumberedOccurrence], void>;
30
31
  clear(): Promise<void>;
32
+ /**
33
+ * Query the event store for events matching the given path and filters.
34
+ * @deprecated
35
+ */
31
36
  query(eventPath: TypeFromSchema<typeof TlvEventPath>, filters?: TypeFromSchema<typeof TlvEventFilter>[], filterForFabricIndex?: FabricIndex): MaybePromise<NumberedOccurrence[]>;
37
+ /**
38
+ * Return an iterator over all occurrences in the store that are bigger or equal to the minimum eventNumber,
39
+ * if provided.
40
+ */
41
+ get(eventMin?: EventNumber): AsyncGenerator<{
42
+ number: EventNumber;
43
+ endpointId: import("#types").EndpointNumber;
44
+ clusterId: import("#types").ClusterId;
45
+ eventId: import("#types").EventId;
46
+ epochTimestamp: number;
47
+ priority: import("#types").EventPriority;
48
+ payload: unknown;
49
+ }, void, unknown>;
32
50
  close(): MaybePromise<void>;
33
51
  add(occurrence: Occurrence): MaybePromise<NumberedOccurrence>;
34
52
  }
@@ -48,15 +66,6 @@ export declare namespace OccurrenceManager {
48
66
  * {@link minimumEventAllowance}.
49
67
  */
50
68
  maxEventAllowance: number;
51
- /**
52
- * Minimum allowances by priority. This ensures a minimum number of events for each priority avoid LRU
53
- * harvesting.
54
- */
55
- minPriorityEventAllowance: {
56
- critical: number;
57
- info: number;
58
- debug: number;
59
- };
60
69
  }
61
70
  const DefaultBufferConfig: BufferConfig;
62
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OccurrenceManager.d.ts","sourceRoot":"","sources":["../../../src/events/OccurrenceManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,YAAY,EAMZ,YAAY,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAGH,WAAW,EAEX,cAAc,EACd,YAAY,EACZ,cAAc,EACjB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,UAAU,EAAqB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,UAAU,CAAC;IAElB,YAAY,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC;CACjD;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;;IAgB1B,IAAI,YAAY,oCAEf;WAEY,MAAM,CAAC,OAAO,EAAE,wBAAwB;gBAIzC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,wBAAwB;IAoCvD,KAAK;IASX,KAAK,CACD,SAAS,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,EAC9C,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,cAAc,CAAC,EAAE,EACjD,oBAAoB,CAAC,EAAE,WAAW,GACnC,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAuFrC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC;IAI3B,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,kBAAkB,CAAC;CAmEhE;AAQD,yBAAiB,iBAAiB,CAAC;IAC/B;;OAEG;IACH,UAAiB,YAAY;QACzB;;WAEG;QACH,iBAAiB,EAAE,MAAM,CAAC;QAE1B;;;;;WAKG;QACH,iBAAiB,EAAE,MAAM,CAAC;QAE1B;;;WAGG;QACH,yBAAyB,EAAE;YACvB,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;SACjB,CAAC;KACL;IAEM,MAAM,mBAAmB,EAAE,YAQjC,CAAC;CACL"}
1
+ {"version":3,"file":"OccurrenceManager.d.ts","sourceRoot":"","sources":["../../../src/events/OccurrenceManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,YAAY,EAOZ,YAAY,EACZ,UAAU,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAoB,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAClH,OAAO,EAAE,UAAU,EAAqB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,UAAU,CAAC;IAElB,YAAY,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC;CACjD;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;;IAc1B,IAAI,YAAY,oCAEf;WAEY,MAAM,CAAC,OAAO,EAAE,wBAAwB;gBAIzC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,wBAAwB;IAgC7D,IAAI,KAAK,uDAER;IAEK,KAAK;IA4CX;;;OAGG;IACH,KAAK,CACD,SAAS,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,EAC9C,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,cAAc,CAAC,EAAE,EACjD,oBAAoB,CAAC,EAAE,WAAW,GACnC,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAmFrC;;;OAGG;IACI,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW;;;;;;;;;IA8BjC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC;IAI3B,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,kBAAkB,CAAC;CAqDhE;AAED,yBAAiB,iBAAiB,CAAC;IAC/B;;OAEG;IACH,UAAiB,YAAY;QACzB;;WAEG;QACH,iBAAiB,EAAE,MAAM,CAAC;QAE1B;;;;;WAKG;QACH,iBAAiB,EAAE,MAAM,CAAC;KAC7B;IAEM,MAAM,mBAAmB,EAAE,YAGjC,CAAC;CACL"}