@matter/node 0.16.0-alpha.0-20251001-7eb06da95 → 0.16.0-alpha.0-20251004-92135c7df

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 (103) hide show
  1. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +4 -0
  2. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  3. package/dist/cjs/behavior/internal/BehaviorBacking.js +6 -0
  4. package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
  5. package/dist/cjs/behavior/internal/Reactors.d.ts +1 -1
  6. package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  7. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js +15 -0
  8. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  9. package/dist/cjs/behavior/system/controller/ControllerBehavior.d.ts.map +1 -1
  10. package/dist/cjs/behavior/system/controller/ControllerBehavior.js +2 -16
  11. package/dist/cjs/behavior/system/controller/ControllerBehavior.js.map +1 -1
  12. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts +4 -4
  13. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
  14. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js +5 -6
  15. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js.map +1 -1
  16. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  17. package/dist/cjs/endpoint/Endpoint.d.ts +13 -2
  18. package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
  19. package/dist/cjs/endpoint/Endpoint.js +26 -16
  20. package/dist/cjs/endpoint/Endpoint.js.map +1 -1
  21. package/dist/cjs/endpoint/properties/Behaviors.d.ts +5 -1
  22. package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
  23. package/dist/cjs/endpoint/properties/Behaviors.js +7 -0
  24. package/dist/cjs/endpoint/properties/Behaviors.js.map +1 -1
  25. package/dist/cjs/node/ClientNode.d.ts +2 -0
  26. package/dist/cjs/node/ClientNode.d.ts.map +1 -1
  27. package/dist/cjs/node/ClientNode.js +14 -0
  28. package/dist/cjs/node/ClientNode.js.map +1 -1
  29. package/dist/cjs/node/Node.d.ts.map +1 -1
  30. package/dist/cjs/node/Node.js +3 -0
  31. package/dist/cjs/node/Node.js.map +1 -1
  32. package/dist/cjs/node/NodeLifecycle.d.ts +3 -0
  33. package/dist/cjs/node/NodeLifecycle.d.ts.map +1 -1
  34. package/dist/cjs/node/NodeLifecycle.js +10 -0
  35. package/dist/cjs/node/NodeLifecycle.js.map +1 -1
  36. package/dist/cjs/node/ServerNode.js +1 -1
  37. package/dist/cjs/node/ServerNode.js.map +1 -1
  38. package/dist/cjs/node/client/NodePeerAddressStore.js.map +1 -1
  39. package/dist/cjs/node/server/InteractionServer.d.ts +2 -2
  40. package/dist/cjs/node/server/InteractionServer.d.ts.map +1 -1
  41. package/dist/cjs/storage/client/ClientEndpointStore.d.ts +4 -0
  42. package/dist/cjs/storage/client/ClientEndpointStore.d.ts.map +1 -1
  43. package/dist/cjs/storage/client/ClientEndpointStore.js +6 -0
  44. package/dist/cjs/storage/client/ClientEndpointStore.js.map +1 -1
  45. package/dist/esm/behavior/internal/BehaviorBacking.d.ts +4 -0
  46. package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  47. package/dist/esm/behavior/internal/BehaviorBacking.js +6 -0
  48. package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
  49. package/dist/esm/behavior/internal/Reactors.d.ts +1 -1
  50. package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  51. package/dist/esm/behavior/system/commissioning/CommissioningClient.js +19 -1
  52. package/dist/esm/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  53. package/dist/esm/behavior/system/controller/ControllerBehavior.d.ts.map +1 -1
  54. package/dist/esm/behavior/system/controller/ControllerBehavior.js +3 -17
  55. package/dist/esm/behavior/system/controller/ControllerBehavior.js.map +1 -1
  56. package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts +4 -4
  57. package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
  58. package/dist/esm/behavior/system/network/ServerNetworkRuntime.js +6 -8
  59. package/dist/esm/behavior/system/network/ServerNetworkRuntime.js.map +1 -1
  60. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  61. package/dist/esm/endpoint/Endpoint.d.ts +13 -2
  62. package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
  63. package/dist/esm/endpoint/Endpoint.js +26 -16
  64. package/dist/esm/endpoint/Endpoint.js.map +1 -1
  65. package/dist/esm/endpoint/properties/Behaviors.d.ts +5 -1
  66. package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
  67. package/dist/esm/endpoint/properties/Behaviors.js +7 -0
  68. package/dist/esm/endpoint/properties/Behaviors.js.map +1 -1
  69. package/dist/esm/node/ClientNode.d.ts +2 -0
  70. package/dist/esm/node/ClientNode.d.ts.map +1 -1
  71. package/dist/esm/node/ClientNode.js +16 -2
  72. package/dist/esm/node/ClientNode.js.map +1 -1
  73. package/dist/esm/node/Node.d.ts.map +1 -1
  74. package/dist/esm/node/Node.js +3 -0
  75. package/dist/esm/node/Node.js.map +1 -1
  76. package/dist/esm/node/NodeLifecycle.d.ts +3 -0
  77. package/dist/esm/node/NodeLifecycle.d.ts.map +1 -1
  78. package/dist/esm/node/NodeLifecycle.js +10 -0
  79. package/dist/esm/node/NodeLifecycle.js.map +1 -1
  80. package/dist/esm/node/ServerNode.js +1 -1
  81. package/dist/esm/node/ServerNode.js.map +1 -1
  82. package/dist/esm/node/client/NodePeerAddressStore.js.map +1 -1
  83. package/dist/esm/node/server/InteractionServer.d.ts +2 -2
  84. package/dist/esm/node/server/InteractionServer.d.ts.map +1 -1
  85. package/dist/esm/storage/client/ClientEndpointStore.d.ts +4 -0
  86. package/dist/esm/storage/client/ClientEndpointStore.d.ts.map +1 -1
  87. package/dist/esm/storage/client/ClientEndpointStore.js +6 -0
  88. package/dist/esm/storage/client/ClientEndpointStore.js.map +1 -1
  89. package/package.json +7 -7
  90. package/src/behavior/internal/BehaviorBacking.ts +7 -0
  91. package/src/behavior/system/commissioning/CommissioningClient.ts +22 -0
  92. package/src/behavior/system/controller/ControllerBehavior.ts +3 -21
  93. package/src/behavior/system/network/ServerNetworkRuntime.ts +10 -12
  94. package/src/behavior/system/subscriptions/SubscriptionsServer.ts +2 -2
  95. package/src/endpoint/Endpoint.ts +37 -14
  96. package/src/endpoint/properties/Behaviors.ts +9 -0
  97. package/src/node/ClientNode.ts +28 -2
  98. package/src/node/Node.ts +3 -0
  99. package/src/node/NodeLifecycle.ts +13 -0
  100. package/src/node/ServerNode.ts +2 -2
  101. package/src/node/client/NodePeerAddressStore.ts +2 -2
  102. package/src/node/server/InteractionServer.ts +2 -2
  103. package/src/storage/client/ClientEndpointStore.ts +7 -0
