@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,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,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
|