@matter/protocol 0.15.1 → 0.15.2-alpha.0-20250703-2e16aba2b

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 (149) hide show
  1. package/dist/cjs/action/Val.d.ts +4 -0
  2. package/dist/cjs/action/Val.d.ts.map +1 -1
  3. package/dist/cjs/action/Val.js.map +1 -1
  4. package/dist/cjs/action/client/ClientInteraction.d.ts +10 -8
  5. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  6. package/dist/cjs/action/client/ClientInteraction.js +152 -80
  7. package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
  8. package/dist/cjs/action/client/ClientSubscription.d.ts +17 -0
  9. package/dist/cjs/action/client/ClientSubscription.d.ts.map +1 -0
  10. package/dist/cjs/action/client/ClientSubscription.js +22 -0
  11. package/dist/cjs/action/client/ClientSubscription.js.map +6 -0
  12. package/dist/cjs/action/client/ClientSubscriptionHandler.d.ts +20 -0
  13. package/dist/cjs/action/client/ClientSubscriptionHandler.d.ts.map +1 -0
  14. package/dist/cjs/action/client/ClientSubscriptionHandler.js +117 -0
  15. package/dist/cjs/action/client/ClientSubscriptionHandler.js.map +6 -0
  16. package/dist/cjs/action/client/ClientSubscriptions.d.ts +45 -0
  17. package/dist/cjs/action/client/ClientSubscriptions.d.ts.map +1 -0
  18. package/dist/cjs/action/client/ClientSubscriptions.js +141 -0
  19. package/dist/cjs/action/client/ClientSubscriptions.js.map +6 -0
  20. package/dist/cjs/action/client/InputChunk.d.ts +12 -0
  21. package/dist/cjs/action/client/InputChunk.d.ts.map +1 -0
  22. package/dist/cjs/action/client/InputChunk.js +89 -0
  23. package/dist/cjs/action/client/InputChunk.js.map +6 -0
  24. package/dist/cjs/action/client/ReadScope.d.ts +26 -0
  25. package/dist/cjs/action/client/ReadScope.d.ts.map +1 -0
  26. package/dist/cjs/action/client/ReadScope.js +87 -0
  27. package/dist/cjs/action/client/ReadScope.js.map +6 -0
  28. package/dist/cjs/action/client/index.d.ts +5 -0
  29. package/dist/cjs/action/client/index.d.ts.map +1 -1
  30. package/dist/cjs/action/client/index.js +5 -0
  31. package/dist/cjs/action/client/index.js.map +1 -1
  32. package/dist/cjs/action/request/Read.d.ts +0 -4
  33. package/dist/cjs/action/request/Read.d.ts.map +1 -1
  34. package/dist/cjs/action/request/Read.js.map +1 -1
  35. package/dist/cjs/action/request/Subscribe.d.ts +14 -1
  36. package/dist/cjs/action/request/Subscribe.d.ts.map +1 -1
  37. package/dist/cjs/action/request/Subscribe.js +2 -2
  38. package/dist/cjs/action/request/Subscribe.js.map +1 -1
  39. package/dist/cjs/action/response/SubscribeResult.d.ts +3 -5
  40. package/dist/cjs/action/response/SubscribeResult.d.ts.map +1 -1
  41. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  42. package/dist/cjs/common/FailsafeContext.js +0 -1
  43. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  44. package/dist/cjs/fabric/FabricAuthority.d.ts +6 -1
  45. package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
  46. package/dist/cjs/fabric/FabricAuthority.js +16 -0
  47. package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
  48. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  49. package/dist/cjs/interaction/InteractionClient.js +8 -4
  50. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  51. package/dist/cjs/interaction/InteractionMessenger.d.ts +20 -16
  52. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  53. package/dist/cjs/interaction/InteractionMessenger.js +18 -10
  54. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  55. package/dist/cjs/mdns/MdnsScanner.d.ts +5 -6
  56. package/dist/cjs/mdns/MdnsScanner.d.ts.map +1 -1
  57. package/dist/cjs/mdns/MdnsScanner.js.map +1 -1
  58. package/dist/cjs/protocol/DeviceCommissioner.d.ts +1 -1
  59. package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
  60. package/dist/cjs/protocol/DeviceCommissioner.js +2 -5
  61. package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
  62. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +3 -0
  63. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  64. package/dist/cjs/securechannel/SecureChannelMessenger.js +4 -0
  65. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  66. package/dist/esm/action/Val.d.ts +4 -0
  67. package/dist/esm/action/Val.d.ts.map +1 -1
  68. package/dist/esm/action/Val.js.map +1 -1
  69. package/dist/esm/action/client/ClientInteraction.d.ts +10 -8
  70. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  71. package/dist/esm/action/client/ClientInteraction.js +154 -82
  72. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  73. package/dist/esm/action/client/ClientSubscription.d.ts +17 -0
  74. package/dist/esm/action/client/ClientSubscription.d.ts.map +1 -0
  75. package/dist/esm/action/client/ClientSubscription.js +6 -0
  76. package/dist/esm/action/client/ClientSubscription.js.map +6 -0
  77. package/dist/esm/action/client/ClientSubscriptionHandler.d.ts +20 -0
  78. package/dist/esm/action/client/ClientSubscriptionHandler.d.ts.map +1 -0
  79. package/dist/esm/action/client/ClientSubscriptionHandler.js +97 -0
  80. package/dist/esm/action/client/ClientSubscriptionHandler.js.map +6 -0
  81. package/dist/esm/action/client/ClientSubscriptions.d.ts +45 -0
  82. package/dist/esm/action/client/ClientSubscriptions.d.ts.map +1 -0
  83. package/dist/esm/action/client/ClientSubscriptions.js +129 -0
  84. package/dist/esm/action/client/ClientSubscriptions.js.map +6 -0
  85. package/dist/esm/action/client/InputChunk.d.ts +12 -0
  86. package/dist/esm/action/client/InputChunk.d.ts.map +1 -0
  87. package/dist/esm/action/client/InputChunk.js +69 -0
  88. package/dist/esm/action/client/InputChunk.js.map +6 -0
  89. package/dist/esm/action/client/ReadScope.d.ts +26 -0
  90. package/dist/esm/action/client/ReadScope.d.ts.map +1 -0
  91. package/dist/esm/action/client/ReadScope.js +67 -0
  92. package/dist/esm/action/client/ReadScope.js.map +6 -0
  93. package/dist/esm/action/client/index.d.ts +5 -0
  94. package/dist/esm/action/client/index.d.ts.map +1 -1
  95. package/dist/esm/action/client/index.js +5 -0
  96. package/dist/esm/action/client/index.js.map +1 -1
  97. package/dist/esm/action/request/Read.d.ts +0 -4
  98. package/dist/esm/action/request/Read.d.ts.map +1 -1
  99. package/dist/esm/action/request/Read.js.map +1 -1
  100. package/dist/esm/action/request/Subscribe.d.ts +14 -1
  101. package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
  102. package/dist/esm/action/request/Subscribe.js +2 -2
  103. package/dist/esm/action/request/Subscribe.js.map +1 -1
  104. package/dist/esm/action/response/SubscribeResult.d.ts +3 -5
  105. package/dist/esm/action/response/SubscribeResult.d.ts.map +1 -1
  106. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  107. package/dist/esm/common/FailsafeContext.js +0 -1
  108. package/dist/esm/common/FailsafeContext.js.map +1 -1
  109. package/dist/esm/fabric/FabricAuthority.d.ts +6 -1
  110. package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
  111. package/dist/esm/fabric/FabricAuthority.js +25 -1
  112. package/dist/esm/fabric/FabricAuthority.js.map +1 -1
  113. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  114. package/dist/esm/interaction/InteractionClient.js +8 -4
  115. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  116. package/dist/esm/interaction/InteractionMessenger.d.ts +20 -16
  117. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  118. package/dist/esm/interaction/InteractionMessenger.js +18 -10
  119. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  120. package/dist/esm/mdns/MdnsScanner.d.ts +5 -6
  121. package/dist/esm/mdns/MdnsScanner.d.ts.map +1 -1
  122. package/dist/esm/mdns/MdnsScanner.js.map +1 -1
  123. package/dist/esm/protocol/DeviceCommissioner.d.ts +1 -1
  124. package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
  125. package/dist/esm/protocol/DeviceCommissioner.js +2 -5
  126. package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
  127. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +3 -0
  128. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  129. package/dist/esm/securechannel/SecureChannelMessenger.js +4 -0
  130. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  131. package/package.json +6 -6
  132. package/src/action/Val.ts +5 -0
  133. package/src/action/client/ClientInteraction.ts +178 -90
  134. package/src/action/client/ClientSubscription.ts +18 -0
  135. package/src/action/client/ClientSubscriptionHandler.ts +137 -0
  136. package/src/action/client/ClientSubscriptions.ts +172 -0
  137. package/src/action/client/InputChunk.ts +79 -0
  138. package/src/action/client/ReadScope.ts +107 -0
  139. package/src/action/client/index.ts +5 -0
  140. package/src/action/request/Read.ts +0 -5
  141. package/src/action/request/Subscribe.ts +17 -3
  142. package/src/action/response/SubscribeResult.ts +3 -4
  143. package/src/common/FailsafeContext.ts +0 -1
  144. package/src/fabric/FabricAuthority.ts +29 -1
  145. package/src/interaction/InteractionClient.ts +8 -4
  146. package/src/interaction/InteractionMessenger.ts +18 -11
  147. package/src/mdns/MdnsScanner.ts +5 -6
  148. package/src/protocol/DeviceCommissioner.ts +2 -7
  149. package/src/securechannel/SecureChannelMessenger.ts +4 -0
