@matter/nodejs-shell 0.16.0-alpha.0-20251211-0f80042cf → 0.16.0-alpha.0-20251213-e83db3732
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.
- package/dist/{cjs → esm}/MatterNode.js +24 -44
- package/dist/esm/MatterNode.js.map +6 -0
- package/dist/{cjs → esm}/app.js +44 -69
- package/dist/esm/app.js.map +6 -0
- package/dist/{cjs → esm}/package.json +1 -1
- package/dist/esm/shell/Shell.js +183 -0
- package/dist/esm/shell/Shell.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_cert.js +5 -25
- package/dist/esm/shell/cmd_cert.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_cluster-attributes.js +29 -50
- package/dist/esm/shell/cmd_cluster-attributes.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_cluster-commands.js +16 -37
- package/dist/esm/shell/cmd_cluster-commands.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_cluster-events.js +10 -31
- package/dist/esm/shell/cmd_cluster-events.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_commission.js +20 -40
- package/dist/esm/shell/cmd_commission.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_config.js +14 -34
- package/dist/esm/shell/cmd_config.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_dcl.js +16 -36
- package/dist/esm/shell/cmd_dcl.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_discover.js +10 -30
- package/dist/esm/shell/cmd_discover.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_identify.js +5 -25
- package/dist/esm/shell/cmd_identify.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_nodes.js +25 -45
- package/dist/esm/shell/cmd_nodes.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_ota.js +37 -57
- package/dist/esm/shell/cmd_ota.js.map +6 -0
- package/dist/esm/shell/cmd_session.js +23 -0
- package/dist/esm/shell/cmd_session.js.map +6 -0
- package/dist/esm/shell/cmd_subscribe.js +39 -0
- package/dist/esm/shell/cmd_subscribe.js.map +6 -0
- package/dist/esm/shell/cmd_tlv.js +163 -0
- package/dist/esm/shell/cmd_tlv.js.map +6 -0
- package/dist/{cjs → esm}/shell/cmd_vendor.js +5 -25
- package/dist/esm/shell/cmd_vendor.js.map +6 -0
- package/dist/{cjs → esm}/util/CommandlineParser.js +3 -23
- package/dist/esm/util/CommandlineParser.js.map +6 -0
- package/dist/esm/util/Json.js +45 -0
- package/dist/esm/util/Json.js.map +6 -0
- package/dist/esm/util/String.js +12 -0
- package/dist/esm/util/String.js.map +6 -0
- package/dist/esm/web_plumbing.js +140 -0
- package/dist/esm/web_plumbing.js.map +6 -0
- package/package.json +11 -10
- package/src/app.ts +17 -12
- package/src/shell/Shell.ts +9 -6
- package/src/shell/cmd_cluster-attributes.ts +3 -4
- package/src/shell/cmd_cluster-commands.ts +3 -4
- package/src/shell/cmd_cluster-events.ts +2 -3
- package/src/shell/cmd_commission.ts +2 -2
- package/src/shell/cmd_config.ts +2 -2
- package/src/shell/cmd_discover.ts +1 -1
- package/src/shell/cmd_nodes.ts +1 -1
- package/src/shell/cmd_session.ts +1 -1
- package/src/util/Json.ts +1 -2
- package/src/web_plumbing.ts +1 -1
- package/dist/cjs/MatterNode.js.map +0 -6
- package/dist/cjs/app.js.map +0 -6
- package/dist/cjs/shell/Shell.js +0 -211
- package/dist/cjs/shell/Shell.js.map +0 -6
- package/dist/cjs/shell/cmd_cert.js.map +0 -6
- package/dist/cjs/shell/cmd_cluster-attributes.js.map +0 -6
- package/dist/cjs/shell/cmd_cluster-commands.js.map +0 -6
- package/dist/cjs/shell/cmd_cluster-events.js.map +0 -6
- package/dist/cjs/shell/cmd_commission.js.map +0 -6
- package/dist/cjs/shell/cmd_config.js.map +0 -6
- package/dist/cjs/shell/cmd_dcl.js.map +0 -6
- package/dist/cjs/shell/cmd_discover.js.map +0 -6
- package/dist/cjs/shell/cmd_identify.js.map +0 -6
- package/dist/cjs/shell/cmd_nodes.js.map +0 -6
- package/dist/cjs/shell/cmd_ota.js.map +0 -6
- package/dist/cjs/shell/cmd_session.js +0 -43
- package/dist/cjs/shell/cmd_session.js.map +0 -6
- package/dist/cjs/shell/cmd_subscribe.js +0 -59
- package/dist/cjs/shell/cmd_subscribe.js.map +0 -6
- package/dist/cjs/shell/cmd_tlv.js +0 -183
- package/dist/cjs/shell/cmd_tlv.js.map +0 -6
- package/dist/cjs/shell/cmd_vendor.js.map +0 -6
- package/dist/cjs/util/CommandlineParser.js.map +0 -6
- package/dist/cjs/util/Json.js +0 -66
- package/dist/cjs/util/Json.js.map +0 -6
- package/dist/cjs/util/String.js +0 -32
- package/dist/cjs/util/String.js.map +0 -6
- package/dist/cjs/web_plumbing.js +0 -170
- package/dist/cjs/web_plumbing.js.map +0 -6
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Logger, NotImplementedError } from "@matter/general";
|
|
7
|
+
import { Readable, Writable } from "node:stream";
|
|
8
|
+
import WebSocket, { WebSocketServer } from "ws";
|
|
9
|
+
import { Shell } from "./shell/Shell.js";
|
|
10
|
+
import fs from "fs";
|
|
11
|
+
import http from "node:http";
|
|
12
|
+
import path from "path";
|
|
13
|
+
let client;
|
|
14
|
+
let server;
|
|
15
|
+
let wss;
|
|
16
|
+
const socketLogger = "websocket";
|
|
17
|
+
function initializeWebPlumbing(theNode, nodeNum, webSocketPort, webServer) {
|
|
18
|
+
if (webServer) {
|
|
19
|
+
const root = path.resolve(__dirname) ?? "./";
|
|
20
|
+
server = http.createServer((req, res) => {
|
|
21
|
+
const url = req.url ?? "/";
|
|
22
|
+
const safePath = path.normalize(
|
|
23
|
+
path.join(root, decodeURIComponent(url === "/" ? "/index.html" : url))
|
|
24
|
+
);
|
|
25
|
+
if (!safePath.startsWith(root)) {
|
|
26
|
+
res.writeHead(403).end("Forbidden");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
fs.readFile(safePath, (err, data) => {
|
|
30
|
+
if (err) return res.writeHead(404).end("Not Found");
|
|
31
|
+
res.writeHead(200).end(data);
|
|
32
|
+
});
|
|
33
|
+
}).listen(webSocketPort);
|
|
34
|
+
wss = new WebSocketServer({ server });
|
|
35
|
+
} else wss = new WebSocketServer({ port: webSocketPort });
|
|
36
|
+
console.info(`WebSocket server running on ws://localhost:${webSocketPort}`);
|
|
37
|
+
console.log = // console.debug = // too much traffic - kills the websocket
|
|
38
|
+
console.info = console.warn = console.error = (...args) => {
|
|
39
|
+
if (client && client.readyState === WebSocket.OPEN) {
|
|
40
|
+
client.send(args.map((arg) => typeof arg === "object" ? JSON.stringify(arg) : arg).join(" "));
|
|
41
|
+
} else
|
|
42
|
+
process.stdout.write(
|
|
43
|
+
args.map((arg) => typeof arg === "object" ? JSON.stringify(arg) : arg).join(" ") + "\n"
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
wss.on("connection", (ws) => {
|
|
47
|
+
if (client && client.readyState === WebSocket.OPEN) {
|
|
48
|
+
ws.send("ERROR: Shell in use by another client");
|
|
49
|
+
ws.close();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
client = ws;
|
|
53
|
+
createWebSocketLogger(ws).then((logger) => {
|
|
54
|
+
Logger.removeLogger("Shell");
|
|
55
|
+
Logger.addLogger(socketLogger, logger);
|
|
56
|
+
}).catch((err) => {
|
|
57
|
+
if (!(err instanceof NotImplementedError)) {
|
|
58
|
+
console.error("Failed to add WebSocket logger: " + err);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
const shell = new Shell(theNode, nodeNum, "", createReadableStream(ws), createWritableStream(ws));
|
|
62
|
+
shell.start(theNode.storageLocation);
|
|
63
|
+
ws.on("close", () => {
|
|
64
|
+
process.stdout.write("Client disconnected\n");
|
|
65
|
+
try {
|
|
66
|
+
if (Logger.getLoggerForIdentifier(socketLogger) !== void 0) {
|
|
67
|
+
Logger.removeLogger(socketLogger);
|
|
68
|
+
}
|
|
69
|
+
} catch (err) {
|
|
70
|
+
}
|
|
71
|
+
client = ws;
|
|
72
|
+
});
|
|
73
|
+
ws.on("error", (err) => {
|
|
74
|
+
process.stderr.write(`WebSocket error: ${err.message}
|
|
75
|
+
`);
|
|
76
|
+
try {
|
|
77
|
+
if (Logger.getLoggerForIdentifier(socketLogger) !== void 0) {
|
|
78
|
+
Logger.removeLogger(socketLogger);
|
|
79
|
+
}
|
|
80
|
+
} catch (err2) {
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
async function createWebSocketLogger(socket) {
|
|
85
|
+
if (socket.readyState === WebSocket.CONNECTING) {
|
|
86
|
+
await new Promise((resolve, reject) => {
|
|
87
|
+
socket.onopen = () => resolve();
|
|
88
|
+
socket.onerror = (err) => reject(new Error(`WebSocket error: ${err.type}`));
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return (__level, formattedLog) => {
|
|
92
|
+
if (socket.readyState === WebSocket.OPEN) {
|
|
93
|
+
socket.send(formattedLog);
|
|
94
|
+
} else {
|
|
95
|
+
process.stderr.write(`WebSocket logger not open, log dropped: ${formattedLog}
|
|
96
|
+
`);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function createReadableStream(ws) {
|
|
102
|
+
const readable = new Readable({ read() {
|
|
103
|
+
} });
|
|
104
|
+
ws.on("message", (data) => {
|
|
105
|
+
const chunk = Buffer.isBuffer(data) ? data : Buffer.from(data.toString());
|
|
106
|
+
readable.push(chunk);
|
|
107
|
+
});
|
|
108
|
+
ws.on("close", () => {
|
|
109
|
+
readable.push(null);
|
|
110
|
+
});
|
|
111
|
+
ws.on("error", (err) => {
|
|
112
|
+
readable.emit("error", err);
|
|
113
|
+
readable.push(null);
|
|
114
|
+
});
|
|
115
|
+
return readable;
|
|
116
|
+
}
|
|
117
|
+
function createWritableStream(ws) {
|
|
118
|
+
const writable = new Writable({
|
|
119
|
+
write(chunk, _encoding, callback) {
|
|
120
|
+
if (ws.readyState === WebSocket.OPEN) {
|
|
121
|
+
ws.send(chunk, callback);
|
|
122
|
+
} else {
|
|
123
|
+
if (chunk.length > 0) process.stderr.write(`ERROR: WebSocket is not open. Failed to send "${chunk}"
|
|
124
|
+
`);
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
final(callback) {
|
|
128
|
+
if (ws.readyState === WebSocket.OPEN) {
|
|
129
|
+
ws.close();
|
|
130
|
+
}
|
|
131
|
+
callback();
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
ws.on("error", (err) => writable.emit("WebSocket Write Error: ", err));
|
|
135
|
+
return writable;
|
|
136
|
+
}
|
|
137
|
+
export {
|
|
138
|
+
initializeWebPlumbing
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=web_plumbing.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/web_plumbing.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["err"]
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/nodejs-shell",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20251213-e83db3732",
|
|
4
4
|
"description": "Shell app for Matter controller",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"type": "git",
|
|
23
23
|
"url": "git+https://github.com/matter-js/matter.js.git"
|
|
24
24
|
},
|
|
25
|
+
"type": "module",
|
|
25
26
|
"scripts": {
|
|
26
27
|
"clean": "matter-build clean",
|
|
27
28
|
"build": "matter-build",
|
|
@@ -42,15 +43,15 @@
|
|
|
42
43
|
"#types": "@matter/types"
|
|
43
44
|
},
|
|
44
45
|
"dependencies": {
|
|
45
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
46
|
-
"@matter/model": "0.16.0-alpha.0-
|
|
47
|
-
"@matter/node": "0.16.0-alpha.0-
|
|
48
|
-
"@matter/nodejs": "0.16.0-alpha.0-
|
|
49
|
-
"@matter/nodejs-ble": "0.16.0-alpha.0-
|
|
50
|
-
"@matter/protocol": "0.16.0-alpha.0-
|
|
51
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
52
|
-
"@matter/types": "0.16.0-alpha.0-
|
|
53
|
-
"@project-chip/matter.js": "0.16.0-alpha.0-
|
|
46
|
+
"@matter/general": "0.16.0-alpha.0-20251213-e83db3732",
|
|
47
|
+
"@matter/model": "0.16.0-alpha.0-20251213-e83db3732",
|
|
48
|
+
"@matter/node": "0.16.0-alpha.0-20251213-e83db3732",
|
|
49
|
+
"@matter/nodejs": "0.16.0-alpha.0-20251213-e83db3732",
|
|
50
|
+
"@matter/nodejs-ble": "0.16.0-alpha.0-20251213-e83db3732",
|
|
51
|
+
"@matter/protocol": "0.16.0-alpha.0-20251213-e83db3732",
|
|
52
|
+
"@matter/tools": "0.16.0-alpha.0-20251213-e83db3732",
|
|
53
|
+
"@matter/types": "0.16.0-alpha.0-20251213-e83db3732",
|
|
54
|
+
"@project-chip/matter.js": "0.16.0-alpha.0-20251213-e83db3732",
|
|
54
55
|
"ws": "^8.18.3",
|
|
55
56
|
"yargs": "^18.0.0"
|
|
56
57
|
},
|
package/src/app.ts
CHANGED
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
import { Environment, LogDestination, LogFormat, Logger, LogLevel } from "#general";
|
|
9
9
|
import { createFileLogger } from "#nodejs";
|
|
10
10
|
import "@matter/nodejs-ble";
|
|
11
|
-
import yargs from "yargs
|
|
11
|
+
import yargs from "yargs";
|
|
12
|
+
import { hideBin } from "yargs/helpers";
|
|
12
13
|
import { MatterNode } from "./MatterNode.js";
|
|
13
|
-
import { Shell } from "./shell/Shell";
|
|
14
|
+
import { Shell } from "./shell/Shell.js";
|
|
14
15
|
import { initializeWebPlumbing } from "./web_plumbing.js";
|
|
15
16
|
|
|
16
17
|
const PROMPT = "matter> ";
|
|
@@ -45,7 +46,7 @@ export function setLogLevel(identifier: string, level: string): void {
|
|
|
45
46
|
* @file Top level application for Matter Node.
|
|
46
47
|
*/
|
|
47
48
|
async function main() {
|
|
48
|
-
const yargsInstance = yargs(
|
|
49
|
+
const yargsInstance = yargs()
|
|
49
50
|
.command(
|
|
50
51
|
"* [node-num] [node-type]",
|
|
51
52
|
"Matter Node Shell",
|
|
@@ -63,9 +64,11 @@ async function main() {
|
|
|
63
64
|
type: "string",
|
|
64
65
|
})
|
|
65
66
|
.options({
|
|
66
|
-
ble: {
|
|
67
|
+
"ble-enable": {
|
|
67
68
|
description: "Enable BLE support.",
|
|
68
69
|
type: "boolean",
|
|
70
|
+
default: false,
|
|
71
|
+
alias: "b",
|
|
69
72
|
},
|
|
70
73
|
bleHciId: {
|
|
71
74
|
description:
|
|
@@ -107,11 +110,13 @@ async function main() {
|
|
|
107
110
|
});
|
|
108
111
|
},
|
|
109
112
|
async argv => {
|
|
110
|
-
if (argv.help)
|
|
113
|
+
if (argv.help) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
111
116
|
|
|
112
117
|
const {
|
|
113
118
|
nodeNum,
|
|
114
|
-
|
|
119
|
+
bleEnable,
|
|
115
120
|
bleHciId,
|
|
116
121
|
nodeType,
|
|
117
122
|
factoryReset,
|
|
@@ -147,15 +152,15 @@ async function main() {
|
|
|
147
152
|
theShell = new Shell(theNode, nodeNum, PROMPT, process.stdin, process.stdout);
|
|
148
153
|
}
|
|
149
154
|
|
|
150
|
-
if (
|
|
151
|
-
Environment.default.vars.set("ble.
|
|
155
|
+
if (bleEnable) {
|
|
156
|
+
Environment.default.vars.set("ble.enable", true);
|
|
152
157
|
}
|
|
153
158
|
|
|
154
|
-
if (
|
|
155
|
-
Environment.default.vars.set("ble.
|
|
159
|
+
if (bleHciId !== undefined) {
|
|
160
|
+
Environment.default.vars.set("ble.hci.id", bleHciId);
|
|
156
161
|
}
|
|
157
162
|
|
|
158
|
-
console.log(`Started Node #${nodeNum} (Type: ${nodeType}) ${
|
|
163
|
+
console.log(`Started Node #${nodeNum} (Type: ${nodeType}) ${bleEnable ? "with" : "without"} BLE`);
|
|
159
164
|
if (!webSocketInterface) {
|
|
160
165
|
theShell.start(theNode.storageLocation);
|
|
161
166
|
}
|
|
@@ -164,7 +169,7 @@ async function main() {
|
|
|
164
169
|
.version(false)
|
|
165
170
|
.scriptName("shell")
|
|
166
171
|
.strict();
|
|
167
|
-
await yargsInstance.wrap(yargsInstance.terminalWidth()).
|
|
172
|
+
await yargsInstance.wrap(yargsInstance.terminalWidth()).parse(hideBin(process.argv));
|
|
168
173
|
}
|
|
169
174
|
|
|
170
175
|
process.on("message", function (message) {
|
package/src/shell/Shell.ts
CHANGED
|
@@ -4,19 +4,19 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { MatterError } from "#general";
|
|
7
|
+
import { Logger, MatterError } from "#general";
|
|
8
8
|
import { createWriteStream, readFileSync } from "node:fs";
|
|
9
9
|
import readline from "node:readline";
|
|
10
10
|
import { Readable, Writable } from "node:stream";
|
|
11
11
|
import { inspect } from "node:util";
|
|
12
12
|
import yargs from "yargs/yargs";
|
|
13
13
|
import { MatterNode } from "../MatterNode.js";
|
|
14
|
-
import { exit } from "../app";
|
|
14
|
+
import { exit } from "../app.js";
|
|
15
15
|
import { commandlineParser } from "../util/CommandlineParser.js";
|
|
16
16
|
import cmdCert from "./cmd_cert.js";
|
|
17
|
-
import cmdAttributes from "./cmd_cluster-attributes";
|
|
18
|
-
import cmdCommands from "./cmd_cluster-commands";
|
|
19
|
-
import cmdEvents from "./cmd_cluster-events";
|
|
17
|
+
import cmdAttributes from "./cmd_cluster-attributes.js";
|
|
18
|
+
import cmdCommands from "./cmd_cluster-commands.js";
|
|
19
|
+
import cmdEvents from "./cmd_cluster-events.js";
|
|
20
20
|
import cmdCommission from "./cmd_commission.js";
|
|
21
21
|
import cmdConfig from "./cmd_config.js";
|
|
22
22
|
import cmdDcl from "./cmd_dcl.js";
|
|
@@ -26,9 +26,11 @@ import cmdNodes from "./cmd_nodes.js";
|
|
|
26
26
|
import cmdOta from "./cmd_ota.js";
|
|
27
27
|
import cmdSession from "./cmd_session.js";
|
|
28
28
|
import cmdSubscribe from "./cmd_subscribe.js";
|
|
29
|
-
import cmdTlv from "./cmd_tlv";
|
|
29
|
+
import cmdTlv from "./cmd_tlv.js";
|
|
30
30
|
import cmdVendor from "./cmd_vendor.js";
|
|
31
31
|
|
|
32
|
+
const logger = Logger.get("Shell");
|
|
33
|
+
|
|
32
34
|
const MAX_HISTORY_SIZE = 1000;
|
|
33
35
|
|
|
34
36
|
function exitCommand() {
|
|
@@ -183,6 +185,7 @@ export class Shell {
|
|
|
183
185
|
console.log("Done.");
|
|
184
186
|
}
|
|
185
187
|
} catch (error) {
|
|
188
|
+
logger.error(`Error during command execution:`, error);
|
|
186
189
|
process.stderr.write(`Error happened during command: ${error}\n`);
|
|
187
190
|
if (error instanceof Error && error.stack) {
|
|
188
191
|
const errorText = inspect(error, { depth: 10 });
|
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Diagnostic } from "#general";
|
|
7
|
+
import { camelize, Diagnostic } from "#general";
|
|
8
8
|
import { AttributeModel, ClusterModel, MatterModel } from "#model";
|
|
9
9
|
import { SupportedAttributeClient } from "#protocol";
|
|
10
10
|
import { AttributeId, ClusterId, EndpointNumber, ValidationError } from "#types";
|
|
11
11
|
import type { Argv } from "yargs";
|
|
12
|
-
import { MatterNode } from "../MatterNode";
|
|
13
|
-
import { convertJsonDataWithModel } from "../util/Json";
|
|
14
|
-
import { camelize } from "../util/String";
|
|
12
|
+
import { MatterNode } from "../MatterNode.js";
|
|
13
|
+
import { convertJsonDataWithModel } from "../util/Json.js";
|
|
15
14
|
|
|
16
15
|
function generateAllAttributeHandlersForCluster(yargs: Argv, theNode: MatterNode) {
|
|
17
16
|
MatterModel.standard.clusters.forEach(cluster => {
|
|
@@ -4,13 +4,12 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Diagnostic } from "#general";
|
|
7
|
+
import { camelize, Diagnostic } from "#general";
|
|
8
8
|
import { ClusterModel, CommandModel, MatterModel } from "#model";
|
|
9
9
|
import { ClusterId, ValidationError } from "#types";
|
|
10
10
|
import type { Argv } from "yargs";
|
|
11
|
-
import { MatterNode } from "../MatterNode";
|
|
12
|
-
import { convertJsonDataWithModel } from "../util/Json";
|
|
13
|
-
import { camelize } from "../util/String";
|
|
11
|
+
import { MatterNode } from "../MatterNode.js";
|
|
12
|
+
import { convertJsonDataWithModel } from "../util/Json.js";
|
|
14
13
|
|
|
15
14
|
function generateAllCommandHandlersForCluster(yargs: Argv, theNode: MatterNode) {
|
|
16
15
|
MatterModel.standard.clusters.forEach(cluster => {
|
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Diagnostic } from "#general";
|
|
7
|
+
import { camelize, Diagnostic } from "#general";
|
|
8
8
|
import { ClusterModel, EventModel, MatterModel } from "#model";
|
|
9
9
|
import { ClusterId } from "#types";
|
|
10
10
|
import type { Argv } from "yargs";
|
|
11
|
-
import { MatterNode } from "../MatterNode";
|
|
12
|
-
import { camelize } from "../util/String";
|
|
11
|
+
import { MatterNode } from "../MatterNode.js";
|
|
13
12
|
|
|
14
13
|
function generateAllEventHandlersForCluster(yargs: Argv, theNode: MatterNode) {
|
|
15
14
|
MatterModel.standard.clusters.forEach(cluster => {
|
|
@@ -9,8 +9,8 @@ import { DiscoveryCapabilitiesSchema, ManualPairingCodeCodec, NodeId, QrCode, Qr
|
|
|
9
9
|
import { BasicInformationCluster, DescriptorCluster, GeneralCommissioning } from "@matter/types/clusters";
|
|
10
10
|
import { NodeCommissioningOptions } from "@project-chip/matter.js";
|
|
11
11
|
import type { Argv } from "yargs";
|
|
12
|
-
import { MatterNode } from "../MatterNode";
|
|
13
|
-
import { createDiagnosticCallbacks } from "./cmd_nodes";
|
|
12
|
+
import { MatterNode } from "../MatterNode.js";
|
|
13
|
+
import { createDiagnosticCallbacks } from "./cmd_nodes.js";
|
|
14
14
|
|
|
15
15
|
export default function commands(theNode: MatterNode) {
|
|
16
16
|
return {
|
package/src/shell/cmd_config.ts
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
import { Logger } from "#general";
|
|
8
8
|
import { DclCertificateService } from "@matter/protocol";
|
|
9
9
|
import { Argv } from "yargs";
|
|
10
|
-
import { MatterNode } from "../MatterNode";
|
|
11
|
-
import { setLogLevel } from "../app";
|
|
10
|
+
import { MatterNode } from "../MatterNode.js";
|
|
11
|
+
import { setLogLevel } from "../app.js";
|
|
12
12
|
|
|
13
13
|
export default function commands(theNode: MatterNode) {
|
|
14
14
|
return {
|
|
@@ -8,7 +8,7 @@ import { Diagnostic, Seconds } from "#general";
|
|
|
8
8
|
import { CommissionableDeviceIdentifiers } from "#protocol";
|
|
9
9
|
import { ManualPairingCodeCodec, VendorId } from "#types";
|
|
10
10
|
import type { Argv } from "yargs";
|
|
11
|
-
import { MatterNode } from "../MatterNode";
|
|
11
|
+
import { MatterNode } from "../MatterNode.js";
|
|
12
12
|
|
|
13
13
|
export default function commands(theNode: MatterNode) {
|
|
14
14
|
return {
|
package/src/shell/cmd_nodes.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { capitalize, decamelize, Diagnostic } from "#general";
|
|
|
8
8
|
import { NodeId, VendorId } from "#types";
|
|
9
9
|
import { CommissioningControllerNodeOptions, NodeStateInformation } from "@project-chip/matter.js/device";
|
|
10
10
|
import type { Argv } from "yargs";
|
|
11
|
-
import { MatterNode } from "../MatterNode";
|
|
11
|
+
import { MatterNode } from "../MatterNode.js";
|
|
12
12
|
|
|
13
13
|
export function createDiagnosticCallbacks(): Partial<CommissioningControllerNodeOptions> {
|
|
14
14
|
return {
|
package/src/shell/cmd_session.ts
CHANGED
package/src/util/Json.ts
CHANGED
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Bytes } from "#general";
|
|
7
|
+
import { Bytes, camelize } from "#general";
|
|
8
8
|
import { ValueModel } from "#model";
|
|
9
9
|
import { ValidationDatatypeMismatchError } from "#types";
|
|
10
|
-
import { camelize } from "./String";
|
|
11
10
|
|
|
12
11
|
export function convertJsonDataWithModel(model: ValueModel, data: any): any {
|
|
13
12
|
const definingModel = model.definingModel ?? model;
|
package/src/web_plumbing.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { Logger, LogLevel, NotImplementedError } from "@matter/general";
|
|
|
8
8
|
import { Readable, Writable } from "node:stream";
|
|
9
9
|
import WebSocket, { Data, WebSocketServer } from "ws";
|
|
10
10
|
import { MatterNode } from "./MatterNode.js";
|
|
11
|
-
import { Shell } from "./shell/Shell";
|
|
11
|
+
import { Shell } from "./shell/Shell.js";
|
|
12
12
|
|
|
13
13
|
import fs from "fs";
|
|
14
14
|
import http, { Server } from "node:http";
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/MatterNode.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/cjs/app.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/app.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["yargs"]
|
|
6
|
-
}
|