@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,178 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BadCommandError, IncompleteError, NotACommandError, NotADirectoryError, NotFoundError } from "#errors.js";
7
+ import { InternalError, MaybePromise } from "#general";
8
+ import { bin, globals as defaultGlobals } from "#globals.js";
9
+ import { Location } from "#location.js";
10
+ import { parseInput } from "#parser.js";
11
+ import { Directory } from "#stat.js";
12
+ import { createContext, runInContext } from "vm";
13
+ function Domain() {
14
+ const hiddenGlobals = Object.keys(globalThis);
15
+ const globals = Object.defineProperties(
16
+ {},
17
+ {
18
+ ...Object.getOwnPropertyDescriptors(globalThis),
19
+ ...Object.getOwnPropertyDescriptors(defaultGlobals),
20
+ bin: { value: { ...bin }, enumerable: true, writable: false, configurable: false }
21
+ }
22
+ );
23
+ globals.global = globals.globalThis = globals;
24
+ const domain = {
25
+ location: Location(
26
+ "",
27
+ globals,
28
+ Directory({
29
+ paths() {
30
+ const result = new Set(Object.keys(globals));
31
+ for (const name of hiddenGlobals) {
32
+ result.delete(name);
33
+ }
34
+ return [...result];
35
+ },
36
+ definitionAt(path) {
37
+ if (path === "crypto") {
38
+ return globalThis.crypto;
39
+ }
40
+ return globals[path];
41
+ }
42
+ }),
43
+ void 0
44
+ ),
45
+ async execute(inputStr) {
46
+ const input = parseInput(inputStr);
47
+ switch (input.kind) {
48
+ case "empty":
49
+ return;
50
+ case "incomplete":
51
+ throw new IncompleteError(input.error);
52
+ case "command":
53
+ break;
54
+ case "statement":
55
+ return await evaluate(input.js);
56
+ default:
57
+ throw new InternalError(`Unknown internal command type ${input.kind}`);
58
+ }
59
+ const { name, args } = input;
60
+ let location;
61
+ try {
62
+ location = await this.location.at(name);
63
+ } catch (e) {
64
+ if ((e instanceof NotFoundError || e instanceof NotADirectoryError) && name.indexOf("/") === -1) {
65
+ try {
66
+ location = await this.location.at(Location.join("/bin", name));
67
+ } catch (e2) {
68
+ if (e instanceof NotFoundError || e instanceof NotADirectoryError) {
69
+ throw e;
70
+ }
71
+ throw e2;
72
+ }
73
+ } else {
74
+ throw e;
75
+ }
76
+ }
77
+ const fn = location?.definition;
78
+ if (location === void 0 || fn === void 0) {
79
+ throw new NotACommandError(name);
80
+ }
81
+ if (typeof fn !== "function") {
82
+ if (args.length) {
83
+ throw new BadCommandError(name);
84
+ }
85
+ return fn;
86
+ }
87
+ const argvals = args.map((arg) => {
88
+ return evaluate(arg.js, {
89
+ lineOffset: arg.line - 1,
90
+ columnOffset: arg.column
91
+ });
92
+ });
93
+ let scope = location.parent?.definition ?? globals;
94
+ if (scope === globals.bin) {
95
+ scope = this;
96
+ }
97
+ return fn.apply(scope, argvals);
98
+ }
99
+ };
100
+ const context = createContext(
101
+ new Proxy(
102
+ {},
103
+ {
104
+ get(_target, key, _receiver) {
105
+ if (!(typeof key === "string")) {
106
+ return;
107
+ }
108
+ const value = domain.location.maybeAt(key);
109
+ if (MaybePromise.is(value)) {
110
+ return value.then((value2) => {
111
+ if (value2 === void 0) {
112
+ return globals[key];
113
+ }
114
+ return value2.definition;
115
+ });
116
+ }
117
+ if (value === void 0) {
118
+ return globals[key];
119
+ }
120
+ return value.definition;
121
+ },
122
+ set(target, key, newValue, _receiver) {
123
+ const { definition } = domain.location;
124
+ if (definition === void 0 || definition === null) {
125
+ return false;
126
+ }
127
+ target = definition;
128
+ target[key] = newValue;
129
+ return true;
130
+ },
131
+ has(_target, key) {
132
+ const { definition } = domain.location;
133
+ if (definition === void 0 || definition === null || typeof definition !== "object") {
134
+ return false;
135
+ }
136
+ return key in definition;
137
+ },
138
+ defineProperty(_target, property, attributes) {
139
+ Object.defineProperty(domain.location.definition, property, attributes);
140
+ return true;
141
+ },
142
+ deleteProperty(_target, property) {
143
+ const { definition } = domain.location;
144
+ if (definition === void 0 || definition === null) {
145
+ return false;
146
+ }
147
+ Reflect.deleteProperty(definition, property);
148
+ return true;
149
+ },
150
+ ownKeys(_target) {
151
+ return [
152
+ .../* @__PURE__ */ new Set([...Reflect.ownKeys(globals), ...Reflect.ownKeys(domain.location.definition)])
153
+ ];
154
+ },
155
+ getOwnPropertyDescriptor(_target, p) {
156
+ const descriptor = Reflect.getOwnPropertyDescriptor(domain.location.definition, p);
157
+ if (descriptor) {
158
+ return descriptor;
159
+ }
160
+ return Reflect.getOwnPropertyDescriptor(globals, p);
161
+ }
162
+ }
163
+ )
164
+ );
165
+ return domain;
166
+ function evaluate(js, options = {}) {
167
+ return runInContext(js, context, {
168
+ breakOnSigint: true,
169
+ filename: "matter-cli-eval",
170
+ displayErrors: false,
171
+ ...options
172
+ });
173
+ }
174
+ }
175
+ export {
176
+ Domain
177
+ };
178
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/domain.ts"],
4
+ "mappings": "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",
5
+ "names": ["value"]
6
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MatterError } from "#general";
7
+ class CliError extends MatterError {
8
+ // Error class won't be the same across vm contexts so make detection easier
9
+ isCliError = true;
10
+ }
11
+ class NotFoundError extends CliError {
12
+ constructor(what) {
13
+ super(`Not found: ${what}`);
14
+ }
15
+ }
16
+ class NotADirectoryError extends CliError {
17
+ constructor(what) {
18
+ super(`Not a directory: ${what}`);
19
+ }
20
+ }
21
+ class BadCommandError extends CliError {
22
+ constructor(what) {
23
+ super(`Bad command: ${what}`);
24
+ }
25
+ }
26
+ class NotACommandError extends CliError {
27
+ constructor(what) {
28
+ super(`Not a command: ${what}`);
29
+ }
30
+ }
31
+ class TooManyArgsError extends CliError {
32
+ constructor(what) {
33
+ super(`Too many arguments: ${what}`);
34
+ }
35
+ }
36
+ class InvalidArgumentError extends CliError {
37
+ }
38
+ class IncompleteError extends Error {
39
+ constructor(cause) {
40
+ super(cause.message, { cause });
41
+ this.cause = cause;
42
+ }
43
+ }
44
+ export {
45
+ BadCommandError,
46
+ CliError,
47
+ IncompleteError,
48
+ InvalidArgumentError,
49
+ NotACommandError,
50
+ NotADirectoryError,
51
+ NotFoundError,
52
+ TooManyArgsError
53
+ };
54
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/errors.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAErB,MAAM,iBAAiB,YAAY;AAAA;AAAA,EAEtC,aAAa;AACjB;AAEO,MAAM,sBAAsB,SAAS;AAAA,EACxC,YAAY,MAAe;AACvB,UAAM,cAAc,IAAI,EAAE;AAAA,EAC9B;AACJ;AAEO,MAAM,2BAA2B,SAAS;AAAA,EAC7C,YAAY,MAAe;AACvB,UAAM,oBAAoB,IAAI,EAAE;AAAA,EACpC;AACJ;AAEO,MAAM,wBAAwB,SAAS;AAAA,EAC1C,YAAY,MAAe;AACvB,UAAM,gBAAgB,IAAI,EAAE;AAAA,EAChC;AACJ;AAEO,MAAM,yBAAyB,SAAS;AAAA,EAC3C,YAAY,MAAe;AACvB,UAAM,kBAAkB,IAAI,EAAE;AAAA,EAClC;AACJ;AAEO,MAAM,yBAAyB,SAAS;AAAA,EAC3C,YAAY,MAAc;AACtB,UAAM,uBAAuB,IAAI,EAAE;AAAA,EACvC;AACJ;AAEO,MAAM,6BAA6B,SAAS;AAAC;AAK7C,MAAM,wBAAwB,MAAM;AAAA,EACvC,YAAY,OAAc;AACtB,UAAM,MAAM,SAAS,EAAE,MAAM,CAAC;AAC9B,SAAK,QAAQ;AAAA,EACjB;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import * as general from "#general";
7
+ import * as model from "#model";
8
+ import { Matter as matter } from "#model";
9
+ import * as node from "#node";
10
+ import * as protocol from "#protocol";
11
+ import * as tools from "#tools";
12
+ import * as types from "#types";
13
+ const bin = {};
14
+ const globals = {
15
+ general,
16
+ tools,
17
+ protocol,
18
+ node,
19
+ types,
20
+ matter,
21
+ model,
22
+ bin
23
+ };
24
+ export {
25
+ bin,
26
+ globals
27
+ };
28
+ //# sourceMappingURL=globals.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/globals.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,SAAS,UAAU,cAAc;AACjC,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,WAAW;AACvB,YAAY,WAAW;AAIhB,MAAM,MAAqC,CAAC;AAE5C,MAAM,UAAmC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,149 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { NotADirectoryError, NotFoundError } from "#errors.js";
7
+ import { decamelize, MaybePromise } from "#general";
8
+ import { Stat } from "#stat.js";
9
+ function isClass(fn) {
10
+ return !Object.getOwnPropertyDescriptor(fn, "prototype")?.writable;
11
+ }
12
+ function Location(basename, definition, stat, parent) {
13
+ let { tag } = stat;
14
+ if (tag === void 0) {
15
+ if (definition === void 0) {
16
+ tag = "undefined";
17
+ } else if (typeof definition === "object") {
18
+ if (definition === null) {
19
+ tag = "null";
20
+ } else if (Symbol.toStringTag in definition) {
21
+ tag = `${definition[Symbol.toStringTag]}`;
22
+ } else if (Array.isArray(definition)) {
23
+ tag = "array";
24
+ } else if (ArrayBuffer.isView(definition)) {
25
+ tag = "bytes";
26
+ } else if (definition.constructor.name !== "Object") {
27
+ tag = definition.constructor.name;
28
+ } else {
29
+ tag = "object";
30
+ }
31
+ } else if (typeof definition === "function") {
32
+ if (isClass(definition)) {
33
+ tag = "constructor";
34
+ } else {
35
+ tag = "function";
36
+ }
37
+ } else {
38
+ tag = typeof definition;
39
+ }
40
+ }
41
+ tag = decamelize(tag);
42
+ return {
43
+ kind: typeof definition === "function" && !isClass(definition) ? "command" : stat.kind,
44
+ basename,
45
+ name: stat.name,
46
+ summary: stat.summary,
47
+ id: stat.id,
48
+ tag,
49
+ parent,
50
+ definition,
51
+ get path() {
52
+ if (!this.parent) {
53
+ return "/";
54
+ }
55
+ let path = "";
56
+ let location = this;
57
+ while (location.parent) {
58
+ path = `/${location.basename}${path}`;
59
+ location = location.parent;
60
+ }
61
+ return path;
62
+ },
63
+ get paths() {
64
+ if (stat.kind !== "directory") {
65
+ throw new NotADirectoryError(this.path);
66
+ }
67
+ return stat.paths;
68
+ },
69
+ at(path, searchedAs) {
70
+ const location = this.maybeAt(path);
71
+ if (MaybePromise.is(location)) {
72
+ return location.then(accept);
73
+ }
74
+ return accept(location);
75
+ function accept(location2) {
76
+ if (location2 === void 0) {
77
+ throw new NotFoundError(searchedAs ?? path);
78
+ }
79
+ return location2;
80
+ }
81
+ },
82
+ maybeAt(path, searchedAs) {
83
+ if (stat.kind !== "directory") {
84
+ throw new NotADirectoryError(searchedAs ?? path);
85
+ }
86
+ if (path === void 0 || path === "") {
87
+ return this;
88
+ }
89
+ const segments = path.split("/");
90
+ if (segments[0] === "") {
91
+ let location = this;
92
+ while (location.parent) {
93
+ location = location.parent;
94
+ }
95
+ return location.maybeAt(segments.slice(1).join("/"), "/");
96
+ }
97
+ while (segments[0] === "" || segments[0] === ".") {
98
+ searchedAs += `${segments.shift()}/`;
99
+ }
100
+ if (segments[0] === "..") {
101
+ return (this.parent ?? this).maybeAt(
102
+ segments.slice(1).join("/"),
103
+ searchedAs ? Location.join(searchedAs, "..") : ".."
104
+ );
105
+ }
106
+ if (!segments.length) {
107
+ return this;
108
+ }
109
+ const subsearchedAs = searchedAs ? Location.join(searchedAs, segments[0]) : segments[0];
110
+ const definition2 = stat.definitionAt(decodeURIComponent(segments[0]));
111
+ const accept = (definition3) => {
112
+ if (definition3 === void 0 || definition3 === null) {
113
+ if (segments.length > 1) {
114
+ throw new NotFoundError(subsearchedAs);
115
+ }
116
+ return;
117
+ }
118
+ const sublocation = Location(segments[0], definition3, Stat.of(definition3), this);
119
+ if (segments.length === 1) {
120
+ return sublocation;
121
+ }
122
+ return sublocation.at(segments.slice(1).join("/"), subsearchedAs);
123
+ };
124
+ if (MaybePromise.is(definition2)) {
125
+ return definition2.then(accept);
126
+ }
127
+ return accept(definition2);
128
+ }
129
+ };
130
+ }
131
+ ((Location2) => {
132
+ function join(path, ...paths) {
133
+ for (const other of paths) {
134
+ if (other.startsWith("/")) {
135
+ path = other;
136
+ } else if (path.endsWith("/")) {
137
+ path = `${path}${other}`;
138
+ } else {
139
+ path = `${path}/${other}`;
140
+ }
141
+ }
142
+ return path;
143
+ }
144
+ Location2.join = join;
145
+ })(Location || (Location = {}));
146
+ export {
147
+ Location
148
+ };
149
+ //# sourceMappingURL=location.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/location.ts"],
4
+ "mappings": "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",
5
+ "names": ["location", "definition", "Location"]
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "type": "module",
3
+ "imports": {
4
+ "#tools": "@matter/tools",
5
+ "#general": "@matter/general",
6
+ "#model": "@matter/model",
7
+ "#types": "@matter/types",
8
+ "#protocol": "@matter/protocol",
9
+ "#node": "@matter/node",
10
+ "#*": "./*"
11
+ }
12
+ }
@@ -0,0 +1,174 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { getLineInfo, parse, parseExpressionAt } from "acorn";
7
+ import { generate } from "escodegen";
8
+ const ACORN_PARSE_OPTIONS = {
9
+ ecmaVersion: "latest",
10
+ allowAwaitOutsideFunction: true
11
+ };
12
+ function parseInput(input) {
13
+ const inputIsCommand = isCommand(input);
14
+ try {
15
+ if (inputIsCommand) {
16
+ return parseCommand(input);
17
+ }
18
+ parse(input, ACORN_PARSE_OPTIONS);
19
+ return { kind: "statement", js: input };
20
+ } catch (e) {
21
+ if (errorIndicatesIncomplete(e, input)) {
22
+ return { kind: "incomplete", error: e };
23
+ }
24
+ if (!inputIsCommand) {
25
+ return { kind: "statement", js: input };
26
+ }
27
+ throw e;
28
+ }
29
+ }
30
+ function errorIndicatesIncomplete(e, input) {
31
+ if (e instanceof SyntaxError) {
32
+ if (e.message.startsWith("Unexpected token") && e.pos === input.length) {
33
+ return true;
34
+ }
35
+ if (e.message.match(/^Unterminated (?:template literal|group|comment|regular expression|template)/)) {
36
+ return true;
37
+ }
38
+ }
39
+ return false;
40
+ }
41
+ function parseCommand(command) {
42
+ let start = 0;
43
+ while (start < command.length && command[start].match(/\s/)) {
44
+ start++;
45
+ }
46
+ if (start === command.length) {
47
+ return { kind: "empty" };
48
+ }
49
+ const nameStart = start;
50
+ while (start < command.length && !command[start].match(/\s/)) {
51
+ start++;
52
+ }
53
+ const name = command.slice(nameStart, start);
54
+ const args = Array();
55
+ while (command.trim().length) {
56
+ while (start < command.length && command[start].match(/^\s/)) {
57
+ start++;
58
+ }
59
+ if (start === command.length) {
60
+ break;
61
+ }
62
+ let isExpression;
63
+ switch (command[start]) {
64
+ case "(":
65
+ case "[":
66
+ case "{":
67
+ case '"':
68
+ case "`":
69
+ case "'":
70
+ isExpression = true;
71
+ break;
72
+ default:
73
+ isExpression = false;
74
+ break;
75
+ }
76
+ const { line, column } = getLineInfo(command, start);
77
+ if (isExpression) {
78
+ try {
79
+ const ast = parseExpressionAt(command, start, ACORN_PARSE_OPTIONS);
80
+ args.push({ js: generate(ast), line, column });
81
+ start = ast.end;
82
+ } catch (e) {
83
+ if (e instanceof SyntaxError) {
84
+ let message = e.message;
85
+ const match = message.match(/(.*) \(\d+:\d+\)$/);
86
+ let location;
87
+ if (match) {
88
+ message = match[1];
89
+ location = message[2];
90
+ } else {
91
+ const loc = getLineInfo(command, start);
92
+ location = `${loc.line}:${loc.column}`;
93
+ }
94
+ const error = new SyntaxError(message);
95
+ error.stack = `SyntaxError: ${message}
96
+ at matter-cli-input:${location}`;
97
+ throw error;
98
+ }
99
+ }
100
+ } else {
101
+ let end = start;
102
+ while (end < command.length) {
103
+ if (command[end].match(/\s/)) {
104
+ break;
105
+ }
106
+ end++;
107
+ }
108
+ const str = command.slice(start, end);
109
+ start = end;
110
+ let js;
111
+ if (str === "true" || str === "false" || str === "NaN" || str === "Infinity" || isNumeric(str)) {
112
+ js = str;
113
+ } else {
114
+ js = JSON.stringify(str);
115
+ }
116
+ args.push({ js, line, column });
117
+ }
118
+ }
119
+ return { kind: "command", name, args };
120
+ }
121
+ function isCommand(input) {
122
+ if (input.match(isCommand.STATEMENT_DETECTOR)) {
123
+ return false;
124
+ }
125
+ if (input.match(isCommand.COMMAND_DETECTOR)) {
126
+ return true;
127
+ }
128
+ return false;
129
+ }
130
+ ((isCommand2) => {
131
+ const STATEMENT_KEYWORDS = [
132
+ "async",
133
+ "break",
134
+ "class",
135
+ "const",
136
+ "debugger",
137
+ "delete",
138
+ "do",
139
+ "for",
140
+ "function",
141
+ "if",
142
+ "new",
143
+ "return",
144
+ "switch",
145
+ "throw",
146
+ "try",
147
+ "let",
148
+ "while",
149
+ "with",
150
+ "export",
151
+ "import",
152
+ "var",
153
+ "void",
154
+ "true",
155
+ "false"
156
+ ];
157
+ const IDENTIFIER = "[\\p{L}$_][\\p{L}$_0-9]*";
158
+ const EOW = "(?:\\s|$)";
159
+ const statementStarts = [...STATEMENT_KEYWORDS.map((kw) => `${kw}${EOW}`), `${IDENTIFIER}\\s*=`];
160
+ isCommand2.STATEMENT_DETECTOR = new RegExp(`^\\s*(?:${statementStarts.join("|")})`, "u");
161
+ isCommand2.COMMAND_DETECTOR = new RegExp(
162
+ `^\\s*(?:\\.?/)?${IDENTIFIER}(?:\\/(?:\\.?\\.|${IDENTIFIER}))*${EOW}`,
163
+ "u"
164
+ );
165
+ })(isCommand || (isCommand = {}));
166
+ function isNumeric(str) {
167
+ return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
168
+ !isNaN(parseFloat(str));
169
+ }
170
+ export {
171
+ isCommand,
172
+ parseInput
173
+ };
174
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/parser.ts"],
4
+ "mappings": "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",
5
+ "names": ["isCommand"]
6
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * @license
8
+ * Copyright 2022-2024 Matter.js Authors
9
+ * SPDX-License-Identifier: Apache-2.0
10
+ */
11
+ import { Endpoint } from "#node";
12
+ import { Directory, Stat } from "#stat.js";
13
+ Stat.provide((endpoint) => {
14
+ if (!isEndpoint(endpoint)) {
15
+ return;
16
+ }
17
+ return Directory({
18
+ definitionAt(path) {
19
+ const part = endpoint.parts.get(path);
20
+ if (part) {
21
+ if (!part.lifecycle.isReady) {
22
+ return part.construction.then(() => Stat.of(part));
23
+ }
24
+ return Stat.of(part);
25
+ }
26
+ },
27
+ paths() {
28
+ if (!endpoint.lifecycle.isPartsReady) {
29
+ return endpoint.construction.then(() => endpoint.parts.map((part) => part.id));
30
+ }
31
+ return endpoint.parts.map((part) => part.id);
32
+ }
33
+ });
34
+ });
35
+ function isEndpoint(item) {
36
+ return item instanceof Endpoint;
37
+ }
38
+ //# sourceMappingURL=endpoint.js.map