@@ -62,6 +62,10 @@ export declare namespace Val {
62
62
  * Refresh any internal cache from the referenced container.
63
63
  */
64
64
  refresh(): void;
65
+ /**
66
+ * The key used for storage of attributes and struct properties.
67
+ */
68
+ primaryKey: "id" | "name";
65
69
  /**
66
70
  * The managed value that owns the reference.
67
71
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Val.d.ts","sourceRoot":"","sources":["../../../src/action/Val.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;AAE1B,yBAAiB,GAAG,CAAC;IACjB;;OAEG;IACH,KAAY,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjD;;OAEG;IACH,KAAY,IAAI,GAAG,GAAG,EAAE,CAAC;IAEzB;;OAEG;IACH,KAAY,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,UAAiB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;QAC1C;;WAEG;QACH,KAAK,EAAE,CAAC,CAAC;QAET;;WAEG;QACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErB;;WAEG;QACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAE1B;;WAEG;QACH,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;QAEjC;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;QAE7C;;;;;;;WAOG;QACH,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;QAElC;;WAEG;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB;;WAEG;QACH,KAAK,CAAC,EAAE,CAAC,CAAC;QAEV;;WAEG;QACH,SAAS,CAAC,EAAE,GAAG,CAAC;QAEhB;;WAEG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC;KACtB;IAEM,MAAM,UAAU,eAAuB,CAAC;IAE/C;;;OAGG;IACH,UAAiB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAE,SAAQ,MAAM;QACrG;;;;;;WAMG;QACH,CAAC,UAAU,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1F;CACJ"}
1
+ {"version":3,"file":"Val.d.ts","sourceRoot":"","sources":["../../../src/action/Val.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;AAE1B,yBAAiB,GAAG,CAAC;IACjB;;OAEG;IACH,KAAY,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjD;;OAEG;IACH,KAAY,IAAI,GAAG,GAAG,EAAE,CAAC;IAEzB;;OAEG;IACH,KAAY,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,UAAiB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;QAC1C;;WAEG;QACH,KAAK,EAAE,CAAC,CAAC;QAET;;WAEG;QACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErB;;WAEG;QACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAE1B;;WAEG;QACH,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;QAEjC;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;QAE7C;;;;;;;WAOG;QACH,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;QAElC;;WAEG;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB;;WAEG;QACH,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;QAE1B;;WAEG;QACH,KAAK,CAAC,EAAE,CAAC,CAAC;QAEV;;WAEG;QACH,SAAS,CAAC,EAAE,GAAG,CAAC;QAEhB;;WAEG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC;KACtB;IAEM,MAAM,UAAU,eAAuB,CAAC;IAE/C;;;OAGG;IACH,UAAiB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAE,SAAQ,MAAM;QACrG;;;;;;WAMG;QACH,CAAC,UAAU,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1F;CACJ"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/action/Val.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,IAAU;AAAA,CAAV,CAAUA,SAAV;AAiFI,EAAMA,KAAA,aAAa,OAAO,YAAY;AAAA,GAjFhC;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,IAAU;AAAA,CAAV,CAAUA,SAAV;AAsFI,EAAMA,KAAA,aAAa,OAAO,YAAY;AAAA,GAtFhC;",
5
5
  "names": ["Val"]
6
6
  }
@@ -13,25 +13,27 @@ 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
15
  import { Environment, Environmental, PromiseQueue } from "#general";
16
- import { SubscriptionClient } from "#interaction/SubscriptionClient.js";
17
16
  import { ExchangeProvider } from "#protocol/ExchangeProvider.js";
18
- export interface ClientInteractableContext {
17
+ import { ClientSubscriptions } from "./ClientSubscriptions.js";
18
+ export interface ClientInteractionContext {
19
19
  exchanges: ExchangeProvider;
20
- subscriptions: SubscriptionClient;
20
+ subscriptions: ClientSubscriptions;
21
21
  queue: PromiseQueue;
22
22
  }
23
+ export declare const DEFAULT_MIN_INTERVAL_FLOOR_SECONDS = 1;
23
24
  /**
24
- * This is a WIP and currently largely a stub.
25
+ * Client-side implementation of the Matter protocol.
25
26
  */
26
27
  export declare class ClientInteraction<SessionT extends InteractionSession = InteractionSession> implements Interactable<SessionT> {
27
28
  #private;
28
- constructor(context: ClientInteractableContext);
29
- get subscriptions(): SubscriptionClient;
29
+ constructor(context: ClientInteractionContext);
30
+ close(): Promise<void>;
31
+ get subscriptions(): ClientSubscriptions;
30
32
  get queue(): PromiseQueue | undefined;
31
33
  static [Environmental.create](env: Environment): ClientInteraction<InteractionSession>;
32
- read(_request: Read, _session?: SessionT): ReadResult;
34
+ read(request: Read, _session?: SessionT): ReadResult;
33
35
  write<T extends Write>(request: T, _session?: SessionT): WriteResult<T>;
34
36
  invoke(request: Invoke, _session?: SessionT): InvokeResult;
35
- subscribe(_request: Subscribe, _session?: SessionT): SubscribeResult;
37
+ subscribe(request: Subscribe, _session?: SessionT): SubscribeResult;
36
38
  }
37
39
  //# sourceMappingURL=ClientInteraction.d.ts.map
@@ -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,EAAE,WAAW,EAAE,aAAa,EAAuB,YAAY,EAAE,MAAM,UAAU,CAAC;AAEzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACtC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,kBAAkB,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CACnF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAMrB,OAAO,EAAE,yBAAyB;IAM9C,IAAI,aAAa,uBAEhB;IAED,IAAI,KAAK,6BAER;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAU9C,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU;IAK/C,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IA6BtE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY;IAuDjE,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;CAIvE"}
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,EAAE,MAAM,UAAU,CAAC;AAGnG,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,kCAAkC,IAAI,CAAC;AAEpD;;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;CAgD5E"}
@@ -18,28 +18,40 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var ClientInteraction_exports = {};
20
20
  __export(ClientInteraction_exports, {
21
- ClientInteraction: () => ClientInteraction
21
+ ClientInteraction: () => ClientInteraction,
22
+ DEFAULT_MIN_INTERVAL_FLOOR_SECONDS: () => DEFAULT_MIN_INTERVAL_FLOOR_SECONDS
22
23
  });
23
24
  module.exports = __toCommonJS(ClientInteraction_exports);
24
25
  var import_general = require("#general");
25
26
  var import_InteractionMessenger = require("#interaction/InteractionMessenger.js");
26
- var import_SubscriptionClient = require("#interaction/SubscriptionClient.js");
27
27
  var import_InteractionQueue = require("#peer/InteractionQueue.js");
28
28
  var import_ExchangeProvider = require("#protocol/ExchangeProvider.js");
29
+ var import_types = require("#types");
30
+ var import_ClientSubscriptions = require("./ClientSubscriptions.js");
31
+ var import_InputChunk = require("./InputChunk.js");
29
32
  /**
30
33
  * @license
31
34
  * Copyright 2022-2025 Matter.js Authors
32
35
  * SPDX-License-Identifier: Apache-2.0
33
36
  */
37
+ const DEFAULT_MIN_INTERVAL_FLOOR_SECONDS = 1;
34
38
  class ClientInteraction {
35
39
  #exchanges;
36
40
  #subscriptions;
37
41
  #queue;
42
+ #interactions = new import_general.BasicSet();
43
+ #closed = false;
38
44
  constructor(context) {
39
45
  this.#exchanges = context.exchanges;
40
46
  this.#subscriptions = context.subscriptions;
41
47
  this.#queue = context.queue;
42
48
  }
49
+ async close() {
50
+ this.#closed = true;
51
+ while (this.#interactions.size) {
52
+ await this.#interactions.deleted;
53
+ }
54
+ }
43
55
  get subscriptions() {
44
56
  return this.#subscriptions;
45
57
  }
@@ -49,97 +61,157 @@ class ClientInteraction {
49
61
  static [import_general.Environmental.create](env) {
50
62
  const instance = new ClientInteraction({
51
63
  exchanges: env.get(import_ExchangeProvider.ExchangeProvider),
52
- subscriptions: env.get(import_SubscriptionClient.SubscriptionClient),
64
+ subscriptions: env.get(import_ClientSubscriptions.ClientSubscriptions),
53
65
  queue: env.get(import_InteractionQueue.InteractionQueue)
54
66
  });
55
67
  env.set(ClientInteraction, instance);
56
68
  return instance;
57
69
  }
58
- read(_request, _session) {
59
- throw new import_general.NotImplementedError();
70
+ async *read(request, _session) {
71
+ try {
72
+ this.#begin(request);
73
+ const messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
74
+ await messenger.sendReadRequest(request);
75
+ for await (const report of messenger.readDataReports()) {
76
+ yield (0, import_InputChunk.InputChunk)(report);
77
+ }
78
+ } finally {
79
+ this.#end(request);
80
+ }
60
81
  }
61
82
  async write(request, _session) {
62
- const messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
63
- const response = await messenger.sendWriteCommand(request);
64
- if (request.suppressResponse) {
65
- return void 0;
66
- }
67
- 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
- }) => ({
75
- kind: "attr-status",
76
- path: {
77
- nodeId,
78
- endpointId,
79
- clusterId,
80
- attributeId,
81
- listIndex
82
- },
83
- status,
84
- clusterStatus
85
- })
86
- );
83
+ let messenger;
84
+ try {
85
+ this.#begin(request);
86
+ messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
87
+ const response = await messenger.sendWriteCommand(request);
88
+ if (request.suppressResponse) {
89
+ return void 0;
90
+ }
91
+ 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
+ }) => ({
99
+ kind: "attr-status",
100
+ path: {
101
+ nodeId,
102
+ endpointId,
103
+ clusterId,
104
+ attributeId,
105
+ listIndex
106
+ },
107
+ status,
108
+ clusterStatus
109
+ })
110
+ );
111
+ }
112
+ } finally {
113
+ await messenger?.close();
114
+ this.#end(request);
87
115
  }
88
116
  }
89
117
  async *invoke(request, _session) {
90
- const messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
91
- const result = await messenger.sendInvokeCommand(request);
92
- if (!request.suppressResponse) {
93
- if (result && result.invokeResponses?.length) {
94
- const chunk = result.invokeResponses.map((response) => {
95
- if (response.command !== void 0) {
96
- const {
97
- commandPath: { endpointId, clusterId, commandId },
98
- commandRef,
99
- commandFields
100
- } = response.command;
101
- const res = {
102
- kind: "cmd-response",
103
- path: {
104
- endpointId,
105
- clusterId,
106
- commandId
107
- },
108
- commandRef,
109
- data: commandFields
110
- // TODO add decoding
111
- };
112
- return res;
113
- } else if (response.status !== void 0) {
114
- const {
115
- commandPath: { endpointId, clusterId, commandId },
116
- commandRef,
117
- status: { status, clusterStatus }
118
- } = response.status;
119
- const res = {
120
- kind: "cmd-status",
121
- path: {
122
- endpointId,
123
- clusterId,
124
- commandId
125
- },
126
- commandRef,
127
- status,
128
- clusterStatus
129
- };
130
- return res;
131
- } else {
132
- return void 0;
133
- }
134
- }).filter((r) => r !== void 0);
135
- yield chunk;
136
- } else {
137
- yield [];
118
+ let messenger;
119
+ try {
120
+ this.#begin(request);
121
+ messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
122
+ const result = await messenger.sendInvokeCommand(request);
123
+ if (!request.suppressResponse) {
124
+ if (result && result.invokeResponses?.length) {
125
+ const chunk = result.invokeResponses.map((response) => {
126
+ if (response.command !== void 0) {
127
+ const {
128
+ commandPath: { endpointId, clusterId, commandId },
129
+ commandRef,
130
+ commandFields
131
+ } = response.command;
132
+ const res = {
133
+ kind: "cmd-response",
134
+ path: {
135
+ endpointId,
136
+ clusterId,
137
+ commandId
138
+ },
139
+ commandRef,
140
+ data: commandFields
141
+ // TODO add decoding
142
+ };
143
+ return res;
144
+ } else if (response.status !== void 0) {
145
+ const {
146
+ commandPath: { endpointId, clusterId, commandId },
147
+ commandRef,
148
+ status: { status, clusterStatus }
149
+ } = response.status;
150
+ const res = {
151
+ kind: "cmd-status",
152
+ path: {
153
+ endpointId,
154
+ clusterId,
155
+ commandId
156
+ },
157
+ commandRef,
158
+ status,
159
+ clusterStatus
160
+ };
161
+ return res;
162
+ } else {
163
+ return void 0;
164
+ }
165
+ }).filter((r) => r !== void 0);
166
+ yield chunk;
167
+ } else {
168
+ yield [];
169
+ }
138
170
  }
171
+ } finally {
172
+ await messenger?.close();
173
+ this.#end(request);
139
174
  }
140
175
  }
141
- subscribe(_request, _session) {
142
- throw new import_general.NotImplementedError();
176
+ async subscribe(request, _session) {
177
+ let messenger;
178
+ try {
179
+ this.#begin(request);
180
+ messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
181
+ await messenger.sendSubscribeRequest({
182
+ ...request,
183
+ minIntervalFloorSeconds: DEFAULT_MIN_INTERVAL_FLOOR_SECONDS,
184
+ maxIntervalCeilingSeconds: DEFAULT_MIN_INTERVAL_FLOOR_SECONDS
185
+ });
186
+ await this.#handleSubscriptionResponse(request, readChunks(messenger));
187
+ const responseMessage = await messenger.nextMessage(import_InteractionMessenger.MessageType.SubscribeResponse);
188
+ const response = import_types.TlvSubscribeResponse.decode(responseMessage.payload);
189
+ return this.#subscriptions.add(request, response);
190
+ } finally {
191
+ await messenger?.close();
192
+ this.#end(request);
193
+ }
194
+ }
195
+ async #handleSubscriptionResponse(request, result) {
196
+ if (request.updated) {
197
+ await request.updated(result);
198
+ } else {
199
+ for await (const _chunk of result) ;
200
+ }
201
+ }
202
+ #begin(request) {
203
+ if (this.#closed) {
204
+ throw new import_general.ImplementationError("Client interaction unavailable after close");
205
+ }
206
+ this.#interactions.add(request);
207
+ }
208
+ #end(request) {
209
+ this.#interactions.delete(request);
210
+ }
211
+ }
212
+ async function* readChunks(messenger) {
213
+ for await (const report of messenger.readDataReports()) {
214
+ yield (0, import_InputChunk.InputChunk)(report);
143
215
  }
144
216
  }
