@project-chip/matter.js 0.15.4 → 0.15.6

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 (42) hide show
  1. package/dist/cjs/CommissioningController.d.ts +2 -1
  2. package/dist/cjs/CommissioningController.d.ts.map +1 -1
  3. package/dist/cjs/CommissioningController.js +26 -35
  4. package/dist/cjs/CommissioningController.js.map +1 -1
  5. package/dist/cjs/MatterController.d.ts.map +1 -1
  6. package/dist/cjs/MatterController.js +2 -2
  7. package/dist/cjs/MatterController.js.map +1 -1
  8. package/dist/cjs/device/CachedClientNodeStore.d.ts +4 -3
  9. package/dist/cjs/device/CachedClientNodeStore.d.ts.map +1 -1
  10. package/dist/cjs/device/CachedClientNodeStore.js +19 -2
  11. package/dist/cjs/device/CachedClientNodeStore.js.map +1 -1
  12. package/dist/cjs/device/Endpoint.d.ts +1 -1
  13. package/dist/cjs/device/Endpoint.d.ts.map +1 -1
  14. package/dist/cjs/device/Endpoint.js.map +1 -1
  15. package/dist/cjs/device/PairedNode.d.ts +56 -28
  16. package/dist/cjs/device/PairedNode.d.ts.map +1 -1
  17. package/dist/cjs/device/PairedNode.js +217 -78
  18. package/dist/cjs/device/PairedNode.js.map +1 -1
  19. package/dist/esm/CommissioningController.d.ts +2 -1
  20. package/dist/esm/CommissioningController.d.ts.map +1 -1
  21. package/dist/esm/CommissioningController.js +26 -35
  22. package/dist/esm/CommissioningController.js.map +1 -1
  23. package/dist/esm/MatterController.d.ts.map +1 -1
  24. package/dist/esm/MatterController.js +2 -3
  25. package/dist/esm/MatterController.js.map +1 -1
  26. package/dist/esm/device/CachedClientNodeStore.d.ts +4 -3
  27. package/dist/esm/device/CachedClientNodeStore.d.ts.map +1 -1
  28. package/dist/esm/device/CachedClientNodeStore.js +19 -2
  29. package/dist/esm/device/CachedClientNodeStore.js.map +1 -1
  30. package/dist/esm/device/Endpoint.d.ts +1 -1
  31. package/dist/esm/device/Endpoint.d.ts.map +1 -1
  32. package/dist/esm/device/Endpoint.js.map +1 -1
  33. package/dist/esm/device/PairedNode.d.ts +56 -28
  34. package/dist/esm/device/PairedNode.d.ts.map +1 -1
  35. package/dist/esm/device/PairedNode.js +218 -79
  36. package/dist/esm/device/PairedNode.js.map +1 -1
  37. package/package.json +8 -8
  38. package/src/CommissioningController.ts +31 -38
  39. package/src/MatterController.ts +3 -4
  40. package/src/device/CachedClientNodeStore.ts +24 -4
  41. package/src/device/Endpoint.ts +1 -1
  42. package/src/device/PairedNode.ts +322 -94
@@ -1 +1 @@
1
- {"version":3,"file":"Endpoint.d.ts","sourceRoot":"","sources":["../../../src/device/Endpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Endpoint.d.ts","sourceRoot":"","sources":["../../../src/device/Endpoint.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/device/Endpoint.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -3,8 +3,9 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Descriptor } from "#clusters";
6
7
  import { AsyncObservable, BasicSet, Construction, Crypto, Diagnostic, MatterError, Observable } from "#general";
7
- import { ClusterClientObj, DecodedAttributeReportValue, DecodedEventReportValue, InteractionClient, NodeDiscoveryType, NodeSession } from "#protocol";
8
+ import { AttributeClientValues, ClusterClientObj, DecodedAttributeReportValue, DecodedEventReportValue, InteractionClient, NodeDiscoveryType, NodeSession, StructuredReadAttributeData } from "#protocol";
8
9
  import { ClusterType, EndpointNumber, NodeId } from "#types";
9
10
  import { ClusterServerObj } from "../cluster/server/ClusterServerTypes.js";
10
11
  import { CommissioningController } from "../CommissioningController.js";
@@ -110,6 +111,7 @@ export type CommissioningControllerNodeOptions = {
110
111
  };
111
112
  export declare class NodeNotConnectedError extends MatterError {
112
113
  }
114
+ type DescriptorData = AttributeClientValues<typeof Descriptor.Complete.attributes>;
113
115
  /**
114
116
  * Class to represents one node that is paired/commissioned with the matter.js Controller. Instances are returned by
115
117
  * the CommissioningController on commissioning or when connecting.
@@ -117,33 +119,7 @@ export declare class NodeNotConnectedError extends MatterError {
117
119
  export declare class PairedNode {
118
120
  #private;
119
121
  readonly nodeId: NodeId;
120
- readonly events: {
121
- /**
122
- * Emitted when the node is initialized from local data. These data usually are stale, but you can still already
123
- * use the node to interact with the device. If no local data are available this event will be emitted together
124
- * with the initializedFromRemote event.
125
- */
126
- initialized: AsyncObservable<[details: DeviceInformationData], void>;
127
- /**
128
- * Emitted when the node is fully initialized from remote and all attributes and events are subscribed.
129
- * This event can also be awaited if code needs to be blocked until the node is fully initialized.
130
- */
131
- initializedFromRemote: AsyncObservable<[details: DeviceInformationData], void>;
132
- /** Emitted when the state of the node changes. */
133
- stateChanged: Observable<[nodeState: NodeStates], void>;
134
- /**
135
- * Emitted when an attribute value changes. If the oldValue is undefined then no former value was known.
136
- */
137
- attributeChanged: Observable<[data: DecodedAttributeReportValue<any>, oldValue: any], void>;
138
- /** Emitted when an event is triggered. */
139
- eventTriggered: Observable<[DecodedEventReportValue<any>], void>;
140
- /** Emitted when the structure of the node changes (Endpoints got added or also removed). */
141
- structureChanged: Observable<[void], void>;
142
- /** Emitted when the node is decommissioned. */
143
- decommissioned: Observable<[void], void>;
144
- /** Emitted when a subscription alive trigger is received (max interval trigger or any data update) */
145
- connectionAlive: Observable<[void], void>;
146
- };
122
+ readonly events: PairedNode.Events;
147
123
  static create(nodeId: NodeId, commissioningController: CommissioningController, options: CommissioningControllerNodeOptions | undefined, knownNodeDetails: DeviceInformationData, interactionClient: InteractionClient, reconnectFunc: (discoveryType?: NodeDiscoveryType, noForcedConnection?: boolean) => Promise<void>, assignDisconnectedHandler: (handler: () => Promise<void>) => void, sessions: BasicSet<NodeSession>, crypto: Crypto, storedAttributeData?: DecodedAttributeReportValue<any>[]): Promise<PairedNode>;
148
124
  constructor(nodeId: NodeId, commissioningController: CommissioningController, options: CommissioningControllerNodeOptions | undefined, knownNodeDetails: DeviceInformationData, interactionClient: InteractionClient, reconnectFunc: (discoveryType?: NodeDiscoveryType, noForcedConnection?: boolean) => Promise<void>, assignDisconnectedHandler: (handler: () => Promise<void>) => void, sessions: BasicSet<NodeSession, NodeSession>, crypto: Crypto, storedAttributeData?: DecodedAttributeReportValue<any>[]);
149
125
  get construction(): Construction<PairedNode>;
@@ -206,6 +182,12 @@ export declare class PairedNode {
206
182
  }>;
207
183
  /** Read all attributes of the devices and return them. If a stored state exists this is used to minimize needed traffic. */
208
184
  readAllAttributes(): Promise<DecodedAttributeReportValue<any>[]>;
185
+ /**
186
+ * Traverse the structure data and collect all data for the given endpointId.
187
+ * Return true if data for the endpoint was found, otherwise false.
188
+ * If data was found it is added to the collectedData map.
189
+ */
190
+ collectDescriptorData(structure: StructuredReadAttributeData, endpointId: EndpointNumber, collectedData: Map<EndpointNumber, DescriptorData>): void;
209
191
  /** Returns the functional devices/endpoints (the "childs" of the Root Endpoint) known for this node. */
210
192
  getDevices(): Endpoint[];
211
193
  /** Returns the device/endpoint with the given endpoint ID. */
@@ -257,4 +239,50 @@ export declare class PairedNode {
257
239
  getClusterClientForDevice<const T extends ClusterType>(endpointId: EndpointNumber, cluster: T): ClusterClientObj<T> | undefined;
258
240
  get [Diagnostic.value](): unknown;
259
241
  }
242
+ export declare namespace PairedNode {
243
+ interface NodeStructureEvents {
244
+ /** Emitted when endpoints are added. */
245
+ nodeEndpointAdded: Observable<[EndpointNumber]>;
246
+ /** Emitted when endpoints are removed. */
247
+ nodeEndpointRemoved: Observable<[EndpointNumber]>;
248
+ /** Emitted when endpoints are updated (e.g. device type changed, structure changed). */
249
+ nodeEndpointChanged: Observable<[EndpointNumber]>;
250
+ }
251
+ interface Events extends NodeStructureEvents {
252
+ /**
253
+ * Emitted when the node is initialized from local data. These data usually are stale, but you can still already
254
+ * use the node to interact with the device. If no local data are available this event will be emitted together
255
+ * with the initializedFromRemote event.
256
+ */
257
+ initialized: AsyncObservable<[details: DeviceInformationData]>;
258
+ /**
259
+ * Emitted when the node is fully initialized from remote and all attributes and events are subscribed.
260
+ * This event can also be awaited if code needs to be blocked until the node is fully initialized.
261
+ */
262
+ initializedFromRemote: AsyncObservable<[details: DeviceInformationData]>;
263
+ /**
264
+ * Emitted when the device information changes.
265
+ */
266
+ deviceInformationChanged: AsyncObservable<[details: DeviceInformationData]>;
267
+ /** Emitted when the state of the node changes. */
268
+ stateChanged: Observable<[nodeState: NodeStates]>;
269
+ /**
270
+ * Emitted when an attribute value changes. If the oldValue is undefined then no former value was known.
271
+ */
272
+ attributeChanged: Observable<[data: DecodedAttributeReportValue<any>, oldValue: any]>;
273
+ /** Emitted when an event is triggered. */
274
+ eventTriggered: Observable<[DecodedEventReportValue<any>]>;
275
+ /**
276
+ * Emitted when all node structure changes were applied (Endpoints got added or also removed).
277
+ * You can alternatively use the nodeEndpointAdded, nodeEndpointRemoved and nodeEndpointChanged events to react on specific changes.
278
+ * This event is emitted after all nodeEndpointAdded, nodeEndpointRemoved and nodeEndpointChanged events are emitted.
279
+ */
280
+ structureChanged: Observable<[void]>;
281
+ /** Emitted when the node is decommissioned. */
282
+ decommissioned: Observable<[void]>;
283
+ /** Emitted when a subscription alive trigger is received (max interval trigger or any data update) */
284
+ connectionAlive: Observable<[void]>;
285
+ }
286
+ }
287
+ export {};
260
288
  //# sourceMappingURL=PairedNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PairedNode.d.ts","sourceRoot":"","sources":["../../../src/device/PairedNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PairedNode.d.ts","sourceRoot":"","sources":["../../../src/device/PairedNode.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { AdministratorCommissioning, BasicInformation, DescriptorCluster, OperationalCredentials } from "#clusters";
6
+ import { AdministratorCommissioning, BasicInformation, Descriptor, OperationalCredentials } from "#clusters";
7
7
  import {
8
8
  AsyncObservable,
9
9
  Construction,
@@ -70,6 +70,15 @@ var NodeStateInformation = /* @__PURE__ */ ((NodeStateInformation2) => {
70
70
  })(NodeStateInformation || {});
71
71
  class NodeNotConnectedError extends MatterError {
72
72
  }
73
+ function areNumberListsSame(list1, list2) {
74
+ const set1 = new Set(list1);
75
+ const set2 = new Set(list2);
76
+ if (set1.size !== set2.size) return false;
77
+ for (const entry of set1.values()) {
78
+ if (!set2.has(entry)) return false;
79
+ }
80
+ return true;
81
+ }
73
82
  class PairedNode {
74
83
  constructor(nodeId, commissioningController, options = {}, knownNodeDetails, interactionClient, reconnectFunc, assignDisconnectedHandler, sessions, crypto, storedAttributeData) {
75
84
  this.nodeId = nodeId;
@@ -163,31 +172,25 @@ class PairedNode {
163
172
  #reconnectFunc;
164
173
  #currentSubscriptionIntervalS;
165
174
  #crypto;
175
+ #deviceInformationUpdateNeeded = false;
176
+ /**
177
+ * Endpoint structure change information that are checked when updating structure
178
+ * - null means that the endpoint itself changed, so will be regenerated completely any case
179
+ * - array of ClusterIds means that only these clusters changed and will be updated
180
+ */
181
+ #registeredEndpointStructureChanges = /* @__PURE__ */ new Map();
166
182
  events = {
167
- /**
168
- * Emitted when the node is initialized from local data. These data usually are stale, but you can still already
169
- * use the node to interact with the device. If no local data are available this event will be emitted together
170
- * with the initializedFromRemote event.
171
- */
172
183
  initialized: AsyncObservable(),
173
- /**
174
- * Emitted when the node is fully initialized from remote and all attributes and events are subscribed.
175
- * This event can also be awaited if code needs to be blocked until the node is fully initialized.
176
- */
177
184
  initializedFromRemote: AsyncObservable(),
178
- /** Emitted when the state of the node changes. */
185
+ deviceInformationChanged: AsyncObservable(),
179
186
  stateChanged: Observable(),
180
- /**
181
- * Emitted when an attribute value changes. If the oldValue is undefined then no former value was known.
182
- */
183
187
  attributeChanged: Observable(),
184
- /** Emitted when an event is triggered. */
185
188
  eventTriggered: Observable(),
186
- /** Emitted when the structure of the node changes (Endpoints got added or also removed). */
187
189
  structureChanged: Observable(),
188
- /** Emitted when the node is decommissioned. */
190
+ nodeEndpointAdded: Observable(),
191
+ nodeEndpointRemoved: Observable(),
192
+ nodeEndpointChanged: Observable(),
189
193
  decommissioned: Observable(),
190
- /** Emitted when a subscription alive trigger is received (max interval trigger or any data update) */
191
194
  connectionAlive: Observable()
192
195
  };
193
196
  static async create(nodeId, commissioningController, options = {}, knownNodeDetails, interactionClient, reconnectFunc, assignDisconnectedHandler, sessions, crypto, storedAttributeData) {
@@ -402,7 +405,7 @@ class PairedNode {
402
405
  })) {
403
406
  return;
404
407
  }
405
- await this.#initializeEndpointStructure(storedAttributeData);
408
+ await this.#initializeEndpointStructure(storedAttributeData, false);
406
409
  await this.events.initialized.emit(this.#nodeDetails.toStorageData());
407
410
  this.#localInitializationDone = true;
408
411
  }
@@ -440,7 +443,7 @@ class PairedNode {
440
443
  if (attributeReports === void 0) {
441
444
  throw new InternalError("No attribute reports received when subscribing to all values!");
442
445
  }
443
- await this.#initializeEndpointStructure(attributeReports, anyInitializationDone);
446
+ await this.#initializeEndpointStructure(attributeReports);
444
447
  this.#remoteInitializationInProgress = false;
445
448
  if (!deviceDetailsUpdated) {
446
449
  const rootEndpoint = this.getRootEndpoint();
@@ -451,7 +454,7 @@ class PairedNode {
451
454
  this.#currentSubscriptionIntervalS = maxInterval;
452
455
  } else {
453
456
  const allClusterAttributes = await this.readAllAttributes();
454
- await this.#initializeEndpointStructure(allClusterAttributes, anyInitializationDone);
457
+ await this.#initializeEndpointStructure(allClusterAttributes);
455
458
  this.#remoteInitializationInProgress = false;
456
459
  }
457
460
  if (!this.#remoteInitializationDone) {
@@ -533,7 +536,7 @@ class PairedNode {
533
536
  );
534
537
  asClusterClientInternal(cluster)._triggerAttributeUpdate(attributeId, value);
535
538
  attributeChangedCallback?.(data, oldValue);
536
- this.#checkAttributesForNeededStructureUpdate(endpointId, clusterId, attributeId);
539
+ this.#checkAttributesForNeededUpdates(endpointId, clusterId, attributeId);
537
540
  },
538
541
  eventListener: (data) => {
539
542
  if (ignoreInitialTriggers) return;
@@ -590,18 +593,32 @@ class PairedNode {
590
593
  this.#reconnectDelayTimer = void 0;
591
594
  this.#setConnectionState(0 /* Connected */);
592
595
  }
596
+ if (this.#remoteInitializationDone && this.#registeredEndpointStructureChanges.size > 0 && !this.#updateEndpointStructureTimer.isRunning) {
597
+ logger.info(`Node ${this.nodeId}: Endpoint structure needs to be updated ...`);
598
+ this.#updateEndpointStructureTimer.stop().start();
599
+ } else if (this.#deviceInformationUpdateNeeded) {
600
+ const rootEndpoint = this.getRootEndpoint();
601
+ if (rootEndpoint !== void 0) {
602
+ this.#nodeDetails.enhanceDeviceDetailsFromCache(rootEndpoint).then(() => this.events.deviceInformationChanged.emit(this.#nodeDetails.toStorageData())).catch(
603
+ (error) => logger.warn(
604
+ `Node ${this.nodeId}: Error updating device information from root endpoint`,
605
+ error
606
+ )
607
+ );
608
+ }
609
+ }
610
+ this.#deviceInformationUpdateNeeded = false;
593
611
  this.events.connectionAlive.emit();
594
612
  }
595
613
  };
596
614
  this.#currentSubscriptionHandler = subscriptionHandler;
597
615
  const maxKnownEventNumber = this.#interactionClient.maxKnownEventNumber;
598
- const attributeData = await this.#interactionClient.getAllAttributes({
616
+ await this.#interactionClient.getAllAttributes({
599
617
  dataVersionFilters: this.#interactionClient.getCachedClusterDataVersions(),
600
- executeQueued: !!threadConnected
618
+ executeQueued: !!threadConnected,
601
619
  // We queue subscriptions for thread devices
620
+ attributeChangeListener: subscriptionHandler.attributeListener
602
621
  });
603
- await this.#interactionClient.processAttributeUpdates(attributeData, subscriptionHandler.attributeListener);
604
- attributeData.length = 0;
605
622
  const initialSubscriptionData = await this.#interactionClient.subscribeAllAttributesAndEvents({
606
623
  isUrgent: true,
607
624
  minIntervalFloorSeconds,
@@ -627,30 +644,33 @@ class PairedNode {
627
644
  enrichCachedAttributeData: true
628
645
  });
629
646
  }
630
- #checkAttributesForNeededStructureUpdate(_endpointId, clusterId, attributeId) {
631
- let structureUpdateNeeded = false;
632
- if (clusterId === DescriptorCluster.id) {
647
+ #checkAttributesForNeededUpdates(endpointId, clusterId, attributeId) {
648
+ if (clusterId === Descriptor.Complete.id) {
633
649
  switch (attributeId) {
634
- case DescriptorCluster.attributes.partsList.id:
635
- case DescriptorCluster.attributes.serverList.id:
636
- case DescriptorCluster.attributes.deviceTypeList.id:
637
- structureUpdateNeeded = true;
638
- break;
639
- }
640
- }
641
- if (!structureUpdateNeeded) {
642
- switch (attributeId) {
643
- case FeatureMap.id:
644
- case AttributeList.id:
645
- case AcceptedCommandList.id:
646
- case ClusterRevision.id:
647
- structureUpdateNeeded = true;
648
- break;
650
+ case Descriptor.Complete.attributes.partsList.id:
651
+ case Descriptor.Complete.attributes.serverList.id:
652
+ case Descriptor.Complete.attributes.clientList.id:
653
+ case Descriptor.Complete.attributes.deviceTypeList.id:
654
+ this.#registeredEndpointStructureChanges.set(endpointId, null);
655
+ return;
649
656
  }
657
+ } else if (clusterId === BasicInformation.Cluster.id) {
658
+ this.#deviceInformationUpdateNeeded = true;
650
659
  }
651
- if (structureUpdateNeeded) {
652
- logger.info(`Node ${this.nodeId}: Endpoint structure needs to be updated ...`);
653
- this.#updateEndpointStructureTimer.stop().start();
660
+ switch (attributeId) {
661
+ case FeatureMap.id:
662
+ case AttributeList.id:
663
+ case AcceptedCommandList.id:
664
+ case ClusterRevision.id:
665
+ let knownForUpdate = this.#registeredEndpointStructureChanges.get(endpointId);
666
+ if (knownForUpdate !== null) {
667
+ knownForUpdate = knownForUpdate ?? [];
668
+ if (!knownForUpdate.includes(clusterId)) {
669
+ knownForUpdate.push(clusterId);
670
+ this.#registeredEndpointStructureChanges.set(endpointId, knownForUpdate);
671
+ }
672
+ }
673
+ break;
654
674
  }
655
675
  }
656
676
  #checkEventsForNeededStructureUpdate(_endpointId, clusterId, eventId) {
@@ -678,55 +698,170 @@ class PairedNode {
678
698
  this.#reconnectDelayTimer.start();
679
699
  }
680
700
  async #updateEndpointStructure() {
681
- const allClusterAttributes = await this.readAllAttributes();
701
+ const allClusterAttributes = this.#interactionClient.getAllCachedClusterData();
682
702
  await this.#initializeEndpointStructure(allClusterAttributes, true);
683
- this.#options.stateInformationCallback?.(this.nodeId, 4 /* StructureChanged */);
684
- this.events.structureChanged.emit();
703
+ const rootEndpoint = this.getRootEndpoint();
704
+ if (rootEndpoint !== void 0) {
705
+ await this.#nodeDetails.enhanceDeviceDetailsFromCache(rootEndpoint);
706
+ await this.events.deviceInformationChanged.emit(this.#nodeDetails.toStorageData());
707
+ }
708
+ }
709
+ /**
710
+ * Traverse the structure data and collect all data for the given endpointId.
711
+ * Return true if data for the endpoint was found, otherwise false.
712
+ * If data was found it is added to the collectedData map.
713
+ */
714
+ collectDescriptorData(structure, endpointId, collectedData) {
715
+ if (collectedData.has(endpointId)) {
716
+ return;
717
+ }
718
+ const endpointData = structure[endpointId];
719
+ const descriptorData = endpointData?.[Descriptor.Complete.id];
720
+ if (endpointData === void 0 || descriptorData === void 0) {
721
+ logger.info(`Descriptor data for endpoint ${endpointId} not found in structure! Ignoring endpoint ...`);
722
+ return;
723
+ }
724
+ collectedData.set(endpointId, descriptorData);
725
+ if (descriptorData.partsList.length) {
726
+ for (const partEndpointId of descriptorData.partsList) {
727
+ this.collectDescriptorData(structure, partEndpointId, collectedData);
728
+ }
729
+ }
730
+ }
731
+ #hasEndpointChanged(device, descriptorData) {
732
+ return !(areNumberListsSame(
733
+ device.getDeviceTypes().map(({ code }) => code),
734
+ descriptorData.deviceTypeList.map(({ deviceType }) => deviceType)
735
+ ) && // Check if the cluster clients are the same - they map to the serverList attribute
736
+ areNumberListsSame(
737
+ device.getAllClusterClients().map(({ id }) => id),
738
+ descriptorData.serverList
739
+ ) && // Check if the cluster servers are the same - they map to the clientList attribute
740
+ areNumberListsSame(
741
+ device.getAllClusterServers().map(({ id }) => id),
742
+ descriptorData.clientList
743
+ ));
685
744
  }
686
745
  /** Reads all data from the device and create a device object structure out of it. */
687
- async #initializeEndpointStructure(allClusterAttributes, updateStructure = false) {
746
+ async #initializeEndpointStructure(allClusterAttributes, updateStructure = this.#localInitializationDone || this.#remoteInitializationDone) {
747
+ if (this.#updateEndpointStructureTimer.isRunning) {
748
+ this.#updateEndpointStructureTimer.stop();
749
+ }
750
+ const eventsToEmit = /* @__PURE__ */ new Map();
751
+ const structureUpdateDetails = this.#registeredEndpointStructureChanges;
752
+ this.#registeredEndpointStructureChanges = /* @__PURE__ */ new Map();
688
753
  const allData = structureReadAttributeDataToClusterObject(allClusterAttributes);
754
+ const descriptors = /* @__PURE__ */ new Map();
755
+ this.collectDescriptorData(allData, EndpointNumber(0), descriptors);
689
756
  if (updateStructure) {
690
757
  const endpointsToRemove = new Set(this.#endpoints.keys());
691
- for (const [endpointId] of Object.entries(allData)) {
692
- const endpointIdNumber = EndpointNumber(parseInt(endpointId));
693
- if (this.#endpoints.has(endpointIdNumber)) {
694
- logger.debug(`Node ${this.nodeId}: Retaining device`, endpointId);
695
- endpointsToRemove.delete(endpointIdNumber);
758
+ for (const endpointId of descriptors.keys()) {
759
+ const device = this.#endpoints.get(endpointId);
760
+ if (device !== void 0) {
761
+ const hasChanged = structureUpdateDetails.has(endpointId);
762
+ if (!hasChanged || !this.#hasEndpointChanged(device, descriptors.get(endpointId))) {
763
+ logger.debug(
764
+ `Node ${this.nodeId}: Retaining endpoint`,
765
+ endpointId,
766
+ hasChanged ? "(with only structure changes)" : "(unchanged)"
767
+ );
768
+ endpointsToRemove.delete(endpointId);
769
+ if (hasChanged) {
770
+ eventsToEmit.set(endpointId, "nodeEndpointChanged");
771
+ }
772
+ } else {
773
+ logger.debug(`Node ${this.nodeId}: Recreating endpoint`, endpointId);
774
+ eventsToEmit.set(endpointId, "nodeEndpointChanged");
775
+ }
696
776
  }
697
777
  }
698
- for (const endpointId of endpointsToRemove.values()) {
699
- logger.debug(`Node ${this.nodeId}: Removing device`, endpointId);
700
- this.#endpoints.get(endpointId)?.removeFromStructure();
701
- this.#endpoints.delete(endpointId);
778
+ for (const endpoint of endpointsToRemove.values()) {
779
+ const endpointId = EndpointNumber(endpoint);
780
+ const device = this.#endpoints.get(endpointId);
781
+ if (device !== void 0) {
782
+ if (eventsToEmit.get(endpointId) !== "nodeEndpointChanged") {
783
+ logger.debug(`Node ${this.nodeId}: Removing endpoint`, endpointId);
784
+ eventsToEmit.set(endpointId, "nodeEndpointRemoved");
785
+ }
786
+ device.removeFromStructure();
787
+ this.#endpoints.delete(endpointId);
788
+ }
702
789
  }
703
790
  } else {
704
791
  this.#endpoints.clear();
705
792
  }
706
- const partLists = /* @__PURE__ */ new Map();
707
- for (const [endpointId, clusters] of Object.entries(allData)) {
708
- const endpointIdNumber = EndpointNumber(parseInt(endpointId));
709
- const descriptorData = clusters[DescriptorCluster.id];
710
- partLists.set(endpointIdNumber, descriptorData.partsList);
711
- if (this.#endpoints.has(endpointIdNumber)) {
793
+ for (const endpointId of descriptors.keys()) {
794
+ const clusters = allData[endpointId];
795
+ if (this.#endpoints.has(endpointId)) {
712
796
  continue;
713
797
  }
714
- logger.debug(`Node ${this.nodeId}: Creating device`, endpointId, Diagnostic.json(clusters));
715
- this.#endpoints.set(
716
- endpointIdNumber,
717
- this.#createDevice(endpointIdNumber, clusters, this.#interactionClient)
798
+ const isRecreation = eventsToEmit.get(endpointId) === "nodeEndpointChanged";
799
+ logger.debug(
800
+ `Node ${this.nodeId}: ${isRecreation ? "Recreating" : "Creating"} endpoint`,
801
+ endpointId,
802
+ Diagnostic.json(clusters)
718
803
  );
804
+ this.#endpoints.set(endpointId, this.#createDevice(endpointId, clusters, this.#interactionClient));
805
+ if (!isRecreation) {
806
+ eventsToEmit.set(endpointId, "nodeEndpointAdded");
807
+ }
808
+ }
809
+ for (const [endpointId, { partsList }] of descriptors.entries()) {
810
+ const endpoint = this.#endpoints.get(endpointId);
811
+ if (endpoint === void 0) {
812
+ continue;
813
+ }
814
+ endpoint.getChildEndpoints().forEach((child) => {
815
+ if (child.number !== void 0 && !partsList.includes(child.number)) {
816
+ endpoint.removeChildEndpoint(child);
817
+ if (!eventsToEmit.has(endpointId)) {
818
+ eventsToEmit.set(endpointId, "nodeEndpointChanged");
819
+ }
820
+ }
821
+ });
822
+ }
823
+ this.#structureEndpoints(descriptors);
824
+ if (updateStructure && eventsToEmit.size) {
825
+ for (const [endpointId, eventName] of eventsToEmit.entries()) {
826
+ if (eventName !== "nodeEndpointAdded") {
827
+ const clusterServers = descriptors.get(endpointId)?.serverList;
828
+ await this.#interactionClient.cleanupAttributeData(
829
+ endpointId,
830
+ eventName === "nodeEndpointRemoved" ? void 0 : clusterServers
831
+ );
832
+ }
833
+ }
834
+ const emitChangeEvents = () => {
835
+ for (const [endpointId, eventName] of eventsToEmit.entries()) {
836
+ logger.debug(`Node ${this.nodeId}: Emitting event ${eventName} for endpoint ${endpointId}`);
837
+ this.events[eventName].emit(endpointId);
838
+ }
839
+ this.#options.stateInformationCallback?.(this.nodeId, 4 /* StructureChanged */);
840
+ this.events.structureChanged.emit();
841
+ };
842
+ if (this.#connectionState === 0 /* Connected */) {
843
+ emitChangeEvents();
844
+ } else {
845
+ this.events.stateChanged.once((State) => {
846
+ if (State === 0 /* Connected */) {
847
+ emitChangeEvents();
848
+ }
849
+ });
850
+ }
719
851
  }
720
- this.#structureEndpoints(partLists);
721
852
  }
722
- /** Bring the endpoints in a structure based on their partsList attribute. */
723
- #structureEndpoints(partLists) {
724
- logger.debug(
725
- `Node ${this.nodeId}: Endpoints from PartsLists`,
726
- Diagnostic.json(Array.from(partLists.entries()))
853
+ /**
854
+ * Bring the endpoints in a structure based on their partsList attribute. This method only adds endpoints into the
855
+ * right place as children, Cleanup is not happening here
856
+ */
857
+ #structureEndpoints(descriptors) {
858
+ const partLists = Array.from(descriptors.entries()).map(
859
+ ([ep, { partsList }]) => [ep, partsList]
860
+ // else Typescript gets confused
727
861
  );
862
+ logger.debug(`Node ${this.nodeId}: Endpoints from PartsLists`, Diagnostic.json(partLists));
728
863
  const endpointUsages = {};
729
- Array.from(partLists.entries()).forEach(
864
+ partLists.forEach(
730
865
  ([parent, partsList]) => partsList.forEach((endPoint) => {
731
866
  if (endPoint === parent) {
732
867
  logger.warn(`Node ${this.nodeId}: Endpoint ${endPoint} is referencing itself!`);
@@ -750,14 +885,18 @@ class PairedNode {
750
885
  const childEndpointId = EndpointNumber(parseInt(childId));
751
886
  const childEndpoint = this.#endpoints.get(childEndpointId);
752
887
  const parentEndpoint = this.#endpoints.get(usages[0]);
888
+ const existingChildEndpoint = parentEndpoint?.getChildEndpoint(childEndpointId);
753
889
  if (childEndpoint === void 0 || parentEndpoint === void 0) {
754
890
  logger.warn(
755
891
  `Node ${this.nodeId}: Endpoint ${usages[0]} not found in the data received from the device!`
756
892
  );
757
- } else if (parentEndpoint.getChildEndpoint(childEndpointId) === void 0) {
893
+ } else if (existingChildEndpoint !== childEndpoint) {
758
894
  logger.debug(
759
895
  `Node ${this.nodeId}: Endpoint structure: Child: ${childEndpointId} -> Parent: ${parentEndpoint.number}`
760
896
  );
897
+ if (existingChildEndpoint !== void 0) {
898
+ parentEndpoint.removeChildEndpoint(existingChildEndpoint);
899
+ }
761
900
  parentEndpoint.addChildEndpoint(childEndpoint);
762
901
  }
763
902
  delete endpointUsages[EndpointNumber(parseInt(childId))];
@@ -779,7 +918,7 @@ class PairedNode {
779
918
  }
780
919
  /** Create a device object from the data read from the device. */
781
920
  #createDevice(endpointId, data, interactionClient) {
782
- const descriptorData = data[DescriptorCluster.id];
921
+ const descriptorData = data[Descriptor.Complete.id];
783
922
  const deviceTypes = descriptorData.deviceTypeList.flatMap(({ deviceType, revision }) => {
784
923
  const deviceTypeDefinition = getDeviceTypeDefinitionFromModelByCode(deviceType);
785
924
  if (deviceTypeDefinition === void 0) {