@matter/protocol 0.16.0-alpha.0-20251016-b56cf5683 → 0.16.0-alpha.0-20251020-3f6e46245

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 (201) hide show
  1. package/dist/cjs/action/client/ClientInteraction.d.ts +10 -5
  2. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  3. package/dist/cjs/action/client/ClientInteraction.js +129 -18
  4. package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
  5. package/dist/cjs/action/request/Invoke.d.ts +36 -8
  6. package/dist/cjs/action/request/Invoke.d.ts.map +1 -1
  7. package/dist/cjs/action/request/Invoke.js +80 -15
  8. package/dist/cjs/action/request/Invoke.js.map +1 -1
  9. package/dist/cjs/action/request/Read.d.ts +1 -1
  10. package/dist/cjs/action/request/Read.d.ts.map +1 -1
  11. package/dist/cjs/action/request/Read.js +10 -2
  12. package/dist/cjs/action/request/Read.js.map +1 -1
  13. package/dist/cjs/action/request/Specifier.d.ts +16 -1
  14. package/dist/cjs/action/request/Specifier.d.ts.map +1 -1
  15. package/dist/cjs/action/request/Specifier.js +56 -1
  16. package/dist/cjs/action/request/Specifier.js.map +1 -1
  17. package/dist/cjs/action/request/Write.d.ts +5 -3
  18. package/dist/cjs/action/request/Write.d.ts.map +1 -1
  19. package/dist/cjs/action/request/Write.js +52 -12
  20. package/dist/cjs/action/request/Write.js.map +1 -1
  21. package/dist/cjs/action/response/InvokeResult.d.ts +6 -0
  22. package/dist/cjs/action/response/InvokeResult.d.ts.map +1 -1
  23. package/dist/cjs/common/FailsafeContext.d.ts +2 -1
  24. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  25. package/dist/cjs/common/FailsafeContext.js +10 -5
  26. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  27. package/dist/cjs/common/FailsafeTimer.d.ts +2 -0
  28. package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
  29. package/dist/cjs/common/FailsafeTimer.js +9 -0
  30. package/dist/cjs/common/FailsafeTimer.js.map +1 -1
  31. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  32. package/dist/cjs/interaction/InteractionClient.js +91 -74
  33. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  34. package/dist/cjs/interaction/InteractionMessenger.d.ts +3 -2
  35. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  36. package/dist/cjs/interaction/InteractionMessenger.js +10 -3
  37. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  38. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  39. package/dist/cjs/protocol/ExchangeManager.js +20 -17
  40. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  41. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  42. package/dist/cjs/protocol/MessageChannel.js +1 -1
  43. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  44. package/dist/cjs/protocol/MessageExchange.d.ts +1 -0
  45. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  46. package/dist/cjs/protocol/MessageExchange.js +14 -4
  47. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  48. package/dist/cjs/protocol/ProtocolHandler.d.ts +7 -2
  49. package/dist/cjs/protocol/ProtocolHandler.d.ts.map +1 -1
  50. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts +1 -1
  51. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts.map +1 -1
  52. package/dist/cjs/securechannel/SecureChannelProtocol.js +5 -4
  53. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  54. package/dist/cjs/session/GroupSession.d.ts +8 -1
  55. package/dist/cjs/session/GroupSession.d.ts.map +1 -1
  56. package/dist/cjs/session/GroupSession.js +10 -0
  57. package/dist/cjs/session/GroupSession.js.map +1 -1
  58. package/dist/cjs/session/NodeSession.d.ts +4 -1
  59. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  60. package/dist/cjs/session/NodeSession.js +17 -0
  61. package/dist/cjs/session/NodeSession.js.map +2 -2
  62. package/dist/cjs/session/SecureSession.d.ts +2 -0
  63. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  64. package/dist/cjs/session/SecureSession.js.map +1 -1
  65. package/dist/cjs/session/Session.d.ts +1 -0
  66. package/dist/cjs/session/Session.d.ts.map +1 -1
  67. package/dist/cjs/session/Session.js +4 -0
  68. package/dist/cjs/session/Session.js.map +1 -1
  69. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  70. package/dist/cjs/session/case/CaseClient.js +3 -15
  71. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  72. package/dist/cjs/session/case/CaseMessenger.d.ts.map +1 -1
  73. package/dist/cjs/session/case/CaseMessenger.js.map +1 -1
  74. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  75. package/dist/cjs/session/case/CaseServer.js +10 -18
  76. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  77. package/dist/cjs/session/index.d.ts +1 -0
  78. package/dist/cjs/session/index.d.ts.map +1 -1
  79. package/dist/cjs/session/index.js +1 -0
  80. package/dist/cjs/session/index.js.map +1 -1
  81. package/dist/cjs/session/pase/PaseClient.js +1 -1
  82. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  83. package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -1
  84. package/dist/cjs/session/pase/PaseMessenger.js.map +1 -1
  85. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  86. package/dist/cjs/session/pase/PaseServer.js +2 -2
  87. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  88. package/dist/esm/action/client/ClientInteraction.d.ts +10 -5
  89. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  90. package/dist/esm/action/client/ClientInteraction.js +140 -20
  91. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  92. package/dist/esm/action/request/Invoke.d.ts +36 -8
  93. package/dist/esm/action/request/Invoke.d.ts.map +1 -1
  94. package/dist/esm/action/request/Invoke.js +81 -16
  95. package/dist/esm/action/request/Invoke.js.map +1 -1
  96. package/dist/esm/action/request/Read.d.ts +1 -1
  97. package/dist/esm/action/request/Read.d.ts.map +1 -1
  98. package/dist/esm/action/request/Read.js +12 -4
  99. package/dist/esm/action/request/Read.js.map +1 -1
  100. package/dist/esm/action/request/Specifier.d.ts +16 -1
  101. package/dist/esm/action/request/Specifier.d.ts.map +1 -1
  102. package/dist/esm/action/request/Specifier.js +56 -1
  103. package/dist/esm/action/request/Specifier.js.map +1 -1
  104. package/dist/esm/action/request/Write.d.ts +5 -3
  105. package/dist/esm/action/request/Write.d.ts.map +1 -1
  106. package/dist/esm/action/request/Write.js +53 -13
  107. package/dist/esm/action/request/Write.js.map +1 -1
  108. package/dist/esm/action/response/InvokeResult.d.ts +6 -0
  109. package/dist/esm/action/response/InvokeResult.d.ts.map +1 -1
  110. package/dist/esm/common/FailsafeContext.d.ts +2 -1
  111. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  112. package/dist/esm/common/FailsafeContext.js +10 -5
  113. package/dist/esm/common/FailsafeContext.js.map +1 -1
  114. package/dist/esm/common/FailsafeTimer.d.ts +2 -0
  115. package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
  116. package/dist/esm/common/FailsafeTimer.js +9 -0
  117. package/dist/esm/common/FailsafeTimer.js.map +1 -1
  118. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  119. package/dist/esm/interaction/InteractionClient.js +92 -74
  120. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  121. package/dist/esm/interaction/InteractionMessenger.d.ts +3 -2
  122. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  123. package/dist/esm/interaction/InteractionMessenger.js +10 -3
  124. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  125. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  126. package/dist/esm/protocol/ExchangeManager.js +20 -17
  127. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  128. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  129. package/dist/esm/protocol/MessageChannel.js +2 -2
  130. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  131. package/dist/esm/protocol/MessageExchange.d.ts +1 -0
  132. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  133. package/dist/esm/protocol/MessageExchange.js +14 -4
  134. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  135. package/dist/esm/protocol/ProtocolHandler.d.ts +7 -2
  136. package/dist/esm/protocol/ProtocolHandler.d.ts.map +1 -1
  137. package/dist/esm/securechannel/SecureChannelProtocol.d.ts +1 -1
  138. package/dist/esm/securechannel/SecureChannelProtocol.d.ts.map +1 -1
  139. package/dist/esm/securechannel/SecureChannelProtocol.js +5 -4
  140. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  141. package/dist/esm/session/GroupSession.d.ts +8 -1
  142. package/dist/esm/session/GroupSession.d.ts.map +1 -1
  143. package/dist/esm/session/GroupSession.js +11 -1
  144. package/dist/esm/session/GroupSession.js.map +1 -1
  145. package/dist/esm/session/NodeSession.d.ts +4 -1
  146. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  147. package/dist/esm/session/NodeSession.js +17 -0
  148. package/dist/esm/session/NodeSession.js.map +2 -2
  149. package/dist/esm/session/SecureSession.d.ts +2 -0
  150. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  151. package/dist/esm/session/SecureSession.js.map +1 -1
  152. package/dist/esm/session/Session.d.ts +1 -0
  153. package/dist/esm/session/Session.d.ts.map +1 -1
  154. package/dist/esm/session/Session.js +4 -0
  155. package/dist/esm/session/Session.js.map +1 -1
  156. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  157. package/dist/esm/session/case/CaseClient.js +5 -17
  158. package/dist/esm/session/case/CaseClient.js.map +1 -1
  159. package/dist/esm/session/case/CaseMessenger.d.ts.map +1 -1
  160. package/dist/esm/session/case/CaseMessenger.js.map +1 -1
  161. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  162. package/dist/esm/session/case/CaseServer.js +12 -20
  163. package/dist/esm/session/case/CaseServer.js.map +1 -1
  164. package/dist/esm/session/index.d.ts +1 -0
  165. package/dist/esm/session/index.d.ts.map +1 -1
  166. package/dist/esm/session/index.js +1 -0
  167. package/dist/esm/session/index.js.map +1 -1
  168. package/dist/esm/session/pase/PaseClient.js +1 -1
  169. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  170. package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -1
  171. package/dist/esm/session/pase/PaseMessenger.js.map +1 -1
  172. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  173. package/dist/esm/session/pase/PaseServer.js +3 -2
  174. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  175. package/package.json +6 -6
  176. package/src/action/client/ClientInteraction.ts +181 -27
  177. package/src/action/request/Invoke.ts +149 -27
  178. package/src/action/request/Read.ts +27 -7
  179. package/src/action/request/Specifier.ts +80 -1
  180. package/src/action/request/Write.ts +71 -19
  181. package/src/action/response/InvokeResult.ts +8 -0
  182. package/src/common/FailsafeContext.ts +15 -6
  183. package/src/common/FailsafeTimer.ts +11 -0
  184. package/src/interaction/InteractionClient.ts +135 -96
  185. package/src/interaction/InteractionMessenger.ts +15 -3
  186. package/src/protocol/ExchangeManager.ts +27 -29
  187. package/src/protocol/MessageChannel.ts +2 -2
  188. package/src/protocol/MessageExchange.ts +18 -4
  189. package/src/protocol/ProtocolHandler.ts +7 -2
  190. package/src/securechannel/SecureChannelProtocol.ts +8 -5
  191. package/src/session/GroupSession.ts +12 -1
  192. package/src/session/NodeSession.ts +26 -0
  193. package/src/session/SecureSession.ts +2 -0
  194. package/src/session/Session.ts +5 -0
  195. package/src/session/case/CaseClient.ts +3 -23
  196. package/src/session/case/CaseMessenger.ts +2 -0
  197. package/src/session/case/CaseServer.ts +15 -20
  198. package/src/session/index.ts +1 -0
  199. package/src/session/pase/PaseClient.ts +1 -1
  200. package/src/session/pase/PaseMessenger.ts +2 -0
  201. package/src/session/pase/PaseServer.ts +3 -2
@@ -3,14 +3,28 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { BasicSet, Environmental, ImplementationError, Seconds } from "#general";
6
+ import { resolvePathForSpecifier } from "#action/index.js";
7
+ import { Invoke } from "#action/request/Invoke.js";
8
+ import {
9
+ BasicSet,
10
+ Diagnostic,
11
+ Duration,
12
+ Environmental,
13
+ ImplementationError,
14
+ isObject,
15
+ Logger,
16
+ Seconds
17
+ } from "#general";
7
18
  import { InteractionClientMessenger, MessageType } from "#interaction/InteractionMessenger.js";
8
19
  import { InteractionQueue } from "#peer/InteractionQueue.js";
9
20
  import { ExchangeProvider } from "#protocol/ExchangeProvider.js";
10
- import { TlvSubscribeResponse } from "#types";
21
+ import { Status, TlvNoResponse, TlvSubscribeResponse } from "#types";
11
22
  import { ClientSubscriptions } from "./ClientSubscriptions.js";
12
23
  import { InputChunk } from "./InputChunk.js";
24
+ const logger = Logger.get("ClientInteraction");
13
25
  const DEFAULT_MIN_INTERVAL_FLOOR = Seconds(1);
26
+ const DEFAULT_TIMED_REQUEST_TIMEOUT = Seconds(10);
27
+ const DEFAULT_MINIMUM_RESPONSE_TIMEOUT_WITH_FAILSAFE = Seconds(30);
14
28
  class ClientInteraction {
15
29
  #exchanges;
16
30
  #subscriptions;
@@ -44,34 +58,71 @@ class ClientInteraction {
44
58
  return instance;
45
59
  }
46
60
  async *read(request, _session) {
61
+ const readPathsCount = (request.attributeRequests?.length ?? 0) + (request.eventRequests?.length ?? 0);
62
+ if (readPathsCount > 9) {
63
+ logger.debug(
64
+ "Read interactions with more then 9 paths might be not allowed by the device. Consider splitting then into several read requests."
65
+ );
66
+ }
67
+ this.#begin(request);
68
+ let messenger;
47
69
  try {
48
- this.#begin(request);
49
- const messenger = await InteractionClientMessenger.create(this.#exchanges);
70
+ messenger = await InteractionClientMessenger.create(this.#exchanges);
71
+ logger.debug("Read \xBB", messenger.exchange.via, request);
50
72
  await messenger.sendReadRequest(request);
73
+ let attributeReportCount = 0;
74
+ let eventReportCount = 0;
51
75
  for await (const report of messenger.readDataReports()) {
76
+ attributeReportCount += report.attributeReports?.length ?? 0;
77
+ eventReportCount += report.eventReports?.length ?? 0;
52
78
  yield InputChunk(report);
53
79
  }
80
+ logger.debug(
81
+ "Read \xAB",
82
+ messenger.exchange.via,
83
+ Diagnostic.weak(
84
+ attributeReportCount + eventReportCount === 0 ? "(empty)" : Diagnostic.dict({ attributes: attributeReportCount, events: eventReportCount })
85
+ )
86
+ );
54
87
  } finally {
88
+ await messenger?.close();
55
89
  this.#end(request);
56
90
  }
57
91
  }
92
+ /**
93
+ * Write chosen attributes remotely to the node.
94
+ * The returned attribute write status information is returned. No error is thrown for individual attribute write
95
+ * failures.
96
+ */
58
97
  async write(request, _session) {
98
+ this.#begin(request);
59
99
  let messenger;
60
100
  try {
61
- this.#begin(request);
62
101
  messenger = await InteractionClientMessenger.create(this.#exchanges);
102
+ if (request.timedRequest) {
103
+ await messenger.sendTimedRequest(request.timeout ?? DEFAULT_TIMED_REQUEST_TIMEOUT);
104
+ }
105
+ logger.info("Write \xBB", messenger.exchange.via, request);
63
106
  const response = await messenger.sendWriteCommand(request);
64
107
  if (request.suppressResponse) {
65
108
  return void 0;
66
109
  }
67
110
  if (!response || !response.writeResponses?.length) {
68
- return new Array();
69
- } else {
70
- return response.writeResponses.map(
71
- ({
72
- path: { nodeId, endpointId, clusterId, attributeId, listIndex },
73
- status: { status, clusterStatus }
74
- }) => ({
111
+ return [];
112
+ }
113
+ let successCount = 0;
114
+ let failureCount = 0;
115
+ const result = response.writeResponses.map(
116
+ ({
117
+ path: { nodeId, endpointId, clusterId, attributeId, listIndex },
118
+ status: { status, clusterStatus }
119
+ }) => {
120
+ if (status === Status.Success) {
121
+ successCount++;
122
+ } else {
123
+ failureCount++;
124
+ }
125
+ return {
75
126
  kind: "attr-status",
76
127
  path: {
77
128
  nodeId,
@@ -82,20 +133,41 @@ class ClientInteraction {
82
133
  },
83
134
  status,
84
135
  clusterStatus
85
- })
86
- );
87
- }
136
+ };
137
+ }
138
+ );
139
+ logger.info(
140
+ "Write \xAB",
141
+ messenger.exchange.via,
142
+ Diagnostic.weak(
143
+ successCount + failureCount === 0 ? "(empty)" : Diagnostic.dict({ success: successCount, failure: failureCount })
144
+ )
145
+ );
146
+ return result;
88
147
  } finally {
89
148
  await messenger?.close();
90
149
  this.#end(request);
91
150
  }
92
151
  }
93
152
  async *invoke(request, _session) {
153
+ this.#begin(request);
94
154
  let messenger;
95
155
  try {
96
- this.#begin(request);
97
156
  messenger = await InteractionClientMessenger.create(this.#exchanges);
98
- const result = await messenger.sendInvokeCommand(request);
157
+ if (request.timedRequest) {
158
+ await messenger.sendTimedRequest(request.timeout ?? DEFAULT_TIMED_REQUEST_TIMEOUT);
159
+ }
160
+ logger.info(
161
+ "Invoke \xBB",
162
+ messenger.exchange.via,
163
+ Diagnostic.asFlags({ suppressResponse: request.suppressResponse, timed: request.timedRequest }),
164
+ request
165
+ );
166
+ const { expectedProcessingTime, useExtendedFailSafeMessageResponseTimeout } = request;
167
+ const result = await messenger.sendInvokeCommand(
168
+ request,
169
+ expectedProcessingTime ?? (useExtendedFailSafeMessageResponseTimeout ? DEFAULT_MINIMUM_RESPONSE_TIMEOUT_WITH_FAILSAFE : void 0)
170
+ );
99
171
  if (!request.suppressResponse) {
100
172
  if (result && result.invokeResponses?.length) {
101
173
  const chunk = result.invokeResponses.map((response) => {
@@ -105,6 +177,25 @@ class ClientInteraction {
105
177
  commandRef,
106
178
  commandFields
107
179
  } = response.command;
180
+ const cmd = request.commands.get(commandRef);
181
+ if (!cmd) {
182
+ throw new ImplementationError(
183
+ `No response schema found for commandRef ${commandRef} (endpoint ${endpointId}, cluster ${clusterId}, command ${commandId})`
184
+ );
185
+ }
186
+ const responseSchema = Invoke.commandOf(cmd).responseSchema;
187
+ if (commandFields === void 0 && responseSchema !== TlvNoResponse) {
188
+ throw new ImplementationError(
189
+ `No command fields found for commandRef ${commandRef} (endpoint ${endpointId}, cluster ${clusterId}, command ${commandId})`
190
+ );
191
+ }
192
+ const data = commandFields === void 0 ? void 0 : responseSchema.decodeTlv(commandFields);
193
+ logger.info(
194
+ "Invoke \xAB",
195
+ messenger.exchange.via,
196
+ Diagnostic.strong(resolvePathForSpecifier(cmd)),
197
+ isObject(data) ? Diagnostic.dict(data) : Diagnostic.weak("(no payload)")
198
+ );
108
199
  const res = {
109
200
  kind: "cmd-response",
110
201
  path: {
@@ -113,8 +204,7 @@ class ClientInteraction {
113
204
  commandId
114
205
  },
115
206
  commandRef,
116
- data: commandFields
117
- // TODO add decoding
207
+ data
118
208
  };
119
209
  return res;
120
210
  } else if (response.status !== void 0) {
@@ -150,10 +240,32 @@ class ClientInteraction {
150
240
  }
151
241
  }
152
242
  async subscribe(request, _session) {
243
+ const subscriptionPathsCount = (request.attributeRequests?.length ?? 0) + (request.eventRequests?.length ?? 0);
244
+ if (subscriptionPathsCount > 3) {
245
+ logger.debug("Subscribe interactions with more then 3 paths might be not allowed by the device.");
246
+ }
247
+ if (!request.keepSubscriptions) {
248
+ for (const subscription of this.#subscriptions) {
249
+ logger.debug(
250
+ `Removing subscription with ID ${subscription.subscriptionId} because new subscription replaces it`
251
+ );
252
+ subscription.close();
253
+ }
254
+ }
255
+ this.#begin(request);
153
256
  let messenger;
154
257
  try {
155
- this.#begin(request);
156
258
  messenger = await InteractionClientMessenger.create(this.#exchanges);
259
+ logger.info(
260
+ "Subscribe \xBB",
261
+ messenger.exchange.via,
262
+ Diagnostic.asFlags({ keepSubscriptions: request.keepSubscriptions }),
263
+ Diagnostic.dict({
264
+ min: Duration.format(request.minIntervalFloor),
265
+ max: Duration.format(request.maxIntervalCeiling)
266
+ }),
267
+ request
268
+ );
157
269
  await messenger.sendSubscribeRequest({
158
270
  minIntervalFloorSeconds: Seconds.of(DEFAULT_MIN_INTERVAL_FLOOR),
159
271
  maxIntervalCeilingSeconds: Seconds.of(DEFAULT_MIN_INTERVAL_FLOOR),
@@ -163,6 +275,14 @@ class ClientInteraction {
163
275
  await this.#handleSubscriptionResponse(request, readChunks(messenger));
164
276
  const responseMessage = await messenger.nextMessage(MessageType.SubscribeResponse);
165
277
  const response = TlvSubscribeResponse.decode(responseMessage.payload);
278
+ logger.info(
279
+ "Subscription successful \xAB",
280
+ messenger.exchange.via,
281
+ Diagnostic.dict({
282
+ subId: response.subscriptionId,
283
+ interval: Duration.format(Seconds(response.maxInterval))
284
+ })
285
+ );
166
286
  return this.#subscriptions.add(request, response);
167
287
  } finally {
168
288
  await messenger?.close();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/client/ClientInteraction.ts"],
4
- "mappings": "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",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,+BAA+B;AAExC,SAAuB,cAAc;AAQrC;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACG;AACP,SAAS,4BAA4B,mBAAmB;AACxD,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,QAAQ,eAAe,4BAA4B;AAC5D,SAAS,2BAA2B;AACpC,SAAS,kBAAkB;AAE3B,MAAM,SAAS,OAAO,IAAI,mBAAmB;AAQtC,MAAM,6BAA6B,QAAQ,CAAC;AAEnD,MAAM,gCAAgC,QAAQ,EAAE;AAChD,MAAM,iDAAiD,QAAQ,EAAE;AAK1D,MAAM,kBAEb;AAAA,EACa;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,IAAI,SAA4C;AAAA,EACzE,UAAU;AAAA,EAEV,YAAY,SAAmC;AAC3C,SAAK,aAAa,QAAQ;AAC1B,SAAK,iBAAiB,QAAQ;AAC9B,SAAK,SAAS,QAAQ;AAAA,EAC1B;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,UAAU;AAEf,WAAO,KAAK,cAAc,MAAM;AAC5B,YAAM,KAAK,cAAc;AAAA,IAC7B;AAAA,EACJ;AAAA,EAEA,IAAI,gBAAgB;AAChB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,kBAAkB;AAAA,MACnC,WAAW,IAAI,IAAI,gBAAgB;AAAA,MACnC,eAAe,IAAI,IAAI,mBAAmB;AAAA,MAC1C,OAAO,IAAI,IAAI,gBAAgB;AAAA,IACnC,CAAC;AACD,QAAI,IAAI,mBAAmB,QAAQ;AACnC,WAAO;AAAA,EACX;AAAA,EAEA,OAAO,KAAK,SAAe,UAAiC;AACxD,UAAM,kBAAkB,QAAQ,mBAAmB,UAAU,MAAM,QAAQ,eAAe,UAAU;AACpG,QAAI,iBAAiB,GAAG;AACpB,aAAO;AAAA,QACH;AAAA,MACJ;AAAA,IACJ;AAEA,SAAK,OAAO,OAAO;AAEnB,QAAI;AACJ,QAAI;AACA,kBAAY,MAAM,2BAA2B,OAAO,KAAK,UAAU;AAEnE,aAAO,MAAM,aAAU,UAAU,SAAS,KAAK,OAAO;AACtD,YAAM,UAAU,gBAAgB,OAAO;AAEvC,UAAI,uBAAuB;AAC3B,UAAI,mBAAmB;AAEvB,uBAAiB,UAAU,UAAU,gBAAgB,GAAG;AACpD,gCAAwB,OAAO,kBAAkB,UAAU;AAC3D,4BAAoB,OAAO,cAAc,UAAU;AACnD,cAAM,WAAW,MAAM;AAAA,MAC3B;AAEA,aAAO;AAAA,QACH;AAAA,QACA,UAAU,SAAS;AAAA,QACnB,WAAW;AAAA,UACP,uBAAuB,qBAAqB,IACtC,YACA,WAAW,KAAK,EAAE,YAAY,sBAAsB,QAAQ,iBAAiB,CAAC;AAAA,QACxF;AAAA,MACJ;AAAA,IACJ,UAAE;AACE,YAAM,WAAW,MAAM;AACvB,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAuB,SAAY,UAAqC;AAC1E,SAAK,OAAO,OAAO;AAEnB,QAAI;AACJ,QAAI;AACA,kBAAY,MAAM,2BAA2B,OAAO,KAAK,UAAU;AAEnE,UAAI,QAAQ,cAAc;AACtB,cAAM,UAAU,iBAAiB,QAAQ,WAAW,6BAA6B;AAAA,MACrF;AAEA,aAAO,KAAK,cAAW,UAAU,SAAS,KAAK,OAAO;AAEtD,YAAM,WAAW,MAAM,UAAU,iBAAiB,OAAO;AACzD,UAAI,QAAQ,kBAAkB;AAC1B,eAAO;AAAA,MACX;AACA,UAAI,CAAC,YAAY,CAAC,SAAS,gBAAgB,QAAQ;AAC/C,eAAO,CAAC;AAAA,MACZ;AAEA,UAAI,eAAe;AACnB,UAAI,eAAe;AACnB,YAAM,SAAS,SAAS,eAAe;AAAA,QACnC,CAAC;AAAA,UACG,MAAM,EAAE,QAAQ,YAAY,WAAW,aAAa,UAAU;AAAA,UAC9D,QAAQ,EAAE,QAAQ,cAAc;AAAA,QACpC,MAAM;AACF,cAAI,WAAW,OAAO,SAAS;AAC3B;AAAA,UACJ,OAAO;AACH;AAAA,UACJ;AACA,iBAAO;AAAA,YACH,MAAM;AAAA,YACN,MAAM;AAAA,cACF;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAEA,aAAO;AAAA,QACH;AAAA,QACA,UAAU,SAAS;AAAA,QACnB,WAAW;AAAA,UACP,eAAe,iBAAiB,IAC1B,YACA,WAAW,KAAK,EAAE,SAAS,cAAc,SAAS,aAAa,CAAC;AAAA,QAC1E;AAAA,MACJ;AAEA,aAAO;AAAA,IACX,UAAE;AACE,YAAM,WAAW,MAAM;AACvB,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,OAAO,OAAO,SAAuB,UAA0C;AAC3E,SAAK,OAAO,OAAO;AAEnB,QAAI;AACJ,QAAI;AACA,kBAAY,MAAM,2BAA2B,OAAO,KAAK,UAAU;AAEnE,UAAI,QAAQ,cAAc;AACtB,cAAM,UAAU,iBAAiB,QAAQ,WAAW,6BAA6B;AAAA,MACrF;AAEA,aAAO;AAAA,QACH;AAAA,QACA,UAAU,SAAS;AAAA,QACnB,WAAW,QAAQ,EAAE,kBAAkB,QAAQ,kBAAkB,OAAO,QAAQ,aAAa,CAAC;AAAA,QAC9F;AAAA,MACJ;AAEA,YAAM,EAAE,wBAAwB,0CAA0C,IAAI;AAC9E,YAAM,SAAS,MAAM,UAAU;AAAA,QAC3B;AAAA,QACA,2BACK,4CACK,iDACA;AAAA,MACd;AACA,UAAI,CAAC,QAAQ,kBAAkB;AAC3B,YAAI,UAAU,OAAO,iBAAiB,QAAQ;AAC1C,gBAAM,QAA4B,OAAO,gBACpC,IAAI,cAAY;AACb,gBAAI,SAAS,YAAY,QAAW;AAChC,oBAAM;AAAA,gBACF,aAAa,EAAE,YAAY,WAAW,UAAU;AAAA,gBAChD;AAAA,gBACA;AAAA,cACJ,IAAI,SAAS;AACb,oBAAM,MAAM,QAAQ,SAAS,IAAI,UAAU;AAC3C,kBAAI,CAAC,KAAK;AACN,sBAAM,IAAI;AAAA,kBACN,2CAA2C,UAAU,cAAc,UAAU,aAAa,SAAS,aAAa,SAAS;AAAA,gBAC7H;AAAA,cACJ;AACA,oBAAM,iBAAiB,OAAO,UAAU,GAAG,EAAE;AAC7C,kBAAI,kBAAkB,UAAa,mBAAmB,eAAe;AACjE,sBAAM,IAAI;AAAA,kBACN,0CAA0C,UAAU,cAAc,UAAU,aAAa,SAAS,aAAa,SAAS;AAAA,gBAC5H;AAAA,cACJ;AAEA,oBAAM,OACF,kBAAkB,SAAY,SAAY,eAAe,UAAU,aAAa;AAEpF,qBAAO;AAAA,gBACH;AAAA,gBACA,UAAW,SAAS;AAAA,gBACpB,WAAW,OAAO,wBAAwB,GAAG,CAAC;AAAA,gBAC9C,SAAS,IAAI,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,cAAc;AAAA,cAC3E;AAEA,oBAAM,MAA2C;AAAA,gBAC7C,MAAM;AAAA,gBACN,MAAM;AAAA,kBACF;AAAA,kBACA;AAAA,kBACA;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ;AACA,qBAAO;AAAA,YACX,WAAW,SAAS,WAAW,QAAW;AACtC,oBAAM;AAAA,gBACF,aAAa,EAAE,YAAY,WAAW,UAAU;AAAA,gBAChD;AAAA,gBACA,QAAQ,EAAE,QAAQ,cAAc;AAAA,cACpC,IAAI,SAAS;AACb,oBAAM,MAAkC;AAAA,gBACpC,MAAM;AAAA,gBACN,MAAM;AAAA,kBACF;AAAA,kBACA;AAAA,kBACA;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ;AACA,qBAAO;AAAA,YACX,OAAO;AAEH,qBAAO;AAAA,YACX;AAAA,UACJ,CAAC,EACA,OAAO,OAAK,MAAM,MAAS;AAChC,gBAAM;AAAA,QACV,OAAO;AACH,gBAAM,CAAC;AAAA,QACX;AAAA,MACJ;AAAA,IACJ,UAAE;AACE,YAAM,WAAW,MAAM;AACvB,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,MAAM,UAAU,SAAoB,UAAsC;AACtE,UAAM,0BAA0B,QAAQ,mBAAmB,UAAU,MAAM,QAAQ,eAAe,UAAU;AAC5G,QAAI,yBAAyB,GAAG;AAC5B,aAAO,MAAM,mFAAmF;AAAA,IACpG;AAEA,QAAI,CAAC,QAAQ,mBAAmB;AAC5B,iBAAW,gBAAgB,KAAK,gBAAgB;AAC5C,eAAO;AAAA,UACH,iCAAiC,aAAa,cAAc;AAAA,QAChE;AACA,qBAAa,MAAM;AAAA,MACvB;AAAA,IACJ;AAEA,SAAK,OAAO,OAAO;AAEnB,QAAI;AACJ,QAAI;AACA,kBAAY,MAAM,2BAA2B,OAAO,KAAK,UAAU;AAEnE,aAAO;AAAA,QACH;AAAA,QACA,UAAU,SAAS;AAAA,QACnB,WAAW,QAAQ,EAAE,mBAAmB,QAAQ,kBAAkB,CAAC;AAAA,QACnE,WAAW,KAAK;AAAA,UACZ,KAAK,SAAS,OAAO,QAAQ,gBAAgB;AAAA,UAC7C,KAAK,SAAS,OAAO,QAAQ,kBAAkB;AAAA,QACnD,CAAC;AAAA,QACD;AAAA,MACJ;AAEA,YAAM,UAAU,qBAAqB;AAAA,QACjC,yBAAyB,QAAQ,GAAG,0BAA0B;AAAA,QAC9D,2BAA2B,QAAQ,GAAG,0BAA0B;AAAA;AAAA,QAChE,GAAG;AAAA,MACP,CAAC;AAED,YAAM,KAAK,4BAA4B,SAAS,WAAW,SAAS,CAAC;AAErE,YAAM,kBAAkB,MAAM,UAAU,YAAY,YAAY,iBAAiB;AACjF,YAAM,WAAW,qBAAqB,OAAO,gBAAgB,OAAO;AAEpE,aAAO;AAAA,QACH;AAAA,QACA,UAAU,SAAS;AAAA,QACnB,WAAW,KAAK;AAAA,UACZ,OAAO,SAAS;AAAA,UAChB,UAAU,SAAS,OAAO,QAAQ,SAAS,WAAW,CAAC;AAAA,QAC3D,CAAC;AAAA,MACL;AAEA,aAAO,KAAK,eAAe,IAAI,SAAS,QAAQ;AAAA,IACpD,UAAE;AACE,YAAM,WAAW,MAAM;AACvB,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,mBAAmB,IAAY;AAC3B,SAAK,eAAe,IAAI,EAAE,GAAG,MAAM;AAAA,EACvC;AAAA,EAEA,MAAM,4BAA4B,SAAoB,QAAoB;AACtE,QAAI,QAAQ,SAAS;AACjB,YAAM,QAAQ,QAAQ,MAAM;AAAA,IAChC,OAAO;AAMH,uBAAiB,UAAU,OAAO;AAAA,IACtC;AAAA,EACJ;AAAA,EAEA,OAAO,SAA4C;AAC/C,QAAI,KAAK,SAAS;AACd,YAAM,IAAI,oBAAoB,4CAA4C;AAAA,IAC9E;AACA,SAAK,cAAc,IAAI,OAAO;AAAA,EAClC;AAAA,EAEA,KAAK,SAA4C;AAC7C,SAAK,cAAc,OAAO,OAAO;AAAA,EACrC;AACJ;AAEA,gBAAgB,WAAW,WAAuC;AAC9D,mBAAiB,UAAU,UAAU,gBAAgB,GAAG;AACpD,UAAM,WAAW,MAAM;AAAA,EAC3B;AACJ;",
5
5
  "names": []
6
6
  }
@@ -3,37 +3,65 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Duration } from "#general";
6
7
  import { ClusterType, CommandData, InvokeRequest, TlvSchema, TypeFromSchema } from "#types";
7
8
  import { Specifier } from "./Specifier.js";
9
+ export interface InvokeCommandData extends CommandData {
10
+ timed?: boolean;
11
+ }
8
12
  export interface Invoke extends InvokeRequest {
9
13
  /** Timeout only relevant for Client Interactions */
10
- timeout?: number;
14
+ timeout?: Duration;
15
+ expectedProcessingTime?: Duration;
16
+ useExtendedFailSafeMessageResponseTimeout?: boolean;
17
+ }
18
+ export interface ClientInvoke extends Invoke {
19
+ commands: Map<number | undefined, Invoke.CommandRequest<any>>;
11
20
  }
12
21
  /**
13
22
  * Request invocation of one or more commands.
14
23
  */
15
- export declare function Invoke(options: Invoke.Definition): Invoke;
24
+ export declare function Invoke(options: Invoke.Definition): ClientInvoke;
16
25
  /**
17
26
  * Request invocation multiple commands with defined options
18
27
  */
19
- export declare function Invoke(options: Invoke.Definition, ...commands: CommandData[]): Invoke;
28
+ export declare function Invoke(options: Invoke.Definition, ...commands: Invoke.CommandRequest<any>[]): ClientInvoke;
20
29
  /**
21
30
  * Request invocation multiple commands as list of Commands with default options.
22
31
  */
23
- export declare function Invoke(...commands: CommandData[]): Invoke;
32
+ export declare function Invoke(...commands: Invoke.CommandRequest<any>[]): ClientInvoke;
24
33
  export declare namespace Invoke {
25
34
  interface Definition {
26
- commands: CommandData[];
35
+ /** List of commands to invoke */
36
+ commands: Invoke.CommandRequest<any>[];
37
+ /** Tell the server to not send a response */
27
38
  suppressResponse?: boolean;
39
+ /** Whether this is sent as a timed request, if no timeout is specified a default is used */
28
40
  timed?: boolean;
41
+ /** Timeout when sent as a timed request, if timed flag is not set it will be set automatically */
42
+ timeout?: Duration;
43
+ /** Interaction model revision to use, if not specified a default is used */
29
44
  interactionModelRevision?: number;
45
+ /** Processing time of the command of the server assumed for this invoke. If not set a default is used */
46
+ expectedProcessingTime?: Duration;
47
+ /** Whether to use extended timeout for fail-safe messages. Overwrites the expectedProcessingTime if both are set */
48
+ useExtendedFailSafeMessageResponseTimeout?: boolean;
49
+ /** Whether to skip validation of command fields against schema */
50
+ skipValidation?: boolean;
30
51
  }
31
- function Command<const C extends ClusterType>(request: Invoke.CommandRequest<C>): CommandData;
32
- type CommandRequest<C extends Specifier.Cluster = Specifier.Cluster, CMD extends Specifier.Command<Specifier.ClusterFor<C>> = Specifier.Command<Specifier.ClusterFor<C>>> = {
33
- endpoint?: Specifier.Endpoint;
52
+ function Command<const C extends ClusterType>(request: Invoke.CommandRequest<C>, skipValidation?: boolean): InvokeCommandData;
53
+ type CommandRequest<C extends Specifier.Cluster = Specifier.Cluster, CMD extends Specifier.Command<Specifier.ClusterFor<C>> = Specifier.Command<Specifier.ClusterFor<C>>> = ConcreteCommandRequest<C, CMD> | WildcardCommandRequest<C, CMD>;
54
+ type ConcreteCommandRequest<C extends Specifier.Cluster = Specifier.Cluster, CMD extends Specifier.Command<Specifier.ClusterFor<C>> = Specifier.Command<Specifier.ClusterFor<C>>> = WildcardCommandRequest<C, CMD> & {
55
+ endpoint: Specifier.Endpoint;
56
+ };
57
+ function ConcreteCommandRequest<const C extends ClusterType>(data: Invoke.ConcreteCommandRequest<C>): Invoke.ConcreteCommandRequest<any>;
58
+ type WildcardCommandRequest<C extends Specifier.Cluster = Specifier.Cluster, CMD extends Specifier.Command<Specifier.ClusterFor<C>> = Specifier.Command<Specifier.ClusterFor<C>>> = {
34
59
  cluster: C;
35
60
  command: CMD;
61
+ commandName?: string;
62
+ commandRef?: number;
36
63
  } & Fields<Specifier.CommandFor<Specifier.ClusterFor<C>, CMD>["requestSchema"]>;
64
+ function WildcardCommandRequest<const C extends ClusterType>(data: Invoke.WildcardCommandRequest<C>): Invoke.WildcardCommandRequest<any>;
37
65
  function commandOf<const R extends CommandRequest>(request: R): ClusterType.Command;
38
66
  type Fields<S extends TlvSchema<any>> = S extends TlvSchema<void> ? {} : S extends TlvSchema<null> ? {
39
67
  fields?: TypeFromSchema<S>;
@@ -1 +1 @@
1
- {"version":3,"file":"Invoke.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Invoke.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAa,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEvG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,MAAO,SAAQ,aAAa;IACzC,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;AAE3D;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AAEvF;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AAwC3D,yBAAiB,MAAM,CAAC;IACpB,UAAiB,UAAU;QACvB,QAAQ,EAAE,WAAW,EAAE,CAAC;QACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACrC;IAED,SAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAuBnG;IAED,KAAY,cAAc,CACtB,CAAC,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,EAC/C,GAAG,SAAS,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IACnG;QACA,QAAQ,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC;QACX,OAAO,EAAE,GAAG,CAAC;KAChB,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IAEhF,SAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,OAAO,CAazF;IAED,KAAY,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,IACvC,CAAC,SAAS,SAAS,CAAC,IAAI,CAAC,GACnB,EAAE,GACF,CAAC,SAAS,SAAS,CAAC,IAAI,CAAC,GACvB;QAAE,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9B;QAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CAC7C"}
1
+ {"version":3,"file":"Invoke.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Invoke.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,11 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Diagnostic, isObject } from "#general";
6
7
  import { FALLBACK_INTERACTIONMODEL_REVISION } from "#session/Session.js";
8
+ import { FabricIndex, ObjectSchema } from "#types";
7
9
  import { MalformedRequestError } from "./MalformedRequestError.js";
8
- import { Specifier } from "./Specifier.js";
10
+ import { resolvePathForSpecifier, Specifier } from "./Specifier.js";
9
11
  function Invoke(optionsOrData, ...commands) {
10
12
  if (optionsOrData === void 0) {
11
13
  throw new MalformedRequestError(`Invocation requires at least one command`);
@@ -13,44 +15,93 @@ function Invoke(optionsOrData, ...commands) {
13
15
  let options;
14
16
  if ("commands" in optionsOrData) {
15
17
  options = optionsOrData;
18
+ commands = [...optionsOrData.commands, ...commands];
16
19
  } else {
17
20
  commands = [optionsOrData, ...commands];
18
21
  options = {};
19
22
  }
20
23
  const {
21
- commands: invokeRequests = [],
22
24
  interactionModelRevision = FALLBACK_INTERACTIONMODEL_REVISION,
23
25
  suppressResponse = false,
24
- timed: timedRequest = false
26
+ timeout,
27
+ expectedProcessingTime,
28
+ useExtendedFailSafeMessageResponseTimeout = false,
29
+ skipValidation = false
25
30
  } = options;
26
- if (commands.length) {
27
- for (const entry of commands) {
28
- invokeRequests.push(entry);
29
- }
30
- }
31
- if (!invokeRequests?.length) {
31
+ let timedRequest = !!options.timed || !!timeout;
32
+ if (!commands?.length) {
32
33
  throw new MalformedRequestError(`Invocation requires at least one command`);
33
34
  }
35
+ if (commands.length > 1) {
36
+ const commandRefs = /* @__PURE__ */ new Set();
37
+ for (const { commandRef } of commands) {
38
+ if (commandRef === void 0) {
39
+ throw new MalformedRequestError(`CommandRef required when invoking multiple commands`);
40
+ }
41
+ if (commandRefs.has(commandRef)) {
42
+ throw new MalformedRequestError(`Duplicate commandRef ${commandRef} in multiple command invoke`);
43
+ }
44
+ commandRefs.add(commandRef);
45
+ }
46
+ }
47
+ const commandMap = /* @__PURE__ */ new Map();
48
+ const invokeRequests = commands.map((cmd) => {
49
+ const cmdData = Invoke.Command(cmd, skipValidation);
50
+ timedRequest ||= !!cmdData.timed;
51
+ commandMap.set(cmdData.commandRef, cmd);
52
+ return cmdData;
53
+ });
34
54
  return {
55
+ timedRequest,
56
+ timeout,
35
57
  invokeRequests,
36
58
  interactionModelRevision,
37
59
  suppressResponse,
38
- timedRequest
60
+ expectedProcessingTime,
61
+ useExtendedFailSafeMessageResponseTimeout,
62
+ // Additional meta-data for client side processing
63
+ commands: commandMap,
64
+ [Diagnostic.value]: () => Diagnostic.list(
65
+ commands.map((cmd) => {
66
+ const { commandRef } = cmd;
67
+ const fields = "fields" in cmd ? cmd.fields : void 0;
68
+ return [
69
+ Diagnostic.strong(resolvePathForSpecifier(cmd)),
70
+ "with",
71
+ isObject(fields) ? Diagnostic.dict(fields) : "(no payload)",
72
+ commandRef !== void 0 ? `(ref ${commandRef})` : ""
73
+ ];
74
+ })
75
+ )
39
76
  };
40
77
  }
41
78
  ((Invoke2) => {
42
- function Command(request) {
79
+ function Command(request, skipValidation = false) {
43
80
  const command = Invoke2.commandOf(request);
44
- let commandFields;
45
- if ("fields" in request) {
46
- commandFields = command.requestSchema.encodeTlv(request.fields, { forWriteInteraction: true });
81
+ const { requestSchema, requestId, timed } = command;
82
+ const { commandRef } = request;
83
+ let fields = "fields" in request ? request.fields : void 0;
84
+ if (requestSchema instanceof ObjectSchema) {
85
+ if (fields === void 0) {
86
+ fields = {};
87
+ }
88
+ if (requestSchema.isFabricScoped && fields.fabricIndex === void 0) {
89
+ fields.fabricIndex = FabricIndex.NO_FABRIC;
90
+ }
91
+ }
92
+ if (!skipValidation) {
93
+ requestSchema.validate(fields);
47
94
  }
95
+ const commandFields = requestSchema.encodeTlv(fields);
48
96
  const result = {
49
97
  commandPath: {
98
+ // Endpoint id is added below if not wildcard
50
99
  clusterId: Specifier.clusterFor(request.cluster).id,
51
- commandId: command.requestId
100
+ commandId: requestId
52
101
  },
53
- commandFields
102
+ commandFields,
103
+ timed: timed ?? false,
104
+ commandRef
54
105
  };
55
106
  const endpointId = Specifier.endpointIdOf(request);
56
107
  if (endpointId !== void 0) {
@@ -59,6 +110,20 @@ function Invoke(optionsOrData, ...commands) {
59
110
  return result;
60
111
  }
61
112
  Invoke2.Command = Command;
113
+ function ConcreteCommandRequest(data) {
114
+ if (data.endpoint === void 0) {
115
+ throw new MalformedRequestError(`ConcreteCommandRequest requires an endpoint`);
116
+ }
117
+ return data;
118
+ }
119
+ Invoke2.ConcreteCommandRequest = ConcreteCommandRequest;
120
+ function WildcardCommandRequest(data) {
121
+ if ("endpoint" in data && data.endpoint !== void 0) {
122
+ throw new MalformedRequestError(`ConcreteCommandRequest must not have an endpoint`);
123
+ }
124
+ return data;
125
+ }
126
+ Invoke2.WildcardCommandRequest = WildcardCommandRequest;
62
127
  function commandOf(request) {
63
128
  if (typeof request.command === "string") {
64
129
  const cluster = Specifier.clusterFor(request.cluster);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/request/Invoke.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,0CAA0C;AAEnD,SAAS,6BAA6B;AACtC,SAAS,iBAAiB;AAsBnB,SAAS,OAAO,kBAAmD,UAAiC;AACvG,MAAI,kBAAkB,QAAW;AAC7B,UAAM,IAAI,sBAAsB,0CAA0C;AAAA,EAC9E;AAEA,MAAI;AACJ,MAAI,cAAc,eAAe;AAC7B,cAAU;AAAA,EACd,OAAO;AACH,eAAW,CAAC,eAAe,GAAG,QAAQ;AACtC,cAAU,CAAC;AAAA,EACf;AAEA,QAAM;AAAA,IACF,UAAU,iBAAiB,CAAC;AAAA,IAC5B,2BAA2B;AAAA,IAC3B,mBAAmB;AAAA,IACnB,OAAO,eAAe;AAAA,EAC1B,IAAI;AAEJ,MAAI,SAAS,QAAQ;AACjB,eAAW,SAAS,UAAU;AAC1B,qBAAe,KAAK,KAAK;AAAA,IAC7B;AAAA,EACJ;AAEA,MAAI,CAAC,gBAAgB,QAAQ;AACzB,UAAM,IAAI,sBAAsB,0CAA0C;AAAA,EAC9E;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAAA,CAEO,CAAUA,YAAV;AAQI,WAAS,QAAqC,SAAgD;AACjG,UAAM,UAAUA,QAAO,UAAU,OAAO;AAExC,QAAI;AAEJ,QAAI,YAAY,SAAS;AACrB,sBAAgB,QAAQ,cAAc,UAAU,QAAQ,QAAQ,EAAE,qBAAqB,KAAK,CAAC;AAAA,IACjG;AAEA,UAAM,SAAsB;AAAA,MACxB,aAAa;AAAA,QACT,WAAW,UAAU,WAAW,QAAQ,OAAO,EAAE;AAAA,QACjD,WAAW,QAAQ;AAAA,MACvB;AAAA,MACA;AAAA,IACJ;AAEA,UAAM,aAAa,UAAU,aAAa,OAAO;AACjD,QAAI,eAAe,QAAW;AAC1B,aAAO,YAAY,aAAa;AAAA,IACpC;AAEA,WAAO;AAAA,EACX;AAvBO,EAAAA,QAAS;AAkCT,WAAS,UAA0C,SAAiC;AACvF,QAAI,OAAO,QAAQ,YAAY,UAAU;AACrC,YAAM,UAAU,UAAU,WAAW,QAAQ,OAAO;AACpD,UAAI,YAAY,QAAW;AACvB,cAAM,IAAI,sBAAsB,6BAA6B,QAAQ,OAAO,mBAAmB;AAAA,MACnG;AACA,YAAM,UAAU,QAAQ,SAAS,QAAQ,OAAO;AAChD,UAAI,YAAY,QAAW;AACvB,cAAM,IAAI,sBAAsB,WAAW,QAAQ,IAAI,4BAA4B,QAAQ,OAAO,EAAE;AAAA,MACxG;AACA,aAAO;AAAA,IACX;AACA,WAAO,QAAQ;AAAA,EACnB;AAbO,EAAAA,QAAS;AAAA,GA1CH;",
4
+ "mappings": "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",
5
5
  "names": ["Invoke"]
6
6
  }
@@ -3,7 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { AttributePath, ClusterType, DataVersionFilter, EventFilter, EventPath, GlobalAttributes, ReadRequest } from "#types";
6
+ import { AttributePath, ClusterType, DataVersionFilter, EventFilter, EventPath, GlobalAttributes, ReadRequest } from "#types";
7
7
  import { Specifier } from "./Specifier.js";
8
8
  /**
9
9
  * A read request formulated using Matter protocol semantics.
@@ -1 +1 @@
1
- {"version":3,"file":"Read.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Read.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Read.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { camelize } from "#general";
7
- import { FALLBACK_INTERACTIONMODEL_REVISION } from "#session/Session.js";
6
+ import { camelize, Diagnostic } from "#general";
7
+ import { Specification } from "#model";
8
8
  import { MalformedRequestError } from "./MalformedRequestError.js";
9
- import { Specifier } from "./Specifier.js";
9
+ import { resolvePathForSpecifier, Specifier } from "./Specifier.js";
10
10
  function Read(optionsOrSelector, ...selectors) {
11
11
  if (optionsOrSelector === void 0) {
12
12
  throw new MalformedRequestError(`Read action designates no attributes or events`);
@@ -21,7 +21,15 @@ function Read(optionsOrSelector, ...selectors) {
21
21
  let { attributes: attributeRequests, versionFilters, events: eventRequests, eventFilters } = options;
22
22
  const result = {
23
23
  isFabricFiltered: options.fabricFilter ?? true,
24
- interactionModelRevision: options.interactionModelRevision ?? FALLBACK_INTERACTIONMODEL_REVISION
24
+ interactionModelRevision: options.interactionModelRevision ?? Specification.INTERACTION_MODEL_REVISION,
25
+ [Diagnostic.value]: () => Diagnostic.dict({
26
+ attributes: attributeRequests?.length ? attributeRequests?.map((path) => resolvePathForSpecifier(path)).join(", ") : void 0,
27
+ events: eventRequests?.length ? eventRequests?.map((path) => resolvePathForSpecifier(path)).join(", ") : void 0,
28
+ dataVersionFilters: versionFilters?.length ? versionFilters.map(
29
+ ({ path: { endpointId, clusterId }, dataVersion }) => `${endpointId}/${clusterId}=${dataVersion}`
30
+ ).join(", ") : void 0,
31
+ eventFilters: eventFilters?.length ? eventFilters.map(({ nodeId, eventMin }) => `${nodeId}=${eventMin}`).join(", ") : void 0
32
+ })
25
33
  };
26
34
  for (const selector of selectors) {
27
35
  reifySelector(selector);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/request/Read.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["Read"]
6
6
  }