@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,310 @@
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_cluster_attributes_exports = {};
20
+ __export(cmd_cluster_attributes_exports, {
21
+ default: () => cmdAttributes
22
+ });
23
+ module.exports = __toCommonJS(cmd_cluster_attributes_exports);
24
+ var import_general = require("@matter/general");
25
+ var import_model = require("@matter/model");
26
+ var import_cluster = require("@project-chip/matter.js/cluster");
27
+ var import_common = require("@project-chip/matter.js/common");
28
+ var import_datatype = require("@project-chip/matter.js/datatype");
29
+ var import_Json = require("../util/Json");
30
+ var import_String = require("../util/String");
31
+ /**
32
+ * @license
33
+ * Copyright 2022-2024 Matter.js Authors
34
+ * SPDX-License-Identifier: Apache-2.0
35
+ */
36
+ function generateAllAttributeHandlersForCluster(yargs, theNode) {
37
+ import_model.MatterModel.standard.clusters.forEach((cluster) => {
38
+ yargs = generateClusterAttributeHandlers(yargs, cluster, theNode);
39
+ });
40
+ yargs = yargs.command(
41
+ "by-id <cluster-id> read <attribute-id> <node-id> <endpoint-id>",
42
+ `Read attributes by id`,
43
+ (yargs2) => yargs2.positional("cluster-id", {
44
+ describe: "cluster id to read from",
45
+ type: "number",
46
+ demandOption: true
47
+ }).positional("attribute-id", {
48
+ describe: "attribute id to read, use * to read all attributes of the given cluster",
49
+ type: "string",
50
+ demandOption: true
51
+ }).positional("endpoint-id", {
52
+ describe: "endpoint id to read",
53
+ type: "number",
54
+ demandOption: true
55
+ }).positional("node-id", {
56
+ describe: "node id to read",
57
+ type: "string",
58
+ demandOption: true
59
+ }),
60
+ async (argv) => {
61
+ const { nodeId, endpointId, clusterId, attributeId: rawAttributeId } = argv;
62
+ const attributeId = rawAttributeId === "*" ? void 0 : parseInt(rawAttributeId);
63
+ const node = (await theNode.connectAndGetNodes(nodeId))[0];
64
+ try {
65
+ const interactionClient = await node.getInteractionClient();
66
+ const result = await interactionClient.getMultipleAttributes({
67
+ attributes: [
68
+ {
69
+ endpointId: (0, import_datatype.EndpointNumber)(endpointId),
70
+ clusterId: (0, import_datatype.ClusterId)(clusterId),
71
+ attributeId: attributeId !== void 0 ? (0, import_datatype.AttributeId)(attributeId) : void 0
72
+ }
73
+ ]
74
+ });
75
+ console.log(
76
+ `Attribute values for cluster ${node.nodeId.toString()}/${endpointId}/${clusterId}/${attributeId}:`
77
+ );
78
+ for (const {
79
+ path: { attributeId: attributeId2, attributeName },
80
+ value
81
+ } of result) {
82
+ console.log(
83
+ ` ${import_general.Diagnostic.hex(attributeId2)}${attributeName !== void 0 ? ` (${attributeName})` : ""}: ${import_general.Logger.toJSON(value)}`
84
+ );
85
+ }
86
+ } catch (error) {
87
+ console.log(
88
+ `ERROR: Could not get attribute ${node.nodeId.toString()}/${endpointId}/${clusterId}/${attributeId}: ${error}`
89
+ );
90
+ }
91
+ }
92
+ );
93
+ return yargs;
94
+ }
95
+ function generateClusterAttributeHandlers(yargs, cluster, theNode) {
96
+ if (cluster.id === void 0) {
97
+ return yargs;
98
+ }
99
+ yargs = yargs.command(
100
+ [cluster.name.toLowerCase(), `0x${cluster.id.toString(16)}`],
101
+ `Read/Write ${cluster.name} attributes`,
102
+ (yargs2) => {
103
+ yargs2 = yargs2.command(
104
+ "read",
105
+ `Reads attributes of ${cluster.name}`,
106
+ (yargs3) => {
107
+ yargs3 = yargs3.command(
108
+ ["* <node-id> <endpoint-id>", "all"],
109
+ `Read all attributes of ${cluster.name}`,
110
+ (yargs4) => {
111
+ return yargs4.positional("endpoint-id", {
112
+ describe: "endpoint id to read",
113
+ type: "number",
114
+ demandOption: true
115
+ }).positional("node-id", {
116
+ describe: "node id to read",
117
+ type: "string",
118
+ demandOption: true
119
+ }).options({
120
+ remote: {
121
+ describe: "request value always remote",
122
+ default: false,
123
+ type: "boolean"
124
+ }
125
+ });
126
+ },
127
+ async (argv) => {
128
+ const clusterId = cluster.id;
129
+ const { nodeId, endpointId, remote } = argv;
130
+ const requestRemote = remote ? true : void 0;
131
+ const node = (await theNode.connectAndGetNodes(nodeId))[0];
132
+ const clusterClient = node.getDeviceById(endpointId)?.getClusterClientById((0, import_datatype.ClusterId)(clusterId));
133
+ if (clusterClient === void 0) {
134
+ console.log(
135
+ `ERROR: Cluster ${node.nodeId.toString()}/${endpointId}/${clusterId} not found.`
136
+ );
137
+ return;
138
+ }
139
+ console.log(
140
+ `Attribute values for cluster ${cluster.name} (${node.nodeId.toString()}/${endpointId}/${clusterId}):`
141
+ );
142
+ for (const attribute of cluster.attributes) {
143
+ const attributeName = (0, import_String.camelize)(attribute.name);
144
+ const attributeClient = clusterClient.attributes[attributeName];
145
+ if (!(attributeClient instanceof import_cluster.SupportedAttributeClient)) {
146
+ continue;
147
+ }
148
+ console.log(
149
+ ` ${attributeName} (${attribute.id}): ${import_general.Logger.toJSON(await attributeClient.get(requestRemote))}`
150
+ );
151
+ }
152
+ }
153
+ );
154
+ cluster.attributes.forEach((attribute) => {
155
+ yargs3 = generateAttributeReadHandler(yargs3, cluster.id, cluster.name, attribute, theNode);
156
+ });
157
+ return yargs3;
158
+ },
159
+ async (argv) => {
160
+ argv.unhandled = true;
161
+ }
162
+ );
163
+ if (cluster.attributes.some((attribute) => attribute.writable)) {
164
+ yargs2 = yargs2.command(
165
+ "write",
166
+ `Writes attributes of ${cluster.name}`,
167
+ (yargs3) => {
168
+ cluster.attributes.forEach((attribute) => {
169
+ if (!attribute.writable) {
170
+ return;
171
+ }
172
+ yargs3 = generateAttributeWriteHandler(yargs3, cluster.id, cluster.name, attribute, theNode);
173
+ });
174
+ return yargs3;
175
+ },
176
+ async (argv) => {
177
+ argv.unhandled = true;
178
+ }
179
+ );
180
+ }
181
+ return yargs2;
182
+ },
183
+ async (argv) => {
184
+ argv.unhandled = true;
185
+ }
186
+ );
187
+ return yargs;
188
+ }
189
+ function generateAttributeReadHandler(yargs, clusterId, clusterName, attribute, theNode) {
190
+ const attributeName = (0, import_String.camelize)(attribute.name);
191
+ return yargs.command(
192
+ [`${attribute.name.toLowerCase()} <node-id> <endpoint-id>`, `0x${attribute.id.toString(16)}`],
193
+ `Read ${clusterName}.${attribute.name} attribute`,
194
+ (yargs2) => yargs2.positional("endpoint-id", {
195
+ describe: "endpoint id to read",
196
+ type: "number",
197
+ demandOption: true
198
+ }).positional("node-id", {
199
+ describe: "node id to read",
200
+ type: "string",
201
+ demandOption: true
202
+ }).options({
203
+ remote: {
204
+ describe: "request value always remote",
205
+ default: false,
206
+ type: "boolean"
207
+ }
208
+ }),
209
+ async (argv) => {
210
+ const { nodeId, endpointId, remote } = argv;
211
+ const requestRemote = remote ? true : void 0;
212
+ const node = (await theNode.connectAndGetNodes(nodeId))[0];
213
+ const clusterClient = node.getDeviceById(endpointId)?.getClusterClientById((0, import_datatype.ClusterId)(clusterId));
214
+ if (clusterClient === void 0) {
215
+ console.log(`ERROR: Cluster ${node.nodeId.toString()}/${endpointId}/${clusterId} not found.`);
216
+ return;
217
+ }
218
+ const attributeClient = clusterClient.attributes[attributeName];
219
+ if (!(attributeClient instanceof import_cluster.SupportedAttributeClient)) {
220
+ console.log(
221
+ `ERROR: Attribute ${node.nodeId.toString()}/${endpointId}/${clusterId}/${attribute.id} not supported.`
222
+ );
223
+ return;
224
+ }
225
+ try {
226
+ console.log(
227
+ `Attribute value for ${attributeName} ${node.nodeId.toString()}/${endpointId}/${clusterId}/${attribute.id}: ${import_general.Logger.toJSON(await attributeClient.get(requestRemote))}`
228
+ );
229
+ } catch (error) {
230
+ console.log(`ERROR: Could not get attribute ${attribute.name}: ${error}`);
231
+ }
232
+ }
233
+ );
234
+ }
235
+ function generateAttributeWriteHandler(yargs, clusterId, clusterName, attribute, theNode) {
236
+ const attributeName = (0, import_String.camelize)(attribute.name);
237
+ const typeHint = `${attribute.type}${attribute.definingModel === void 0 ? "" : " as JSON string"}`;
238
+ return yargs.command(
239
+ [`${attribute.name.toLowerCase()} <value> <nodeId> <endpointId>`, `0x${attribute.id.toString(16)}`],
240
+ `Write ${clusterName}.${attribute.name} attribute`,
241
+ (yargs2) => yargs2.positional("endpoint-id", {
242
+ describe: "endpoint id to write to",
243
+ type: "number",
244
+ demandOption: true
245
+ }).positional("node-id", {
246
+ describe: "node id to write t.",
247
+ type: "string",
248
+ demandOption: true
249
+ }).positional("value", {
250
+ describe: `value to write (${typeHint})`,
251
+ type: "string",
252
+ demandOption: true
253
+ }),
254
+ async (argv) => {
255
+ const { nodeId, endpointId, value } = argv;
256
+ let parsedValue;
257
+ try {
258
+ parsedValue = JSON.parse(value);
259
+ } catch (error) {
260
+ try {
261
+ parsedValue = JSON.parse(`"${value}"`);
262
+ } catch (innerError) {
263
+ console.log(`ERROR: Could not parse value ${value} as JSON.`);
264
+ return;
265
+ }
266
+ }
267
+ const node = (await theNode.connectAndGetNodes(nodeId))[0];
268
+ const clusterClient = node.getDeviceById(endpointId)?.getClusterClientById((0, import_datatype.ClusterId)(clusterId));
269
+ if (clusterClient === void 0) {
270
+ console.log(`ERROR: Cluster ${node.nodeId.toString()}/${endpointId}/${clusterId} not found.`);
271
+ return;
272
+ }
273
+ const attributeClient = clusterClient.attributes[attributeName];
274
+ if (!(attributeClient instanceof import_cluster.SupportedAttributeClient)) {
275
+ console.log(
276
+ `ERROR: Attribute ${node.nodeId.toString()}/${endpointId}/${clusterId}/${attribute.id} not supported.`
277
+ );
278
+ return;
279
+ }
280
+ try {
281
+ parsedValue = (0, import_Json.convertJsonDataWithModel)(attribute, parsedValue);
282
+ await attributeClient.set(parsedValue);
283
+ console.log(
284
+ `Attribute ${attributeName} ${node.nodeId.toString()}/${endpointId}/${clusterId}/${attribute.id} set to ${import_general.Logger.toJSON(value)}`
285
+ );
286
+ } catch (error) {
287
+ if (error instanceof import_common.ValidationError) {
288
+ console.log(
289
+ `ERROR: Could not validate data for attribute ${attribute.name} to ${import_general.Logger.toJSON(parsedValue)}: ${error}${error.fieldName !== void 0 ? ` in field ${error.fieldName}` : ""}`
290
+ );
291
+ } else {
292
+ console.log(
293
+ `ERROR: Could not set attribute ${attribute.name} to ${import_general.Logger.toJSON(parsedValue)}: ${error}`
294
+ );
295
+ }
296
+ }
297
+ }
298
+ );
299
+ }
300
+ function cmdAttributes(theNode) {
301
+ return {
302
+ command: ["attributes", "a"],
303
+ describe: "Read and Write attributes",
304
+ builder: (yargs) => generateAllAttributeHandlersForCluster(yargs, theNode),
305
+ handler: async (argv) => {
306
+ argv.unhandled = true;
307
+ }
308
+ };
309
+ }
310
+ //# sourceMappingURL=cmd_cluster-attributes.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/shell/cmd_cluster-attributes.ts"],
4
+ "mappings": "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",
5
+ "names": ["yargs", "attributeId"]
6
+ }
@@ -0,0 +1,158 @@
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_cluster_commands_exports = {};
20
+ __export(cmd_cluster_commands_exports, {
21
+ default: () => cmdCommands
22
+ });
23
+ module.exports = __toCommonJS(cmd_cluster_commands_exports);
24
+ var import_general = require("@matter/general");
25
+ var import_model = require("@matter/model");
26
+ var import_common = require("@project-chip/matter.js/common");
27
+ var import_datatype = require("@project-chip/matter.js/datatype");
28
+ var import_Json = require("../util/Json");
29
+ var import_String = require("../util/String");
30
+ /**
31
+ * @license
32
+ * Copyright 2022-2024 Matter.js Authors
33
+ * SPDX-License-Identifier: Apache-2.0
34
+ */
35
+ function generateAllCommandHandlersForCluster(yargs, theNode) {
36
+ import_model.MatterModel.standard.clusters.forEach((cluster) => {
37
+ yargs = generateClusterCommandHandlers(yargs, cluster, theNode);
38
+ });
39
+ return yargs;
40
+ }
41
+ function generateClusterCommandHandlers(yargs, cluster, theNode) {
42
+ if (cluster.id === void 0) {
43
+ return yargs;
44
+ }
45
+ yargs = yargs.command(
46
+ [cluster.name.toLowerCase(), `0x${cluster.id.toString(16)}`],
47
+ `Invoke ${cluster.name} commands`,
48
+ (yargs2) => {
49
+ cluster.commands.forEach((command) => {
50
+ yargs2 = generateCommandHandler(yargs2, cluster.id, cluster.name, command, theNode);
51
+ });
52
+ return yargs2;
53
+ },
54
+ async (argv) => {
55
+ argv.unhandled = true;
56
+ }
57
+ );
58
+ return yargs;
59
+ }
60
+ function generateCommandHandler(yargs, clusterId, clusterName, command, theNode) {
61
+ if (command.definingModel !== void 0) {
62
+ return yargs.command(
63
+ [`${command.name.toLowerCase()} <value> <nodeId> <endpointId>`, `0x${command.id.toString(16)}`],
64
+ `Invoke ${clusterName}.${command.name} command`,
65
+ (yargs2) => yargs2.positional("value", {
66
+ describe: "value to write as JSON value",
67
+ type: "string",
68
+ demandOption: true
69
+ }).positional("endpoint-id", {
70
+ describe: "endpoint id to write to",
71
+ type: "number",
72
+ demandOption: true
73
+ }).positional("node-id", {
74
+ describe: "node id to write t.",
75
+ type: "string",
76
+ demandOption: true
77
+ }),
78
+ async (argv) => {
79
+ const { nodeId, endpointId, value } = argv;
80
+ let parsedValue;
81
+ try {
82
+ parsedValue = JSON.parse(value);
83
+ } catch (error) {
84
+ try {
85
+ parsedValue = JSON.parse(`"${value}"`);
86
+ } catch (innerError) {
87
+ console.log(`ERROR: Could not parse value ${value} as JSON.`);
88
+ return;
89
+ }
90
+ }
91
+ await executeCommand(theNode, nodeId, endpointId, clusterId, command, parsedValue);
92
+ }
93
+ );
94
+ }
95
+ return yargs.command(
96
+ [`${command.name.toLowerCase()} <nodeId> <endpointId>`, `0x${command.id.toString(16)}`],
97
+ `Invoke ${clusterName}.${command.name} command`,
98
+ (yargs2) => yargs2.positional("endpoint-id", {
99
+ describe: "endpoint id to write to",
100
+ type: "number",
101
+ demandOption: true
102
+ }).positional("node-id", {
103
+ describe: "node id to write t.",
104
+ type: "string",
105
+ demandOption: true
106
+ }),
107
+ async (argv) => {
108
+ const { nodeId, endpointId } = argv;
109
+ await executeCommand(theNode, nodeId, endpointId, clusterId, command);
110
+ }
111
+ );
112
+ }
113
+ async function executeCommand(theNode, nodeId, endpointId, clusterId, command, requestData) {
114
+ const commandName = (0, import_String.camelize)(command.name);
115
+ const node = (await theNode.connectAndGetNodes(nodeId))[0];
116
+ const clusterClient = node.getDeviceById(endpointId)?.getClusterClientById((0, import_datatype.ClusterId)(clusterId));
117
+ if (clusterClient === void 0) {
118
+ console.log(`ERROR: Cluster ${node.nodeId.toString()}/${endpointId}/${clusterId} not found.`);
119
+ return;
120
+ }
121
+ if (clusterClient.commands[commandName] == void 0) {
122
+ console.log(`ERROR: Command ${node.nodeId.toString()}/${endpointId}/${clusterId}/${command.id} not supported.`);
123
+ return;
124
+ }
125
+ try {
126
+ if (requestData !== void 0) {
127
+ requestData = (0, import_Json.convertJsonDataWithModel)(command, requestData);
128
+ }
129
+ const result = await clusterClient.commands[commandName](requestData);
130
+ console.log(
131
+ `Command ${command.name} ${node.nodeId.toString()}/${endpointId}/${clusterId}/${command.id} invoked ${requestData ? `with ${import_general.Logger.toJSON(requestData)}` : ""}`
132
+ );
133
+ if (result !== void 0) {
134
+ console.log(`Result: ${import_general.Logger.toJSON(result)}`);
135
+ }
136
+ } catch (error) {
137
+ if (error instanceof import_common.ValidationError) {
138
+ console.log(
139
+ `ERROR: Could not validate data for command ${command.name} with ${import_general.Logger.toJSON(requestData)}: ${error}${error.fieldName !== void 0 ? ` in field ${error.fieldName}` : ""}`
140
+ );
141
+ } else {
142
+ console.log(
143
+ `ERROR: Could not invoke command ${command.name} ${requestData ? `with ${import_general.Logger.toJSON(requestData)}` : ""}: ${error}`
144
+ );
145
+ }
146
+ }
147
+ }
148
+ function cmdCommands(theNode) {
149
+ return {
150
+ command: ["commands", "c"],
151
+ describe: "Invoke commands",
152
+ builder: (yargs) => generateAllCommandHandlersForCluster(yargs, theNode),
153
+ handler: async (argv) => {
154
+ argv.unhandled = true;
155
+ }
156
+ };
157
+ }
158
+ //# sourceMappingURL=cmd_cluster-commands.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/shell/cmd_cluster-commands.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAuB;AACvB,mBAAwD;AACxD,oBAAgC;AAChC,sBAA0B;AAG1B,kBAAyC;AACzC,oBAAyB;AAbzB;AAAA;AAAA;AAAA;AAAA;AAeA,SAAS,qCAAqC,OAAa,SAAqB;AAC5E,2BAAY,SAAS,SAAS,QAAQ,aAAW;AAC7C,YAAQ,+BAA+B,OAAO,SAAS,OAAO;AAAA,EAClE,CAAC;AACD,SAAO;AACX;AAEA,SAAS,+BAA+B,OAAa,SAAuB,SAAqB;AAC7F,MAAI,QAAQ,OAAO,QAAW;AAC1B,WAAO;AAAA,EACX;AACA,UAAQ,MAAM;AAAA,IACV,CAAC,QAAQ,KAAK,YAAY,GAAG,KAAK,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE;AAAA,IAC3D,UAAU,QAAQ,IAAI;AAAA,IACtB,CAAAA,WAAS;AACL,cAAQ,SAAS,QAAQ,aAAW;AAChC,QAAAA,SAAQ,uBAAuBA,QAAO,QAAQ,IAAI,QAAQ,MAAM,SAAS,OAAO;AAAA,MACpF,CAAC;AACD,aAAOA;AAAA,IACX;AAAA,IACA,OAAO,SAAc;AACjB,WAAK,YAAY;AAAA,IACrB;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,uBACL,OACA,WACA,aACA,SACA,SACF;AAIE,MAAI,QAAQ,kBAAkB,QAAW;AAErC,WAAO,MAAM;AAAA,MACT,CAAC,GAAG,QAAQ,KAAK,YAAY,CAAC,kCAAkC,KAAK,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE;AAAA,MAC9F,UAAU,WAAW,IAAI,QAAQ,IAAI;AAAA,MACrC,CAAAA,WACIA,OACK,WAAW,SAAS;AAAA,QACjB,UAAU;AAAA,QACV,MAAM;AAAA,QACN,cAAc;AAAA,MAClB,CAAC,EACA,WAAW,eAAe;AAAA,QACvB,UAAU;AAAA,QACV,MAAM;AAAA,QACN,cAAc;AAAA,MAClB,CAAC,EACA,WAAW,WAAW;AAAA,QACnB,UAAU;AAAA,QACV,MAAM;AAAA,QACN,cAAc;AAAA,MAClB,CAAC;AAAA,MACT,OAAM,SAAQ;AACV,cAAM,EAAE,QAAQ,YAAY,MAAM,IAAI;AAEtC,YAAI;AACJ,YAAI;AACA,wBAAc,KAAK,MAAM,KAAK;AAAA,QAClC,SAAS,OAAO;AACZ,cAAI;AACA,0BAAc,KAAK,MAAM,IAAI,KAAK,GAAG;AAAA,UACzC,SAAS,YAAY;AACjB,oBAAQ,IAAI,gCAAgC,KAAK,WAAW;AAC5D;AAAA,UACJ;AAAA,QACJ;AAEA,cAAM,eAAe,SAAS,QAAQ,YAAY,WAAW,SAAS,WAAW;AAAA,MACrF;AAAA,IACJ;AAAA,EACJ;AAGA,SAAO,MAAM;AAAA,IACT,CAAC,GAAG,QAAQ,KAAK,YAAY,CAAC,0BAA0B,KAAK,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE;AAAA,IACtF,UAAU,WAAW,IAAI,QAAQ,IAAI;AAAA,IACrC,CAAAA,WACIA,OACK,WAAW,eAAe;AAAA,MACvB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,cAAc;AAAA,IAClB,CAAC,EACA,WAAW,WAAW;AAAA,MACnB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,cAAc;AAAA,IAClB,CAAC;AAAA,IACT,OAAM,SAAQ;AACV,YAAM,EAAE,QAAQ,WAAW,IAAI;AAC/B,YAAM,eAAe,SAAS,QAAQ,YAAY,WAAW,OAAO;AAAA,IACxE;AAAA,EACJ;AACJ;AAEA,eAAe,eACX,SACA,QACA,YACA,WACA,SACA,aACF;AACE,QAAM,kBAAc,wBAAS,QAAQ,IAAI;AAEzC,QAAM,QAAQ,MAAM,QAAQ,mBAAmB,MAAM,GAAG,CAAC;AAEzD,QAAM,gBAAgB,KAAK,cAAc,UAAU,GAAG,yBAAqB,2BAAU,SAAS,CAAC;AAC/F,MAAI,kBAAkB,QAAW;AAC7B,YAAQ,IAAI,kBAAkB,KAAK,OAAO,SAAS,CAAC,IAAI,UAAU,IAAI,SAAS,aAAa;AAC5F;AAAA,EACJ;AACA,MAAI,cAAc,SAAS,WAAW,KAAK,QAAW;AAClD,YAAQ,IAAI,kBAAkB,KAAK,OAAO,SAAS,CAAC,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,EAAE,iBAAiB;AAC9G;AAAA,EACJ;AACA,MAAI;AACA,QAAI,gBAAgB,QAAW;AAC3B,wBAAc,sCAAyB,SAAS,WAAW;AAAA,IAC/D;AAEA,UAAM,SAAS,MAAM,cAAc,SAAS,WAAW,EAAE,WAAW;AACpE,YAAQ;AAAA,MACJ,WAAW,QAAQ,IAAI,IAAI,KAAK,OAAO,SAAS,CAAC,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,EAAE,YAAY,cAAc,QAAQ,sBAAO,OAAO,WAAW,CAAC,KAAK,EAAE;AAAA,IACjK;AACA,QAAI,WAAW,QAAW;AACtB,cAAQ,IAAI,WAAW,sBAAO,OAAO,MAAM,CAAC,EAAE;AAAA,IAClD;AAAA,EACJ,SAAS,OAAO;AACZ,QAAI,iBAAiB,+BAAiB;AAClC,cAAQ;AAAA,QACJ,8CAA8C,QAAQ,IAAI,SAAS,sBAAO,OAAO,WAAW,CAAC,KAAK,KAAK,GAAG,MAAM,cAAc,SAAY,aAAa,MAAM,SAAS,KAAK,EAAE;AAAA,MACjL;AAAA,IACJ,OAAO;AACH,cAAQ;AAAA,QACJ,mCAAmC,QAAQ,IAAI,IAAI,cAAc,QAAQ,sBAAO,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,KAAK;AAAA,MACxH;AAAA,IACJ;AAAA,EACJ;AACJ;AAEe,SAAR,YAA6B,SAAqB;AACrD,SAAO;AAAA,IACH,SAAS,CAAC,YAAY,GAAG;AAAA,IACzB,UAAU;AAAA,IACV,SAAS,CAAC,UAAgB,qCAAqC,OAAO,OAAO;AAAA,IAC7E,SAAS,OAAO,SAAc;AAC1B,WAAK,YAAY;AAAA,IACrB;AAAA,EACJ;AACJ;",
5
+ "names": ["yargs"]
6
+ }
@@ -0,0 +1,104 @@
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_cluster_events_exports = {};
20
+ __export(cmd_cluster_events_exports, {
21
+ default: () => cmdEvents
22
+ });
23
+ module.exports = __toCommonJS(cmd_cluster_events_exports);
24
+ var import_general = require("@matter/general");
25
+ var import_model = require("@matter/model");
26
+ var import_cluster = require("@project-chip/matter.js/cluster");
27
+ var import_datatype = require("@project-chip/matter.js/datatype");
28
+ var import_String = require("../util/String");
29
+ /**
30
+ * @license
31
+ * Copyright 2022-2024 Matter.js Authors
32
+ * SPDX-License-Identifier: Apache-2.0
33
+ */
34
+ function generateAllEventHandlersForCluster(yargs, theNode) {
35
+ import_model.MatterModel.standard.clusters.forEach((cluster) => {
36
+ yargs = generateClusterEventHandlers(yargs, cluster, theNode);
37
+ });
38
+ return yargs;
39
+ }
40
+ function generateClusterEventHandlers(yargs, cluster, theNode) {
41
+ if (cluster.id === void 0) {
42
+ return yargs;
43
+ }
44
+ yargs = yargs.command(
45
+ [cluster.name.toLowerCase(), `0x${cluster.id.toString(16)}`],
46
+ `Read ${cluster.name} events`,
47
+ (yargs2) => {
48
+ cluster.events.forEach((event) => {
49
+ yargs2 = generateEventHandler(yargs2, cluster.id, cluster.name, event, theNode);
50
+ });
51
+ return yargs2;
52
+ },
53
+ async (argv) => {
54
+ argv.unhandled = true;
55
+ }
56
+ );
57
+ return yargs;
58
+ }
59
+ function generateEventHandler(yargs, clusterId, clusterName, event, theNode) {
60
+ const eventName = (0, import_String.camelize)(event.name);
61
+ return yargs.command(
62
+ [`${event.name.toLowerCase()} <node-id> <endpoint-id>`, `0x${event.id.toString(16)}`],
63
+ `Read ${clusterName}.${event.name} event`,
64
+ (yargs2) => yargs2.positional("endpoint-id", {
65
+ describe: "endpoint id to read",
66
+ type: "number",
67
+ demandOption: true
68
+ }).positional("node-id", {
69
+ describe: "node id to read",
70
+ type: "string",
71
+ demandOption: true
72
+ }),
73
+ async (argv) => {
74
+ const { nodeId, endpointId } = argv;
75
+ const node = (await theNode.connectAndGetNodes(nodeId))[0];
76
+ const clusterClient = node.getDeviceById(endpointId)?.getClusterClientById((0, import_datatype.ClusterId)(clusterId));
77
+ if (clusterClient === void 0) {
78
+ console.log(`ERROR: Cluster ${node.nodeId.toString()}/${endpointId}/${clusterId} not found.`);
79
+ return;
80
+ }
81
+ const eventClient = clusterClient.events[eventName];
82
+ if (!(eventClient instanceof import_cluster.SupportedEventClient)) {
83
+ console.log(
84
+ `ERROR: Event ${node.nodeId.toString()}/${endpointId}/${clusterId}/${event.id} not supported.`
85
+ );
86
+ return;
87
+ }
88
+ console.log(
89
+ `Event value for ${eventName} ${node.nodeId.toString()}/${endpointId}/${clusterId}/${event.id}: ${import_general.Logger.toJSON(await eventClient.get())}`
90
+ );
91
+ }
92
+ );
93
+ }
94
+ function cmdEvents(theNode) {
95
+ return {
96
+ command: ["events", "e"],
97
+ describe: "Read events",
98
+ builder: (yargs) => generateAllEventHandlersForCluster(yargs, theNode),
99
+ handler: async (argv) => {
100
+ argv.unhandled = true;
101
+ }
102
+ };
103
+ }
104
+ //# sourceMappingURL=cmd_cluster-events.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/shell/cmd_cluster-events.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAuB;AACvB,mBAAsD;AACtD,qBAAqC;AACrC,sBAA0B;AAG1B,oBAAyB;AAZzB;AAAA;AAAA;AAAA;AAAA;AAcA,SAAS,mCAAmC,OAAa,SAAqB;AAC1E,2BAAY,SAAS,SAAS,QAAQ,aAAW;AAC7C,YAAQ,6BAA6B,OAAO,SAAS,OAAO;AAAA,EAChE,CAAC;AACD,SAAO;AACX;AAEA,SAAS,6BAA6B,OAAa,SAAuB,SAAqB;AAC3F,MAAI,QAAQ,OAAO,QAAW;AAC1B,WAAO;AAAA,EACX;AACA,UAAQ,MAAM;AAAA,IACV,CAAC,QAAQ,KAAK,YAAY,GAAG,KAAK,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE;AAAA,IAC3D,QAAQ,QAAQ,IAAI;AAAA,IACpB,CAAAA,WAAS;AACL,cAAQ,OAAO,QAAQ,WAAS;AAC5B,QAAAA,SAAQ,qBAAqBA,QAAO,QAAQ,IAAI,QAAQ,MAAM,OAAO,OAAO;AAAA,MAChF,CAAC;AACD,aAAOA;AAAA,IACX;AAAA,IACA,OAAO,SAAc;AACjB,WAAK,YAAY;AAAA,IACrB;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,qBACL,OACA,WACA,aACA,OACA,SACF;AAEE,QAAM,gBAAY,wBAAS,MAAM,IAAI;AACrC,SAAO,MAAM;AAAA,IACT,CAAC,GAAG,MAAM,KAAK,YAAY,CAAC,4BAA4B,KAAK,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE;AAAA,IACpF,QAAQ,WAAW,IAAI,MAAM,IAAI;AAAA,IACjC,CAAAA,WACIA,OACK,WAAW,eAAe;AAAA,MACvB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,cAAc;AAAA,IAClB,CAAC,EACA,WAAW,WAAW;AAAA,MACnB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,cAAc;AAAA,IAClB,CAAC;AAAA,IACT,OAAM,SAAQ;AACV,YAAM,EAAE,QAAQ,WAAW,IAAI;AAC/B,YAAM,QAAQ,MAAM,QAAQ,mBAAmB,MAAM,GAAG,CAAC;AAEzD,YAAM,gBAAgB,KAAK,cAAc,UAAU,GAAG,yBAAqB,2BAAU,SAAS,CAAC;AAC/F,UAAI,kBAAkB,QAAW;AAC7B,gBAAQ,IAAI,kBAAkB,KAAK,OAAO,SAAS,CAAC,IAAI,UAAU,IAAI,SAAS,aAAa;AAC5F;AAAA,MACJ;AACA,YAAM,cAAc,cAAc,OAAO,SAAS;AAClD,UAAI,EAAE,uBAAuB,sCAAuB;AAChD,gBAAQ;AAAA,UACJ,gBAAgB,KAAK,OAAO,SAAS,CAAC,IAAI,UAAU,IAAI,SAAS,IAAI,MAAM,EAAE;AAAA,QACjF;AACA;AAAA,MACJ;AACA,cAAQ;AAAA,QACJ,mBAAmB,SAAS,IAAI,KAAK,OAAO,SAAS,CAAC,IAAI,UAAU,IAAI,SAAS,IAAI,MAAM,EAAE,KAAK,sBAAO,OAAO,MAAM,YAAY,IAAI,CAAC,CAAC;AAAA,MAC5I;AAAA,IACJ;AAAA,EACJ;AACJ;AAEe,SAAR,UAA2B,SAAqB;AACnD,SAAO;AAAA,IACH,SAAS,CAAC,UAAU,GAAG;AAAA,IACvB,UAAU;AAAA,IACV,SAAS,CAAC,UAAgB,mCAAmC,OAAO,OAAO;AAAA,IAC3E,SAAS,OAAO,SAAc;AAC1B,WAAK,YAAY;AAAA,IACrB;AAAA,EACJ;AACJ;",
5
+ "names": ["yargs"]
6
+ }