@matter/protocol 0.16.0-alpha.0-20251030-e9ca79f93 → 0.16.0-alpha.0-20251101-70c8d51d7

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 (164) hide show
  1. package/dist/cjs/action/Interactable.d.ts +1 -0
  2. package/dist/cjs/action/Interactable.d.ts.map +1 -1
  3. package/dist/cjs/action/client/ClientInteraction.d.ts +25 -19
  4. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  5. package/dist/cjs/action/client/ClientInteraction.js +198 -94
  6. package/dist/cjs/action/client/ClientInteraction.js.map +2 -2
  7. package/dist/cjs/action/client/index.d.ts +1 -3
  8. package/dist/cjs/action/client/index.d.ts.map +1 -1
  9. package/dist/cjs/action/client/index.js +1 -3
  10. package/dist/cjs/action/client/index.js.map +1 -1
  11. package/dist/cjs/action/client/subscription/ClientSubscribe.d.ts +8 -0
  12. package/dist/cjs/action/client/subscription/ClientSubscribe.d.ts.map +1 -0
  13. package/dist/cjs/action/client/{ClientSubscription.js → subscription/ClientSubscribe.js} +3 -8
  14. package/dist/cjs/action/client/subscription/ClientSubscribe.js.map +6 -0
  15. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts +38 -0
  16. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts.map +1 -0
  17. package/dist/cjs/action/client/subscription/ClientSubscription.js +79 -0
  18. package/dist/cjs/action/client/subscription/ClientSubscription.js.map +6 -0
  19. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.d.ts.map +1 -0
  20. package/dist/cjs/action/client/{ClientSubscriptionHandler.js → subscription/ClientSubscriptionHandler.js} +5 -2
  21. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +6 -0
  22. package/dist/{esm/action/client → cjs/action/client/subscription}/ClientSubscriptions.d.ts +15 -8
  23. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts.map +1 -0
  24. package/dist/cjs/action/client/subscription/ClientSubscriptions.js +133 -0
  25. package/dist/cjs/action/client/subscription/ClientSubscriptions.js.map +6 -0
  26. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +27 -0
  27. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -0
  28. package/dist/cjs/action/client/subscription/PeerSubscription.js +57 -0
  29. package/dist/cjs/action/client/subscription/PeerSubscription.js.map +6 -0
  30. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +57 -0
  31. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -0
  32. package/dist/cjs/action/client/subscription/SustainedSubscription.js +143 -0
  33. package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +6 -0
  34. package/dist/cjs/action/client/subscription/index.d.ts +12 -0
  35. package/dist/cjs/action/client/subscription/index.d.ts.map +1 -0
  36. package/dist/cjs/action/client/subscription/index.js +29 -0
  37. package/dist/cjs/action/client/subscription/index.js.map +6 -0
  38. package/dist/cjs/action/errors.d.ts +7 -2
  39. package/dist/cjs/action/errors.d.ts.map +1 -1
  40. package/dist/cjs/action/errors.js +6 -3
  41. package/dist/cjs/action/errors.js.map +1 -1
  42. package/dist/cjs/action/request/Subscribe.d.ts +2 -2
  43. package/dist/cjs/action/request/Subscribe.d.ts.map +1 -1
  44. package/dist/cjs/action/request/Subscribe.js.map +1 -1
  45. package/dist/cjs/action/response/ReadResult.d.ts +1 -1
  46. package/dist/cjs/action/response/ReadResult.d.ts.map +1 -1
  47. package/dist/cjs/action/response/SubscribeResult.d.ts +2 -1
  48. package/dist/cjs/action/response/SubscribeResult.d.ts.map +1 -1
  49. package/dist/cjs/action/server/ServerInteraction.d.ts +0 -1
  50. package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
  51. package/dist/cjs/action/server/ServerInteraction.js +0 -3
  52. package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
  53. package/dist/cjs/bdx/flow/InboundFlow.js +1 -1
  54. package/dist/cjs/bdx/flow/InboundFlow.js.map +1 -1
  55. package/dist/cjs/interaction/SubscriptionClient.d.ts +3 -3
  56. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  57. package/dist/cjs/interaction/SubscriptionClient.js +0 -7
  58. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  59. package/dist/cjs/peer/PeerSet.d.ts +1 -1
  60. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  61. package/dist/cjs/protocol/MessageExchange.js +1 -1
  62. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  63. package/dist/esm/action/Interactable.d.ts +1 -0
  64. package/dist/esm/action/Interactable.d.ts.map +1 -1
  65. package/dist/esm/action/client/ClientInteraction.d.ts +25 -19
  66. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  67. package/dist/esm/action/client/ClientInteraction.js +201 -95
  68. package/dist/esm/action/client/ClientInteraction.js.map +2 -2
  69. package/dist/esm/action/client/index.d.ts +1 -3
  70. package/dist/esm/action/client/index.d.ts.map +1 -1
  71. package/dist/esm/action/client/index.js +1 -3
  72. package/dist/esm/action/client/index.js.map +1 -1
  73. package/dist/esm/action/client/subscription/ClientSubscribe.d.ts +8 -0
  74. package/dist/esm/action/client/subscription/ClientSubscribe.d.ts.map +1 -0
  75. package/dist/esm/action/client/subscription/ClientSubscribe.js +1 -0
  76. package/dist/esm/action/client/subscription/ClientSubscribe.js.map +6 -0
  77. package/dist/esm/action/client/subscription/ClientSubscription.d.ts +38 -0
  78. package/dist/esm/action/client/subscription/ClientSubscription.d.ts.map +1 -0
  79. package/dist/esm/action/client/subscription/ClientSubscription.js +59 -0
  80. package/dist/esm/action/client/subscription/ClientSubscription.js.map +6 -0
  81. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.d.ts.map +1 -0
  82. package/dist/esm/action/client/{ClientSubscriptionHandler.js → subscription/ClientSubscriptionHandler.js} +5 -2
  83. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +6 -0
  84. package/dist/{cjs/action/client → esm/action/client/subscription}/ClientSubscriptions.d.ts +15 -8
  85. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts.map +1 -0
  86. package/dist/esm/action/client/subscription/ClientSubscriptions.js +113 -0
  87. package/dist/esm/action/client/subscription/ClientSubscriptions.js.map +6 -0
  88. package/dist/esm/action/client/subscription/PeerSubscription.d.ts +27 -0
  89. package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -0
  90. package/dist/esm/action/client/subscription/PeerSubscription.js +37 -0
  91. package/dist/esm/action/client/subscription/PeerSubscription.js.map +6 -0
  92. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +57 -0
  93. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -0
  94. package/dist/esm/action/client/subscription/SustainedSubscription.js +133 -0
  95. package/dist/esm/action/client/subscription/SustainedSubscription.js.map +6 -0
  96. package/dist/esm/action/client/subscription/index.d.ts +12 -0
  97. package/dist/esm/action/client/subscription/index.d.ts.map +1 -0
  98. package/dist/esm/action/client/subscription/index.js +12 -0
  99. package/dist/esm/action/client/subscription/index.js.map +6 -0
  100. package/dist/esm/action/errors.d.ts +7 -2
  101. package/dist/esm/action/errors.d.ts.map +1 -1
  102. package/dist/esm/action/errors.js +6 -3
  103. package/dist/esm/action/errors.js.map +1 -1
  104. package/dist/esm/action/request/Subscribe.d.ts +2 -2
  105. package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
  106. package/dist/esm/action/request/Subscribe.js.map +1 -1
  107. package/dist/esm/action/response/ReadResult.d.ts +1 -1
  108. package/dist/esm/action/response/ReadResult.d.ts.map +1 -1
  109. package/dist/esm/action/response/SubscribeResult.d.ts +2 -1
  110. package/dist/esm/action/response/SubscribeResult.d.ts.map +1 -1
  111. package/dist/esm/action/server/ServerInteraction.d.ts +0 -1
  112. package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
  113. package/dist/esm/action/server/ServerInteraction.js +0 -3
  114. package/dist/esm/action/server/ServerInteraction.js.map +1 -1
  115. package/dist/esm/bdx/flow/InboundFlow.js +1 -1
  116. package/dist/esm/bdx/flow/InboundFlow.js.map +1 -1
  117. package/dist/esm/interaction/SubscriptionClient.d.ts +3 -3
  118. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  119. package/dist/esm/interaction/SubscriptionClient.js +1 -8
  120. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  121. package/dist/esm/peer/PeerSet.d.ts +1 -1
  122. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  123. package/dist/esm/protocol/MessageExchange.js +1 -1
  124. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  125. package/package.json +6 -6
  126. package/src/action/Interactable.ts +1 -0
  127. package/src/action/client/ClientInteraction.ts +273 -235
  128. package/src/action/client/index.ts +1 -3
  129. package/src/action/client/subscription/ClientSubscribe.ts +8 -0
  130. package/src/action/client/subscription/ClientSubscription.ts +88 -0
  131. package/src/action/client/{ClientSubscriptionHandler.ts → subscription/ClientSubscriptionHandler.ts} +5 -2
  132. package/src/action/client/subscription/ClientSubscriptions.ts +150 -0
  133. package/src/action/client/subscription/PeerSubscription.ts +51 -0
  134. package/src/action/client/subscription/SustainedSubscription.ts +199 -0
  135. package/src/action/client/subscription/index.ts +12 -0
  136. package/src/action/errors.ts +11 -6
  137. package/src/action/request/Subscribe.ts +2 -2
  138. package/src/action/response/ReadResult.ts +1 -1
  139. package/src/action/response/SubscribeResult.ts +2 -1
  140. package/src/action/server/ServerInteraction.ts +0 -5
  141. package/src/bdx/flow/InboundFlow.ts +1 -1
  142. package/src/interaction/SubscriptionClient.ts +4 -9
  143. package/src/protocol/MessageExchange.ts +1 -1
  144. package/dist/cjs/action/client/ClientSubscription.d.ts +0 -18
  145. package/dist/cjs/action/client/ClientSubscription.d.ts.map +0 -1
  146. package/dist/cjs/action/client/ClientSubscription.js.map +0 -6
  147. package/dist/cjs/action/client/ClientSubscriptionHandler.d.ts.map +0 -1
  148. package/dist/cjs/action/client/ClientSubscriptionHandler.js.map +0 -6
  149. package/dist/cjs/action/client/ClientSubscriptions.d.ts.map +0 -1
  150. package/dist/cjs/action/client/ClientSubscriptions.js +0 -145
  151. package/dist/cjs/action/client/ClientSubscriptions.js.map +0 -6
  152. package/dist/esm/action/client/ClientSubscription.d.ts +0 -18
  153. package/dist/esm/action/client/ClientSubscription.d.ts.map +0 -1
  154. package/dist/esm/action/client/ClientSubscription.js +0 -6
  155. package/dist/esm/action/client/ClientSubscription.js.map +0 -6
  156. package/dist/esm/action/client/ClientSubscriptionHandler.d.ts.map +0 -1
  157. package/dist/esm/action/client/ClientSubscriptionHandler.js.map +0 -6
  158. package/dist/esm/action/client/ClientSubscriptions.d.ts.map +0 -1
  159. package/dist/esm/action/client/ClientSubscriptions.js +0 -135
  160. package/dist/esm/action/client/ClientSubscriptions.js.map +0 -6
  161. package/src/action/client/ClientSubscription.ts +0 -19
  162. package/src/action/client/ClientSubscriptions.ts +0 -178
  163. /package/dist/cjs/action/client/{ClientSubscriptionHandler.d.ts → subscription/ClientSubscriptionHandler.d.ts} +0 -0
  164. /package/dist/esm/action/client/{ClientSubscriptionHandler.d.ts → subscription/ClientSubscriptionHandler.d.ts} +0 -0
