@matter/nodejs-shell 0.17.0-alpha.0-20260507-059f7763b → 0.17.0-alpha.0-20260508-29ff5ae9e

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 (49) hide show
  1. package/package.json +9 -9
  2. package/src/MatterNode.ts +13 -12
  3. package/src/shell/cmd_cert.ts +34 -0
  4. package/src/shell/cmd_commission.ts +24 -1
  5. package/src/shell/cmd_config.ts +140 -0
  6. package/src/shell/cmd_nodes.ts +1 -3
  7. package/dist/esm/MatterNode.js +0 -189
  8. package/dist/esm/MatterNode.js.map +0 -6
  9. package/dist/esm/app.js +0 -167
  10. package/dist/esm/app.js.map +0 -6
  11. package/dist/esm/package.json +0 -3
  12. package/dist/esm/shell/Shell.js +0 -201
  13. package/dist/esm/shell/Shell.js.map +0 -6
  14. package/dist/esm/shell/cmd_cert.js +0 -134
  15. package/dist/esm/shell/cmd_cert.js.map +0 -6
  16. package/dist/esm/shell/cmd_cluster-attributes.js +0 -295
  17. package/dist/esm/shell/cmd_cluster-attributes.js.map +0 -6
  18. package/dist/esm/shell/cmd_cluster-commands.js +0 -137
  19. package/dist/esm/shell/cmd_cluster-commands.js.map +0 -6
  20. package/dist/esm/shell/cmd_cluster-events.js +0 -77
  21. package/dist/esm/shell/cmd_cluster-events.js.map +0 -6
  22. package/dist/esm/shell/cmd_commission.js +0 -269
  23. package/dist/esm/shell/cmd_commission.js.map +0 -6
  24. package/dist/esm/shell/cmd_config.js +0 -462
  25. package/dist/esm/shell/cmd_config.js.map +0 -6
  26. package/dist/esm/shell/cmd_dcl.js +0 -178
  27. package/dist/esm/shell/cmd_dcl.js.map +0 -6
  28. package/dist/esm/shell/cmd_discover.js +0 -115
  29. package/dist/esm/shell/cmd_discover.js.map +0 -6
  30. package/dist/esm/shell/cmd_identify.js +0 -46
  31. package/dist/esm/shell/cmd_identify.js.map +0 -6
  32. package/dist/esm/shell/cmd_nodes.js +0 -688
  33. package/dist/esm/shell/cmd_nodes.js.map +0 -6
  34. package/dist/esm/shell/cmd_ota.js +0 -493
  35. package/dist/esm/shell/cmd_ota.js.map +0 -6
  36. package/dist/esm/shell/cmd_session.js +0 -23
  37. package/dist/esm/shell/cmd_session.js.map +0 -6
  38. package/dist/esm/shell/cmd_subscribe.js +0 -39
  39. package/dist/esm/shell/cmd_subscribe.js.map +0 -6
  40. package/dist/esm/shell/cmd_tlv.js +0 -167
  41. package/dist/esm/shell/cmd_tlv.js.map +0 -6
  42. package/dist/esm/shell/cmd_vendor.js +0 -135
  43. package/dist/esm/shell/cmd_vendor.js.map +0 -6
  44. package/dist/esm/util/CommandlineParser.js +0 -87
  45. package/dist/esm/util/CommandlineParser.js.map +0 -6
  46. package/dist/esm/util/Json.js +0 -45
  47. package/dist/esm/util/Json.js.map +0 -6
  48. package/dist/esm/web_plumbing.js +0 -140
  49. package/dist/esm/web_plumbing.js.map +0 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/nodejs-shell",
3
- "version": "0.17.0-alpha.0-20260507-059f7763b",
3
+ "version": "0.17.0-alpha.0-20260508-29ff5ae9e",
4
4
  "description": "Shell app for Matter controller",
5
5
  "keywords": [
6
6
  "iot",
@@ -34,14 +34,14 @@
34
34
  "matter-shell": "dist/cjs/app.js"
35
35
  },
