@project-chip/matter.js 0.12.4-alpha.0-20250209-00d44975c → 0.12.4-alpha.0-20250211-56b2c53a0

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.
@@ -37,6 +37,20 @@ var import_MatterNode = require("./MatterNode.js");
37
37
  */
38
38
  const logger = new import_general.Logger("CommissioningController");
39
39
  class CommissioningController extends import_MatterNode.MatterNode {
40
+ #started = false;
41
+ #ipv4Disabled;
42
+ #listeningAddressIpv4;
43
+ #listeningAddressIpv6;
44
+ #options;
45
+ #environment;
46
+ // Set when new API was initialized correctly
47
+ #storage;
48
+ #mdnsScanner;
49
+ #mdnsBroadcaster;
50
+ #controllerInstance;
51
+ #initializedNodes = /* @__PURE__ */ new Map();
52
+ #nodeUpdateLabelHandlers = /* @__PURE__ */ new Map();
53
+ #sessionDisconnectedHandler = /* @__PURE__ */ new Map();
40
54
  /**
41
55
  * Creates a new CommissioningController instance
42
56
  *
@@ -44,26 +58,14 @@ class CommissioningController extends import_MatterNode.MatterNode {
44
58
  */
45
59
  constructor(options) {
46
60
  super();
47
- this.options = options;
61
+ this.#options = options;
48
62
  }
49
- started = false;
50
- ipv4Disabled;
51
- listeningAddressIpv4;
52
- listeningAddressIpv6;
53
- environment;
54
- // Set when new API was initialized correctly
55
- storage;
56
- mdnsScanner;
57
- mdnsBroadcaster;
58
- controllerInstance;
59
- initializedNodes = /* @__PURE__ */ new Map();
60
- nodeUpdateLabelHandlers = /* @__PURE__ */ new Map();
61
- sessionDisconnectedHandler = /* @__PURE__ */ new Map();
62
63
  get nodeId() {
63
- return this.controllerInstance?.nodeId;
64
+ return this.#controllerInstance?.nodeId;
64
65
  }
66
+ /** Returns the configuration data needed to create a PASE commissioner, e.g. in a mobile app. */
65
67
  get paseCommissionerConfig() {
66
- const controller = this.assertControllerIsStarted(
68
+ const controller = this.#assertControllerIsStarted(
67
69
  "The CommissioningController needs to be started to get the PASE commissioner data."
68
70
  );
69
71
  const { caConfig, fabricConfig: fabricData } = controller;
@@ -72,40 +74,40 @@ class CommissioningController extends import_MatterNode.MatterNode {
72
74
  fabricData
73
75
  };
74
76
  }
75
- assertIsAddedToMatterServer() {
76
- if (this.mdnsScanner === void 0 || this.storage === void 0 && this.environment === void 0) {
77
+ #assertIsAddedToMatterServer() {
78
+ if (this.#mdnsScanner === void 0 || this.#storage === void 0 && this.#environment === void 0) {
77
79
  throw new import_general.ImplementationError("Add the node to the Matter instance before.");
78
80
  }
79
- if (!this.started) {
81
+ if (!this.#started) {
80
82
  throw new import_general.ImplementationError("The node needs to be started before interacting with the controller.");
81
83
  }
82
- return { mdnsScanner: this.mdnsScanner, storage: this.storage, environment: this.environment };
84
+ return { mdnsScanner: this.#mdnsScanner, storage: this.#storage, environment: this.#environment };
83
85
  }
84
- assertControllerIsStarted(errorText) {
85
- if (this.controllerInstance === void 0) {
86
+ #assertControllerIsStarted(errorText) {
87
+ if (this.#controllerInstance === void 0) {
86
88
  throw new import_general.ImplementationError(
87
89
  errorText ?? "Controller instance not yet started. Please call start() first."
88
90
  );
89
91
  }
90
- return this.controllerInstance;
92
+ return this.#controllerInstance;
91
93
  }
92
94
  /** Internal method to initialize a MatterController instance. */
93
- async initializeController() {
94
- const { mdnsScanner, storage, environment } = this.assertIsAddedToMatterServer();
95
- if (this.controllerInstance !== void 0) {
96
- return this.controllerInstance;
95
+ async #initializeController() {
96
+ const { mdnsScanner, storage, environment } = this.#assertIsAddedToMatterServer();
97
+ if (this.#controllerInstance !== void 0) {
98
+ return this.#controllerInstance;
97
99
  }
98
- const { localPort, adminFabricId, adminVendorId, adminFabricIndex, caseAuthenticatedTags, adminFabricLabel } = this.options;
100
+ const { localPort, adminFabricId, adminVendorId, adminFabricIndex, caseAuthenticatedTags, adminFabricLabel } = this.#options;
99
101
  if (environment === void 0 && storage === void 0) {
100
102
  throw new import_general.ImplementationError("Storage not initialized correctly.");
101
103
  }
102
104
  const controllerStore = environment?.has(import_node.ControllerStore) ? environment.get(import_node.ControllerStore) : new import_LegacyControllerStore.LegacyControllerStore(storage);
103
105
  const { netInterfaces, scanners, port } = await configureNetwork({
104
- ipv4Disabled: this.ipv4Disabled,
106
+ ipv4Disabled: this.#ipv4Disabled,
105
107
  mdnsScanner,
106
108
  localPort,
107
- listeningAddressIpv4: this.listeningAddressIpv4,
108
- listeningAddressIpv6: this.listeningAddressIpv6
109
+ listeningAddressIpv4: this.#listeningAddressIpv4,
110
+ listeningAddressIpv6: this.#listeningAddressIpv6
109
111
  });
110
112
  const controller = await import_MatterController.MatterController.create({
111
113
  controllerStore,
@@ -113,7 +115,7 @@ class CommissioningController extends import_MatterNode.MatterNode {
113
115
  netInterfaces,
114
116
  sessionClosedCallback: (peerNodeId) => {
115
117
  logger.info(`Session for peer node ${peerNodeId} disconnected ...`);
116
- const handler = this.sessionDisconnectedHandler.get(peerNodeId);
118
+ const handler = this.#sessionDisconnectedHandler.get(peerNodeId);
117
119
  if (handler !== void 0) {
118
120
  handler().catch((error) => logger.warn(`Error while handling session disconnect: ${error}`));
119
121
  }
@@ -124,25 +126,25 @@ class CommissioningController extends import_MatterNode.MatterNode {
124
126
  caseAuthenticatedTags,
125
127
  adminFabricLabel
126
128
  });
127
- if (this.mdnsBroadcaster) {
128
- controller.addBroadcaster(this.mdnsBroadcaster.createInstanceBroadcaster(port));
129
+ if (this.#mdnsBroadcaster) {
130
+ controller.addBroadcaster(this.#mdnsBroadcaster.createInstanceBroadcaster(port));
129
131
  }
130
132
  return controller;
131
133
  }
132
134
  /**
133
135
  * Commissions/Pairs a new device into the controller fabric. The method returns the NodeId of the commissioned
134
- * node.
136
+ * node on success.
135
137
  */
136
138
  async commissionNode(nodeOptions, connectNodeAfterCommissioning = true) {
137
- this.assertIsAddedToMatterServer();
138
- const controller = this.assertControllerIsStarted();
139
+ this.#assertIsAddedToMatterServer();
140
+ const controller = this.#assertControllerIsStarted();
139
141
  const nodeId = await controller.commission(nodeOptions);
140
142
  if (connectNodeAfterCommissioning) {
141
143
  const node = await this.connectNode(nodeId, {
142
144
  ...nodeOptions,
143
- autoSubscribe: nodeOptions.autoSubscribe ?? this.options.autoSubscribe,
144
- subscribeMinIntervalFloorSeconds: nodeOptions.subscribeMinIntervalFloorSeconds ?? this.options.subscribeMinIntervalFloorSeconds,
145
- subscribeMaxIntervalCeilingSeconds: nodeOptions.subscribeMaxIntervalCeilingSeconds ?? this.options.subscribeMaxIntervalCeilingSeconds
145
+ autoSubscribe: nodeOptions.autoSubscribe ?? this.#options.autoSubscribe,
146
+ subscribeMinIntervalFloorSeconds: nodeOptions.subscribeMinIntervalFloorSeconds ?? this.#options.subscribeMinIntervalFloorSeconds,
147
+ subscribeMaxIntervalCeilingSeconds: nodeOptions.subscribeMaxIntervalCeilingSeconds ?? this.#options.subscribeMaxIntervalCeilingSeconds
146
148
  });
147
149
  await node.events.initialized;
148
150
  }
@@ -154,24 +156,26 @@ class CommissioningController extends import_MatterNode.MatterNode {
154
156
  * process.
155
157
  */
156
158
  completeCommissioningForNode(peerNodeId, discoveryData) {
157
- this.assertIsAddedToMatterServer();
158
- const controller = this.assertControllerIsStarted();
159
+ this.#assertIsAddedToMatterServer();
160
+ const controller = this.#assertControllerIsStarted();
159
161
  return controller.completeCommissioning(peerNodeId, discoveryData);
160
162
  }
161
163
  /** Check if a given node id is commissioned on this controller. */
162
164
  isNodeCommissioned(nodeId) {
163
- const controller = this.assertControllerIsStarted();
165
+ const controller = this.#assertControllerIsStarted();
164
166
  return controller.getCommissionedNodes().includes(nodeId) ?? false;
165
167
  }
166
168
  /**
167
169
  * Remove a Node id from the controller. This method should only be used if the decommission method on the
168
170
  * PairedNode instance returns an error. By default, it tries to decommission the node from the controller but will
169
171
  * remove it also in case of an error during decommissioning. Ideally try to decommission the node before and only
170
- * use this in case of an error.
172
+ * use this in case of an error as last option.
173
+ * If this method is used the state of the PairedNode instance might be out of sync, so the PairedNode instance
174
+ * should be disconnected first.
171
175
  */
172
176
  async removeNode(nodeId, tryDecommissioning = true) {
173
- const controller = this.assertControllerIsStarted();
174
- const node = this.initializedNodes.get(nodeId);
177
+ const controller = this.#assertControllerIsStarted();
178
+ const node = this.#initializedNodes.get(nodeId);
175
179
  let decommissionSuccess = false;
176
180
  if (tryDecommissioning) {
177
181
  try {
@@ -188,17 +192,22 @@ class CommissioningController extends import_MatterNode.MatterNode {
188
192
  node.close(!decommissionSuccess);
189
193
  }
190
194
  await controller.removeNode(nodeId);
191
- this.initializedNodes.delete(nodeId);
195
+ this.#initializedNodes.delete(nodeId);
192
196
  }
197
+ /** @deprecated Use PairedNode.disconnect() instead */
193
198
  async disconnectNode(nodeId) {
194
- const node = this.initializedNodes.get(nodeId);
199
+ const node = this.#initializedNodes.get(nodeId);
195
200
  if (node === void 0) {
196
201
  throw new import_general.ImplementationError(`Node ${nodeId} is not connected!`);
197
202
  }
198
- await this.controllerInstance?.disconnect(nodeId);
203
+ await this.#controllerInstance?.disconnect(nodeId);
199
204
  }
205
+ /**
206
+ * Returns the PairedNode instance for a given NodeId. The instance is initialized without auto connect if not yet
207
+ * created.
208
+ */
200
209
  async getNode(nodeId) {
201
- const existingNode = this.initializedNodes.get(nodeId);
210
+ const existingNode = this.#initializedNodes.get(nodeId);
202
211
  if (existingNode !== void 0) {
203
212
  return existingNode;
204
213
  }
@@ -209,13 +218,15 @@ class CommissioningController extends import_MatterNode.MatterNode {
209
218
  * After connection the endpoint data of the device is analyzed and an object structure is created.
210
219
  * This call is not blocking and returns an initialized PairedNode instance. The connection or reconnection
211
220
  * happens in the background. Please monitor the state of the node to see if the connection was successful.
221
+ *
222
+ * @deprecated Use getNode() instead and call PairedNode.connect() or PairedNode.disconnect() as needed.
212
223
  */
213
224
  async connectNode(nodeId, connectOptions) {
214
- const controller = this.assertControllerIsStarted();
225
+ const controller = this.#assertControllerIsStarted();
215
226
  if (!controller.getCommissionedNodes().includes(nodeId)) {
216
227
  throw new import_general.ImplementationError(`Node ${nodeId} is not commissioned!`);
217
228
  }
218
- const existingNode = this.initializedNodes.get(nodeId);
229
+ const existingNode = this.#initializedNodes.get(nodeId);
219
230
  if (existingNode !== void 0) {
220
231
  if (!existingNode.initialized) {
221
232
  existingNode.connect(connectOptions);
@@ -226,22 +237,22 @@ class CommissioningController extends import_MatterNode.MatterNode {
226
237
  nodeId,
227
238
  this,
228
239
  connectOptions,
229
- this.controllerInstance?.getCommissionedNodeDetails(nodeId)?.deviceData ?? {},
240
+ this.#controllerInstance?.getCommissionedNodeDetails(nodeId)?.deviceData ?? {},
230
241
  await this.createInteractionClient(nodeId, import_protocol.NodeDiscoveryType.None, false),
231
242
  // First connect without discovery to last known address
232
243
  async (discoveryType) => void await controller.connect(nodeId, { discoveryType }),
233
- (handler) => this.sessionDisconnectedHandler.set(nodeId, handler),
244
+ (handler) => this.#sessionDisconnectedHandler.set(nodeId, handler),
234
245
  controller.sessions,
235
- await this.collectStoredAttributeData(nodeId)
246
+ await this.#collectStoredAttributeData(nodeId)
236
247
  );
237
- this.initializedNodes.set(nodeId, pairedNode);
248
+ this.#initializedNodes.set(nodeId, pairedNode);
238
249
  pairedNode.events.initializedFromRemote.on(
239
250
  async (deviceData) => await controller.enhanceCommissionedNodeDetails(nodeId, deviceData)
240
251
  );
241
252
  return pairedNode;
242
253
  }
243
- async collectStoredAttributeData(nodeId) {
244
- const controller = this.assertControllerIsStarted();
254
+ async #collectStoredAttributeData(nodeId) {
255
+ const controller = this.#assertControllerIsStarted();
245
256
  const storedDataVersions = await controller.getStoredClusterDataVersions(nodeId);
246
257
  const result = new Array();
247
258
  for (const { endpointId, clusterId } of storedDataVersions) {
@@ -252,9 +263,11 @@ class CommissioningController extends import_MatterNode.MatterNode {
252
263
  /**
253
264
  * Connects to all paired nodes.
254
265
  * After connection the endpoint data of the device is analyzed and an object structure is created.
266
+ *
267
+ * @deprecated Use getCommissionedNodes() to get the list of nodes and getNode(nodeId) instead and call PairedNode.connect() or PairedNode.disconnect() as needed.
255
268
  */
256
269
  async connect(connectOptions) {
257
- const controller = this.assertControllerIsStarted();
270
+ const controller = this.#assertControllerIsStarted();
258
271
  if (!controller.isCommissioned()) {
259
272
  throw new import_general.ImplementationError(
260
273
  "Controller instance not yet paired with any device, so nothing to connect to."
@@ -263,36 +276,39 @@ class CommissioningController extends import_MatterNode.MatterNode {
263
276
  for (const nodeId of controller.getCommissionedNodes()) {
264
277
  await this.connectNode(nodeId, connectOptions);
265
278
  }
266
- return Array.from(this.initializedNodes.values());
279
+ return Array.from(this.#initializedNodes.values());
267
280
  }
268
281
  /**
269
282
  * Set the MDNS Scanner instance. Should be only used internally
270
283
  *
271
284
  * @param mdnsScanner MdnsScanner instance
285
+ * @private
272
286
  */
273
287
  setMdnsScanner(mdnsScanner) {
274
- this.mdnsScanner = mdnsScanner;
288
+ this.#mdnsScanner = mdnsScanner;
275
289
  }
276
290
  /**
277
291
  * Set the MDNS Broadcaster instance. Should be only used internally
278
292
  *
279
293
  * @param mdnsBroadcaster MdnsBroadcaster instance
294
+ * @private
280
295
  */
281
296
  setMdnsBroadcaster(mdnsBroadcaster) {
282
- this.mdnsBroadcaster = mdnsBroadcaster;
297
+ this.#mdnsBroadcaster = mdnsBroadcaster;
283
298
  }
284
299
  /**
285
300
  * Set the Storage instance. Should be only used internally
286
301
  *
287
302
  * @param storage storage context to use
303
+ * @private
288
304
  */
289
305
  setStorage(storage) {
290
- this.storage = storage;
291
- this.environment = void 0;
306
+ this.#storage = storage;
307
+ this.#environment = void 0;
292
308
  }
293
309
  /** Returns true if t least one node is commissioned/paired with this controller instance. */
294
310
  isCommissioned() {
295
- const controller = this.assertControllerIsStarted();
311
+ const controller = this.#assertControllerIsStarted();
296
312
  return controller.isCommissioned();
297
313
  }
298
314
  /**
@@ -300,93 +316,113 @@ class CommissioningController extends import_MatterNode.MatterNode {
300
316
  * not be used directly. See the PairedNode class for the public API.
301
317
  */
302
318
  async createInteractionClient(nodeId, discoveryType, forcedConnection = true) {
303
- const controller = this.assertControllerIsStarted();
319
+ const controller = this.#assertControllerIsStarted();
304
320
  if (!forcedConnection) {
305
321
  return controller.createInteractionClient(nodeId, { discoveryType });
306
322
  }
307
323
  return controller.connect(nodeId, { discoveryType });
308
324
  }
309
- /** Returns the PairedNode instance for a given node id, if this node is connected. */
325
+ /**
326
+ * Returns the PairedNode instance for a given node id, if this node is connected.
327
+ * @deprecated Use getNode() instead
328
+ */
310
329
  getPairedNode(nodeId) {
311
- return this.initializedNodes.get(nodeId);
330
+ return this.#initializedNodes.get(nodeId);
312
331
  }
313
- /** Returns an array with the Node Ids for all commissioned nodes. */
332
+ /** Returns an array with the NodeIds of all commissioned nodes. */
314
333
  getCommissionedNodes() {
315
- const controller = this.assertControllerIsStarted();
334
+ const controller = this.#assertControllerIsStarted();
316
335
  return controller.getCommissionedNodes() ?? [];
317
336
  }
337
+ /** Returns an arra with all commissioned NodeIds and their metadata. */
318
338
  getCommissionedNodesDetails() {
319
- const controller = this.assertControllerIsStarted();
339
+ const controller = this.#assertControllerIsStarted();
320
340
  return controller.getCommissionedNodesDetails() ?? [];
321
341
  }
322
- /** Disconnects all connected nodes and Closes the network connections and other resources of the controller. */
342
+ /**
343
+ * Disconnects all connected nodes and closes the network connections and other resources of the controller.
344
+ * You can use "start()" to restart the controller after closing it.
345
+ */
323
346
  async close() {
324
- for (const node of this.initializedNodes.values()) {
347
+ for (const node of this.#initializedNodes.values()) {
325
348
  node.close();
326
349
  }
327
- await this.controllerInstance?.close();
328
- this.controllerInstance = void 0;
329
- this.initializedNodes.clear();
330
- this.ipv4Disabled = void 0;
331
- this.started = false;
350
+ await this.#controllerInstance?.close();
351
+ this.#controllerInstance = void 0;
352
+ this.#initializedNodes.clear();
353
+ this.#ipv4Disabled = void 0;
354
+ this.#started = false;
332
355
  }
356
+ /** Return the port used by the controller for the UDP interface. */
333
357
  getPort() {
334
- return this.options.localPort;
358
+ return this.#options.localPort;
335
359
  }
360
+ /** @private */
336
361
  initialize(ipv4Disabled) {
337
- if (this.started) {
362
+ if (this.#started) {
338
363
  throw new import_general.ImplementationError("Controller instance already started.");
339
364
  }
340
- if (this.ipv4Disabled !== void 0 && this.ipv4Disabled !== ipv4Disabled) {
365
+ if (this.#ipv4Disabled !== void 0 && this.#ipv4Disabled !== ipv4Disabled) {
341
366
  throw new import_general.ImplementationError(
342
367
  "Changing the IPv4 disabled flag after starting the controller is not supported."
343
368
  );
344
369
  }
345
- this.ipv4Disabled = ipv4Disabled;
370
+ this.#ipv4Disabled = ipv4Disabled;
346
371
  }
372
+ /** @private */
347
373
  async initializeControllerStore() {
348
- if (this.options.environment === void 0) {
374
+ if (this.#options.environment === void 0) {
349
375
  throw new import_general.ImplementationError("Initialization not done. Add the controller to the MatterServer first.");
350
376
  }
351
- const { environment, id } = this.options.environment;
377
+ const { environment, id } = this.#options.environment;
352
378
  const controllerStore = await import_node.ControllerStore.create(id, environment);
353
379
  environment.set(import_node.ControllerStore, controllerStore);
354
380
  }
355
- /** Initialize the controller and connect to all commissioned nodes if autoConnect is not set to false. */
381
+ /**
382
+ * Initialize the controller and initialize and connect to all commissioned nodes if autoConnect is not set to false.
383
+ */
356
384
  async start() {
357
- if (this.ipv4Disabled === void 0) {
358
- if (this.options.environment === void 0) {
385
+ if (this.#ipv4Disabled === void 0) {
386
+ if (this.#options.environment === void 0) {
359
387
  throw new import_general.ImplementationError("Initialization not done. Add the controller to the MatterServer first.");
360
388
  }
361
- const { environment } = this.options.environment;
389
+ const { environment } = this.#options.environment;
362
390
  if (!environment.has(import_node.ControllerStore)) {
363
391
  await this.initializeControllerStore();
364
392
  }
365
393
  const mdnsService = await environment.load(import_protocol.MdnsService);
366
- this.ipv4Disabled = !mdnsService.enableIpv4;
394
+ this.#ipv4Disabled = !mdnsService.enableIpv4;
367
395
  this.setMdnsBroadcaster(mdnsService.broadcaster);
368
396
  this.setMdnsScanner(mdnsService.scanner);
369
- this.environment = environment;
370
- const runtime = this.environment.runtime;
397
+ this.#environment = environment;
398
+ const runtime = this.#environment.runtime;
371
399
  runtime.add(this);
372
400
  }
373
- this.started = true;
374
- if (this.controllerInstance === void 0) {
375
- this.controllerInstance = await this.initializeController();
401
+ this.#started = true;
402
+ if (this.#controllerInstance === void 0) {
403
+ this.#controllerInstance = await this.#initializeController();
376
404
  }
377
- await this.controllerInstance.announce();
378
- if (this.options.autoConnect !== false && this.controllerInstance.isCommissioned()) {
405
+ await this.#controllerInstance.announce();
406
+ if (this.#options.autoConnect !== false && this.#controllerInstance.isCommissioned()) {
379
407
  await this.connect();
380
408
  }
381
409
  }
410
+ /**
411
+ * Cancels the discovery process for commissionable devices started with discoverCommissionableDevices().
412
+ */
382
413
  cancelCommissionableDeviceDiscovery(identifierData, discoveryCapabilities) {
383
- this.assertIsAddedToMatterServer();
384
- const controller = this.assertControllerIsStarted();
414
+ this.#assertIsAddedToMatterServer();
415
+ const controller = this.#assertControllerIsStarted();
385
416
  controller.collectScanners(discoveryCapabilities).forEach((scanner) => import_protocol.ControllerDiscovery.cancelCommissionableDeviceDiscovery(scanner, identifierData));
386
417
  }
418
+ /**
419
+ * Starts to discover commissionable devices.
420
+ * The promise will be fulfilled after the provided timeout or when the discovery is stopped via
421
+ * cancelCommissionableDeviceDiscovery(). The discoveredCallback will be called for each discovered device.
422
+ */
387
423
  async discoverCommissionableDevices(identifierData, discoveryCapabilities, discoveredCallback, timeoutSeconds = 900) {
388
- this.assertIsAddedToMatterServer();
389
- const controller = this.assertControllerIsStarted();
424
+ this.#assertIsAddedToMatterServer();
425
+ const controller = this.#assertControllerIsStarted();
390
426
  return await import_protocol.ControllerDiscovery.discoverCommissionableDevices(
391
427
  controller.collectScanners(discoveryCapabilities),
392
428
  timeoutSeconds,
@@ -394,11 +430,15 @@ class CommissioningController extends import_MatterNode.MatterNode {
394
430
  discoveredCallback
395
431
  );
396
432
  }
433
+ /**
434
+ * Use this method to reset the Controller storage. The method can only be called if the controller is stopped and
435
+ * will remove all commissioning data and paired nodes from the controller.
436
+ */
397
437
  async resetStorage() {
398
- this.assertControllerIsStarted(
438
+ this.#assertControllerIsStarted(
399
439
  "Storage cannot be reset while the controller is operating! Please close the controller first."
400
440
  );
401
- const { storage, environment } = this.assertIsAddedToMatterServer();
441
+ const { storage, environment } = this.#assertIsAddedToMatterServer();
402
442
  if (environment !== void 0) {
403
443
  const controllerStore = environment.get(import_node.ControllerStore);
404
444
  await controllerStore.erase();
@@ -410,11 +450,12 @@ class CommissioningController extends import_MatterNode.MatterNode {
410
450
  }
411
451
  /** Returns active session information for all connected nodes. */
412
452
  getActiveSessionInformation() {
413
- return this.controllerInstance?.getActiveSessionInformation() ?? [];
453
+ return this.#controllerInstance?.getActiveSessionInformation() ?? [];
414
454
  }
455
+ /** @private */
415
456
  async validateAndUpdateFabricLabel(nodeId) {
416
- const controller = this.assertControllerIsStarted();
417
- const node = this.initializedNodes.get(nodeId);
457
+ const controller = this.#assertControllerIsStarted();
458
+ const node = this.#initializedNodes.get(nodeId);
418
459
  if (node === void 0) {
419
460
  throw new import_general.ImplementationError(`Node ${nodeId} is not connected!`);
420
461
  }
@@ -439,13 +480,17 @@ class CommissioningController extends import_MatterNode.MatterNode {
439
480
  });
440
481
  }
441
482
  }
483
+ /**
484
+ * Updates the fabric label for the controller and all connected nodes.
485
+ * The label is used to identify the controller and all connected nodes in the fabric.
486
+ */
442
487
  async updateFabricLabel(label) {
443
- const controller = this.assertControllerIsStarted();
488
+ const controller = this.#assertControllerIsStarted();
444
489
  if (controller.fabricConfig.label === label) {
445
490
  return;
446
491
  }
447
492
  await controller.updateFabricLabel(label);
448
- for (const node of this.initializedNodes.values()) {
493
+ for (const node of this.#initializedNodes.values()) {
449
494
  if (node.isConnected) {
450
495
  try {
451
496
  await this.validateAndUpdateFabricLabel(node.nodeId);
@@ -461,12 +506,12 @@ class CommissioningController extends import_MatterNode.MatterNode {
461
506
  logger.info(
462
507
  `Node ${node.nodeId} is reconnecting. Delaying fabric label update to when node is back online.`
463
508
  );
464
- if (!this.nodeUpdateLabelHandlers.has(node.nodeId)) {
509
+ if (!this.#nodeUpdateLabelHandlers.has(node.nodeId)) {
465
510
  const updateOnReconnect = (nodeState) => {
466
511
  if (nodeState === import_PairedNode.NodeStates.Connected) {
467
512
  this.validateAndUpdateFabricLabel(node.nodeId).catch((error) => logger.warn(`Error updating fabric label on node ${node.nodeId}:`, error)).finally(() => {
468
513
  node.events.stateChanged.off(updateOnReconnect);
469
- this.nodeUpdateLabelHandlers.delete(node.nodeId);
514
+ this.#nodeUpdateLabelHandlers.delete(node.nodeId);
470
515
  });
471
516
  }
472
517
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/CommissioningController.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }