@matter/cli-tool 0.11.0-alpha.0-20241013-d38e934bb
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/LICENSE +201 -0
- package/README.md +1 -0
- package/bin/matter.js +3 -0
- package/dist/esm/cli.js +19 -0
- package/dist/esm/cli.js.map +6 -0
- package/dist/esm/commands/cat.js +17 -0
- package/dist/esm/commands/cat.js.map +6 -0
- package/dist/esm/commands/cd.js +23 -0
- package/dist/esm/commands/cd.js.map +6 -0
- package/dist/esm/commands/cwd.js +16 -0
- package/dist/esm/commands/cwd.js.map +6 -0
- package/dist/esm/commands/help.js +11 -0
- package/dist/esm/commands/help.js.map +6 -0
- package/dist/esm/commands/index.js +13 -0
- package/dist/esm/commands/index.js.map +6 -0
- package/dist/esm/commands/ls.js +179 -0
- package/dist/esm/commands/ls.js.map +6 -0
- package/dist/esm/commands/rm.js +21 -0
- package/dist/esm/commands/rm.js.map +6 -0
- package/dist/esm/commands/set.js +28 -0
- package/dist/esm/commands/set.js.map +6 -0
- package/dist/esm/domain.js +178 -0
- package/dist/esm/domain.js.map +6 -0
- package/dist/esm/errors.js +54 -0
- package/dist/esm/errors.js.map +6 -0
- package/dist/esm/globals.js +28 -0
- package/dist/esm/globals.js.map +6 -0
- package/dist/esm/location.js +149 -0
- package/dist/esm/location.js.map +6 -0
- package/dist/esm/package.json +12 -0
- package/dist/esm/parser.js +174 -0
- package/dist/esm/parser.js.map +6 -0
- package/dist/esm/providers/endpoint.js +38 -0
- package/dist/esm/providers/endpoint.js.map +6 -0
- package/dist/esm/providers/index.js +9 -0
- package/dist/esm/providers/index.js.map +6 -0
- package/dist/esm/providers/model.js +40 -0
- package/dist/esm/providers/model.js.map +6 -0
- package/dist/esm/providers/module.js +26 -0
- package/dist/esm/providers/module.js.map +6 -0
- package/dist/esm/repl.js +134 -0
- package/dist/esm/repl.js.map +6 -0
- package/dist/esm/stat.js +63 -0
- package/dist/esm/stat.js.map +6 -0
- package/package.json +69 -0
- package/src/cli.ts +21 -0
- package/src/commands/cat.ts +19 -0
- package/src/commands/cd.ts +28 -0
- package/src/commands/cwd.ts +18 -0
- package/src/commands/help.ts +14 -0
- package/src/commands/index.ts +13 -0
- package/src/commands/ls.ts +232 -0
- package/src/commands/rm.ts +25 -0
- package/src/commands/set.ts +32 -0
- package/src/domain.ts +221 -0
- package/src/errors.ts +54 -0
- package/src/globals.ts +29 -0
- package/src/location.ts +193 -0
- package/src/parser.ts +254 -0
- package/src/providers/endpoint.ts +44 -0
- package/src/providers/index.ts +9 -0
- package/src/providers/model.ts +45 -0
- package/src/providers/module.ts +30 -0
- package/src/repl.ts +168 -0
- package/src/stat.ts +121 -0
- package/src/tsconfig.json +27 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/providers/endpoint.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AACzB,SAAS,WAAW,YAAY;AAEhC,KAAK,QAAQ,cAAY;AACrB,MAAI,CAAC,WAAW,QAAQ,GAAG;AACvB;AAAA,EACJ;AAEA,SAAO,UAAU;AAAA,IACb,aAAa,MAAM;AACf,YAAM,OAAO,SAAS,MAAM,IAAI,IAAI;AAEpC,UAAI,MAAM;AACN,YAAI,CAAC,KAAK,UAAU,SAAS;AACzB,iBAAO,KAAK,aAAa,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC;AAAA,QACrD;AACA,eAAO,KAAK,GAAG,IAAI;AAAA,MACvB;AAAA,IACJ;AAAA,IAEA,QAAQ;AACJ,UAAI,CAAC,SAAS,UAAU,cAAc;AAClC,eAAO,SAAS,aAAa,KAAK,MAAM,SAAS,MAAM,IAAI,UAAQ,KAAK,EAAE,CAAC;AAAA,MAC/E;AACA,aAAO,SAAS,MAAM,IAAI,UAAQ,KAAK,EAAE;AAAA,IAC7C;AAAA,EACJ,CAAC;AACL,CAAC;AAED,SAAS,WAAW,MAAiC;AACjD,SAAO,gBAAgB;AAC3B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Model } from "#model";
|
|
7
|
+
import { Directory, Stat } from "#stat.js";
|
|
8
|
+
Stat.provide((model) => {
|
|
9
|
+
if (!isModel(model)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const details = {
|
|
13
|
+
name: model.description,
|
|
14
|
+
summary: model.details,
|
|
15
|
+
id: model.id,
|
|
16
|
+
tag: model.tag
|
|
17
|
+
};
|
|
18
|
+
if (!model.children.length) {
|
|
19
|
+
return {
|
|
20
|
+
kind: "file",
|
|
21
|
+
...details
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return Directory({
|
|
25
|
+
...details,
|
|
26
|
+
paths() {
|
|
27
|
+
return model.children.map((child) => child.name);
|
|
28
|
+
},
|
|
29
|
+
definitionAt(name) {
|
|
30
|
+
return model.children.find((model2) => model2.name === name);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
function isModel(model) {
|
|
35
|
+
if (model instanceof Model) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/providers/model.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa;AACtB,SAAS,WAAW,YAAY;AAEhC,KAAK,QAAQ,WAAS;AAClB,MAAI,CAAC,QAAQ,KAAK,GAAG;AACjB;AAAA,EACJ;AAEA,QAAM,UAAqB;AAAA,IACvB,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,IACf,IAAI,MAAM;AAAA,IACV,KAAK,MAAM;AAAA,EACf;AAEA,MAAI,CAAC,MAAM,SAAS,QAAQ;AACxB,WAAO;AAAA,MACH,MAAM;AAAA,MACN,GAAG;AAAA,IACP;AAAA,EACJ;AAEA,SAAO,UAAU;AAAA,IACb,GAAG;AAAA,IACH,QAAQ;AACJ,aAAO,MAAM,SAAS,IAAI,WAAS,MAAM,IAAI;AAAA,IACjD;AAAA,IACA,aAAa,MAAc;AACvB,aAAO,MAAM,SAAS,KAAK,CAAAA,WAASA,OAAM,SAAS,IAAI;AAAA,IAC3D;AAAA,EACJ,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,OAAgC;AAC7C,MAAI,iBAAiB,OAAO;AACxB,WAAO;AAAA,EACX;AACA,SAAO;AACX;",
|
|
5
|
+
"names": ["model"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Directory, Stat } from "#stat.js";
|
|
7
|
+
Stat.provide((definition) => {
|
|
8
|
+
if (!isModule(definition)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
return Directory({
|
|
12
|
+
paths() {
|
|
13
|
+
return Object.keys(definition);
|
|
14
|
+
},
|
|
15
|
+
definitionAt(path) {
|
|
16
|
+
return definition[path];
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
function isModule(definition) {
|
|
21
|
+
if (typeof definition !== "object" || definition === null) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return definition[Symbol.toStringTag] === "Module";
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/providers/module.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,WAAW,YAAY;AAEhC,KAAK,QAAQ,gBAAc;AACvB,MAAI,CAAC,SAAS,UAAU,GAAG;AACvB;AAAA,EACJ;AAEA,SAAO,UAAU;AAAA,IACb,QAAQ;AACJ,aAAO,OAAO,KAAK,UAAU;AAAA,IACjC;AAAA,IAEA,aAAa,MAAc;AACvB,aAAO,WAAW,IAAI;AAAA,IAC1B;AAAA,EACJ,CAAC;AACL,CAAC;AAED,SAAS,SAAS,YAA4D;AAC1E,MAAI,OAAO,eAAe,YAAY,eAAe,MAAM;AACvD,WAAO;AAAA,EACX;AACA,SAAQ,WAAmB,OAAO,WAAW,MAAM;AACvD;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/esm/repl.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Domain } from "#domain.js";
|
|
7
|
+
import { Diagnostic, LogFormat } from "#general";
|
|
8
|
+
import { isCommand } from "#parser.js";
|
|
9
|
+
import colors from "ansi-colors";
|
|
10
|
+
import { homedir } from "os";
|
|
11
|
+
import { join } from "path";
|
|
12
|
+
import { Recoverable, start } from "repl";
|
|
13
|
+
import "./commands/index.js";
|
|
14
|
+
import "./providers/index.js";
|
|
15
|
+
const LINE_PROTECTOR_CHAR = "";
|
|
16
|
+
async function repl() {
|
|
17
|
+
const domain = Domain();
|
|
18
|
+
let server = void 0;
|
|
19
|
+
const doEval = function(evalCmd, _context, _file, cb) {
|
|
20
|
+
evalCmd = evalCmd.replace(new RegExp(LINE_PROTECTOR_CHAR, "g"), "");
|
|
21
|
+
if (evalCmd.endsWith("\n")) {
|
|
22
|
+
evalCmd = evalCmd.slice(0, evalCmd.length - 1);
|
|
23
|
+
}
|
|
24
|
+
const result = domain.execute(evalCmd);
|
|
25
|
+
result.then(handleSuccess, handleError);
|
|
26
|
+
function handleSuccess(result2) {
|
|
27
|
+
server?.setPrompt(createPrompt());
|
|
28
|
+
cb(null, result2);
|
|
29
|
+
}
|
|
30
|
+
function handleError(error) {
|
|
31
|
+
server?.setPrompt(createPrompt());
|
|
32
|
+
if (error.constructor.name === "IncompleteError") {
|
|
33
|
+
cb(new Recoverable(error.cause), void 0);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const stack = error.stack;
|
|
37
|
+
if (stack !== void 0) {
|
|
38
|
+
const lines = stack.split("\n");
|
|
39
|
+
let specialLoc;
|
|
40
|
+
let specialLine;
|
|
41
|
+
if ("isCliError" in error) {
|
|
42
|
+
specialLine = 1;
|
|
43
|
+
} else {
|
|
44
|
+
specialLine = lines.findIndex((line) => {
|
|
45
|
+
const match = line.match(/at matter-cli-(?:[a-z]+):([0-9]+:[0-9]+)?/);
|
|
46
|
+
if (match) {
|
|
47
|
+
specialLoc = match[1];
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
if (specialLine === 1) {
|
|
53
|
+
if (specialLoc) {
|
|
54
|
+
error.message += ` (${specialLoc})`;
|
|
55
|
+
}
|
|
56
|
+
error.stack = `${error.constructor.name}: ${error.message}`;
|
|
57
|
+
} else if (specialLine !== -1) {
|
|
58
|
+
error.stack = lines.slice(0, specialLine + 1).join("\n");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const diagnostic = Diagnostic.error(error);
|
|
62
|
+
const formatted = LogFormat[colors.enabled ? "ansi" : "plain"](diagnostic);
|
|
63
|
+
process.stderr.write(`${formatted}
|
|
64
|
+
`);
|
|
65
|
+
cb(null, void 0);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
server = start({
|
|
69
|
+
prompt: createPrompt(),
|
|
70
|
+
eval: doEval,
|
|
71
|
+
ignoreUndefined: true
|
|
72
|
+
});
|
|
73
|
+
const historyPath = process.env.MATTER_REPL_HISTORY || join(homedir(), ".matter-cli-history");
|
|
74
|
+
server.setupHistory(historyPath, (error) => {
|
|
75
|
+
if (error) {
|
|
76
|
+
console.error(error);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const realEmit = server.emit;
|
|
81
|
+
server.emit = (event, ...args) => {
|
|
82
|
+
if (event === "line") {
|
|
83
|
+
args[0] = `${LINE_PROTECTOR_CHAR}${args[0]}`;
|
|
84
|
+
}
|
|
85
|
+
return realEmit.call(server, event, ...args);
|
|
86
|
+
};
|
|
87
|
+
const complete = (line, callback) => {
|
|
88
|
+
findCompletions(line).then((result) => {
|
|
89
|
+
if (result) {
|
|
90
|
+
callback(null, result);
|
|
91
|
+
} else {
|
|
92
|
+
nodeCompleter.call(server, line, callback);
|
|
93
|
+
}
|
|
94
|
+
}, callback);
|
|
95
|
+
};
|
|
96
|
+
const nodeCompleter = server.completer;
|
|
97
|
+
Object.defineProperty(server, "completer", { value: complete });
|
|
98
|
+
function createPrompt() {
|
|
99
|
+
return `${colors.dim("matter")} ${colors.yellow(domain.location.path)} \u276F `;
|
|
100
|
+
}
|
|
101
|
+
async function findCompletions(line) {
|
|
102
|
+
if (line.endsWith("/") ? !isCommand(line.slice(0, line.length - 1)) : !isCommand(line)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const possiblePath = line.replace(/^.*\s/u, "");
|
|
106
|
+
if (!possiblePath.match(/^[/0-9\p{L}$_%]*$/u)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const pathsToSearch = Array();
|
|
110
|
+
const slashPos = possiblePath.lastIndexOf("/");
|
|
111
|
+
let partial;
|
|
112
|
+
if (slashPos === -1) {
|
|
113
|
+
pathsToSearch.push("");
|
|
114
|
+
pathsToSearch.push("/bin");
|
|
115
|
+
partial = possiblePath;
|
|
116
|
+
} else {
|
|
117
|
+
pathsToSearch.push(possiblePath.slice(0, slashPos));
|
|
118
|
+
partial = possiblePath.slice(slashPos + 1);
|
|
119
|
+
}
|
|
120
|
+
const completions = Array();
|
|
121
|
+
for (const path of pathsToSearch) {
|
|
122
|
+
const location = await domain.location.maybeAt(path);
|
|
123
|
+
if (location?.kind !== "directory") {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
completions.push(...(await location.paths).filter((path2) => path2.startsWith(partial)));
|
|
127
|
+
}
|
|
128
|
+
return [completions.sort(), partial];
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export {
|
|
132
|
+
repl
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=repl.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/repl.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["result", "path"]
|
|
6
|
+
}
|
package/dist/esm/stat.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
function Directory(options) {
|
|
7
|
+
const { name, summary, id, tag, paths, definitionAt } = options;
|
|
8
|
+
return {
|
|
9
|
+
kind: "directory",
|
|
10
|
+
name,
|
|
11
|
+
summary,
|
|
12
|
+
id,
|
|
13
|
+
tag,
|
|
14
|
+
get paths() {
|
|
15
|
+
return paths();
|
|
16
|
+
},
|
|
17
|
+
definitionAt(path) {
|
|
18
|
+
return definitionAt(path);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const providers = Array();
|
|
23
|
+
var Stat;
|
|
24
|
+
((Stat2) => {
|
|
25
|
+
function of(definition) {
|
|
26
|
+
for (const provider of providers) {
|
|
27
|
+
const stat = provider(definition);
|
|
28
|
+
if (stat) {
|
|
29
|
+
return stat;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (isDirectory(definition)) {
|
|
33
|
+
return {
|
|
34
|
+
kind: "directory",
|
|
35
|
+
get paths() {
|
|
36
|
+
return Object.keys(definition);
|
|
37
|
+
},
|
|
38
|
+
definitionAt(path) {
|
|
39
|
+
if (path in definition) {
|
|
40
|
+
return definition[path];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
kind: "file"
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
Stat2.of = of;
|
|
50
|
+
function provide(provider) {
|
|
51
|
+
providers.push(provider);
|
|
52
|
+
}
|
|
53
|
+
Stat2.provide = provide;
|
|
54
|
+
function isDirectory(definition) {
|
|
55
|
+
return typeof definition === "object" && definition !== null && !Array.isArray(definition) && !ArrayBuffer.isView(definition) && !(definition instanceof Date);
|
|
56
|
+
}
|
|
57
|
+
Stat2.isDirectory = isDirectory;
|
|
58
|
+
})(Stat || (Stat = {}));
|
|
59
|
+
export {
|
|
60
|
+
Directory,
|
|
61
|
+
Stat
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=stat.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/stat.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAwBO,SAAS,UAAU,SAOZ;AACV,QAAM,EAAE,MAAM,SAAS,IAAI,KAAK,OAAO,aAAa,IAAI;AACxD,SAAO;AAAA,IACH,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,IAAI,QAAQ;AACR,aAAO,MAAM;AAAA,IACjB;AAAA,IAEA,aAAa,MAAc;AACvB,aAAO,aAAa,IAAI;AAAA,IAC5B;AAAA,EACJ;AACJ;AAWA,MAAM,YAAY,MAAoB;AAE/B,IAAU;AAAA,CAAV,CAAUA,UAAV;AAWI,WAAS,GAAG,YAA2B;AAC1C,eAAW,YAAY,WAAW;AAC9B,YAAM,OAAO,SAAS,UAAU;AAChC,UAAI,MAAM;AACN,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,YAAY,UAAU,GAAG;AACzB,aAAO;AAAA,QACH,MAAM;AAAA,QAEN,IAAI,QAAQ;AACR,iBAAO,OAAO,KAAK,UAAU;AAAA,QACjC;AAAA,QAEA,aAAa,MAAc;AACvB,cAAI,QAAQ,YAAY;AACpB,mBAAO,WAAW,IAAI;AAAA,UAC1B;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,EACJ;AA3BO,EAAAA,MAAS;AAgCT,WAAS,QAAQ,UAAwB;AAC5C,cAAU,KAAK,QAAQ;AAAA,EAC3B;AAFO,EAAAA,MAAS;AAOT,WAAS,YAAY,YAA4D;AACpF,WACI,OAAO,eAAe,YACtB,eAAe,QACf,CAAC,MAAM,QAAQ,UAAU,KACzB,CAAC,YAAY,OAAO,UAAU,KAC9B,EAAE,sBAAsB;AAAA,EAEhC;AARO,EAAAA,MAAS;AAAA,GAlDH;",
|
|
5
|
+
"names": ["Stat"]
|
|
6
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@matter/cli-tool",
|
|
3
|
+
"version": "0.11.0-alpha.0-20241013-d38e934bb",
|
|
4
|
+
"description": "Command line tool for interacting with Matter",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"iot",
|
|
7
|
+
"home automation",
|
|
8
|
+
"matter",
|
|
9
|
+
"smart device"
|
|
10
|
+
],
|
|
11
|
+
"license": "Apache-2.0",
|
|
12
|
+
"author": "matter.js authors",
|
|
13
|
+
"contributors": [
|
|
14
|
+
"Greg Lauckhart <greg@lauckhart.com>"
|
|
15
|
+
],
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/project-chip/matter.js/issues"
|
|
18
|
+
},
|
|
19
|
+
"homepage": "https://github.com/project-chip/matter.js",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/project-chip/matter.js.git"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"clean": "matter-build clean",
|
|
26
|
+
"build": "matter-build",
|
|
27
|
+
"build-clean": "matter-build --clean",
|
|
28
|
+
"matter": "matter-run bin/matter.js"
|
|
29
|
+
},
|
|
30
|
+
"bin": {
|
|
31
|
+
"matter": "bin/matter.js"
|
|
32
|
+
},
|
|
33
|
+
"imports": {
|
|
34
|
+
"#tools": "@matter/tools",
|
|
35
|
+
"#general": "@matter/general",
|
|
36
|
+
"#model": "@matter/model",
|
|
37
|
+
"#types": "@matter/types",
|
|
38
|
+
"#protocol": "@matter/protocol",
|
|
39
|
+
"#node": "@matter/node",
|
|
40
|
+
"#*": "./src/*"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@matter/general": "0.11.0-alpha.0-20241013-d38e934bb",
|
|
44
|
+
"@matter/model": "0.11.0-alpha.0-20241013-d38e934bb",
|
|
45
|
+
"@matter/node": "0.11.0-alpha.0-20241013-d38e934bb",
|
|
46
|
+
"@matter/protocol": "0.11.0-alpha.0-20241013-d38e934bb",
|
|
47
|
+
"@matter/tools": "0.11.0-alpha.0-20241013-d38e934bb",
|
|
48
|
+
"@matter/types": "0.11.0-alpha.0-20241013-d38e934bb",
|
|
49
|
+
"@types/escodegen": "^0.0.10",
|
|
50
|
+
"acorn": "^8.12.1",
|
|
51
|
+
"ansi-colors": "^4.1.3",
|
|
52
|
+
"escodegen": "^2.1.0",
|
|
53
|
+
"yargs": "^17.7.2"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@matter/tools": "0.11.0-alpha.0-20241013-d38e934bb",
|
|
57
|
+
"@types/yargs": "^17.0.33"
|
|
58
|
+
},
|
|
59
|
+
"files": [
|
|
60
|
+
"dist/**/*",
|
|
61
|
+
"src/**/*",
|
|
62
|
+
"LICENSE",
|
|
63
|
+
"README.md"
|
|
64
|
+
],
|
|
65
|
+
"type": "module",
|
|
66
|
+
"publishConfig": {
|
|
67
|
+
"access": "public"
|
|
68
|
+
}
|
|
69
|
+
}
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { repl } from "#repl.js";
|
|
8
|
+
import colors from "ansi-colors";
|
|
9
|
+
import { stdout } from "process";
|
|
10
|
+
import yargs from "yargs";
|
|
11
|
+
import { hideBin } from "yargs/helpers";
|
|
12
|
+
|
|
13
|
+
export async function main(argv: string[]) {
|
|
14
|
+
colors.enabled = stdout.isTTY;
|
|
15
|
+
|
|
16
|
+
await yargs(hideBin(argv)).usage("Interact with the local Matter environment.").strict().argv;
|
|
17
|
+
|
|
18
|
+
// TODO - REPL is enough for testing but need proper CLI
|
|
19
|
+
|
|
20
|
+
await repl();
|
|
21
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { bin } from "#globals.js";
|
|
8
|
+
import { stdout } from "process";
|
|
9
|
+
import { inspect } from "util";
|
|
10
|
+
|
|
11
|
+
bin.cat = async function (...args: unknown[]) {
|
|
12
|
+
const locations = await Promise.all(args.map(arg => this.location.at(`${arg}`)));
|
|
13
|
+
for (const location of locations) {
|
|
14
|
+
stdout.write(inspect(location.definition, false, 1, stdout.isTTY));
|
|
15
|
+
stdout.write("\n");
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
bin.inspect = bin.cat;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { NotADirectoryError, TooManyArgsError } from "#errors.js";
|
|
8
|
+
import { bin } from "#globals.js";
|
|
9
|
+
|
|
10
|
+
bin.cd = async function (path, ...extraArgs: unknown[]) {
|
|
11
|
+
if (extraArgs.length) {
|
|
12
|
+
throw new TooManyArgsError("cd");
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (path === undefined) {
|
|
16
|
+
path = "/";
|
|
17
|
+
} else {
|
|
18
|
+
path = `${path}`;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const location = await this.location.at(path as string);
|
|
22
|
+
|
|
23
|
+
if (location.kind !== "directory") {
|
|
24
|
+
throw new NotADirectoryError(path);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
this.location = location;
|
|
28
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { TooManyArgsError } from "#errors.js";
|
|
8
|
+
import { bin } from "#globals.js";
|
|
9
|
+
import { stdout } from "process";
|
|
10
|
+
|
|
11
|
+
bin.cwd = function (...args: unknown[]) {
|
|
12
|
+
if (args.length) {
|
|
13
|
+
throw new TooManyArgsError("cwd");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
stdout.write(this.location.path);
|
|
17
|
+
stdout.write("\n");
|
|
18
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { bin } from "#globals.js";
|
|
8
|
+
|
|
9
|
+
bin.help = function () {
|
|
10
|
+
// TODO - be helpful
|
|
11
|
+
process.stdout.write("Help is on the way!\n");
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
bin.man = bin.help;
|