36
36
  "dependencies": {
37
- "@matter/general": "0.17.0-alpha.0-20260507-059f7763b",
38
- "@matter/model": "0.17.0-alpha.0-20260507-059f7763b",
39
- "@matter/node": "0.17.0-alpha.0-20260507-059f7763b",
40
- "@matter/nodejs": "0.17.0-alpha.0-20260507-059f7763b",
41
- "@matter/nodejs-ble": "0.17.0-alpha.0-20260507-059f7763b",
42
- "@matter/protocol": "0.17.0-alpha.0-20260507-059f7763b",
43
- "@matter/types": "0.17.0-alpha.0-20260507-059f7763b",
44
- "@project-chip/matter.js": "0.17.0-alpha.0-20260507-059f7763b",
37
+ "@matter/general": "0.17.0-alpha.0-20260508-29ff5ae9e",
38
+ "@matter/model": "0.17.0-alpha.0-20260508-29ff5ae9e",
39
+ "@matter/node": "0.17.0-alpha.0-20260508-29ff5ae9e",
40
+ "@matter/nodejs": "0.17.0-alpha.0-20260508-29ff5ae9e",
41
+ "@matter/nodejs-ble": "0.17.0-alpha.0-20260508-29ff5ae9e",
42
+ "@matter/protocol": "0.17.0-alpha.0-20260508-29ff5ae9e",
43
+ "@matter/types": "0.17.0-alpha.0-20260508-29ff5ae9e",
44
+ "@project-chip/matter.js": "0.17.0-alpha.0-20260508-29ff5ae9e",
45
45
  "ws": "^8.20.0",
46
46
  "yargs": "^18.0.0"
47
47
  },
