@matter/nodejs-shell 0.11.0-alpha.0-20241007-547af42a8

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 (56) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +192 -0
  3. package/dist/cjs/MatterNode.js +115 -0
  4. package/dist/cjs/MatterNode.js.map +6 -0
  5. package/dist/cjs/app.js +162 -0
  6. package/dist/cjs/app.js.map +6 -0
  7. package/dist/cjs/package.json +7 -0
  8. package/dist/cjs/shell/Shell.js +195 -0
  9. package/dist/cjs/shell/Shell.js.map +6 -0
  10. package/dist/cjs/shell/cmd_cluster-attributes.js +310 -0
  11. package/dist/cjs/shell/cmd_cluster-attributes.js.map +6 -0
  12. package/dist/cjs/shell/cmd_cluster-commands.js +158 -0
  13. package/dist/cjs/shell/cmd_cluster-commands.js.map +6 -0
  14. package/dist/cjs/shell/cmd_cluster-events.js +104 -0
  15. package/dist/cjs/shell/cmd_cluster-events.js.map +6 -0
  16. package/dist/cjs/shell/cmd_commission.js +237 -0
  17. package/dist/cjs/shell/cmd_commission.js.map +6 -0
  18. package/dist/cjs/shell/cmd_config.js +315 -0
  19. package/dist/cjs/shell/cmd_config.js.map +6 -0
  20. package/dist/cjs/shell/cmd_discover.js +123 -0
  21. package/dist/cjs/shell/cmd_discover.js.map +6 -0
  22. package/dist/cjs/shell/cmd_identify.js +66 -0
  23. package/dist/cjs/shell/cmd_identify.js.map +6 -0
  24. package/dist/cjs/shell/cmd_nodes.js +244 -0
  25. package/dist/cjs/shell/cmd_nodes.js.map +6 -0
  26. package/dist/cjs/shell/cmd_session.js +43 -0
  27. package/dist/cjs/shell/cmd_session.js.map +6 -0
  28. package/dist/cjs/shell/cmd_subscribe.js +59 -0
  29. package/dist/cjs/shell/cmd_subscribe.js.map +6 -0
  30. package/dist/cjs/shell/cmd_tlv.js +175 -0
  31. package/dist/cjs/shell/cmd_tlv.js.map +6 -0
  32. package/dist/cjs/util/CommandlineParser.js +106 -0
  33. package/dist/cjs/util/CommandlineParser.js.map +6 -0
  34. package/dist/cjs/util/Json.js +66 -0
  35. package/dist/cjs/util/Json.js.map +6 -0
  36. package/dist/cjs/util/String.js +32 -0
  37. package/dist/cjs/util/String.js.map +6 -0
  38. package/package.json +58 -0
  39. package/src/MatterNode.ts +141 -0
  40. package/src/app.ts +158 -0
  41. package/src/shell/Shell.ts +184 -0
  42. package/src/shell/cmd_cluster-attributes.ts +340 -0
  43. package/src/shell/cmd_cluster-commands.ts +174 -0
  44. package/src/shell/cmd_cluster-events.ts +99 -0
  45. package/src/shell/cmd_commission.ts +273 -0
  46. package/src/shell/cmd_config.ts +366 -0
  47. package/src/shell/cmd_discover.ts +127 -0
  48. package/src/shell/cmd_identify.ts +51 -0
  49. package/src/shell/cmd_nodes.ts +249 -0
  50. package/src/shell/cmd_session.ts +23 -0
  51. package/src/shell/cmd_subscribe.ts +43 -0
  52. package/src/shell/cmd_tlv.ts +169 -0
  53. package/src/tsconfig.json +22 -0
  54. package/src/util/CommandlineParser.ts +123 -0
  55. package/src/util/Json.ts +50 -0
  56. package/src/util/String.ts +9 -0
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var cmd_commission_exports = {};
20
+ __export(cmd_commission_exports, {
21
+ default: () => commands
22
+ });
23
+ module.exports = __toCommonJS(cmd_commission_exports);
24
+ var import_general = require("@matter/general");
25
+ var import_cluster = require("@project-chip/matter.js/cluster");
26
+ var import_datatype = require("@project-chip/matter.js/datatype");
27
+ var import_schema = require("@project-chip/matter.js/schema");
28
+ var import_cmd_nodes = require("./cmd_nodes");
29
+ /**
30
+ * @license
31
+ * Copyright 2022-2024 Matter.js Authors
32
+ * SPDX-License-Identifier: Apache-2.0
33
+ */
34
+ function commands(theNode) {
35
+ return {
36
+ command: "commission",
37
+ describe: "Handle device commissioning",
38
+ builder: (yargs) => yargs.command("pair", "Pair with a matter device", (yargs2) => {
39
+ return yargs2.command(
40
+ "* [node-id] [ip:[port]]",
41
+ "Commission a matter device",
42
+ (yargs3) => {
43
+ return yargs3.positional("node-id", {
44
+ describe: "node id",
45
+ default: void 0,
46
+ type: "string"
47
+ }).positional("ip", {
48
+ describe: "ip address",
49
+ default: void 0,
50
+ type: "string"
51
+ }).positional("port", {
52
+ describe: "ip port",
53
+ default: void 0,
54
+ type: "number"
55
+ });
56
+ },
57
+ async (argv) => {
58
+ const {
59
+ pairingCode,
60
+ nodeId: nodeIdStr,
61
+ ipPort,
62
+ ip,
63
+ ble = false,
64
+ instanceId
65
+ } = argv;
66
+ let { setupPinCode, discriminator, shortDiscriminator } = argv;
67
+ if (typeof pairingCode === "string") {
68
+ const { shortDiscriminator: pairingCodeShortDiscriminator, passcode } = import_schema.ManualPairingCodeCodec.decode(pairingCode);
69
+ shortDiscriminator = pairingCodeShortDiscriminator;
70
+ setupPinCode = passcode;
71
+ discriminator = void 0;
72
+ } else if (discriminator === void 0 && shortDiscriminator === void 0) {
73
+ discriminator = 3840;
74
+ }
75
+ const nodeId = nodeIdStr !== void 0 ? (0, import_datatype.NodeId)(BigInt(nodeIdStr)) : void 0;
76
+ await theNode.start();
77
+ if (theNode.commissioningController === void 0) {
78
+ throw new Error("CommissioningController not initialized");
79
+ }
80
+ const options = {
81
+ discovery: {
82
+ knownAddress: ip !== void 0 && ipPort !== void 0 ? { ip, port: ipPort, type: "udp" } : void 0,
83
+ identifierData: instanceId !== void 0 ? { instanceId } : discriminator !== void 0 ? { longDiscriminator: discriminator } : shortDiscriminator !== void 0 ? { shortDiscriminator } : {},
84
+ discoveryCapabilities: {
85
+ ble,
86
+ onIpNetwork: true
87
+ }
88
+ },
89
+ passcode: setupPinCode,
90
+ ...(0, import_cmd_nodes.createDiagnosticCallbacks)()
91
+ };
92
+ options.commissioning = {
93
+ nodeId: nodeId !== void 0 ? (0, import_datatype.NodeId)(nodeId) : void 0,
94
+ regulatoryLocation: import_cluster.GeneralCommissioning.RegulatoryLocationType.Outdoor,
95
+ // Set to the most restrictive if relevant
96
+ regulatoryCountryCode: "XX"
97
+ };
98
+ console.log(import_general.Logger.toJSON(options));
99
+ if (theNode.Store.has("WiFiSsid") && theNode.Store.has("WiFiPassword")) {
100
+ options.commissioning.wifiNetwork = {
101
+ wifiSsid: await theNode.Store.get("WiFiSsid", ""),
102
+ wifiCredentials: await theNode.Store.get("WiFiPassword", "")
103
+ };
104
+ }
105
+ if (theNode.Store.has("ThreadName") && theNode.Store.has("ThreadOperationalDataset")) {
106
+ options.commissioning.threadNetwork = {
107
+ networkName: await theNode.Store.get("ThreadName", ""),
108
+ operationalDataset: await theNode.Store.get(
109
+ "ThreadOperationalDataset",
110
+ ""
111
+ )
112
+ };
113
+ }
114
+ const commissionedNodeId = await theNode.commissioningController.commissionNode(options);
115
+ console.log("Commissioned Node:", commissionedNodeId);
116
+ const node = theNode.commissioningController.getPairedNode(commissionedNodeId);
117
+ if (node === void 0) {
118
+ throw new import_general.MatterError("Node not found after commissioning.");
119
+ }
120
+ const descriptor = node.getRootClusterClient(import_cluster.DescriptorCluster);
121
+ if (descriptor !== void 0) {
122
+ console.log(await descriptor.attributes.deviceTypeList.get());
123
+ console.log(await descriptor.getServerListAttribute());
124
+ } else {
125
+ console.log("No Descriptor Cluster found. This should never happen!");
126
+ }
127
+ const info = node.getRootClusterClient(import_cluster.BasicInformationCluster);
128
+ if (info !== void 0) {
129
+ console.log(await info.getProductNameAttribute());
130
+ } else {
131
+ console.log("No BasicInformation Cluster found. This should never happen!");
132
+ }
133
+ }
134
+ ).options({
135
+ pairingCode: {
136
+ describe: "pairing code",
137
+ default: void 0,
138
+ type: "string"
139
+ },
140
+ setupPinCode: {
141
+ describe: "setup pin code",
142
+ default: 20202021,
143
+ type: "number"
144
+ },
145
+ instanceId: {
146
+ alias: "i",
147
+ describe: "instance id",
148
+ type: "string"
149
+ },
150
+ discriminator: {
151
+ alias: "d",
152
+ description: "Long discriminator",
153
+ type: "number"
154
+ },
155
+ shortDiscriminator: {
156
+ alias: "s",
157
+ description: "Short discriminator",
158
+ type: "number"
159
+ },
160
+ ble: {
161
+ alias: "b",
162
+ description: "Also discover over BLE",
163
+ type: "boolean",
164
+ default: false
165
+ }
166
+ });
167
+ }).command(
168
+ "open-basic-window <node-id> [timeout]",
169
+ "Open a basic commissioning window",
170
+ (yargs2) => {
171
+ return yargs2.positional("node-id", {
172
+ describe: "node id",
173
+ type: "string",
174
+ demandOption: true
175
+ }).positional("timeout", {
176
+ describe: "timeout in seconds",
177
+ type: "number",
178
+ default: 900
179
+ });
180
+ },
181
+ async (argv) => {
182
+ const { nodeId, timeout = 900 } = argv;
183
+ await theNode.start();
184
+ const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
185
+ await node.openBasicCommissioningWindow(timeout);
186
+ console.log(`Basic Commissioning Window for node ${nodeId} opened`);
187
+ }
188
+ ).command(
189
+ "open-enhanced-window <node-id> [timeout]",
190
+ "Open a enhanced commissioning window",
191
+ (yargs2) => {
192
+ return yargs2.positional("node-id", {
193
+ describe: "node id",
194
+ type: "string",
195
+ demandOption: true
196
+ }).positional("timeout", {
197
+ describe: "timeout in seconds",
198
+ type: "number",
199
+ default: 900
200
+ });
201
+ },
202
+ async (argv) => {
203
+ await theNode.start();
204
+ const { nodeId, timeout = 900 } = argv;
205
+ const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
206
+ const data = await node.openEnhancedCommissioningWindow(timeout);
207
+ console.log(`Enhanced Commissioning Window for node ${nodeId} opened`);
208
+ const { qrPairingCode, manualPairingCode } = data;
209
+ console.log(import_schema.QrCode.get(qrPairingCode));
210
+ console.log(
211
+ `QR Code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=${qrPairingCode}`
212
+ );
213
+ console.log(`Manual pairing code: ${manualPairingCode}`);
214
+ }
215
+ ).command(
216
+ "unpair <node-id>",
217
+ "Unpair/Decommission a node",
218
+ (yargs2) => {
219
+ return yargs2.positional("node-id", {
220
+ describe: "node id",
221
+ type: "string",
222
+ demandOption: true
223
+ });
224
+ },
225
+ async (argv) => {
226
+ await theNode.start();
227
+ const { nodeId } = argv;
228
+ const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
229
+ await node.decommission();
230
+ }
231
+ ),
232
+ handler: async (argv) => {
233
+ argv.unhandled = true;
234
+ }
235
+ };
236
+ }
237
+ //# sourceMappingURL=cmd_commission.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/shell/cmd_commission.ts"],
4
+ "mappings": "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",
5
+ "names": ["yargs"]
6
+ }
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var cmd_config_exports = {};
20
+ __export(cmd_config_exports, {
21
+ default: () => commands
22
+ });
23
+ module.exports = __toCommonJS(cmd_config_exports);
24
+ var import_general = require("@matter/general");
25
+ var import_app = require("../app");
26
+ /**
27
+ * @license
28
+ * Copyright 2022-2024 Matter.js Authors
29
+ * SPDX-License-Identifier: Apache-2.0
30
+ */
31
+ function commands(theNode) {
32
+ return {
33
+ command: "config",
34
+ describe: "Manage global configuration",
35
+ builder: (yargs) => yargs.command("loglevel", "Manage Console and File LogLevels", (yargs2) => {
36
+ return yargs2.command(
37
+ ["* [action]", "* [type] [ action]"],
38
+ "get/delete console or file log level",
39
+ (yargs3) => {
40
+ return yargs3.positional("type", {
41
+ describe: "type to set the loglevel for",
42
+ choices: ["console", "file"],
43
+ default: "console",
44
+ type: "string"
45
+ }).positional("action", {
46
+ describe: "get/delete",
47
+ choices: ["get", "delete"],
48
+ default: "get",
49
+ type: "string"
50
+ });
51
+ },
52
+ async (argv) => doLogLevel(theNode, argv)
53
+ ).command(
54
+ "set <value>",
55
+ "set console log level",
56
+ (yargs3) => {
57
+ return yargs3.positional("type", {
58
+ describe: "type to set the loglevel for",
59
+ choices: ["console", "file"],
60
+ default: "console",
61
+ type: "string"
62
+ }).positional("value", {
63
+ describe: "log level to set",
64
+ type: "string",
65
+ choices: ["fatal", "error", "warn", "info", "debug"],
66
+ demandOption: true
67
+ });
68
+ },
69
+ async (argv) => doLogLevel(theNode, { action: "set", ...argv })
70
+ );
71
+ }).command("logfile", "Manage Logfile path", (yargs2) => {
72
+ return yargs2.command(
73
+ "* [action]",
74
+ "get/delete logfile path",
75
+ (yargs3) => {
76
+ return yargs3.positional("action", {
77
+ describe: "get/delete",
78
+ choices: ["get", "delete"],
79
+ default: "get",
80
+ type: "string"
81
+ });
82
+ },
83
+ async (argv) => doLogfilePath(theNode, argv)
84
+ ).command(
85
+ "set <value>",
86
+ "set logfile path",
87
+ (yargs3) => {
88
+ return yargs3.positional("value", {
89
+ describe: "logfile path to set",
90
+ type: "string",
91
+ demandOption: true
92
+ });
93
+ },
94
+ async (argv) => doLogfilePath(theNode, { action: "set", ...argv })
95
+ );
96
+ }).command("ble-hci", "Manage BLE HCI ID (Linux)", (yargs2) => {
97
+ return yargs2.command(
98
+ "* [action]",
99
+ "get/delete BLE HCI ID of the device (Linux only)",
100
+ (yargs3) => {
101
+ return yargs3.positional("action", {
102
+ describe: "get/delete",
103
+ choices: ["get", "delete"],
104
+ default: "get",
105
+ type: "string"
106
+ });
107
+ },
108
+ async (argv) => doBleHci(theNode, argv)
109
+ ).command(
110
+ "set <value>",
111
+ "set BLE HCI ID of the device (Linux only)",
112
+ (yargs3) => {
113
+ return yargs3.positional("value", {
114
+ describe: "HCI ID to set",
115
+ type: "number",
116
+ demandOption: true
117
+ });
118
+ },
119
+ async (argv) => doBleHci(theNode, { action: "set", ...argv })
120
+ );
121
+ }).command("wifi-credentials", "Manage Wi-Fi credentials used in commissioning process", (yargs2) => {
122
+ return yargs2.command(
123
+ "* [action]",
124
+ "get/set Wi-Fi credentials",
125
+ (yargs3) => {
126
+ return yargs3.positional("action", {
127
+ describe: "get/delete",
128
+ choices: ["get", "delete"],
129
+ default: "get",
130
+ type: "string"
131
+ });
132
+ },
133
+ async (argv) => doWifiCredentials(theNode, argv)
134
+ ).command(
135
+ "set <wifi-ssid> <wifi-password>",
136
+ "set Wi-Fi credentials",
137
+ (yargs3) => {
138
+ return yargs3.positional("wifi-ssid", {
139
+ describe: "SSID of the Wifi network to commission",
140
+ type: "string",
141
+ demandOption: true
142
+ }).positional("wifi-password", {
143
+ describe: "Password of the Wifi network to commission",
144
+ type: "string",
145
+ demandOption: true
146
+ });
147
+ },
148
+ async (argv) => doWifiCredentials(theNode, { action: "set", ...argv })
149
+ );
150
+ }).command("thread-credentials", "Manage Thread credentials used in commissioning process", (yargs2) => {
151
+ return yargs2.command(
152
+ "* [action]",
153
+ "get/set thread network credentials",
154
+ (yargs3) => {
155
+ return yargs3.positional("action", {
156
+ describe: "get/delete",
157
+ choices: ["get", "delete"],
158
+ default: "get",
159
+ type: "string"
160
+ });
161
+ },
162
+ async (argv) => doThreadCredentials(theNode, argv)
163
+ ).command(
164
+ "set <thread-name> <thread-operational-dataset>",
165
+ "set thread networkcredentials",
166
+ (yargs3) => {
167
+ return yargs3.positional("thread-name", {
168
+ describe: "Thread network name to commission",
169
+ type: "string",
170
+ demandOption: true
171
+ }).positional("thread-operational-dataset", {
172
+ describe: "Thread network operational dataset to commission",
173
+ type: "string",
174
+ demandOption: true
175
+ });
176
+ },
177
+ (argv) => doThreadCredentials(theNode, { action: "set", ...argv })
178
+ );
179
+ }),
180
+ handler: async (argv) => {
181
+ argv.unhandled = true;
182
+ }
183
+ };
184
+ }
185
+ async function doLogLevel(theNode, args) {
186
+ const { action, value } = args;
187
+ const storageKey = args.type === "console" ? "LogLevel" : "LogLevelFile";
188
+ const logtype = args.type === "console" ? "Console" : "File";
189
+ switch (action) {
190
+ case "get":
191
+ console.log(`Current Loglevel for ${logtype}: ${await theNode.Store.get(storageKey, "info")}`);
192
+ break;
193
+ case "set":
194
+ if (value === void 0) {
195
+ console.log(`Cannot change Loglevel for ${logtype}: New Loglevel value not provided`);
196
+ return;
197
+ }
198
+ await theNode.Store.set(storageKey, value);
199
+ console.log(`New Loglevel for ${logtype}:" ${value}"`);
200
+ (0, import_app.setLogLevel)(args.type === "console" ? "default" : "file", value);
201
+ break;
202
+ case "delete":
203
+ await theNode.Store.delete(storageKey);
204
+ console.log(`Loglevel for ${logtype}: Reset to "info"`);
205
+ (0, import_app.setLogLevel)(args.type === "console" ? "default" : "file", "info");
206
+ break;
207
+ }
208
+ }
209
+ async function doLogfilePath(theNode, args) {
210
+ const { action, value } = args;
211
+ switch (action) {
212
+ case "get":
213
+ console.log(`Current Logfile Path: ${await theNode.Store.get("LogFile", "-")}`);
214
+ break;
215
+ case "set":
216
+ if (value === void 0) {
217
+ console.log(`Cannot change Logfile path: new path not provided`);
218
+ return;
219
+ }
220
+ await theNode.Store.set("LogFile", value);
221
+ console.log(`New LogFile path:" ${value}". Please restart the shell for teh changes to take effect.`);
222
+ break;
223
+ case "delete":
224
+ await theNode.Store.delete("LogFile");
225
+ console.log(`LogFile path removed. Please restart the shell for teh changes to take effect.`);
226
+ break;
227
+ }
228
+ }
229
+ async function doBleHci(theNode, args) {
230
+ const { action, value } = args;
231
+ switch (action) {
232
+ case "get":
233
+ console.log(`Current BLE HCI ID: ${await theNode.Store.get("BleHciId", 0)}`);
234
+ break;
235
+ case "set":
236
+ if (value === void 0) {
237
+ console.log(`Cannot change HCI ID: New HCI ID value not provided`);
238
+ return;
239
+ }
240
+ await theNode.Store.set("BleHciId", value);
241
+ console.log(`New HCI ID:" ${value}". Please restart the shell for teh changes to take effect.`);
242
+ break;
243
+ case "delete":
244
+ await theNode.Store.delete("BleHciId");
245
+ console.log(`BLE HCI ID reset to default (0). Please restart the shell for teh changes to take effect.`);
246
+ break;
247
+ }
248
+ }
249
+ async function doWifiCredentials(theNode, args) {
250
+ const { action, wifiSsid, wifiPassword } = args;
251
+ switch (action) {
252
+ case "get":
253
+ console.log(
254
+ `Current Wifi-Credentials: SSID="${await theNode.Store.get(
255
+ "WiFiSsid",
256
+ "-"
257
+ )}", Password="${import_general.Logger.maskString(await theNode.Store.get("WiFiPassword", ""))}"`
258
+ );
259
+ break;
260
+ case "set":
261
+ if (wifiSsid === void 0 || wifiPassword === void 0) {
262
+ console.log(`Cannot change Wi-Fi credentials: New values not provided`);
263
+ return;
264
+ }
265
+ await theNode.Store.set("WiFiSsid", wifiSsid);
266
+ await theNode.Store.set("WiFiPassword", wifiPassword);
267
+ console.log(
268
+ `New Wifi-Credentials: SSID="${theNode.Store.get(
269
+ "WiFiSsid",
270
+ "-"
271
+ )}", Password="${import_general.Logger.maskString(await theNode.Store.get("WiFiPassword"))}"`
272
+ );
273
+ break;
274
+ case "delete":
275
+ await theNode.Store.delete("WiFiSsid");
276
+ await theNode.Store.delete("WiFiPassword");
277
+ console.log(`Wi-Fi credentials were deleted`);
278
+ break;
279
+ }
280
+ }
281
+ async function doThreadCredentials(theNode, args) {
282
+ const { action, threadName, threadOperationalDataset } = args;
283
+ switch (action) {
284
+ case "get":
285
+ console.log(
286
+ `Current Thread network credentials: name="${await theNode.Store.get(
287
+ "ThreadName",
288
+ "-"
289
+ )}", Operational-Dataset="${import_general.Logger.maskString(
290
+ await theNode.Store.get("ThreadOperationalDataset", "")
291
+ )}"`
292
+ );
293
+ break;
294
+ case "set":
295
+ if (threadName === void 0 || threadOperationalDataset === void 0) {
296
+ console.log(`Cannot change Thread network credentials: New values not provided`);
297
+ return;
298
+ }
299
+ await theNode.Store.set("ThreadName", threadName);
300
+ await theNode.Store.set("ThreadOperationalDataset", threadOperationalDataset);
301
+ console.log(
302
+ `New Wifi-Credentials: SSID="${await theNode.Store.get(
303
+ "ThreadName",
304
+ "-"
305
+ )}", OperationalDataset="${import_general.Logger.maskString(await theNode.Store.get("ThreadOperationalDataset"))}"`
306
+ );
307
+ break;
308
+ case "delete":
309
+ await theNode.Store.delete("ThreadName");
310
+ await theNode.Store.delete("ThreadOperationalDataset");
311
+ console.log(`Thread network credentials were deleted`);
312
+ break;
313
+ }
314
+ }
315
+ //# sourceMappingURL=cmd_config.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/shell/cmd_config.ts"],
4
+ "mappings": "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",
5
+ "names": ["yargs"]
6
+ }