@@ -1,18 +0,0 @@
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
- import { Timestamp } from "#general";
9
- /**
10
- * The client view of an established Matter subscription.
11
- */
12
- export interface ClientSubscription extends ActiveSubscription {
13
- request: Subscribe;
14
- timeoutAt?: Timestamp;
15
- isClosed: boolean;
16
- isReading: boolean;
17
- }
18
- //# sourceMappingURL=ClientSubscription.d.ts.map
@@ -1 +0,0 @@
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;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC1D,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACtB"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/action/client/ClientSubscription.ts"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClientSubscriptionHandler.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscriptionHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/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"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/action/client/ClientSubscriptionHandler.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,qBAAkD;AAClD,+BAAkC;AAClC,kCAAmD;AAInD,mBAA4D;AAE5D,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,YAAY;AACzB,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,YAAY;AACzB,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
- }
@@ -1 +0,0 @@
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,EAOhB,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;CA4Eb;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"}
@@ -1,145 +0,0 @@
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 ClientSubscriptions_exports = {};
20
- __export(ClientSubscriptions_exports, {
21
- ClientSubscriptions: () => ClientSubscriptions
22
- });
23
- module.exports = __toCommonJS(ClientSubscriptions_exports);
24
- var import_general = require("#general");
25
- /**
26
- * @license
27
- * Copyright 2022-2025 Matter.js Authors
28
- * SPDX-License-Identifier: Apache-2.0
29
- */
30
- const logger = import_general.Logger.get("ClientSubscriptions");
31
- class ClientSubscriptions {
32
- #subscriptions = new import_general.BasicSet();
33
- #timeout;
34
- #nextTimeoutAt;
35
- static [import_general.Environmental.create](env) {
36
- const instance = new ClientSubscriptions();
37
- env.set(ClientSubscriptions, instance);
38
- return instance;
39
- }
40
- /**
41
- * Register an active subscription.
42
- */
43
- add(request, response) {
44
- const subscription = {
45
- ...response,
46
- request,
47
- close: () => this.#closeOne(subscription, new import_general.CanceledError()),
48
- timeoutAt: void 0,
49
- isClosed: false,
50
- isReading: true
51
- };
52
- this.#subscriptions.add(subscription);
53
- this.resetTimer();
54
- return subscription;
55
- }
56
- /**
57
- * Retrieve a subscription by ID.
58
- */
59
- get(id) {
60
- return this.#subscriptions.get("subscriptionId", id);
61
- }
62
- /**
63
- * Iterate over active subscriptions.
64
- */
65
- [Symbol.iterator]() {
66
- return this.#subscriptions[Symbol.iterator]();
67
- }
68
- /**
69
- * Terminate all subscriptions.
70
- */
71
- async close() {
72
- if (this.#timeout) {
73
- this.#timeout.stop();
74
- this.#timeout = void 0;
75
- }
76
- for (const subscription of this.#subscriptions) {
77
- subscription.close();
78
- }
79
- }
80
- /**
81
- * Restart the timeout timer for the current set of active subscriptions.
82
- */
83
- resetTimer() {
84
- const now = import_general.Time.nowMs;
85
- let nextTimeoutAt;
86
- for (const subscription of this.#subscriptions) {
87
- if (subscription.isReading) {
88
- continue;
89
- }
90
- let { timeoutAt: timeoutAtMs } = subscription;
91
- if (timeoutAtMs === void 0) {
92
- timeoutAtMs = subscription.timeoutAt = timeoutFor(subscription);
93
- } else if (timeoutAtMs < now) {
94
- this.#timeOut(subscription);
95
- continue;
96
- }
97
- if (nextTimeoutAt === void 0 || nextTimeoutAt > timeoutAtMs) {
98
- nextTimeoutAt = timeoutAtMs;
99
- }
100
- }
101
- if (nextTimeoutAt === void 0) {
102
- this.#nextTimeoutAt = void 0;
103
- this.#timeout?.stop();
104
- return;
105
- }
106
- if (nextTimeoutAt !== this.#nextTimeoutAt) {
107
- this.#nextTimeoutAt = nextTimeoutAt;
108
- if (this.#timeout) {
109
- this.#timeout?.stop();
110
- this.#timeout.interval = (0, import_general.Millis)(nextTimeoutAt - now);
111
- } else {
112
- this.#timeout = import_general.Time.getTimer(
113
- "SubscriptionTimeout",
114
- (0, import_general.Millis)(nextTimeoutAt - now),
115
- this.resetTimer.bind(this)
116
- );
117
- }
118
- }
119
- }
120
- #closeOne(subscription, cause) {
121
- if (subscription.isClosed) {
122
- return;
123
- }
124
- subscription.isClosed = true;
125
- this.#subscriptions.delete(subscription);
126
- try {
127
- subscription.request.closed?.(cause);
128
- } catch (e) {
129
- logger.error("Error canceling subscription", import_general.Diagnostic.strong(subscription.subscriptionId), e);
130
- }
131
- }
132
- #timeOut(registration) {
133
- logger.info(
134
- "Subscription",
135
- import_general.Diagnostic.strong(registration.subscriptionId),
136
- "timed out after",
137
- import_general.Diagnostic.strong(`${timeoutFor(registration)}ms`)
138
- );
139
- this.#closeOne(registration, new import_general.TimeoutError());
140
- }
141
- }
142
- function timeoutFor(subscription) {
143
- return (0, import_general.Timestamp)(subscription.maxInterval * 1e3 + (subscription.request.maxPeerResponseTime ?? 0));
144
- }
145
- //# sourceMappingURL=ClientSubscriptions.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/action/client/ClientSubscriptions.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1,18 +0,0 @@
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
- import { Timestamp } from "#general";
9
- /**
10
- * The client view of an established Matter subscription.
11
- */
12
- export interface ClientSubscription extends ActiveSubscription {
13
- request: Subscribe;
14
- timeoutAt?: Timestamp;
15
- isClosed: boolean;
16
- isReading: boolean;
17
- }
18
- //# sourceMappingURL=ClientSubscription.d.ts.map
@@ -1 +0,0 @@
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;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC1D,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACtB"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- //# sourceMappingURL=ClientSubscription.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/action/client/ClientSubscription.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClientSubscriptionHandler.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscriptionHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/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"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/action/client/ClientSubscriptionHandler.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY,eAAe,cAAc;AAClD,SAAS,yBAAyB;AAClC,SAAS,0CAA0C;AAInD,SAAqB,yBAAyB,cAAc;AAE5D,SAAS,kBAAkB;AAE3B,MAAM,SAAS,OAAO,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,mCAAmC,QAAQ;AAEjE,UAAM,UAAU,UAAU,gBAAgB;AAE1C,UAAM,mBAAmB,MAAM,QAAQ,KAAK;AAC5C,QAAI,iBAAiB,MAAM;AACvB,YAAM,IAAI,cAAc,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,WAAW,OAAO,cAAc,CAAC;AAClG,YAAM,YAAY,WAAW,cAAc;AAC3C;AAAA,IACJ;AAGA,QAAI,CAAC,cAAc,kBAAkB,UAAU,CAAC,cAAc,cAAc,QAAQ;AAChF,mBAAa,YAAY;AACzB,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,YAAY;AACzB,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,OAAO,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,QAAM,WAAW,aAAa;AAE9B,QAAM,EAAE,eAAe,IAAI;AAE3B,mBAAiB,UAAU,cAAc;AACrC,UAAM,UAAU,kBAAkB,MAAM;AAExC,QAAI,QAAQ,mBAAmB,QAAW;AACtC,aAAO;AAAA,QACH;AAAA,QACA,WAAW,OAAO,QAAQ,cAAc;AAAA,MAC5C;AACA,YAAM,YAAY,WAAW,QAAQ,cAAc;AAAA,IACvD;AAEA,QAAI,QAAQ,mBAAmB,gBAAgB;AAC3C,aAAO;AAAA,QACH;AAAA,QACA,WAAW,OAAO,QAAQ,cAAc;AAAA,MAC5C;AACA,YAAM,YAAY,WAAW,QAAQ,cAAc;AACnD;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM;AAAA,EAC3B;AACJ;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
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,EAOhB,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;CA4Eb;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"}
@@ -1,135 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import {
7
- BasicSet,
8
- CanceledError,
9
- Diagnostic,
10
- Environmental,
11
- Logger,
12
- Millis,
13
- Time,
14
- TimeoutError,
15
- Timestamp
16
- } from "#general";
17
- const logger = Logger.get("ClientSubscriptions");
18
- class ClientSubscriptions {
19
- #subscriptions = new BasicSet();
20
- #timeout;
21
- #nextTimeoutAt;
22
- static [Environmental.create](env) {
23
- const instance = new ClientSubscriptions();
24
- env.set(ClientSubscriptions, instance);
25
- return instance;
26
- }
27
- /**
28
- * Register an active subscription.
29
- */
30
- add(request, response) {
31
- const subscription = {
32
- ...response,
33
- request,
34
- close: () => this.#closeOne(subscription, new CanceledError()),
35
- timeoutAt: void 0,
36
- isClosed: false,
37
- isReading: true
38
- };
39
- this.#subscriptions.add(subscription);
40
- this.resetTimer();
41
- return subscription;
42
- }
43
- /**
44
- * Retrieve a subscription by ID.
45
- */
46
- get(id) {
47
- return this.#subscriptions.get("subscriptionId", id);
48
- }
49
- /**
50
- * Iterate over active subscriptions.
51
- */
52
- [Symbol.iterator]() {
53
- return this.#subscriptions[Symbol.iterator]();
54
- }
55
- /**
56
- * Terminate all subscriptions.
57
- */
58
- async close() {
59
- if (this.#timeout) {
60
- this.#timeout.stop();
61
- this.#timeout = void 0;
62
- }
63
- for (const subscription of this.#subscriptions) {
64
- subscription.close();
65
- }
66
- }
67
- /**
68
- * Restart the timeout timer for the current set of active subscriptions.
69
- */
70
- resetTimer() {
71
- const now = Time.nowMs;
72
- let nextTimeoutAt;
73
- for (const subscription of this.#subscriptions) {
74
- if (subscription.isReading) {
75
- continue;
76
- }
77
- let { timeoutAt: timeoutAtMs } = subscription;
78
- if (timeoutAtMs === void 0) {
79
- timeoutAtMs = subscription.timeoutAt = timeoutFor(subscription);
80
- } else if (timeoutAtMs < now) {
81
- this.#timeOut(subscription);
82
- continue;
83
- }
84
- if (nextTimeoutAt === void 0 || nextTimeoutAt > timeoutAtMs) {
85
- nextTimeoutAt = timeoutAtMs;
86
- }
87
- }
88
- if (nextTimeoutAt === void 0) {
89
- this.#nextTimeoutAt = void 0;
90
- this.#timeout?.stop();
91
- return;
92
- }
93
- if (nextTimeoutAt !== this.#nextTimeoutAt) {
94
- this.#nextTimeoutAt = nextTimeoutAt;
95
- if (this.#timeout) {
96
- this.#timeout?.stop();
97
- this.#timeout.interval = Millis(nextTimeoutAt - now);
98
- } else {
99
- this.#timeout = Time.getTimer(
100
- "SubscriptionTimeout",
101
- Millis(nextTimeoutAt - now),
102
- this.resetTimer.bind(this)
103
- );
104
- }
105
- }
106
- }
107
- #closeOne(subscription, cause) {
108
- if (subscription.isClosed) {
109
- return;
110
- }
111
- subscription.isClosed = true;
112
- this.#subscriptions.delete(subscription);
113
- try {
114
- subscription.request.closed?.(cause);
115
- } catch (e) {
116
- logger.error("Error canceling subscription", Diagnostic.strong(subscription.subscriptionId), e);
117
- }
118
- }
119
- #timeOut(registration) {
120
- logger.info(
121
- "Subscription",
122
- Diagnostic.strong(registration.subscriptionId),
123
- "timed out after",
124
- Diagnostic.strong(`${timeoutFor(registration)}ms`)
125
- );
126
- this.#closeOne(registration, new TimeoutError());
127
- }
128
- }
129
- function timeoutFor(subscription) {
130
- return Timestamp(subscription.maxInterval * 1e3 + (subscription.request.maxPeerResponseTime ?? 0));
131
- }
132
- export {
133
- ClientSubscriptions
134
- };
135
- //# sourceMappingURL=ClientSubscriptions.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/action/client/ClientSubscriptions.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1,19 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- import { Subscribe } from "#action/request/Subscribe.js";
8
- import { ActiveSubscription } from "#action/response/SubscribeResult.js";
9
- import { Timestamp } from "#general";
10
-
11
- /**
12
- * The client view of an established Matter subscription.
13
- */
14
- export interface ClientSubscription extends ActiveSubscription {
15
- request: Subscribe;
16
- timeoutAt?: Timestamp;
17
- isClosed: boolean;
18
- isReading: boolean;
19
- }
@@ -1,178 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- import { Subscribe } from "#action/request/Subscribe.js";
8
- import { ReadResult } from "#action/response/ReadResult.js";
9
- import { ActiveSubscription } from "#action/response/SubscribeResult.js";
10
- import {
11
- BasicSet,
12
- CanceledError,
13
- Diagnostic,
14
- Environment,
15
- Environmental,
16
- Logger,
17
- Millis,
18
- Time,
19
- TimeoutError,
20
- Timer,
21
- Timestamp,
22
- } from "#general";
23
- import { SubscriptionId } from "#interaction/Subscription.js";
24
- import { SubscribeResponse } from "#types";
25
- import { ClientSubscription } from "./ClientSubscription.js";
26
-
27
- const logger = Logger.get("ClientSubscriptions");
28
-
29
- /**
30
- * A managed set of {@link ClientSubscription} instances.
31
- */
32
- export class ClientSubscriptions {
33
- #subscriptions = new BasicSet<ClientSubscription>();
34
- #timeout?: Timer;
35
- #nextTimeoutAt?: number;
36
-
37
- static [Environmental.create](env: Environment) {
38
- const instance = new ClientSubscriptions();
39
- env.set(ClientSubscriptions, instance);
40
- return instance;
41
- }
42
-
43
- /**
44
- * Register an active subscription.
45
- */
46
- add(request: Subscribe, response: SubscribeResponse): ActiveSubscription {
47
- const subscription: ClientSubscription = {
48
- ...response,
49
- request,
50
- close: () => this.#closeOne(subscription, new CanceledError()),
51
- timeoutAt: undefined,
52
- isClosed: false,
53
- isReading: true,
54
- };
55
-
56
- this.#subscriptions.add(subscription);
57
- this.resetTimer();
58
-
59
- return subscription;
60
- }
61
-
62
- /**
63
- * Retrieve a subscription by ID.
64
- */
65
- get(id: SubscriptionId) {
66
- return this.#subscriptions.get("subscriptionId", id);
67
- }
68
-
69
- /**
70
- * Iterate over active subscriptions.
71
- */
72
- [Symbol.iterator]() {
73
- return this.#subscriptions[Symbol.iterator]();
74
- }
75
-
76
- /**
77
- * Terminate all subscriptions.
78
- */
79
- async close() {
80
- if (this.#timeout) {
81
- this.#timeout.stop();
82
- this.#timeout = undefined;
83
- }
84
- for (const subscription of this.#subscriptions) {
85
- subscription.close();
86
- }
87
- }
88
-
89
- /**
90
- * Restart the timeout timer for the current set of active subscriptions.
91
- */
92
- resetTimer() {
93
- const now = Time.nowMs;
94
- let nextTimeoutAt: Timestamp | undefined;
95
-
96
- // Process each subscription
97
- for (const subscription of this.#subscriptions) {
98
- // If reading data reports, ignore for timeout purposes
99
- if (subscription.isReading) {
100
- continue;
101
- }
102
-
103
- // Update timeout or expire if timed out
104
- let { timeoutAt: timeoutAtMs } = subscription;
105
- if (timeoutAtMs === undefined) {
106
- // Set timeout time
107
- timeoutAtMs = subscription.timeoutAt = timeoutFor(subscription);
108
- } else if (timeoutAtMs < now) {
109
- // Timeout
110
- this.#timeOut(subscription);
111
- continue;
112
- }
113
-
114
- // If this is the earliest timeout, record
115
- if (nextTimeoutAt === undefined || nextTimeoutAt > timeoutAtMs) {
116
- nextTimeoutAt = timeoutAtMs;
117
- }
118
- }
119
-
120
- // If no subscriptions require timeout, disable timer
121
- if (nextTimeoutAt === undefined) {
122
- this.#nextTimeoutAt = undefined;
123
- this.#timeout?.stop();
124
- return;
125
- }
126
-
127
- // Create or update timer if not set for correct interval
128
- if (nextTimeoutAt !== this.#nextTimeoutAt) {
129
- this.#nextTimeoutAt = nextTimeoutAt;
130
- if (this.#timeout) {
131
- this.#timeout?.stop();
132
- this.#timeout.interval = Millis(nextTimeoutAt - now);
133
- } else {
134
- this.#timeout = Time.getTimer(
135
- "SubscriptionTimeout",
136
- Millis(nextTimeoutAt - now),
137
- this.resetTimer.bind(this),
138
- );
139
- }
140
- }
141
- }
142
-
143
- #closeOne(subscription: ClientSubscription, cause: CanceledError | TimeoutError) {
144
- if (subscription.isClosed) {
145
- return;
146
- }
147
- subscription.isClosed = true;
148
- this.#subscriptions.delete(subscription);
149
-
150
- try {
151
- subscription.request.closed?.(cause);
152
- } catch (e) {
153
- logger.error("Error canceling subscription", Diagnostic.strong(subscription.subscriptionId), e);
154
- }
155
- }
156
-
157
- #timeOut(registration: ClientSubscription) {
158
- logger.info(
159
- "Subscription",
160
- Diagnostic.strong(registration.subscriptionId),
161
- "timed out after",
162
- Diagnostic.strong(`${timeoutFor(registration)}ms`),
163
- );
164
-
165
- // TODO - rather than closing, put into dormant state and resubscribe when connection reestablishes
166
- this.#closeOne(registration, new TimeoutError());
167
- }
168
- }
169
-
170
- function timeoutFor(subscription: ClientSubscription) {
171
- return Timestamp(subscription.maxInterval * 1000 + (subscription.request.maxPeerResponseTime ?? 0));
172
- }
173
-
174
- export namespace ClientSubscriptions {
175
- export interface Listener {
176
- (reports: AsyncIterable<ReadResult.Chunk>): Promise<void>;
177
- }
178
- }