@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.
Files changed (66) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -0
  3. package/bin/matter.js +3 -0
  4. package/dist/esm/cli.js +19 -0
  5. package/dist/esm/cli.js.map +6 -0
  6. package/dist/esm/commands/cat.js +17 -0
  7. package/dist/esm/commands/cat.js.map +6 -0
  8. package/dist/esm/commands/cd.js +23 -0
  9. package/dist/esm/commands/cd.js.map +6 -0
  10. package/dist/esm/commands/cwd.js +16 -0
  11. package/dist/esm/commands/cwd.js.map +6 -0
  12. package/dist/esm/commands/help.js +11 -0
  13. package/dist/esm/commands/help.js.map +6 -0
  14. package/dist/esm/commands/index.js +13 -0
  15. package/dist/esm/commands/index.js.map +6 -0
  16. package/dist/esm/commands/ls.js +179 -0
  17. package/dist/esm/commands/ls.js.map +6 -0
  18. package/dist/esm/commands/rm.js +21 -0
  19. package/dist/esm/commands/rm.js.map +6 -0
  20. package/dist/esm/commands/set.js +28 -0
  21. package/dist/esm/commands/set.js.map +6 -0
  22. package/dist/esm/domain.js +178 -0
  23. package/dist/esm/domain.js.map +6 -0
  24. package/dist/esm/errors.js +54 -0
  25. package/dist/esm/errors.js.map +6 -0
  26. package/dist/esm/globals.js +28 -0
  27. package/dist/esm/globals.js.map +6 -0
  28. package/dist/esm/location.js +149 -0
  29. package/dist/esm/location.js.map +6 -0
  30. package/dist/esm/package.json +12 -0
  31. package/dist/esm/parser.js +174 -0
  32. package/dist/esm/parser.js.map +6 -0
  33. package/dist/esm/providers/endpoint.js +38 -0
  34. package/dist/esm/providers/endpoint.js.map +6 -0
  35. package/dist/esm/providers/index.js +9 -0
  36. package/dist/esm/providers/index.js.map +6 -0
  37. package/dist/esm/providers/model.js +40 -0
  38. package/dist/esm/providers/model.js.map +6 -0
  39. package/dist/esm/providers/module.js +26 -0
  40. package/dist/esm/providers/module.js.map +6 -0
  41. package/dist/esm/repl.js +134 -0
  42. package/dist/esm/repl.js.map +6 -0
  43. package/dist/esm/stat.js +63 -0
  44. package/dist/esm/stat.js.map +6 -0
  45. package/package.json +69 -0
  46. package/src/cli.ts +21 -0
  47. package/src/commands/cat.ts +19 -0
  48. package/src/commands/cd.ts +28 -0
  49. package/src/commands/cwd.ts +18 -0
  50. package/src/commands/help.ts +14 -0
  51. package/src/commands/index.ts +13 -0
  52. package/src/commands/ls.ts +232 -0
  53. package/src/commands/rm.ts +25 -0
  54. package/src/commands/set.ts +32 -0
  55. package/src/domain.ts +221 -0
  56. package/src/errors.ts +54 -0
  57. package/src/globals.ts +29 -0
  58. package/src/location.ts +193 -0
  59. package/src/parser.ts +254 -0
  60. package/src/providers/endpoint.ts +44 -0
  61. package/src/providers/index.ts +9 -0
  62. package/src/providers/model.ts +45 -0
  63. package/src/providers/module.ts +30 -0
  64. package/src/repl.ts +168 -0
  65. package/src/stat.ts +121 -0
  66. 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,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./endpoint.js";
