@matter/protocol 0.13.0-alpha.0-20250311-3eb0af5f2 → 0.13.0-alpha.0-20250322-f085fa576

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 (111) hide show
  1. package/dist/cjs/certificate/CertificateAuthority.d.ts +1 -0
  2. package/dist/cjs/certificate/CertificateAuthority.d.ts.map +1 -1
  3. package/dist/cjs/certificate/CertificateAuthority.js.map +1 -1
  4. package/dist/cjs/cluster/client/ClusterClient.d.ts.map +1 -1
  5. package/dist/cjs/cluster/client/ClusterClient.js +3 -0
  6. package/dist/cjs/cluster/client/ClusterClient.js.map +1 -1
  7. package/dist/cjs/common/FailsafeContext.js +1 -1
  8. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  9. package/dist/cjs/interaction/AttributeDataDecoder.d.ts +21 -4
  10. package/dist/cjs/interaction/AttributeDataDecoder.d.ts.map +1 -1
  11. package/dist/cjs/interaction/AttributeDataDecoder.js +40 -1
  12. package/dist/cjs/interaction/AttributeDataDecoder.js.map +1 -1
  13. package/dist/cjs/interaction/DecodedDataReport.d.ts +4 -2
  14. package/dist/cjs/interaction/DecodedDataReport.d.ts.map +1 -1
  15. package/dist/cjs/interaction/DecodedDataReport.js +6 -2
  16. package/dist/cjs/interaction/DecodedDataReport.js.map +1 -1
  17. package/dist/cjs/interaction/EventDataDecoder.d.ts +15 -3
  18. package/dist/cjs/interaction/EventDataDecoder.d.ts.map +1 -1
  19. package/dist/cjs/interaction/EventDataDecoder.js +39 -2
  20. package/dist/cjs/interaction/EventDataDecoder.js.map +1 -1
  21. package/dist/cjs/interaction/InteractionClient.d.ts +44 -4
  22. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  23. package/dist/cjs/interaction/InteractionClient.js +65 -12
  24. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  25. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  26. package/dist/cjs/interaction/InteractionMessenger.js +5 -2
  27. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  28. package/dist/cjs/interaction/InteractionServer.d.ts.map +1 -1
  29. package/dist/cjs/interaction/InteractionServer.js +2 -2
  30. package/dist/cjs/interaction/InteractionServer.js.map +1 -1
  31. package/dist/cjs/peer/ControllerCommissioner.d.ts +15 -3
  32. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  33. package/dist/cjs/peer/ControllerCommissioner.js +17 -6
  34. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  35. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts +47 -1
  36. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  37. package/dist/cjs/peer/ControllerCommissioningFlow.js +133 -133
  38. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  39. package/dist/cjs/peer/PeerSet.d.ts +2 -2
  40. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  41. package/dist/cjs/peer/PeerSet.js +6 -1
  42. package/dist/cjs/peer/PeerSet.js.map +1 -1
  43. package/dist/cjs/protocol/ChannelManager.d.ts.map +1 -1
  44. package/dist/cjs/protocol/ChannelManager.js +11 -4
  45. package/dist/cjs/protocol/ChannelManager.js.map +1 -1
  46. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  47. package/dist/cjs/protocol/ExchangeManager.js +0 -1
  48. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  49. package/dist/esm/certificate/CertificateAuthority.d.ts +1 -0
  50. package/dist/esm/certificate/CertificateAuthority.d.ts.map +1 -1
  51. package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
  52. package/dist/esm/cluster/client/ClusterClient.d.ts.map +1 -1
  53. package/dist/esm/cluster/client/ClusterClient.js +3 -0
  54. package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
  55. package/dist/esm/common/FailsafeContext.js +1 -1
  56. package/dist/esm/common/FailsafeContext.js.map +1 -1
  57. package/dist/esm/interaction/AttributeDataDecoder.d.ts +21 -4
  58. package/dist/esm/interaction/AttributeDataDecoder.d.ts.map +1 -1
  59. package/dist/esm/interaction/AttributeDataDecoder.js +40 -1
  60. package/dist/esm/interaction/AttributeDataDecoder.js.map +1 -1
  61. package/dist/esm/interaction/DecodedDataReport.d.ts +4 -2
  62. package/dist/esm/interaction/DecodedDataReport.d.ts.map +1 -1
  63. package/dist/esm/interaction/DecodedDataReport.js +12 -4
  64. package/dist/esm/interaction/DecodedDataReport.js.map +1 -1
  65. package/dist/esm/interaction/EventDataDecoder.d.ts +15 -3
  66. package/dist/esm/interaction/EventDataDecoder.d.ts.map +1 -1
  67. package/dist/esm/interaction/EventDataDecoder.js +39 -2
  68. package/dist/esm/interaction/EventDataDecoder.js.map +1 -1
  69. package/dist/esm/interaction/InteractionClient.d.ts +44 -4
  70. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  71. package/dist/esm/interaction/InteractionClient.js +67 -12
  72. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  73. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  74. package/dist/esm/interaction/InteractionMessenger.js +6 -2
  75. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  76. package/dist/esm/interaction/InteractionServer.d.ts.map +1 -1
  77. package/dist/esm/interaction/InteractionServer.js +12 -3
  78. package/dist/esm/interaction/InteractionServer.js.map +1 -1
  79. package/dist/esm/peer/ControllerCommissioner.d.ts +15 -3
  80. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  81. package/dist/esm/peer/ControllerCommissioner.js +17 -6
  82. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  83. package/dist/esm/peer/ControllerCommissioningFlow.d.ts +47 -1
  84. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  85. package/dist/esm/peer/ControllerCommissioningFlow.js +133 -133
  86. package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
  87. package/dist/esm/peer/PeerSet.d.ts +2 -2
  88. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  89. package/dist/esm/peer/PeerSet.js +7 -2
  90. package/dist/esm/peer/PeerSet.js.map +1 -1
  91. package/dist/esm/protocol/ChannelManager.d.ts.map +1 -1
  92. package/dist/esm/protocol/ChannelManager.js +11 -4
  93. package/dist/esm/protocol/ChannelManager.js.map +1 -1
  94. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  95. package/dist/esm/protocol/ExchangeManager.js +0 -1
  96. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  97. package/package.json +6 -6
  98. package/src/certificate/CertificateAuthority.ts +1 -0
  99. package/src/cluster/client/ClusterClient.ts +3 -0
  100. package/src/common/FailsafeContext.ts +1 -1
  101. package/src/interaction/AttributeDataDecoder.ts +66 -6
  102. package/src/interaction/DecodedDataReport.ts +24 -5
  103. package/src/interaction/EventDataDecoder.ts +57 -5
  104. package/src/interaction/InteractionClient.ts +105 -12
  105. package/src/interaction/InteractionMessenger.ts +6 -2
  106. package/src/interaction/InteractionServer.ts +14 -4
  107. package/src/peer/ControllerCommissioner.ts +30 -6
  108. package/src/peer/ControllerCommissioningFlow.ts +144 -140
  109. package/src/peer/PeerSet.ts +7 -2
  110. package/src/protocol/ChannelManager.ts +11 -4
  111. package/src/protocol/ExchangeManager.ts +0 -1