package/src/node/Node.ts CHANGED
@@ -99,6 +99,7 @@ export abstract class Node<T extends Node.CommonRootEndpoint = Node.CommonRootEn
99
99
  if (this.lifecycle.isOnline) {
100
100
  return;
101
101
  }
102
+ this.lifecycle.targetState = "online";
102
103
 
103
104
  await this.lifecycle.mutex.produce(this.startWithMutex.bind(this));
104
105
  }
@@ -147,6 +148,7 @@ export abstract class Node<T extends Node.CommonRootEndpoint = Node.CommonRootEn
147
148
  * Once the node is offline you may use {@link start} to bring the node online again.
148
149
  */
149
150
  async cancel() {
151
+ this.lifecycle.targetState = "offline";
150
152
  await this.lifecycle.mutex.produce(this.cancelWithMutex.bind(this));
151
153
  }
152
154
 
@@ -174,6 +176,7 @@ export abstract class Node<T extends Node.CommonRootEndpoint = Node.CommonRootEn
174
176
  }
175
177
 
176
178
  override async close() {
179
+ this.lifecycle.targetState = "offline";
177
180
  await this.lifecycle.mutex.produce(this.closeWithMutex.bind(this));
178
181
  }
179
182
 
@@ -22,6 +22,7 @@ export class NodeLifecycle extends EndpointLifecycle {
22
22
  #onlineAt?: Date;
23
23
  #isCommissioned = false;
24
24
  #mutex: Mutex;
25
+ #targetState: "online" | "offline" = "offline";
25
26
 
26
27
  constructor(endpoint: Endpoint) {
27
28
  super(endpoint);
@@ -120,4 +121,16 @@ export class NodeLifecycle extends EndpointLifecycle {
120
121
  get mutex() {
121
122
  return this.#mutex;
122
123
  }
124
+
125
+ set targetState(state: "online" | "offline") {
126
+ this.#targetState = state;
127
+ }
128
+
129
+ get shouldBeOnline() {
130
+ return this.#targetState === "online";
131
+ }
132
+
133
+ get shouldBeOffline() {
134
+ return this.#targetState === "offline";
135
+ }
123
136
  }
@@ -143,8 +143,8 @@ export class ServerNode<T extends ServerNode.RootEndpoint = ServerNode.RootEndpo
143
143
  // Reset reverts node to inactive state; now reinitialize
144
144
  this.construction.start();
145
145
 
146
- // Go back online if we were online at time of reset, otherwise just await reinitialization
147
- if (isOnline) {
146
+ // Go back online if we were online at time of reset and should still be online, otherwise just await reinitialization
147
+ if (isOnline && this.lifecycle.shouldBeOnline) {
148
148
  await this.startWithMutex();
149
149
  } else {
150
150
  await this.construction.ready;
@@ -10,7 +10,7 @@ import { IdentityService } from "#node/server/IdentityService.js";
10
10
  import type { ServerNode } from "#node/ServerNode.js";
11
11
  import { OperationalPeer, PeerAddress, PeerAddressMap, PeerAddressStore } from "#protocol";
12
12
  import { FabricIndex, NodeId } from "#types";
13
- import { Crypto, ServerAddress, ServerAddressIp } from "@matter/general";
13
+ import { Crypto, ServerAddress, ServerAddressUdp } from "@matter/general";
14
14
 
15
15
  /**
16
16
  * This is an adapter for lower-level components in the protocol package.
@@ -65,7 +65,7 @@ export class NodePeerAddressStore extends PeerAddressStore {
65
65
 
66
66
  return {
67
67
  address: commissioning.peerAddress,
68
- operationalAddress: addr && (ServerAddress(addr) as ServerAddressIp),
68
+ operationalAddress: addr && (ServerAddress(addr) as ServerAddressUdp),
69
69
  discoveryData: RemoteDescriptor.fromLongForm(commissioning),
70
70
  };
71
71
  })
@@ -18,7 +18,7 @@ import {
18
18
  Millis,
19
19
  Observable,
20
20
  Seconds,
21
- ServerAddressIp,
21
+ ServerAddressUdp,
22
22
  } from "#general";
23
23
  import { GLOBAL_IDS, Specification } from "#model";
24
24
  import {
@@ -73,7 +73,7 @@ export interface PeerSubscription {
73
73
  isFabricFiltered: boolean;
74
74
  maxInterval: Duration;
75
75
  sendInterval: Duration;
76
- operationalAddress?: ServerAddressIp;
76
+ operationalAddress?: ServerAddressUdp;
77
77
  }
78
78
 
79
79
  function validateReadAttributesPath(path: TypeFromSchema<typeof TlvAttributePath>, isGroupSession = false) {
@@ -26,6 +26,13 @@ export class ClientEndpointStore extends EndpointStore {
26
26
  return this.#number;
27
27
  }
28
28
 
29
+ /**
30
+ * Shortcut to persisted peer address so we can use in logging prior to full initialization.
31
+ */
32
+ get peerAddress() {
33
+ return this.initialValues.get("commissioning")?.["peerAddress"];
34
+ }
35
+
29
36
  participantFor(transaction: Transaction) {
30
37
  let participant = transaction.getParticipant(this.#owner);
31
38
  if (participant === undefined) {