145
217
  //# sourceMappingURL=ClientInteraction.js.map
@@ -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
  }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Subscribe } from "#action/request/Subscribe.js";
7
+ import { ActiveSubscription } from "#action/response/SubscribeResult.js";
8
+ /**
9
+ * The client view of an established Matter subscription.
10
+ */
11
+ export interface ClientSubscription extends ActiveSubscription {
12
+ request: Subscribe;
13
+ timeoutAtMs?: number;
14
+ isClosed: boolean;
15
+ isReading: boolean;
16
+ }
17
+ //# sourceMappingURL=ClientSubscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientSubscription.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscription.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC1D,OAAO,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var ClientSubscription_exports = {};
16
+ module.exports = __toCommonJS(ClientSubscription_exports);
17
+ /**
18
+ * @license
19
+ * Copyright 2022-2025 Matter.js Authors
20
+ * SPDX-License-Identifier: Apache-2.0
21
+ */
22
+ //# sourceMappingURL=ClientSubscription.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/action/client/ClientSubscription.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MessageExchange } from "#protocol/MessageExchange.js";
7
+ import { ProtocolHandler } from "#protocol/ProtocolHandler.js";
8
+ import { ClientSubscriptions } from "./ClientSubscriptions.js";
9
+ /**
10
+ * A protocol handler that informs {@link ClientSubscriptions} of new exchanges.
11
+ */
12
+ export declare class ClientSubscriptionHandler implements ProtocolHandler {
13
+ #private;
14
+ id: number;
15
+ requiresSecureSession: boolean;
16
+ constructor(subscriptions: ClientSubscriptions);
17
+ onNewExchange(exchange: MessageExchange): Promise<void>;
18
+ close(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=ClientSubscriptionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientSubscriptionHandler.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscriptionHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D;;GAEG;AACH,qBAAa,yBAA0B,YAAW,eAAe;;IAC7D,EAAE,SAA2B;IAC7B,qBAAqB,UAAQ;gBAIjB,aAAa,EAAE,mBAAmB;IAIxC,aAAa,CAAC,QAAQ,EAAE,eAAe;IAuDvC,KAAK;CACd"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ClientSubscriptionHandler_exports = {};
20
+ __export(ClientSubscriptionHandler_exports, {
21
+ ClientSubscriptionHandler: () => ClientSubscriptionHandler
22
+ });
23
+ module.exports = __toCommonJS(ClientSubscriptionHandler_exports);
24
+ var import_DecodedDataReport = require("#interaction/DecodedDataReport.js");
25
+ var import_InteractionMessenger = require("#interaction/InteractionMessenger.js");
26
+ var import_types = require("#types");
27
+ var import_general = require("@matter/general");
28
+ var import_InputChunk = require("./InputChunk.js");
29
+ /**
30
+ * @license
31
+ * Copyright 2022-2025 Matter.js Authors
32
+ * SPDX-License-Identifier: Apache-2.0
33
+ */
34
+ const logger = import_general.Logger.get("ClientSubscriptionHandler");
35
+ class ClientSubscriptionHandler {
36
+ id = import_types.INTERACTION_PROTOCOL_ID;
37
+ requiresSecureSession = true;
38
+ #subscriptions;
39
+ constructor(subscriptions) {
40
+ this.#subscriptions = subscriptions;
41
+ }
42
+ async onNewExchange(exchange) {
43
+ const messenger = new import_InteractionMessenger.IncomingInteractionClientMessenger(exchange);
44
+ const reports = messenger.readDataReports();
45
+ const initialIteration = await reports.next();
46
+ if (initialIteration.done) {
47
+ throw new import_general.InternalError("Exchange initiated with no initial message");
48
+ }
49
+ const initialReport = initialIteration.value;
50
+ const { subscriptionId } = initialReport;
51
+ if (subscriptionId === void 0) {
52
+ logger.debug("Ignoring unsolicited data report with no subscription ID");
53
+ await sendInvalid(messenger, void 0);
54
+ return;
55
+ }
56
+ const subscription = this.#subscriptions.get(subscriptionId);
57
+ if (subscription === void 0) {
58
+ logger.debug("Ignoring data report for unknown subscription ID", import_general.Diagnostic.strong(subscriptionId));
59
+ await sendInvalid(messenger, subscriptionId);
60
+ return;
61
+ }
62
+ if (!initialReport.attributeReports?.length && !initialReport.eventReports?.length) {
63
+ subscription.timeoutAtMs = void 0;
64
+ this.#subscriptions.resetTimer();
65
+ await exchange.close();
66
+ return;
67
+ }
68
+ try {
69
+ subscription.isReading = true;
70
+ if (subscription.request.updated) {
71
+ await subscription.request.updated(processReports(initialReport, reports, messenger));
72
+ } else {
73
+ for await (const _chunk of reports) ;
74
+ }
75
+ } finally {
76
+ subscription.isReading = false;
77
+ subscription.timeoutAtMs = void 0;
78
+ this.#subscriptions.resetTimer();
79
+ await exchange.close();
80
+ }
81
+ }
82
+ async close() {
83
+ }
84
+ }
85
+ async function sendInvalid(messenger, subscriptionId) {
86
+ await messenger.sendStatus(import_types.Status.InvalidSubscription, {
87
+ multipleMessageInteraction: true,
88
+ logContext: {
89
+ subId: subscriptionId
90
+ }
91
+ });
92
+ await messenger.close();
93
+ }
94
+ async function* processReports(initialReport, otherReports, messenger) {
95
+ yield (0, import_InputChunk.InputChunk)(initialReport);
96
+ const { subscriptionId } = initialReport;
97
+ for await (const report of otherReports) {
98
+ const decoded = (0, import_DecodedDataReport.DecodedDataReport)(report);
99
+ if (decoded.subscriptionId === void 0) {
100
+ logger.debug(
101
+ "Ignoring data report for incorrect subscription id",
102
+ import_general.Diagnostic.strong(decoded.subscriptionId)
103
+ );
104
+ await sendInvalid(messenger, decoded.subscriptionId);
105
+ }
106
+ if (decoded.subscriptionId !== subscriptionId) {
107
+ logger.debug(
108
+ "Ignoring data report for incorrect subscription id",
109
+ import_general.Diagnostic.strong(decoded.subscriptionId)
110
+ );
111
+ await sendInvalid(messenger, decoded.subscriptionId);
112
+ continue;
113
+ }
114
+ yield (0, import_InputChunk.InputChunk)(report);
115
+ }
116
+ }
117
+ //# sourceMappingURL=ClientSubscriptionHandler.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/action/client/ClientSubscriptionHandler.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,+BAAkC;AAClC,kCAAmD;AAInD,mBAA4D;AAC5D,qBAAkD;AAElD,wBAA2B;AAf3B;AAAA;AAAA;AAAA;AAAA;AAiBA,MAAM,SAAS,sBAAO,IAAI,2BAA2B;AAK9C,MAAM,0BAAqD;AAAA,EAC9D,KAAK;AAAA,EACL,wBAAwB;AAAA,EAExB;AAAA,EAEA,YAAY,eAAoC;AAC5C,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAEA,MAAM,cAAc,UAA2B;AAC3C,UAAM,YAAY,IAAI,+DAAmC,QAAQ;AAEjE,UAAM,UAAU,UAAU,gBAAgB;AAE1C,UAAM,mBAAmB,MAAM,QAAQ,KAAK;AAC5C,QAAI,iBAAiB,MAAM;AACvB,YAAM,IAAI,6BAAc,4CAA4C;AAAA,IACxE;AACA,UAAM,gBAAgB,iBAAiB;AAGvC,UAAM,EAAE,eAAe,IAAI;AAC3B,QAAI,mBAAmB,QAAW;AAC9B,aAAO,MAAM,0DAA0D;AACvE,YAAM,YAAY,WAAW,MAAS;AACtC;AAAA,IACJ;AAGA,UAAM,eAAe,KAAK,eAAe,IAAI,cAAc;AAC3D,QAAI,iBAAiB,QAAW;AAC5B,aAAO,MAAM,oDAAoD,0BAAW,OAAO,cAAc,CAAC;AAClG,YAAM,YAAY,WAAW,cAAc;AAC3C;AAAA,IACJ;AAGA,QAAI,CAAC,cAAc,kBAAkB,UAAU,CAAC,cAAc,cAAc,QAAQ;AAChF,mBAAa,cAAc;AAC3B,WAAK,eAAe,WAAW;AAC/B,YAAM,SAAS,MAAM;AACrB;AAAA,IACJ;AAGA,QAAI;AACA,mBAAa,YAAY;AAEzB,UAAI,aAAa,QAAQ,SAAS;AAC9B,cAAM,aAAa,QAAQ,QAAQ,eAAe,eAAe,SAAS,SAAS,CAAC;AAAA,MACxF,OAAO;AAIH,yBAAiB,UAAU,QAAQ;AAAA,MACvC;AAAA,IACJ,UAAE;AACE,mBAAa,YAAY;AACzB,mBAAa,cAAc;AAC3B,WAAK,eAAe,WAAW;AAC/B,YAAM,SAAS,MAAM;AAAA,IACzB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ;AAAA,EAAC;AACnB;AAEA,eAAe,YAAY,WAA+C,gBAAiC;AACvG,QAAM,UAAU,WAAW,oBAAO,qBAAqB;AAAA,IACnD,4BAA4B;AAAA,IAC5B,YAAY;AAAA,MACR,OAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM;AAC1B;AAOA,gBAAgB,eACZ,eACA,cACA,WACU;AACV,YAAM,8BAAW,aAAa;AAE9B,QAAM,EAAE,eAAe,IAAI;AAE3B,mBAAiB,UAAU,cAAc;AACrC,UAAM,cAAU,4CAAkB,MAAM;AAExC,QAAI,QAAQ,mBAAmB,QAAW;AACtC,aAAO;AAAA,QACH;AAAA,QACA,0BAAW,OAAO,QAAQ,cAAc;AAAA,MAC5C;AACA,YAAM,YAAY,WAAW,QAAQ,cAAc;AAAA,IACvD;AAEA,QAAI,QAAQ,mBAAmB,gBAAgB;AAC3C,aAAO;AAAA,QACH;AAAA,QACA,0BAAW,OAAO,QAAQ,cAAc;AAAA,MAC5C;AACA,YAAM,YAAY,WAAW,QAAQ,cAAc;AACnD;AAAA,IACJ;AAEA,cAAM,8BAAW,MAAM;AAAA,EAC3B;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Subscribe } from "#action/request/Subscribe.js";
7
+ import { ReadResult } from "#action/response/ReadResult.js";
8
+ import { ActiveSubscription } from "#action/response/SubscribeResult.js";
9
+ import { Environment, Environmental } from "#general";
10
+ import { SubscriptionId } from "#interaction/Subscription.js";
11
+ import { SubscribeResponse } from "#types";
12
+ import { ClientSubscription } from "./ClientSubscription.js";
13
+ /**
14
+ * A managed set of {@link ClientSubscription} instances.
15
+ */
16
+ export declare class ClientSubscriptions {
17
+ #private;
18
+ static [Environmental.create](env: Environment): ClientSubscriptions;
19
+ /**
20
+ * Register an active subscription.
21
+ */
22
+ add(request: Subscribe, response: SubscribeResponse): ActiveSubscription;
23
+ /**
24
+ * Retrieve a subscription by ID.
25
+ */
26
+ get(id: SubscriptionId): ClientSubscription | undefined;
27
+ /**
28
+ * Iterate over active subscriptions.
29
+ */
30
+ [Symbol.iterator](): SetIterator<ClientSubscription>;
31
+ /**
32
+ * Terminate all subscriptions.
33
+ */
34
+ close(): Promise<void>;
35
+ /**
36
+ * Restart the timeout timer for the current set of active subscriptions.
37
+ */
38
+ resetTimer(): void;
39
+ }
40
+ export declare namespace ClientSubscriptions {
41
+ interface Listener {
42
+ (reports: AsyncIterable<ReadResult.Chunk>): Promise<void>;
43
+ }
44
+ }
45
+ //# sourceMappingURL=ClientSubscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientSubscriptions.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscriptions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAIH,WAAW,EACX,aAAa,EAKhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D;;GAEG;AACH,qBAAa,mBAAmB;;IAK5B,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB;IAgBxE;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,cAAc;IAItB;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB;;OAEG;IACG,KAAK;IAUX;;OAEG;IACH,UAAU;CAwEb;AAMD,yBAAiB,mBAAmB,CAAC;IACjC,UAAiB,QAAQ;QACrB,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D;CACJ"}