package/src/MatterNode.ts CHANGED
@@ -33,6 +33,7 @@ export class MatterNode {
33
33
  readonly #netInterface?: string;
34
34
  #dclFetchTestCertificates = false;
35
35
  #allowTestOtaImages = false;
36
+ #transportPreference?: "tcp" | "udp";
36
37
  #observers?: ObserverGroup;
37
38
 
38
39
  constructor(nodeNum: number, netInterface?: string) {
@@ -88,8 +89,18 @@ export class MatterNode {
88
89
  this.#environment.vars.set("mdns.networkinterface", this.#netInterface);
89
90
  }
90
91
 
91
- // Build up the "Not-so-legacy" Controller
92
92
  const id = `shell-${this.#nodeNum.toString()}`;
93
+
94
+ // Open storage up front so persisted settings can flow into the CommissioningController constructor.
95
+ this.#storageManager = await this.#environment.get(StorageService).open(id);
96
+ this.#storageContext = this.#storageManager.createContext("Node");
97
+
98
+ this.#dclFetchTestCertificates = await this.#storageContext.get<boolean>("DclFetchTestCertificates", false);
99
+ this.#allowTestOtaImages = await this.#storageContext.get<boolean>("AllowTestOtaImages", false);
100
+ const storedPref = await this.#storageContext.get<string>("TransportPreference", "");
101
+ this.#transportPreference = storedPref === "tcp" || storedPref === "udp" ? storedPref : undefined;
102
+
103
+ // Build up the "Not-so-legacy" Controller
93
104
  this.commissioningController = new CommissioningController({
94
105
  environment: {
95
106
  environment: this.#environment,
@@ -99,6 +110,7 @@ export class MatterNode {
99
110
  adminFabricLabel: "matter.js Shell",
100
111
  enableOtaProvider: true,
101
112
  tcp: true,
113
+ transportPreference: this.#transportPreference,
102
114
  basicInformation: {
103
115
  productName: "matter.js Shell",
104
116
  },
@@ -112,17 +124,6 @@ export class MatterNode {
112
124
  if (resetStorage) {
113
125
  await this.commissioningController.node.erase();
114
126
  }
115
-
116
- // We side open a storage with the same ID as the ServerNode but only care about the "Node" sub context which
117
- // is consistent.
118
- this.#storageManager = await env.get(StorageService).open(id);
119
- this.#storageContext = this.#storageManager.createContext("Node");
120
-
121
- // Read DCL test certificates setting
122
- this.#dclFetchTestCertificates = await this.#storageContext.get<boolean>("DclFetchTestCertificates", false);
123
-
124
- // Read OTA test images setting
125
- this.#allowTestOtaImages = await this.#storageContext.get<boolean>("AllowTestOtaImages", false);
126
127
  } else {
127
128
  console.log(
128
129
  "Legacy support was removed in Matter.js 0.13. Please downgrade or migrate the storage manually",
@@ -148,6 +148,40 @@ export default function commands(theNode: MatterNode) {
148
148
  const count = (await theNode.certificateService()).certificates.length;
149
149
  console.log(`Total certificates in storage: ${count}`);
150
150
  },
151
+ )
152
+ .command(
153
+ "check-revoked <issuer-key-id> <serial-number>",
154
+ "Check if a certificate is revoked (fetches from DCL on demand)",
155
+ yargs => {
156
+ return yargs
157
+ .positional("issuer-key-id", {
158
+ describe: "Authority Key Identifier of the issuer (hex, with or without colons)",
159
+ type: "string",
160
+ demandOption: true,
161
+ })
162
+ .positional("serial-number", {
163
+ describe: "Serial number of the certificate to check (hex)",
164
+ type: "string",
165
+ demandOption: true,
166
+ });
167
+ },
168
+ async argv => {
169
+ const { issuerKeyId, serialNumber } = argv;
170
+ await theNode.start();
171
+ const service = await theNode.certificateService();
172
+
173
+ console.log("Checking revocation status against DCL...");
174
+ const revoked = await service.isRevoked(issuerKeyId, serialNumber);
175
+ if (revoked) {
176
+ console.log(
177
+ `REVOKED: Certificate with serial ${serialNumber} (issuer ${issuerKeyId}) is revoked.`,
178
+ );
179
+ } else {
180
+ console.log(
181
+ `OK: Certificate with serial ${serialNumber} (issuer ${issuerKeyId}) is not revoked.`,
182
+ );
183
+ }
184
+ },
151
185
  ),
152
186
  handler: async (argv: any) => {
153
187
  argv.unhandled = true;
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Diagnostic, MatterError } from "@matter/general";
7
+ import { Diagnostic, Logger, MatterError } from "@matter/general";
8
8
  import { DiscoveryCapabilitiesSchema, ManualPairingCodeCodec, NodeId, QrCode, QrPairingCodeCodec } from "@matter/types";
9
9
  import { BasicInformationCluster, DescriptorCluster, GeneralCommissioning } from "@matter/types/clusters";
10
10
  import { NodeCommissioningOptions } from "@project-chip/matter.js";
@@ -12,6 +12,8 @@ import type { Argv } from "yargs";
12
12
  import { MatterNode } from "../MatterNode.js";
13
13
  import { createDiagnosticCallbacks } from "./cmd_nodes.js";
14
14
 
15
+ const logger = Logger.get("Commission");
16
+
15
17
  export default function commands(theNode: MatterNode) {
16
18
  return {
17
19
  command: "commission",
@@ -130,14 +132,35 @@ export default function commands(theNode: MatterNode) {
130
132
  ...createDiagnosticCallbacks(),
131
133
  } as NodeCommissioningOptions;
132
134
 
135
+ // Attestation policy: strict rejects errors but allows warnings/info
136
+ const strictAttestation = await theNode.Store.get<boolean>(
137
+ "StrictAttestationValidation",
138
+ false,
139
+ );
140
+
133
141
  options.commissioning = {
134
142
  nodeId: nodeId !== undefined ? NodeId(nodeId) : undefined,
135
143
  regulatoryLocation: GeneralCommissioning.RegulatoryLocationType.Outdoor, // Set to the most restrictive if relevant
136
144
  regulatoryCountryCode: "XX",
145
+ onAttestationFailure: findings => {
146
+ const accept = strictAttestation
147
+ ? findings.every(f => f.level !== "error")
148
+ : true;
149
+ for (const f of findings) {
150
+ logger.info(
151
+ `Attestation finding ${accept ? "accepted" : "rejected"} (${f.level}):`,
152
+ f.type,
153
+ f.message,
154
+ );
155
+ }
156
+ return accept;
157
+ },
137
158
  };
138
159
 
139
160
  console.log(Diagnostic.json(options));
140
161
 
162
+ await theNode.certificateService();
163
+
141
164
  if (theNode.Store.has("WiFiSsid") && theNode.Store.has("WiFiPassword")) {
142
165
  options.commissioning.wifiNetwork = {
143
166
  wifiSsid: await theNode.Store.get<string>("WiFiSsid", ""),
@@ -291,6 +291,76 @@ export default function commands(theNode: MatterNode) {
291
291
  async argv => doDclTestCertificates(theNode, { action: "set", ...argv }),
292
292
  );
293
293
  },
294
+ )
295
+
296
+ // Strict Certificate Validation
297
+ .command(
298
+ "strict-attestation",
299
+ "Manage strict device attestation validation during commissioning",
300
+ yargs => {
301
+ return yargs
302
+ .command(
303
+ "* [action]",
304
+ "Get, set, or delete the strict attestation setting",
305
+ yargs => {
306
+ return yargs.positional("action", {
307
+ describe: "get/delete",
308
+ choices: ["get", "delete"] as const,
309
+ default: "get",
310
+ type: "string",
311
+ });
312
+ },
313
+ async argv => doStrictAttestation(theNode, argv),
314
+ )
315
+ .command(
316
+ "set <value>",
317
+ "Enable or disable strict attestation validation",
318
+ yargs => {
319
+ return yargs.positional("value", {
320
+ describe: "Enable strict attestation (true/false)",
321
+ type: "string",
322
+ choices: ["true", "false"] as const,
323
+ demandOption: true,
324
+ });
325
+ },
326
+ async argv => doStrictAttestation(theNode, { action: "set", ...argv }),
327
+ );
328
+ },
329
+ )
330
+
331
+ // Transport Preference (TCP vs UDP) for outgoing connections
332
+ .command(
333
+ "transport-preference",
334
+ "Manage preferred transport (TCP/UDP) for outgoing connections from this controller",
335
+ yargs => {
336
+ return yargs
337
+ .command(
338
+ "* [action]",
339
+ "Get or delete the transport preference",
340
+ yargs => {
341
+ return yargs.positional("action", {
342
+ describe: "get/delete",
343
+ choices: ["get", "delete"] as const,
344
+ default: "get",
345
+ type: "string",
346
+ });
347
+ },
348
+ async argv => doTransportPreference(theNode, argv),
349
+ )
350
+ .command(
351
+ "set <value>",
352
+ "Set transport preference for outgoing connections",
353
+ yargs => {
354
+ return yargs.positional("value", {
355
+ describe: "Preferred transport",
356
+ type: "string",
357
+ choices: ["tcp", "udp"] as const,
358
+ demandOption: true,
359
+ });
360
+ },
361
+ async argv => doTransportPreference(theNode, { action: "set", ...argv }),
362
+ );
363
+ },
294
364
  ),
295
365
  handler: async (argv: any) => {
296
366
  argv.unhandled = true;
@@ -573,3 +643,73 @@ async function doDclTestCertificates(
573
643
  break;
574
644
  }
575
645
  }
646
+
647
+ async function doStrictAttestation(
648
+ theNode: MatterNode,
649
+ args: {
650
+ action: string;
651
+ value?: string;
652
+ },
653
+ ) {
654
+ const { action, value } = args;
655
+ switch (action) {
656
+ case "get": {
657
+ const strict = await theNode.Store.get<boolean>("StrictAttestationValidation", false);
658
+ console.log(
659
+ `Strict attestation: ${strict ? "enabled (reject on errors, allow warnings/info)" : "disabled (accept all findings)"}`,
660
+ );
661
+ break;
662
+ }
663
+ case "set": {
664
+ if (value === undefined) {
665
+ console.log(`Cannot change strict attestation setting: New value not provided`);
666
+ return;
667
+ }
668
+ const newValue = value === "true";
669
+ await theNode.Store.set("StrictAttestationValidation", newValue);
670
+ console.log(
671
+ `Strict attestation: ${newValue ? "enabled (reject on errors, allow warnings/info)" : "disabled (accept all findings)"}`,
672
+ );
673
+ break;
674
+ }
675
+ case "delete":
676
+ await theNode.Store.delete("StrictAttestationValidation");
677
+ console.log(`Strict attestation setting reset to default (disabled).`);
678
+ break;
679
+ }
680
+ }
681
+
682
+ async function doTransportPreference(
683
+ theNode: MatterNode,
684
+ args: {
685
+ action: string;
686
+ value?: string;
687
+ },
688
+ ) {
689
+ const { action, value } = args;
690
+ switch (action) {
691
+ case "get": {
692
+ const stored = await theNode.Store.get<string>("TransportPreference", "");
693
+ const pref = stored === "tcp" || stored === "udp" ? stored : undefined;
694
+ console.log(`Transport preference: ${pref === undefined ? "default (UDP-preferred)" : pref.toUpperCase()}`);
695
+ break;
696
+ }
697
+ case "set": {
698
+ if (value !== "tcp" && value !== "udp") {
699
+ console.log(`Cannot change transport preference: value must be tcp or udp`);
700
+ return;
701
+ }
702
+ await theNode.Store.set("TransportPreference", value);
703
+ console.log(
704
+ `Transport preference: ${value.toUpperCase()}. Please restart the shell for the change to take effect.`,
705
+ );
706
+ break;
707
+ }
708
+ case "delete":
709
+ await theNode.Store.delete("TransportPreference");
710
+ console.log(
711
+ `Transport preference reset to default (UDP-preferred). Please restart the shell for the change to take effect.`,
712
+ );
713
+ break;
714
+ }
715
+ }
@@ -162,9 +162,7 @@ export default function commands(theNode: MatterNode) {
162
162
  if (dd.VP) console.log(` Vendor/Prod: ${dd.VP}`);
163
163
  if (dd.DT !== undefined) console.log(` Device Type: ${dd.DT}`);
164
164
  if (dd.T !== undefined) {
165
- const tcpClient = !!(dd.T & 0x02);
166
- const tcpServer = !!(dd.T & 0x04);
167
- console.log(` TCP Support: T=${dd.T} (client=${tcpClient}, server=${tcpServer})`);
165
+ console.log(` TCP Support: client=${dd.T.tcpClient}, server=${dd.T.tcpServer}`);
168
166
  } else {
169
167
  console.log(` TCP Support: not advertised`);
170
168
  }
@@ -1,189 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2026 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import {
7
- Environment,
8
- Filesystem,
9
- Logger,
10
- ObserverGroup,
11
- StorageService
12
- } from "@matter/general";
13
- import { DclBehavior, SoftwareUpdateManager } from "@matter/node";
14
- import { NodeId } from "@matter/types";
15
- import { CommissioningController } from "@project-chip/matter.js";
16
- import { join } from "node:path";
17
- const logger = Logger.get("Node");
18
- class MatterNode {
19
- #storageLocation;
20
- #storageManager;
21
- #storageContext;
22
- #environment;
23
- commissioningController;
24
- #started = false;
25
- #nodeNum;
26
- #netInterface;
27
- #dclFetchTestCertificates = false;
28
- #allowTestOtaImages = false;
29
- #observers;
30
- constructor(nodeNum, netInterface) {
31
- this.#environment = Environment.default;
32
- this.#environment.runtime.add(this);
33
- this.#nodeNum = nodeNum;
34
- this.#netInterface = netInterface;
35
- }
36
- get storageLocation() {
37
- return this.#storageLocation;
38
- }
39
- get environment() {
40
- return this.#environment;
41
- }
42
- get node() {
43
- if (this.commissioningController === void 0) {
44
- throw new Error("CommissioningController not initialized. Start first");
45
- }
46
- return this.commissioningController.node;
47
- }
48
- async otaService() {
49
- const service = await this.node.act((agent) => agent.get(DclBehavior).otaUpdateService);
50
- await service.construction;
51
- return service;
52
- }
53
- async certificateService() {
54
- const service = await this.node.act((agent) => agent.get(DclBehavior).certificateService);
55
- await service.construction;
56
- return service;
57
- }
58
- async vendorInfoService() {
59
- const service = await this.node.act((agent) => agent.get(DclBehavior).vendorInfoService);
60
- await service.construction;
61
- return service;
62
- }
63
- async initialize(resetStorage) {
64
- if (this.#environment) {
65
- if (this.#netInterface !== void 0) {
66
- this.#environment.vars.set("mdns.networkinterface", this.#netInterface);
67
- }
68
- const id = `shell-${this.#nodeNum.toString()}`;
69
- this.commissioningController = new CommissioningController({
70
- environment: {
71
- environment: this.#environment,
72
- id
73
- },
74
- autoConnect: false,
75
- adminFabricLabel: "matter.js Shell",
76
- enableOtaProvider: true,
77
- tcp: true,
78
- basicInformation: {
79
- productName: "matter.js Shell"
80
- }
81
- });
82
- const env = this.commissioningController.env;
83
- if (env.has(Filesystem)) {
84
- this.#storageLocation = join(env.get(Filesystem).path, id);
85
- }
86
- if (resetStorage) {
87
- await this.commissioningController.node.erase();
88
- }
89
- this.#storageManager = await env.get(StorageService).open(id);
90
- this.#storageContext = this.#storageManager.createContext("Node");
91
- this.#dclFetchTestCertificates = await this.#storageContext.get("DclFetchTestCertificates", false);
92
- this.#allowTestOtaImages = await this.#storageContext.get("AllowTestOtaImages", false);
93
- } else {
94
- console.log(
95
- "Legacy support was removed in Matter.js 0.13. Please downgrade or migrate the storage manually"
96
- );
97
- process.exit(1);
98
- }
99
- }
100
- get Store() {
101
- if (!this.#storageContext) {
102
- throw new Error("Storage uninitialized");
103
- }
104
- return this.#storageContext;
105
- }
106
- async close() {
107
- try {
108
- await this.commissioningController?.close();
109
- } finally {
110
- this.#observers?.close();
111
- await this.#storageManager?.close();
112
- }
113
- }
114
- async start() {
115
- if (this.#started) {
116
- return;
117
- }
118
- logger.info(`matter.js shell controller started for node ${this.#nodeNum}`);
119
- if (this.commissioningController !== void 0) {
120
- await this.commissioningController.start();
121
- await this.commissioningController.node.setStateOf(DclBehavior, {
122
- fetchTestCertificates: this.#dclFetchTestCertificates
123
- });
124
- await this.commissioningController.otaProvider.setStateOf(SoftwareUpdateManager, {
125
- allowTestOtaImages: this.#allowTestOtaImages
126
- });
127
- if (await this.Store.has("ControllerFabricLabel")) {
128
- await this.commissioningController.updateFabricLabel(
129
- await this.Store.get("ControllerFabricLabel", "matter.js Shell")
130
- );
131
- }
132
- } else {
133
- throw new Error("No controller initialized");
134
- }
135
- this.#observers = this.#observers ?? new ObserverGroup(this.#environment.runtime);
136
- const updateManagerEvents = this.commissioningController.otaProvider.eventsOf(SoftwareUpdateManager);
137
- this.#observers.on(updateManagerEvents.updateAvailable, (peer, details) => {
138
- logger.info(`Update available for peer`, peer, `:`, details);
139
- });
140
- this.#observers.on(updateManagerEvents.updateDone, (peer) => {
141
- logger.info(`Update done for peer`, peer);
142
- });
143
- this.#observers.on(updateManagerEvents.updateFailed, (peer) => {
144
- logger.info(`Update failed for peer`, peer);
145
- });
146
- this.#started = true;
147
- }
148
- async connectAndGetNodes(nodeIdStr, connectOptions) {
149
- await this.start();
150
- const nodeId = nodeIdStr !== void 0 ? NodeId(BigInt(nodeIdStr)) : void 0;
151
- if (this.commissioningController === void 0) {
152
- throw new Error("CommissioningController not initialized");
153
- }
154
- if (nodeId === void 0) {
155
- return await this.commissioningController.connect(connectOptions);
156
- }
157
- const node = await this.commissioningController.connectNode(nodeId, {
158
- ...connectOptions
159
- });
160
- if (!node.initialized) {
161
- await node.events.initialized;
162
- }
163
- return [node];
164
- }
165
- get controller() {
166
- if (this.commissioningController === void 0) {
167
- throw new Error("CommissioningController not initialized. Start first");
168
- }
169
- return this.commissioningController;
170
- }
171
- async iterateNodeDevices(nodes, callback, endpointId) {
172
- for (const node of nodes) {
173
- let devices = node.getDevices();
174
- if (endpointId !== void 0) {
175
- devices = devices.filter((device) => device.number === endpointId);
176
- }
177
- for (const device of devices) {
178
- await callback(device, node);
179
- }
180
- }
181
- }
182
- updateFabricLabel(label) {
183
- return this.commissioningController?.updateFabricLabel(label);
184
- }
185
- }
186
- export {
187
- MatterNode
188
- };
189
- //# sourceMappingURL=MatterNode.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/MatterNode.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }