@matter/protocol 0.16.0-alpha.0-20251016-b56cf5683 → 0.16.0-alpha.0-20251018-dd1ea6a8a

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 (155) 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/interaction/InteractionClient.d.ts.map +1 -1
  24. package/dist/cjs/interaction/InteractionClient.js +91 -74
  25. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  26. package/dist/cjs/interaction/InteractionMessenger.d.ts +3 -2
  27. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  28. package/dist/cjs/interaction/InteractionMessenger.js +10 -3
  29. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  30. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  31. package/dist/cjs/protocol/ExchangeManager.js +20 -17
  32. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  33. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  34. package/dist/cjs/protocol/MessageChannel.js +1 -1
  35. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  36. package/dist/cjs/protocol/MessageExchange.d.ts +1 -0
  37. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  38. package/dist/cjs/protocol/MessageExchange.js +14 -4
  39. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  40. package/dist/cjs/protocol/ProtocolHandler.d.ts +7 -2
  41. package/dist/cjs/protocol/ProtocolHandler.d.ts.map +1 -1
  42. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts +1 -1
  43. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts.map +1 -1
  44. package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -1
  45. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  46. package/dist/cjs/session/GroupSession.d.ts +8 -1
  47. package/dist/cjs/session/GroupSession.d.ts.map +1 -1
  48. package/dist/cjs/session/GroupSession.js +10 -0
  49. package/dist/cjs/session/GroupSession.js.map +1 -1
  50. package/dist/cjs/session/NodeSession.d.ts +3 -1
  51. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  52. package/dist/cjs/session/NodeSession.js +13 -0
  53. package/dist/cjs/session/NodeSession.js.map +2 -2
  54. package/dist/cjs/session/SecureSession.d.ts +2 -0
  55. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  56. package/dist/cjs/session/SecureSession.js.map +1 -1
  57. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  58. package/dist/cjs/session/case/CaseClient.js +3 -15
  59. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  60. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  61. package/dist/cjs/session/case/CaseServer.js +10 -18
  62. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  63. package/dist/cjs/session/pase/PaseClient.js +1 -1
  64. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  65. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  66. package/dist/cjs/session/pase/PaseServer.js +2 -2
  67. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  68. package/dist/esm/action/client/ClientInteraction.d.ts +10 -5
  69. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  70. package/dist/esm/action/client/ClientInteraction.js +140 -20
  71. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  72. package/dist/esm/action/request/Invoke.d.ts +36 -8
  73. package/dist/esm/action/request/Invoke.d.ts.map +1 -1
  74. package/dist/esm/action/request/Invoke.js +81 -16
  75. package/dist/esm/action/request/Invoke.js.map +1 -1
  76. package/dist/esm/action/request/Read.d.ts +1 -1
  77. package/dist/esm/action/request/Read.d.ts.map +1 -1
  78. package/dist/esm/action/request/Read.js +12 -4
  79. package/dist/esm/action/request/Read.js.map +1 -1
  80. package/dist/esm/action/request/Specifier.d.ts +16 -1
  81. package/dist/esm/action/request/Specifier.d.ts.map +1 -1
  82. package/dist/esm/action/request/Specifier.js +56 -1
  83. package/dist/esm/action/request/Specifier.js.map +1 -1
  84. package/dist/esm/action/request/Write.d.ts +5 -3
  85. package/dist/esm/action/request/Write.d.ts.map +1 -1
  86. package/dist/esm/action/request/Write.js +53 -13
  87. package/dist/esm/action/request/Write.js.map +1 -1
  88. package/dist/esm/action/response/InvokeResult.d.ts +6 -0
  89. package/dist/esm/action/response/InvokeResult.d.ts.map +1 -1
  90. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  91. package/dist/esm/interaction/InteractionClient.js +92 -74
  92. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  93. package/dist/esm/interaction/InteractionMessenger.d.ts +3 -2
  94. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  95. package/dist/esm/interaction/InteractionMessenger.js +10 -3
  96. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  97. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  98. package/dist/esm/protocol/ExchangeManager.js +20 -17
  99. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  100. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  101. package/dist/esm/protocol/MessageChannel.js +2 -2
  102. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  103. package/dist/esm/protocol/MessageExchange.d.ts +1 -0
  104. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  105. package/dist/esm/protocol/MessageExchange.js +14 -4
  106. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  107. package/dist/esm/protocol/ProtocolHandler.d.ts +7 -2
  108. package/dist/esm/protocol/ProtocolHandler.d.ts.map +1 -1
  109. package/dist/esm/securechannel/SecureChannelProtocol.d.ts +1 -1
  110. package/dist/esm/securechannel/SecureChannelProtocol.d.ts.map +1 -1
  111. package/dist/esm/securechannel/SecureChannelProtocol.js +2 -1
  112. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  113. package/dist/esm/session/GroupSession.d.ts +8 -1
  114. package/dist/esm/session/GroupSession.d.ts.map +1 -1
  115. package/dist/esm/session/GroupSession.js +11 -1
  116. package/dist/esm/session/GroupSession.js.map +1 -1
  117. package/dist/esm/session/NodeSession.d.ts +3 -1
  118. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  119. package/dist/esm/session/NodeSession.js +13 -0
  120. package/dist/esm/session/NodeSession.js.map +2 -2
  121. package/dist/esm/session/SecureSession.d.ts +2 -0
  122. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  123. package/dist/esm/session/SecureSession.js.map +1 -1
  124. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  125. package/dist/esm/session/case/CaseClient.js +5 -17
  126. package/dist/esm/session/case/CaseClient.js.map +1 -1
  127. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  128. package/dist/esm/session/case/CaseServer.js +12 -20
  129. package/dist/esm/session/case/CaseServer.js.map +1 -1
  130. package/dist/esm/session/pase/PaseClient.js +1 -1
  131. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  132. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  133. package/dist/esm/session/pase/PaseServer.js +3 -2
  134. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  135. package/package.json +6 -6
  136. package/src/action/client/ClientInteraction.ts +181 -27
  137. package/src/action/request/Invoke.ts +149 -27
  138. package/src/action/request/Read.ts +27 -7
  139. package/src/action/request/Specifier.ts +80 -1
  140. package/src/action/request/Write.ts +71 -19
  141. package/src/action/response/InvokeResult.ts +8 -0
  142. package/src/interaction/InteractionClient.ts +135 -96
  143. package/src/interaction/InteractionMessenger.ts +15 -3
  144. package/src/protocol/ExchangeManager.ts +27 -29
  145. package/src/protocol/MessageChannel.ts +2 -2
  146. package/src/protocol/MessageExchange.ts +18 -4
  147. package/src/protocol/ProtocolHandler.ts +7 -2
  148. package/src/securechannel/SecureChannelProtocol.ts +5 -1
  149. package/src/session/GroupSession.ts +12 -1
  150. package/src/session/NodeSession.ts +21 -0
  151. package/src/session/SecureSession.ts +2 -0
  152. package/src/session/case/CaseClient.ts +3 -23
  153. package/src/session/case/CaseServer.ts +15 -20
  154. package/src/session/pase/PaseClient.ts +1 -1
  155. package/src/session/pase/PaseServer.ts +3 -2
@@ -4,15 +4,15 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Interactable, InteractionSession } from "#action/Interactable.js";
7
- import { Invoke } from "#action/request/Invoke.js";
7
+ import { ClientInvoke } from "#action/request/Invoke.js";
8
8
  import { Read } from "#action/request/Read.js";
9
9
  import { Subscribe } from "#action/request/Subscribe.js";
10
10
  import { Write } from "#action/request/Write.js";
11
- import { InvokeResult } from "#action/response/InvokeResult.js";
11
+ import { DecodedInvokeResult } from "#action/response/InvokeResult.js";
12
12
  import { ReadResult } from "#action/response/ReadResult.js";
13
13
  import { SubscribeResult } from "#action/response/SubscribeResult.js";
14
14
  import { WriteResult } from "#action/response/WriteResult.js";
15
- import { Environment, Environmental, PromiseQueue } from "#general";
15
+ import { Duration, Environment, Environmental, PromiseQueue } from "#general";
16
16
  import { ExchangeProvider } from "#protocol/ExchangeProvider.js";
17
17
  import { ClientSubscriptions } from "./ClientSubscriptions.js";
18
18
  export interface ClientInteractionContext {
@@ -20,7 +20,7 @@ export interface ClientInteractionContext {
20
20
  subscriptions: ClientSubscriptions;
21
21
  queue: PromiseQueue;
22
22
  }
23
- export declare const DEFAULT_MIN_INTERVAL_FLOOR: import("#general").Duration;
23
+ export declare const DEFAULT_MIN_INTERVAL_FLOOR: Duration;
24
24
  /**
25
25
  * Client-side implementation of the Matter protocol.
26
26
  */
@@ -32,8 +32,13 @@ export declare class ClientInteraction<SessionT extends InteractionSession = Int
32
32
  get queue(): PromiseQueue | undefined;
33
33
  static [Environmental.create](env: Environment): ClientInteraction<InteractionSession>;
34
34
  read(request: Read, _session?: SessionT): ReadResult;
35
+ /**
36
+ * Write chosen attributes remotely to the node.
37
+ * The returned attribute write status information is returned. No error is thrown for individual attribute write
38
+ * failures.
39
+ */
35
40
  write<T extends Write>(request: T, _session?: SessionT): WriteResult<T>;
36
- invoke(request: Invoke, _session?: SessionT): InvokeResult;
41
+ invoke(request: ClientInvoke, _session?: SessionT): DecodedInvokeResult;
37
42
  subscribe(request: Subscribe, _session?: SessionT): SubscribeResult;
38
43
  cancelSubscription(id: number): void;
39
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClientInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,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,EAAY,WAAW,EAAE,aAAa,EAAuB,YAAY,EAAW,MAAM,UAAU,CAAC;AAG5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,MAAM,WAAW,wBAAwB;IACrC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,0BAA0B,6BAAa,CAAC;AAErD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CACnF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAQrB,OAAO,EAAE,wBAAwB;IAMvC,KAAK;IAQX,IAAI,aAAa,wBAEhB;IAED,IAAI,KAAK,6BAER;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAUvC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU;IAerD,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IAoCtE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY;IA8D3D,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;IAyBzE,kBAAkB,CAAC,EAAE,EAAE,MAAM;CA2BhC"}
1
+ {"version":3,"file":"ClientInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAU,MAAM,2BAA2B,CAAC;AACjE,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,mBAAmB,EAAgB,MAAM,kCAAkC,CAAC;AACrF,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,EAGH,QAAQ,EACR,WAAW,EACX,aAAa,EAIb,YAAY,EAEf,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D,MAAM,WAAW,wBAAwB;IACrC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,0BAA0B,UAAa,CAAC;AAKrD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CACnF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAQrB,OAAO,EAAE,wBAAwB;IAMvC,KAAK;IAQX,IAAI,aAAa,wBAEhB;IAED,IAAI,KAAK,6BAER;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAUvC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU;IAyC3D;;;;OAIG;IACG,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IAiEtE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,mBAAmB;IAyGxE,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;IA2DzE,kBAAkB,CAAC,EAAE,EAAE,MAAM;CA2BhC"}
@@ -22,6 +22,8 @@ __export(ClientInteraction_exports, {
22
22
  DEFAULT_MIN_INTERVAL_FLOOR: () => DEFAULT_MIN_INTERVAL_FLOOR
23
23
  });
24
24
  module.exports = __toCommonJS(ClientInteraction_exports);
25
+ var import_action = require("#action/index.js");
26
+ var import_Invoke = require("#action/request/Invoke.js");
25
27
  var import_general = require("#general");
26
28
  var import_InteractionMessenger = require("#interaction/InteractionMessenger.js");
27
29
  var import_InteractionQueue = require("#peer/InteractionQueue.js");
@@ -34,7 +36,10 @@ var import_InputChunk = require("./InputChunk.js");
34
36
  * Copyright 2022-2025 Matter.js Authors
35
37
  * SPDX-License-Identifier: Apache-2.0
36
38
  */
39
+ const logger = import_general.Logger.get("ClientInteraction");
37
40
  const DEFAULT_MIN_INTERVAL_FLOOR = (0, import_general.Seconds)(1);
41
+ const DEFAULT_TIMED_REQUEST_TIMEOUT = (0, import_general.Seconds)(10);
42
+ const DEFAULT_MINIMUM_RESPONSE_TIMEOUT_WITH_FAILSAFE = (0, import_general.Seconds)(30);
38
43
  class ClientInteraction {
39
44
  #exchanges;
40
45
  #subscriptions;
@@ -68,34 +73,71 @@ class ClientInteraction {
68
73
  return instance;
69
74
  }
70
75
  async *read(request, _session) {
76
+ const readPathsCount = (request.attributeRequests?.length ?? 0) + (request.eventRequests?.length ?? 0);
77
+ if (readPathsCount > 9) {
78
+ logger.debug(
79
+ "Read interactions with more then 9 paths might be not allowed by the device. Consider splitting then into several read requests."
80
+ );
81
+ }
82
+ this.#begin(request);
83
+ let messenger;
71
84
  try {
72
- this.#begin(request);
73
- const messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
85
+ messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
86
+ logger.debug("Read \xBB", messenger.exchange.via, request);
74
87
  await messenger.sendReadRequest(request);
88
+ let attributeReportCount = 0;
89
+ let eventReportCount = 0;
75
90
  for await (const report of messenger.readDataReports()) {
91
+ attributeReportCount += report.attributeReports?.length ?? 0;
92
+ eventReportCount += report.eventReports?.length ?? 0;
76
93
  yield (0, import_InputChunk.InputChunk)(report);
77
94
  }
95
+ logger.debug(
96
+ "Read \xAB",
97
+ messenger.exchange.via,
98
+ import_general.Diagnostic.weak(
99
+ attributeReportCount + eventReportCount === 0 ? "(empty)" : import_general.Diagnostic.dict({ attributes: attributeReportCount, events: eventReportCount })
100
+ )
101
+ );
78
102
  } finally {
103
+ await messenger?.close();
79
104
  this.#end(request);
80
105
  }
81
106
  }
107
+ /**
108
+ * Write chosen attributes remotely to the node.
109
+ * The returned attribute write status information is returned. No error is thrown for individual attribute write
110
+ * failures.
111
+ */
82
112
  async write(request, _session) {
113
+ this.#begin(request);
83
114
  let messenger;
84
115
  try {
85
- this.#begin(request);
86
116
  messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
117
+ if (request.timedRequest) {
118
+ await messenger.sendTimedRequest(request.timeout ?? DEFAULT_TIMED_REQUEST_TIMEOUT);
119
+ }
120
+ logger.info("Write \xBB", messenger.exchange.via, request);
87
121
  const response = await messenger.sendWriteCommand(request);
88
122
  if (request.suppressResponse) {
89
123
  return void 0;
90
124
  }
91
125
  if (!response || !response.writeResponses?.length) {
92
- return new Array();
93
- } else {
94
- return response.writeResponses.map(
95
- ({
96
- path: { nodeId, endpointId, clusterId, attributeId, listIndex },
97
- status: { status, clusterStatus }
98
- }) => ({
126
+ return [];
127
+ }
128
+ let successCount = 0;
129
+ let failureCount = 0;
130
+ const result = response.writeResponses.map(
131
+ ({
132
+ path: { nodeId, endpointId, clusterId, attributeId, listIndex },
133
+ status: { status, clusterStatus }
134
+ }) => {
135
+ if (status === import_types.Status.Success) {
136
+ successCount++;
137
+ } else {
138
+ failureCount++;
139
+ }
140
+ return {
99
141
  kind: "attr-status",
100
142
  path: {
101
143
  nodeId,
@@ -106,20 +148,41 @@ class ClientInteraction {
106
148
  },
107
149
  status,
108
150
  clusterStatus
109
- })
110
- );
111
- }
151
+ };
152
+ }
153
+ );
154
+ logger.info(
155
+ "Write \xAB",
156
+ messenger.exchange.via,
157
+ import_general.Diagnostic.weak(
158
+ successCount + failureCount === 0 ? "(empty)" : import_general.Diagnostic.dict({ success: successCount, failure: failureCount })
159
+ )
160
+ );
161
+ return result;
112
162
  } finally {
113
163
  await messenger?.close();
114
164
  this.#end(request);
115
165
  }
116
166
  }
117
167
  async *invoke(request, _session) {
168
+ this.#begin(request);
118
169
  let messenger;
119
170
  try {
120
- this.#begin(request);
121
171
  messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
122
- const result = await messenger.sendInvokeCommand(request);
172
+ if (request.timedRequest) {
173
+ await messenger.sendTimedRequest(request.timeout ?? DEFAULT_TIMED_REQUEST_TIMEOUT);
174
+ }
175
+ logger.info(
176
+ "Invoke \xBB",
177
+ messenger.exchange.via,
178
+ import_general.Diagnostic.asFlags({ suppressResponse: request.suppressResponse, timed: request.timedRequest }),
179
+ request
180
+ );
181
+ const { expectedProcessingTime, useExtendedFailSafeMessageResponseTimeout } = request;
182
+ const result = await messenger.sendInvokeCommand(
183
+ request,
184
+ expectedProcessingTime ?? (useExtendedFailSafeMessageResponseTimeout ? DEFAULT_MINIMUM_RESPONSE_TIMEOUT_WITH_FAILSAFE : void 0)
185
+ );
123
186
  if (!request.suppressResponse) {
124
187
  if (result && result.invokeResponses?.length) {
125
188
  const chunk = result.invokeResponses.map((response) => {
@@ -129,6 +192,25 @@ class ClientInteraction {
129
192
  commandRef,
130
193
  commandFields
131
194
  } = response.command;
195
+ const cmd = request.commands.get(commandRef);
196
+ if (!cmd) {
197
+ throw new import_general.ImplementationError(
198
+ `No response schema found for commandRef ${commandRef} (endpoint ${endpointId}, cluster ${clusterId}, command ${commandId})`
199
+ );
200
+ }
201
+ const responseSchema = import_Invoke.Invoke.commandOf(cmd).responseSchema;
202
+ if (commandFields === void 0 && responseSchema !== import_types.TlvNoResponse) {
203
+ throw new import_general.ImplementationError(
204
+ `No command fields found for commandRef ${commandRef} (endpoint ${endpointId}, cluster ${clusterId}, command ${commandId})`
205
+ );
206
+ }
207
+ const data = commandFields === void 0 ? void 0 : responseSchema.decodeTlv(commandFields);
208
+ logger.info(
209
+ "Invoke \xAB",
210
+ messenger.exchange.via,
211
+ import_general.Diagnostic.strong((0, import_action.resolvePathForSpecifier)(cmd)),
212
+ (0, import_general.isObject)(data) ? import_general.Diagnostic.dict(data) : import_general.Diagnostic.weak("(no payload)")
213
+ );
132
214
  const res = {
133
215
  kind: "cmd-response",
134
216
  path: {
@@ -137,8 +219,7 @@ class ClientInteraction {
137
219
  commandId
138
220
  },
139
221
  commandRef,
140
- data: commandFields
141
- // TODO add decoding
222
+ data
142
223
  };
143
224
  return res;
144
225
  } else if (response.status !== void 0) {
@@ -174,10 +255,32 @@ class ClientInteraction {
174
255
  }
175
256
  }
176
257
  async subscribe(request, _session) {
258
+ const subscriptionPathsCount = (request.attributeRequests?.length ?? 0) + (request.eventRequests?.length ?? 0);
259
+ if (subscriptionPathsCount > 3) {
260
+ logger.debug("Subscribe interactions with more then 3 paths might be not allowed by the device.");
261
+ }
262
+ if (!request.keepSubscriptions) {
263
+ for (const subscription of this.#subscriptions) {
264
+ logger.debug(
265
+ `Removing subscription with ID ${subscription.subscriptionId} because new subscription replaces it`
266
+ );
267
+ subscription.close();
268
+ }
269
+ }
270
+ this.#begin(request);
177
271
  let messenger;
178
272
  try {
179
- this.#begin(request);
180
273
  messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
274
+ logger.info(
275
+ "Subscribe \xBB",
276
+ messenger.exchange.via,
277
+ import_general.Diagnostic.asFlags({ keepSubscriptions: request.keepSubscriptions }),
278
+ import_general.Diagnostic.dict({
279
+ min: import_general.Duration.format(request.minIntervalFloor),
280
+ max: import_general.Duration.format(request.maxIntervalCeiling)
281
+ }),
282
+ request
283
+ );
181
284
  await messenger.sendSubscribeRequest({
182
285
  minIntervalFloorSeconds: import_general.Seconds.of(DEFAULT_MIN_INTERVAL_FLOOR),
183
286
  maxIntervalCeilingSeconds: import_general.Seconds.of(DEFAULT_MIN_INTERVAL_FLOOR),
@@ -187,6 +290,14 @@ class ClientInteraction {
187
290
  await this.#handleSubscriptionResponse(request, readChunks(messenger));
188
291
  const responseMessage = await messenger.nextMessage(import_InteractionMessenger.MessageType.SubscribeResponse);
189
292
  const response = import_types.TlvSubscribeResponse.decode(responseMessage.payload);
293
+ logger.info(
294
+ "Subscription successful \xAB",
295
+ messenger.exchange.via,
296
+ import_general.Diagnostic.dict({
297
+ subId: response.subscriptionId,
298
+ interval: import_general.Duration.format((0, import_general.Seconds)(response.maxInterval))
299
+ })
300
+ );
190
301
  return this.#subscriptions.add(request, response);
191
302
  } finally {
192
303
  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": "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",
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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"}
@@ -21,7 +21,9 @@ __export(Invoke_exports, {
21
21
  Invoke: () => Invoke
22
22
  });
23
23
  module.exports = __toCommonJS(Invoke_exports);
24
+ var import_general = require("#general");
24
25
  var import_Session = require("#session/Session.js");
26
+ var import_types = require("#types");
25
27
  var import_MalformedRequestError = require("./MalformedRequestError.js");
26
28
  var import_Specifier = require("./Specifier.js");
27
29
  /**
@@ -36,44 +38,93 @@ function Invoke(optionsOrData, ...commands) {
36
38
  let options;
37
39
  if ("commands" in optionsOrData) {
38
40
  options = optionsOrData;
41
+ commands = [...optionsOrData.commands, ...commands];
39
42
  } else {
40
43
  commands = [optionsOrData, ...commands];
41
44
  options = {};
42
45
  }
43
46
  const {
44
- commands: invokeRequests = [],
45
47
  interactionModelRevision = import_Session.FALLBACK_INTERACTIONMODEL_REVISION,
46
48
  suppressResponse = false,
47
- timed: timedRequest = false
49
+ timeout,
50
+ expectedProcessingTime,
51
+ useExtendedFailSafeMessageResponseTimeout = false,
52
+ skipValidation = false
48
53
  } = options;
49
- if (commands.length) {
50
- for (const entry of commands) {
51
- invokeRequests.push(entry);
52
- }
53
- }
54
- if (!invokeRequests?.length) {
54
+ let timedRequest = !!options.timed || !!timeout;
55
+ if (!commands?.length) {
55
56
  throw new import_MalformedRequestError.MalformedRequestError(`Invocation requires at least one command`);
56
57
  }
58
+ if (commands.length > 1) {
59
+ const commandRefs = /* @__PURE__ */ new Set();
60
+ for (const { commandRef } of commands) {
61
+ if (commandRef === void 0) {
62
+ throw new import_MalformedRequestError.MalformedRequestError(`CommandRef required when invoking multiple commands`);
63
+ }
64
+ if (commandRefs.has(commandRef)) {
65
+ throw new import_MalformedRequestError.MalformedRequestError(`Duplicate commandRef ${commandRef} in multiple command invoke`);
66
+ }
67
+ commandRefs.add(commandRef);
68
+ }
69
+ }
70
+ const commandMap = /* @__PURE__ */ new Map();
71
+ const invokeRequests = commands.map((cmd) => {
72
+ const cmdData = Invoke.Command(cmd, skipValidation);
73
+ timedRequest ||= !!cmdData.timed;
74
+ commandMap.set(cmdData.commandRef, cmd);
75
+ return cmdData;
76
+ });
57
77
  return {
78
+ timedRequest,
79
+ timeout,
58
80
  invokeRequests,
59
81
  interactionModelRevision,
60
82
  suppressResponse,
61
- timedRequest
83
+ expectedProcessingTime,
84
+ useExtendedFailSafeMessageResponseTimeout,
85
+ // Additional meta-data for client side processing
86
+ commands: commandMap,
87
+ [import_general.Diagnostic.value]: () => import_general.Diagnostic.list(
88
+ commands.map((cmd) => {
89
+ const { commandRef } = cmd;
90
+ const fields = "fields" in cmd ? cmd.fields : void 0;
91
+ return [
92
+ import_general.Diagnostic.strong((0, import_Specifier.resolvePathForSpecifier)(cmd)),
93
+ "with",
94
+ (0, import_general.isObject)(fields) ? import_general.Diagnostic.dict(fields) : "(no payload)",
95
+ commandRef !== void 0 ? `(ref ${commandRef})` : ""
96
+ ];
97
+ })
98
+ )
62
99
  };
63
100
  }
64
101
  ((Invoke2) => {
65
- function Command(request) {
102
+ function Command(request, skipValidation = false) {
66
103
  const command = Invoke2.commandOf(request);
67
- let commandFields;
68
- if ("fields" in request) {
69
- commandFields = command.requestSchema.encodeTlv(request.fields, { forWriteInteraction: true });
104
+ const { requestSchema, requestId, timed } = command;
105
+ const { commandRef } = request;
106
+ let fields = "fields" in request ? request.fields : void 0;
107
+ if (requestSchema instanceof import_types.ObjectSchema) {
108
+ if (fields === void 0) {
109
+ fields = {};
110
+ }
111
+ if (requestSchema.isFabricScoped && fields.fabricIndex === void 0) {
112
+ fields.fabricIndex = import_types.FabricIndex.NO_FABRIC;
113
+ }
114
+ }
115
+ if (!skipValidation) {
116
+ requestSchema.validate(fields);
70
117
  }
118
+ const commandFields = requestSchema.encodeTlv(fields);
71
119
  const result = {
72
120
  commandPath: {
121
+ // Endpoint id is added below if not wildcard
73
122
  clusterId: import_Specifier.Specifier.clusterFor(request.cluster).id,
74
- commandId: command.requestId
123
+ commandId: requestId
75
124
  },
76
- commandFields
125
+ commandFields,
126
+ timed: timed ?? false,
127
+ commandRef
77
128
  };
78
129
  const endpointId = import_Specifier.Specifier.endpointIdOf(request);
79
130
  if (endpointId !== void 0) {
@@ -82,6 +133,20 @@ function Invoke(optionsOrData, ...commands) {
82
133
  return result;
83
134
  }
84
135
  Invoke2.Command = Command;
136
+ function ConcreteCommandRequest(data) {
137
+ if (data.endpoint === void 0) {
138
+ throw new import_MalformedRequestError.MalformedRequestError(`ConcreteCommandRequest requires an endpoint`);
139
+ }
140
+ return data;
141
+ }
142
+ Invoke2.ConcreteCommandRequest = ConcreteCommandRequest;
143
+ function WildcardCommandRequest(data) {
144
+ if ("endpoint" in data && data.endpoint !== void 0) {
145
+ throw new import_MalformedRequestError.MalformedRequestError(`ConcreteCommandRequest must not have an endpoint`);
146
+ }
147
+ return data;
148
+ }
149
+ Invoke2.WildcardCommandRequest = WildcardCommandRequest;
85
150
  function commandOf(request) {
86
151
  if (typeof request.command === "string") {
87
152
  const cluster = import_Specifier.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,qBAAmD;AAEnD,mCAAsC;AACtC,uBAA0B;AAT1B;AAAA;AAAA;AAAA;AAAA;AA+BO,SAAS,OAAO,kBAAmD,UAAiC;AACvG,MAAI,kBAAkB,QAAW;AAC7B,UAAM,IAAI,mDAAsB,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,mDAAsB,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,2BAAU,WAAW,QAAQ,OAAO,EAAE;AAAA,QACjD,WAAW,QAAQ;AAAA,MACvB;AAAA,MACA;AAAA,IACJ;AAEA,UAAM,aAAa,2BAAU,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,2BAAU,WAAW,QAAQ,OAAO;AACpD,UAAI,YAAY,QAAW;AACvB,cAAM,IAAI,mDAAsB,6BAA6B,QAAQ,OAAO,mBAAmB;AAAA,MACnG;AACA,YAAM,UAAU,QAAQ,SAAS,QAAQ,OAAO;AAChD,UAAI,YAAY,QAAW;AACvB,cAAM,IAAI,mDAAsB,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":"AAAA;;;;GAIG;AAIH,OAAO,EACH,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACd,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAA2B,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,IAAK,SAAQ,WAAW;CAAG;AAE5C;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AAEjF;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AAqL1D,yBAAiB,IAAI,CAAC;IAClB,UAAiB,OAAO;QACpB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;QAC7B,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACrC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;QACrB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;QAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACrC;IAED,UAAiB,UAAW,SAAQ,IAAI;QACpC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC,CAAC;KACpE;IAED,SAAgB,iBAAiB,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,IAAI,UAAU,CAEtE;IAED,UAAiB,MAAO,SAAQ,IAAI;QAChC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC;KAC5D;IAED,SAAgB,aAAa,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,IAAI,MAAM,CAE9D;IAED;;OAEG;IACH,KAAY,QAAQ,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAC9D,CAAC;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAC9C,CAAC;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C;;OAEG;IACH,KAAY,iBAAiB,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IACvE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAC7B,iBAAiB,CAAC,YAAY,GAC9B,iBAAiB,CAAC,MAAM,GACxB,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,GACrC,iBAAiB,CAAC,iBAAiB,GACnC,iBAAiB,CAAC,QAAQ,CAAC;IAEjC;;OAEG;IACH,KAAY,aAAa,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IACnE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,GACzB,aAAa,CAAC,YAAY,GAC1B,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,GACjC,aAAa,CAAC,aAAa,GAC3B,aAAa,CAAC,QAAQ,CAAC;IAE7B,SAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EACjD,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAChC;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAK9C;IAED,SAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,CAAC,CAKvF;IAED,UAAiB,aAAa;QAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAChC;IAED,KAAY,wBAAwB,GAAG,WAAW,CAAC,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAE3F,UAAiB,iBAAiB,CAAC;QAC/B,UAAiB,QAAQ,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO;YACjD,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC;YACX,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7G;QAED,UAAiB,QAAQ;YACrB,KAAK,CAAC,EAAE,aAAa,CAAC;SACzB;QAED,UAAiB,YAAa,SAAQ,QAAQ;YAC1C,QAAQ,CAAC,EAAE,SAAS,CAAC;YACrB,OAAO,CAAC,EAAE,SAAS,CAAC;YACpB,UAAU,CAAC,EAAE,SAAS,CAAC;SAC1B;QAED,UAAiB,MAAO,SAAQ,QAAQ;YACpC,QAAQ,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC9B,OAAO,CAAC,EAAE,SAAS,CAAC;YACpB,UAAU,EAAE,wBAAwB,GAAG,wBAAwB,EAAE,CAAC;SACrE;QAED,UAAiB,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAE,SAAQ,QAAQ;YAC3E,QAAQ,CAAC,EAAE,SAAS,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC;YACX,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7G;QAED,UAAiB,iBAAkB,SAAQ,QAAQ;YAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC9B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;YAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;SAC1B;QAED,UAAiB,QAAS,SAAQ,QAAQ;YACtC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC7B,OAAO,CAAC,EAAE,SAAS,CAAC;YACpB,UAAU,CAAC,EAAE,SAAS,CAAC;SAC1B;KACJ;IAED,UAAiB,aAAa,CAAC;QAC3B,UAAiB,QAAQ,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO;YACjD,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;YAC3B,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACjG;QAED,UAAiB,QAAQ;YACrB,KAAK,CAAC,EAAE,aAAa,CAAC;SACzB;QAED,UAAiB,YAAa,SAAQ,QAAQ;YAC1C,QAAQ,CAAC,EAAE,SAAS,CAAC;YACrB,OAAO,CAAC,EAAE,SAAS,CAAC;YACpB,MAAM,CAAC,EAAE,SAAS,CAAC;SACtB;QAED,UAAiB,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAE,SAAQ,QAAQ;YAC3E,QAAQ,CAAC,EAAE,SAAS,CAAC;YACrB,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;YAC3B,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACjG;QAED,UAAiB,aAAc,SAAQ,QAAQ;YAC3C,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;YAC3B,MAAM,CAAC,EAAE,SAAS,CAAC;SACtB;QAED,UAAiB,QAAS,SAAQ,QAAQ;YACtC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC7B,OAAO,CAAC,EAAE,SAAS,CAAC;YACpB,MAAM,CAAC,EAAE,SAAS,CAAC;SACtB;KACJ;CACJ"}
@@ -22,7 +22,7 @@ __export(Read_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(Read_exports);
24
24
  var import_general = require("#general");
25
- var import_Session = require("#session/Session.js");
25
+ var import_model = require("#model");
26
26
  var import_MalformedRequestError = require("./MalformedRequestError.js");
27
27
  var import_Specifier = require("./Specifier.js");
28
28
  /**
@@ -44,7 +44,15 @@ function Read(optionsOrSelector, ...selectors) {
44
44
  let { attributes: attributeRequests, versionFilters, events: eventRequests, eventFilters } = options;
45
45
  const result = {
46
46
  isFabricFiltered: options.fabricFilter ?? true,
47
- interactionModelRevision: options.interactionModelRevision ?? import_Session.FALLBACK_INTERACTIONMODEL_REVISION
47
+ interactionModelRevision: options.interactionModelRevision ?? import_model.Specification.INTERACTION_MODEL_REVISION,
48
+ [import_general.Diagnostic.value]: () => import_general.Diagnostic.dict({
49
+ attributes: attributeRequests?.length ? attributeRequests?.map((path) => (0, import_Specifier.resolvePathForSpecifier)(path)).join(", ") : void 0,
50
+ events: eventRequests?.length ? eventRequests?.map((path) => (0, import_Specifier.resolvePathForSpecifier)(path)).join(", ") : void 0,
51
+ dataVersionFilters: versionFilters?.length ? versionFilters.map(
52
+ ({ path: { endpointId, clusterId }, dataVersion }) => `${endpointId}/${clusterId}=${dataVersion}`
53
+ ).join(", ") : void 0,
54
+ eventFilters: eventFilters?.length ? eventFilters.map(({ nodeId, eventMin }) => `${nodeId}=${eventMin}`).join(", ") : void 0
55
+ })
48
56
  };
49
57
  for (const selector of selectors) {
50
58
  reifySelector(selector);