7
+ export * from "./model.js";
8
+ export * from "./module.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/providers/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;",
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
+ }
@@ -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": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AAEvB,SAAS,YAAY,iBAAiB;AACtC,SAAS,iBAAiB;AAC1B,OAAO,YAAY;AACnB,SAAS,eAAe;AACxB,SAAS,YAAY;AAErB,SAAS,aAAmC,aAAa;AACzD,OAAO;AACP,OAAO;AAIP,MAAM,sBAAsB;AAE5B,eAAsB,OAAO;AACzB,QAAM,SAAS,OAAO;AAEtB,MAAI,SAAiC;AAErC,QAAM,SAAmB,SAAgB,SAAS,UAAU,OAAO,IAA8C;AAG7G,cAAU,QAAQ,QAAQ,IAAI,OAAO,qBAAqB,GAAG,GAAG,EAAE;AAElE,QAAI,QAAQ,SAAS,IAAI,GAAG;AACxB,gBAAU,QAAQ,MAAM,GAAG,QAAQ,SAAS,CAAC;AAAA,IACjD;AACA,UAAM,SAA2B,OAAO,QAAQ,OAAO;AACvD,WAAO,KAAK,eAAe,WAAW;AAEtC,aAAS,cAAcA,SAAiB;AACpC,cAAQ,UAAU,aAAa,CAAC;AAChC,SAAG,MAAMA,OAAM;AAAA,IACnB;AAEA,aAAS,YAAY,OAAc;AAC/B,cAAQ,UAAU,aAAa,CAAC;AAEhC,UAAI,MAAM,YAAY,SAAS,mBAAmB;AAC9C,WAAG,IAAI,YAAa,MAA0B,KAAc,GAAG,MAAS;AACxE;AAAA,MACJ;AAIA,YAAM,QAAQ,MAAM;AACpB,UAAI,UAAU,QAAW;AACrB,cAAM,QAAQ,MAAM,MAAM,IAAI;AAC9B,YAAI;AACJ,YAAI;AACJ,YAAI,gBAAgB,OAAO;AAEvB,wBAAc;AAAA,QAClB,OAAO;AAEH,wBAAc,MAAM,UAAU,UAAQ;AAClC,kBAAM,QAAQ,KAAK,MAAM,2CAA2C;AACpE,gBAAI,OAAO;AACP,2BAAa,MAAM,CAAC;AACpB,qBAAO;AAAA,YACX;AAAA,UACJ,CAAC;AAAA,QACL;AAEA,YAAI,gBAAgB,GAAG;AACnB,cAAI,YAAY;AACZ,kBAAM,WAAW,KAAK,UAAU;AAAA,UACpC;AACA,gBAAM,QAAQ,GAAG,MAAM,YAAY,IAAI,KAAK,MAAM,OAAO;AAAA,QAC7D,WAAW,gBAAgB,IAAI;AAC3B,gBAAM,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,IAAI;AAAA,QAC3D;AAAA,MACJ;AAGA,YAAM,aAAa,WAAW,MAAM,KAAK;AACzC,YAAM,YAAY,UAAU,OAAO,UAAU,SAAS,OAAO,EAAE,UAAU;AACzE,cAAQ,OAAO,MAAM,GAAG,SAAS;AAAA,CAAI;AAGrC,SAAG,MAAM,MAAS;AAAA,IACtB;AAAA,EACJ;AAEA,WAAS,MAAM;AAAA,IACX,QAAQ,aAAa;AAAA,IACrB,MAAM;AAAA,IACN,iBAAiB;AAAA,EACrB,CAAC;AAED,QAAM,cAAc,QAAQ,IAAI,uBAAuB,KAAK,QAAQ,GAAG,qBAAqB;AAC5F,SAAO,aAAa,aAAa,WAAS;AACtC,QAAI,OAAO;AACP,cAAQ,MAAM,KAAK;AACnB,cAAQ,KAAK,CAAC;AAAA,IAClB;AAAA,EACJ,CAAC;AAED,QAAM,WAAW,OAAO;AACxB,SAAO,OAAO,CAAC,UAAU,SAAgB;AACrC,QAAI,UAAU,QAAQ;AAClB,WAAK,CAAC,IAAI,GAAG,mBAAmB,GAAG,KAAK,CAAC,CAAC;AAAA,IAC9C;AACA,WAAO,SAAS,KAAK,QAAQ,OAAO,GAAG,IAAI;AAAA,EAC/C;AAEA,QAAM,WAA2B,CAAC,MAAM,aAAa;AACjD,oBAAgB,IAAI,EAAE,KAAK,YAAU;AACjC,UAAI,QAAQ;AACR,iBAAS,MAAM,MAAM;AAAA,MACzB,OAAO;AACH,sBAAc,KAAK,QAAQ,MAAM,QAAQ;AAAA,MAC7C;AAAA,IACJ,GAAG,QAAQ;AAAA,EACf;AAEA,QAAM,gBAAgB,OAAO;AAC7B,SAAO,eAAe,QAAQ,aAAa,EAAE,OAAO,SAAS,CAAC;AAE9D,WAAS,eAAe;AACpB,WAAO,GAAG,OAAO,IAAI,QAAQ,CAAC,IAAI,OAAO,OAAO,OAAO,SAAS,IAAI,CAAC;AAAA,EACzE;AAEA,iBAAe,gBAAgB,MAAoD;AAC/E,QAAI,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG;AACpF;AAAA,IACJ;AAEA,UAAM,eAAe,KAAK,QAAQ,UAAU,EAAE;AAC9C,QAAI,CAAC,aAAa,MAAM,oBAAoB,GAAG;AAC3C;AAAA,IACJ;AAEA,UAAM,gBAAgB,MAAc;AAEpC,UAAM,WAAW,aAAa,YAAY,GAAG;AAC7C,QAAI;AACJ,QAAI,aAAa,IAAI;AACjB,oBAAc,KAAK,EAAE;AACrB,oBAAc,KAAK,MAAM;AACzB,gBAAU;AAAA,IACd,OAAO;AACH,oBAAc,KAAK,aAAa,MAAM,GAAG,QAAQ,CAAC;AAClD,gBAAU,aAAa,MAAM,WAAW,CAAC;AAAA,IAC7C;AAEA,UAAM,cAAc,MAAc;AAElC,eAAW,QAAQ,eAAe;AAC9B,YAAM,WAAW,MAAM,OAAO,SAAS,QAAQ,IAAI;AACnD,UAAI,UAAU,SAAS,aAAa;AAChC;AAAA,MACJ;AAEA,kBAAY,KAAK,IAAI,MAAM,SAAS,OAAO,OAAO,CAAAC,UAAQA,MAAK,WAAW,OAAO,CAAC,CAAC;AAAA,IACvF;AAEA,WAAO,CAAC,YAAY,KAAK,GAAG,OAAO;AAAA,EACvC;AACJ;",
5
+ "names": ["result", "path"]
6
+ }
@@ -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;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import "./cat.js";
8
+ import "./cd.js";
9
+ import "./cwd.js";
10
+ import "./help.js";
11
+ import "./ls.js";
12
+ import "./rm.js";
13
+ import "./set.js";