@@ -36,7 +36,7 @@ import { SessionManager } from "#session/SessionManager.js";
36
36
  import { SECURE_CHANNEL_PROTOCOL_ID } from "@matter/types";
37
37
  import { ChannelManager } from "../protocol/ChannelManager.js";
38
38
  import { ChannelNotConnectedError, ExchangeManager, MessageChannel } from "../protocol/ExchangeManager.js";
39
- import { ReconnectableExchangeProvider } from "../protocol/ExchangeProvider.js";
39
+ import { DedicatedChannelExchangeProvider, ReconnectableExchangeProvider } from "../protocol/ExchangeProvider.js";
40
40
  import { RetransmissionLimitReachedError } from "../protocol/MessageExchange.js";
41
41
  import { ControllerDiscovery, DiscoveryError, PairRetransmissionLimitReachedError } from "./ControllerDiscovery.js";
42
42
  import { InteractionQueue } from "./InteractionQueue.js";
@@ -272,7 +272,11 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
272
272
  /**
273
273
  * Obtain an exchange provider for the designated peer.
274
274
  */
275
- async exchangeProviderFor(address: PeerAddress, discoveryOptions?: DiscoveryOptions) {
275
+ async exchangeProviderFor(addressOrChannel: PeerAddress | MessageChannel, discoveryOptions?: DiscoveryOptions) {
276
+ if (addressOrChannel instanceof MessageChannel) {
277
+ return new DedicatedChannelExchangeProvider(this.#exchanges, addressOrChannel);
278
+ }
279
+ const address: PeerAddress = addressOrChannel;
276
280
  let initiallyConnected = this.#channels.hasChannel(address);
277
281
  return new ReconnectableExchangeProvider(this.#exchanges, this.#channels, address, async () => {
278
282
  if (!initiallyConnected && !this.#channels.hasChannel(address)) {
@@ -622,6 +626,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
622
626
  discoveryData?: DiscoveryData,
623
627
  expectedProcessingTimeMs?: number,
624
628
  ) {
629
+ logger.debug(`Pair with ${address} at ${serverAddressToString(operationalServerAddress)}`);
625
630
  const { ip, port } = operationalServerAddress;
626
631
  // Do CASE pairing
627
632
  const isIpv6Address = isIPv6(ip);
@@ -69,7 +69,9 @@ export class ChannelManager {
69
69
  }
70
70
 
71
71
  hasChannel(address: PeerAddress) {
72
- return !!this.#channels.get(address)?.length;
72
+ return !!this.#channels
73
+ .get(address)
74
+ ?.filter(channel => !channel.closed && !channel.session.closingAfterExchangeFinished).length;
73
75
  }
74
76
 
75
77
  getChannel(address: PeerAddress, session?: Session) {
@@ -77,6 +79,7 @@ export class ChannelManager {
77
79
  if (session !== undefined) {
78
80
  results = results.filter(channel => channel.session.id === session.id);
79
81
  }
82
+ results = results.filter(channel => !channel.closed && !channel.session.closingAfterExchangeFinished);
80
83
  if (results.length === 0)
81
84
  throw new NoChannelError(
82
85
  `Can't find a channel to ${PeerAddress(address)}${session !== undefined ? ` session ${session.id}` : ""}`,
@@ -131,6 +134,7 @@ export class ChannelManager {
131
134
  async () => void this.#paseChannels.delete(session),
132
135
  );
133
136
  this.#paseChannels.set(session, msgChannel);
137
+ session.destroyed.on(() => msgChannel.close());
134
138
  return msgChannel;
135
139
  }
136
140
 
@@ -154,9 +158,12 @@ export class ChannelManager {
154
158
  }
155
159
 
156
160
  // Need to create
157
- const result = new MessageChannel(byteArrayChannel, session, async () => this.removeChannel(address, session));
158
- await this.setChannel(address, result);
159
- return result;
161
+ const msgChannel = new MessageChannel(byteArrayChannel, session, async () =>
162
+ this.removeChannel(address, session),
163
+ );
164
+ await this.setChannel(address, msgChannel);
165
+ session.destroyed.on(() => msgChannel.close());
166
+ return msgChannel;
160
167
  }
161
168
 
162
169
  async close() {
@@ -48,7 +48,6 @@ export class MessageChannel implements Channel<Message> {
48
48
  closeCallback?: () => Promise<void>,
49
49
  ) {
50
50
  this.#closeCallback = closeCallback;
51
- this.session.destroyed.on(() => this.close());
52
51
  }
53
52
 
54
53
  set closeCallback(callback: () => Promise<void>) {