shell-dsl 0.0.1 → 0.0.2
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/README.md +568 -28
- package/dist/cjs/index.cjs +72 -0
- package/dist/cjs/index.cjs.map +10 -0
- package/dist/cjs/package.json +5 -0
- package/dist/cjs/src/errors.cjs +73 -0
- package/dist/cjs/src/errors.cjs.map +10 -0
- package/dist/cjs/src/fs/index.cjs +37 -0
- package/dist/cjs/src/fs/index.cjs.map +10 -0
- package/dist/cjs/src/fs/memfs-adapter.cjs +221 -0
- package/dist/cjs/src/fs/memfs-adapter.cjs.map +10 -0
- package/dist/cjs/src/index.cjs +80 -0
- package/dist/cjs/src/index.cjs.map +10 -0
- package/dist/cjs/src/interpreter/context.cjs +47 -0
- package/dist/cjs/src/interpreter/context.cjs.map +10 -0
- package/dist/cjs/src/interpreter/index.cjs +39 -0
- package/dist/cjs/src/interpreter/index.cjs.map +10 -0
- package/dist/cjs/src/interpreter/interpreter.cjs +321 -0
- package/dist/cjs/src/interpreter/interpreter.cjs.map +10 -0
- package/dist/cjs/src/io/index.cjs +44 -0
- package/dist/cjs/src/io/index.cjs.map +10 -0
- package/dist/cjs/src/io/stdin.cjs +99 -0
- package/dist/cjs/src/io/stdin.cjs.map +10 -0
- package/dist/cjs/src/io/stdout.cjs +158 -0
- package/dist/cjs/src/io/stdout.cjs.map +10 -0
- package/dist/cjs/src/lexer/index.cjs +40 -0
- package/dist/cjs/src/lexer/index.cjs.map +10 -0
- package/dist/cjs/src/lexer/lexer.cjs +335 -0
- package/dist/cjs/src/lexer/lexer.cjs.map +10 -0
- package/dist/cjs/src/lexer/tokens.cjs +66 -0
- package/dist/cjs/src/lexer/tokens.cjs.map +10 -0
- package/dist/cjs/src/parser/ast.cjs +75 -0
- package/dist/cjs/src/parser/ast.cjs.map +10 -0
- package/dist/cjs/src/parser/index.cjs +49 -0
- package/dist/cjs/src/parser/index.cjs.map +10 -0
- package/dist/cjs/src/parser/parser.cjs +216 -0
- package/dist/cjs/src/parser/parser.cjs.map +10 -0
- package/dist/cjs/src/shell-dsl.cjs +162 -0
- package/dist/cjs/src/shell-dsl.cjs.map +10 -0
- package/dist/cjs/src/shell-promise.cjs +159 -0
- package/dist/cjs/src/shell-promise.cjs.map +10 -0
- package/dist/cjs/src/types.cjs +39 -0
- package/dist/cjs/src/types.cjs.map +10 -0
- package/dist/cjs/src/utils/escape.cjs +53 -0
- package/dist/cjs/src/utils/escape.cjs.map +10 -0
- package/dist/cjs/src/utils/index.cjs +38 -0
- package/dist/cjs/src/utils/index.cjs.map +10 -0
- package/dist/mjs/index.mjs +42 -0
- package/dist/mjs/index.mjs.map +10 -0
- package/dist/mjs/package.json +5 -0
- package/dist/mjs/src/errors.mjs +42 -0
- package/dist/mjs/src/errors.mjs.map +10 -0
- package/dist/mjs/src/fs/index.mjs +7 -0
- package/dist/mjs/src/fs/index.mjs.map +10 -0
- package/dist/mjs/src/fs/memfs-adapter.mjs +178 -0
- package/dist/mjs/src/fs/memfs-adapter.mjs.map +10 -0
- package/dist/mjs/src/index.mjs +61 -0
- package/dist/mjs/src/index.mjs.map +10 -0
- package/dist/mjs/src/interpreter/context.mjs +17 -0
- package/dist/mjs/src/interpreter/context.mjs.map +10 -0
- package/dist/mjs/src/interpreter/index.mjs +9 -0
- package/dist/mjs/src/interpreter/index.mjs.map +10 -0
- package/dist/mjs/src/interpreter/interpreter.mjs +291 -0
- package/dist/mjs/src/interpreter/interpreter.mjs.map +10 -0
- package/dist/mjs/src/io/index.mjs +14 -0
- package/dist/mjs/src/io/index.mjs.map +10 -0
- package/dist/mjs/src/io/stdin.mjs +68 -0
- package/dist/mjs/src/io/stdin.mjs.map +10 -0
- package/dist/mjs/src/io/stdout.mjs +127 -0
- package/dist/mjs/src/io/stdout.mjs.map +10 -0
- package/dist/mjs/src/lexer/index.mjs +10 -0
- package/dist/mjs/src/lexer/index.mjs.map +10 -0
- package/dist/mjs/src/lexer/lexer.mjs +305 -0
- package/dist/mjs/src/lexer/lexer.mjs.map +10 -0
- package/dist/mjs/src/lexer/tokens.mjs +36 -0
- package/dist/mjs/src/lexer/tokens.mjs.map +10 -0
- package/dist/mjs/src/parser/ast.mjs +45 -0
- package/dist/mjs/src/parser/ast.mjs.map +10 -0
- package/dist/mjs/src/parser/index.mjs +30 -0
- package/dist/mjs/src/parser/index.mjs.map +10 -0
- package/dist/mjs/src/parser/parser.mjs +189 -0
- package/dist/mjs/src/parser/parser.mjs.map +10 -0
- package/dist/mjs/src/shell-dsl.mjs +132 -0
- package/dist/mjs/src/shell-dsl.mjs.map +10 -0
- package/dist/mjs/src/shell-promise.mjs +129 -0
- package/dist/mjs/src/shell-promise.mjs.map +10 -0
- package/dist/mjs/src/types.mjs +9 -0
- package/dist/mjs/src/types.mjs.map +10 -0
- package/dist/mjs/src/utils/escape.mjs +23 -0
- package/dist/mjs/src/utils/escape.mjs.map +10 -0
- package/dist/mjs/src/utils/index.mjs +8 -0
- package/dist/mjs/src/utils/index.mjs.map +10 -0
- package/dist/types/commands/cat.d.ts +2 -0
- package/dist/types/commands/echo.d.ts +2 -0
- package/dist/types/commands/grep.d.ts +2 -0
- package/dist/types/commands/head.d.ts +2 -0
- package/dist/types/commands/index.d.ts +16 -0
- package/dist/types/commands/ls.d.ts +2 -0
- package/dist/types/commands/mkdir.d.ts +2 -0
- package/dist/types/commands/pwd.d.ts +2 -0
- package/dist/types/commands/rm.d.ts +2 -0
- package/dist/types/commands/sort.d.ts +2 -0
- package/dist/types/commands/tail.d.ts +2 -0
- package/dist/types/commands/test.d.ts +3 -0
- package/dist/types/commands/true-false.d.ts +3 -0
- package/dist/types/commands/uniq.d.ts +2 -0
- package/dist/types/commands/wc.d.ts +2 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/src/errors.d.ts +16 -0
- package/dist/types/src/fs/index.d.ts +1 -0
- package/dist/types/src/fs/memfs-adapter.d.ts +3 -0
- package/dist/types/src/index.d.ts +15 -0
- package/dist/types/src/interpreter/context.d.ts +11 -0
- package/dist/types/src/interpreter/index.d.ts +2 -0
- package/dist/types/src/interpreter/interpreter.d.ts +28 -0
- package/dist/types/src/io/index.d.ts +2 -0
- package/dist/types/src/io/stdin.d.ts +11 -0
- package/dist/types/src/io/stdout.d.ts +27 -0
- package/dist/types/src/lexer/index.d.ts +3 -0
- package/dist/types/src/lexer/lexer.d.ts +24 -0
- package/dist/types/src/lexer/tokens.d.ts +38 -0
- package/dist/types/src/parser/ast.d.ts +64 -0
- package/dist/types/src/parser/index.d.ts +3 -0
- package/dist/types/src/parser/parser.d.ts +23 -0
- package/dist/types/src/shell-dsl.d.ts +31 -0
- package/dist/types/src/shell-promise.d.ts +39 -0
- package/dist/types/src/types.d.ts +71 -0
- package/dist/types/src/utils/escape.d.ts +2 -0
- package/dist/types/src/utils/index.d.ts +1 -0
- package/package.json +46 -6
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/errors.ts
|
|
30
|
+
var exports_errors = {};
|
|
31
|
+
__export(exports_errors, {
|
|
32
|
+
ShellError: () => ShellError,
|
|
33
|
+
ParseError: () => ParseError,
|
|
34
|
+
LexError: () => LexError
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(exports_errors);
|
|
37
|
+
|
|
38
|
+
class ShellError extends Error {
|
|
39
|
+
stdout;
|
|
40
|
+
stderr;
|
|
41
|
+
exitCode;
|
|
42
|
+
constructor(message, stdout, stderr, exitCode) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.name = "ShellError";
|
|
45
|
+
this.stdout = stdout;
|
|
46
|
+
this.stderr = stderr;
|
|
47
|
+
this.exitCode = exitCode;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
class LexError extends Error {
|
|
52
|
+
position;
|
|
53
|
+
line;
|
|
54
|
+
column;
|
|
55
|
+
constructor(message, position, line, column) {
|
|
56
|
+
super(`Lex error at line ${line}, column ${column}: ${message}`);
|
|
57
|
+
this.name = "LexError";
|
|
58
|
+
this.position = position;
|
|
59
|
+
this.line = line;
|
|
60
|
+
this.column = column;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
class ParseError extends Error {
|
|
65
|
+
position;
|
|
66
|
+
constructor(message, position) {
|
|
67
|
+
super(message);
|
|
68
|
+
this.name = "ParseError";
|
|
69
|
+
this.position = position;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//# debugId=E975DE8E8BF5A03864756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/errors.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export class ShellError extends Error {\n stdout: Buffer;\n stderr: Buffer;\n exitCode: number;\n\n constructor(message: string, stdout: Buffer, stderr: Buffer, exitCode: number) {\n super(message);\n this.name = \"ShellError\";\n this.stdout = stdout;\n this.stderr = stderr;\n this.exitCode = exitCode;\n }\n}\n\nexport class LexError extends Error {\n position: number;\n line: number;\n column: number;\n\n constructor(message: string, position: number, line: number, column: number) {\n super(`Lex error at line ${line}, column ${column}: ${message}`);\n this.name = \"LexError\";\n this.position = position;\n this.line = line;\n this.column = column;\n }\n}\n\nexport class ParseError extends Error {\n position?: number;\n\n constructor(message: string, position?: number) {\n super(message);\n this.name = \"ParseError\";\n this.position = position;\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,mBAAmB,MAAM;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EAEA,WAAW,CAAC,SAAiB,QAAgB,QAAgB,UAAkB;AAAA,IAC7E,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,WAAW;AAAA;AAEpB;AAAA;AAEO,MAAM,iBAAiB,MAAM;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EAEA,WAAW,CAAC,SAAiB,UAAkB,MAAc,QAAgB;AAAA,IAC3E,MAAM,qBAAqB,gBAAgB,WAAW,SAAS;AAAA,IAC/D,KAAK,OAAO;AAAA,IACZ,KAAK,WAAW;AAAA,IAChB,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA;AAElB;AAAA;AAEO,MAAM,mBAAmB,MAAM;AAAA,EACpC;AAAA,EAEA,WAAW,CAAC,SAAiB,UAAmB;AAAA,IAC9C,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,WAAW;AAAA;AAEpB;",
|
|
8
|
+
"debugId": "E975DE8E8BF5A03864756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/fs/index.ts
|
|
30
|
+
var exports_fs = {};
|
|
31
|
+
__export(exports_fs, {
|
|
32
|
+
createVirtualFS: () => import_memfs_adapter.createVirtualFS
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(exports_fs);
|
|
35
|
+
var import_memfs_adapter = require("./memfs-adapter.cjs");
|
|
36
|
+
|
|
37
|
+
//# debugId=EFC1FC4A0309E57D64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/fs/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export { createVirtualFS } from \"./memfs-adapter.cjs\";\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAgC,IAAhC;",
|
|
8
|
+
"debugId": "EFC1FC4A0309E57D64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
|
12
|
+
__defProp(to, key, {
|
|
13
|
+
get: () => mod[key],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
19
|
+
var __toCommonJS = (from) => {
|
|
20
|
+
var entry = __moduleCache.get(from), desc;
|
|
21
|
+
if (entry)
|
|
22
|
+
return entry;
|
|
23
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
24
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
25
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
26
|
+
get: () => from[key],
|
|
27
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
28
|
+
}));
|
|
29
|
+
__moduleCache.set(from, entry);
|
|
30
|
+
return entry;
|
|
31
|
+
};
|
|
32
|
+
var __export = (target, all) => {
|
|
33
|
+
for (var name in all)
|
|
34
|
+
__defProp(target, name, {
|
|
35
|
+
get: all[name],
|
|
36
|
+
enumerable: true,
|
|
37
|
+
configurable: true,
|
|
38
|
+
set: (newValue) => all[name] = () => newValue
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// src/fs/memfs-adapter.ts
|
|
43
|
+
var exports_memfs_adapter = {};
|
|
44
|
+
__export(exports_memfs_adapter, {
|
|
45
|
+
createVirtualFS: () => createVirtualFS
|
|
46
|
+
});
|
|
47
|
+
module.exports = __toCommonJS(exports_memfs_adapter);
|
|
48
|
+
var pathModule = __toESM(require("path"));
|
|
49
|
+
function createVirtualFS(memfs) {
|
|
50
|
+
const { promises: fs } = memfs;
|
|
51
|
+
return {
|
|
52
|
+
async readFile(path) {
|
|
53
|
+
const content = await fs.readFile(path);
|
|
54
|
+
return Buffer.from(content);
|
|
55
|
+
},
|
|
56
|
+
async readdir(path) {
|
|
57
|
+
const entries = await fs.readdir(path);
|
|
58
|
+
return entries.map(String);
|
|
59
|
+
},
|
|
60
|
+
async stat(path) {
|
|
61
|
+
const stats = await fs.stat(path);
|
|
62
|
+
return {
|
|
63
|
+
isFile: () => stats.isFile(),
|
|
64
|
+
isDirectory: () => stats.isDirectory(),
|
|
65
|
+
size: Number(stats.size),
|
|
66
|
+
mtime: new Date(stats.mtime)
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
async exists(path) {
|
|
70
|
+
try {
|
|
71
|
+
await fs.stat(path);
|
|
72
|
+
return true;
|
|
73
|
+
} catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
async writeFile(path, data) {
|
|
78
|
+
await fs.writeFile(path, data);
|
|
79
|
+
},
|
|
80
|
+
async appendFile(path, data) {
|
|
81
|
+
await fs.appendFile(path, data);
|
|
82
|
+
},
|
|
83
|
+
async mkdir(path, opts) {
|
|
84
|
+
await fs.mkdir(path, opts);
|
|
85
|
+
},
|
|
86
|
+
async rm(path, opts) {
|
|
87
|
+
try {
|
|
88
|
+
const stats = await fs.stat(path);
|
|
89
|
+
if (stats.isDirectory()) {
|
|
90
|
+
await fs.rmdir(path, { recursive: opts?.recursive });
|
|
91
|
+
} else {
|
|
92
|
+
await fs.unlink(path);
|
|
93
|
+
}
|
|
94
|
+
} catch (err) {
|
|
95
|
+
if (!opts?.force)
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
resolve(...paths) {
|
|
100
|
+
return pathModule.resolve(...paths);
|
|
101
|
+
},
|
|
102
|
+
dirname(path) {
|
|
103
|
+
return pathModule.dirname(path);
|
|
104
|
+
},
|
|
105
|
+
basename(path) {
|
|
106
|
+
return pathModule.basename(path);
|
|
107
|
+
},
|
|
108
|
+
async glob(pattern, opts) {
|
|
109
|
+
const cwd = opts?.cwd ?? "/";
|
|
110
|
+
return expandGlob(memfs, pattern, cwd);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
async function expandGlob(memfs, pattern, cwd) {
|
|
115
|
+
const { promises: fs } = memfs;
|
|
116
|
+
const patterns = expandBraces(pattern);
|
|
117
|
+
const allMatches = [];
|
|
118
|
+
for (const pat of patterns) {
|
|
119
|
+
const matches = await matchPattern(fs, pat, cwd);
|
|
120
|
+
allMatches.push(...matches);
|
|
121
|
+
}
|
|
122
|
+
return [...new Set(allMatches)].sort();
|
|
123
|
+
}
|
|
124
|
+
function expandBraces(pattern) {
|
|
125
|
+
const braceMatch = pattern.match(/\{([^{}]+)\}/);
|
|
126
|
+
if (!braceMatch)
|
|
127
|
+
return [pattern];
|
|
128
|
+
const before = pattern.slice(0, braceMatch.index);
|
|
129
|
+
const after = pattern.slice(braceMatch.index + braceMatch[0].length);
|
|
130
|
+
const options = braceMatch[1].split(",");
|
|
131
|
+
const results = [];
|
|
132
|
+
for (const opt of options) {
|
|
133
|
+
const expanded = expandBraces(before + opt + after);
|
|
134
|
+
results.push(...expanded);
|
|
135
|
+
}
|
|
136
|
+
return results;
|
|
137
|
+
}
|
|
138
|
+
async function matchPattern(fs, pattern, cwd) {
|
|
139
|
+
const parts = pattern.split("/").filter((p) => p !== "");
|
|
140
|
+
const isAbsolute = pattern.startsWith("/");
|
|
141
|
+
const startDir = isAbsolute ? "/" : cwd;
|
|
142
|
+
return matchParts(fs, parts, startDir, isAbsolute);
|
|
143
|
+
}
|
|
144
|
+
async function matchParts(fs, parts, currentPath, isAbsolute) {
|
|
145
|
+
if (parts.length === 0) {
|
|
146
|
+
return [currentPath];
|
|
147
|
+
}
|
|
148
|
+
const [part, ...rest] = parts;
|
|
149
|
+
if (part === "**") {
|
|
150
|
+
const results = [];
|
|
151
|
+
const withoutStar = await matchParts(fs, rest, currentPath, isAbsolute);
|
|
152
|
+
results.push(...withoutStar);
|
|
153
|
+
try {
|
|
154
|
+
const entries = await fs.readdir(currentPath);
|
|
155
|
+
for (const entry of entries) {
|
|
156
|
+
const entryPath = pathModule.join(currentPath, String(entry));
|
|
157
|
+
try {
|
|
158
|
+
const stat = await fs.stat(entryPath);
|
|
159
|
+
if (stat.isDirectory()) {
|
|
160
|
+
const subMatches = await matchParts(fs, parts, entryPath, isAbsolute);
|
|
161
|
+
results.push(...subMatches);
|
|
162
|
+
}
|
|
163
|
+
} catch {}
|
|
164
|
+
}
|
|
165
|
+
} catch {}
|
|
166
|
+
return results;
|
|
167
|
+
}
|
|
168
|
+
const regex = globToRegex(part);
|
|
169
|
+
try {
|
|
170
|
+
const entries = await fs.readdir(currentPath);
|
|
171
|
+
const results = [];
|
|
172
|
+
for (const entry of entries) {
|
|
173
|
+
const entryName = String(entry);
|
|
174
|
+
if (regex.test(entryName)) {
|
|
175
|
+
const entryPath = pathModule.join(currentPath, entryName);
|
|
176
|
+
if (rest.length === 0) {
|
|
177
|
+
results.push(entryPath);
|
|
178
|
+
} else {
|
|
179
|
+
try {
|
|
180
|
+
const stat = await fs.stat(entryPath);
|
|
181
|
+
if (stat.isDirectory()) {
|
|
182
|
+
const subMatches = await matchParts(fs, rest, entryPath, isAbsolute);
|
|
183
|
+
results.push(...subMatches);
|
|
184
|
+
}
|
|
185
|
+
} catch {}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return results;
|
|
190
|
+
} catch {
|
|
191
|
+
return [];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function globToRegex(pattern) {
|
|
195
|
+
let regex = "^";
|
|
196
|
+
for (let i = 0;i < pattern.length; i++) {
|
|
197
|
+
const char = pattern[i];
|
|
198
|
+
if (char === "*") {
|
|
199
|
+
regex += "[^/]*";
|
|
200
|
+
} else if (char === "?") {
|
|
201
|
+
regex += "[^/]";
|
|
202
|
+
} else if (char === "[") {
|
|
203
|
+
let j = i + 1;
|
|
204
|
+
let classContent = "";
|
|
205
|
+
while (j < pattern.length && pattern[j] !== "]") {
|
|
206
|
+
classContent += pattern[j];
|
|
207
|
+
j++;
|
|
208
|
+
}
|
|
209
|
+
regex += `[${classContent}]`;
|
|
210
|
+
i = j;
|
|
211
|
+
} else if (".+^${}()|\\".includes(char)) {
|
|
212
|
+
regex += "\\" + char;
|
|
213
|
+
} else {
|
|
214
|
+
regex += char;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
regex += "$";
|
|
218
|
+
return new RegExp(regex);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
//# debugId=141567D3FA5282DB64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/fs/memfs-adapter.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { IFs } from \"memfs\";\nimport type { VirtualFS, FileStat } from \"../types.cjs\";\nimport * as pathModule from \"path\";\n\nexport function createVirtualFS(memfs: IFs): VirtualFS {\n const { promises: fs } = memfs;\n\n return {\n async readFile(path: string): Promise<Buffer> {\n const content = await fs.readFile(path);\n return Buffer.from(content);\n },\n\n async readdir(path: string): Promise<string[]> {\n const entries = await fs.readdir(path);\n return entries.map(String);\n },\n\n async stat(path: string): Promise<FileStat> {\n const stats = await fs.stat(path);\n return {\n isFile: () => stats.isFile(),\n isDirectory: () => stats.isDirectory(),\n size: Number(stats.size),\n mtime: new Date(stats.mtime),\n };\n },\n\n async exists(path: string): Promise<boolean> {\n try {\n await fs.stat(path);\n return true;\n } catch {\n return false;\n }\n },\n\n async writeFile(path: string, data: Buffer | string): Promise<void> {\n await fs.writeFile(path, data);\n },\n\n async appendFile(path: string, data: Buffer | string): Promise<void> {\n await fs.appendFile(path, data);\n },\n\n async mkdir(path: string, opts?: { recursive?: boolean }): Promise<void> {\n await fs.mkdir(path, opts);\n },\n\n async rm(path: string, opts?: { recursive?: boolean; force?: boolean }): Promise<void> {\n try {\n const stats = await fs.stat(path);\n if (stats.isDirectory()) {\n await fs.rmdir(path, { recursive: opts?.recursive });\n } else {\n await fs.unlink(path);\n }\n } catch (err) {\n if (!opts?.force) throw err;\n }\n },\n\n resolve(...paths: string[]): string {\n return pathModule.resolve(...paths);\n },\n\n dirname(path: string): string {\n return pathModule.dirname(path);\n },\n\n basename(path: string): string {\n return pathModule.basename(path);\n },\n\n async glob(pattern: string, opts?: { cwd?: string }): Promise<string[]> {\n const cwd = opts?.cwd ?? \"/\";\n return expandGlob(memfs, pattern, cwd);\n },\n };\n}\n\nasync function expandGlob(memfs: IFs, pattern: string, cwd: string): Promise<string[]> {\n const { promises: fs } = memfs;\n\n // Handle brace expansion first\n const patterns = expandBraces(pattern);\n const allMatches: string[] = [];\n\n for (const pat of patterns) {\n const matches = await matchPattern(fs, pat, cwd);\n allMatches.push(...matches);\n }\n\n // Remove duplicates and sort\n return [...new Set(allMatches)].sort();\n}\n\nfunction expandBraces(pattern: string): string[] {\n const braceMatch = pattern.match(/\\{([^{}]+)\\}/);\n if (!braceMatch) return [pattern];\n\n const before = pattern.slice(0, braceMatch.index);\n const after = pattern.slice(braceMatch.index! + braceMatch[0].length);\n const options = braceMatch[1]!.split(\",\");\n\n const results: string[] = [];\n for (const opt of options) {\n const expanded = expandBraces(before + opt + after);\n results.push(...expanded);\n }\n return results;\n}\n\nasync function matchPattern(\n fs: IFs[\"promises\"],\n pattern: string,\n cwd: string\n): Promise<string[]> {\n const parts = pattern.split(\"/\").filter((p) => p !== \"\");\n const isAbsolute = pattern.startsWith(\"/\");\n const startDir = isAbsolute ? \"/\" : cwd;\n\n return matchParts(fs, parts, startDir, isAbsolute);\n}\n\nasync function matchParts(\n fs: IFs[\"promises\"],\n parts: string[],\n currentPath: string,\n isAbsolute: boolean\n): Promise<string[]> {\n if (parts.length === 0) {\n return [currentPath];\n }\n\n const [part, ...rest] = parts;\n\n // Handle ** (recursive glob)\n if (part === \"**\") {\n const results: string[] = [];\n\n // Match current directory\n const withoutStar = await matchParts(fs, rest, currentPath, isAbsolute);\n results.push(...withoutStar);\n\n // Recurse into subdirectories\n try {\n const entries = await fs.readdir(currentPath);\n for (const entry of entries) {\n const entryPath = pathModule.join(currentPath, String(entry));\n try {\n const stat = await fs.stat(entryPath);\n if (stat.isDirectory()) {\n const subMatches = await matchParts(fs, parts, entryPath, isAbsolute);\n results.push(...subMatches);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n } catch {\n // Directory not readable\n }\n\n return results;\n }\n\n // Handle regular glob patterns\n const regex = globToRegex(part!);\n\n try {\n const entries = await fs.readdir(currentPath);\n const results: string[] = [];\n\n for (const entry of entries) {\n const entryName = String(entry);\n if (regex.test(entryName)) {\n const entryPath = pathModule.join(currentPath, entryName);\n if (rest.length === 0) {\n results.push(entryPath);\n } else {\n try {\n const stat = await fs.stat(entryPath);\n if (stat.isDirectory()) {\n const subMatches = await matchParts(fs, rest, entryPath, isAbsolute);\n results.push(...subMatches);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n }\n }\n\n return results;\n } catch {\n return [];\n }\n}\n\nfunction globToRegex(pattern: string): RegExp {\n let regex = \"^\";\n for (let i = 0; i < pattern.length; i++) {\n const char = pattern[i]!;\n if (char === \"*\") {\n regex += \"[^/]*\";\n } else if (char === \"?\") {\n regex += \"[^/]\";\n } else if (char === \"[\") {\n // Character class\n let j = i + 1;\n let classContent = \"\";\n while (j < pattern.length && pattern[j] !== \"]\") {\n classContent += pattern[j];\n j++;\n }\n regex += `[${classContent}]`;\n i = j;\n } else if (\".+^${}()|\\\\\".includes(char)) {\n regex += \"\\\\\" + char;\n } else {\n regex += char;\n }\n }\n regex += \"$\";\n return new RegExp(regex);\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE4B,IAA5B;AAEO,SAAS,eAAe,CAAC,OAAuB;AAAA,EACrD,QAAQ,UAAU,OAAO;AAAA,EAEzB,OAAO;AAAA,SACC,SAAQ,CAAC,MAA+B;AAAA,MAC5C,MAAM,UAAU,MAAM,GAAG,SAAS,IAAI;AAAA,MACtC,OAAO,OAAO,KAAK,OAAO;AAAA;AAAA,SAGtB,QAAO,CAAC,MAAiC;AAAA,MAC7C,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI;AAAA,MACrC,OAAO,QAAQ,IAAI,MAAM;AAAA;AAAA,SAGrB,KAAI,CAAC,MAAiC;AAAA,MAC1C,MAAM,QAAQ,MAAM,GAAG,KAAK,IAAI;AAAA,MAChC,OAAO;AAAA,QACL,QAAQ,MAAM,MAAM,OAAO;AAAA,QAC3B,aAAa,MAAM,MAAM,YAAY;AAAA,QACrC,MAAM,OAAO,MAAM,IAAI;AAAA,QACvB,OAAO,IAAI,KAAK,MAAM,KAAK;AAAA,MAC7B;AAAA;AAAA,SAGI,OAAM,CAAC,MAAgC;AAAA,MAC3C,IAAI;AAAA,QACF,MAAM,GAAG,KAAK,IAAI;AAAA,QAClB,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA;AAAA;AAAA,SAIL,UAAS,CAAC,MAAc,MAAsC;AAAA,MAClE,MAAM,GAAG,UAAU,MAAM,IAAI;AAAA;AAAA,SAGzB,WAAU,CAAC,MAAc,MAAsC;AAAA,MACnE,MAAM,GAAG,WAAW,MAAM,IAAI;AAAA;AAAA,SAG1B,MAAK,CAAC,MAAc,MAA+C;AAAA,MACvE,MAAM,GAAG,MAAM,MAAM,IAAI;AAAA;AAAA,SAGrB,GAAE,CAAC,MAAc,MAAgE;AAAA,MACrF,IAAI;AAAA,QACF,MAAM,QAAQ,MAAM,GAAG,KAAK,IAAI;AAAA,QAChC,IAAI,MAAM,YAAY,GAAG;AAAA,UACvB,MAAM,GAAG,MAAM,MAAM,EAAE,WAAW,MAAM,UAAU,CAAC;AAAA,QACrD,EAAO;AAAA,UACL,MAAM,GAAG,OAAO,IAAI;AAAA;AAAA,QAEtB,OAAO,KAAK;AAAA,QACZ,IAAI,CAAC,MAAM;AAAA,UAAO,MAAM;AAAA;AAAA;AAAA,IAI5B,OAAO,IAAI,OAAyB;AAAA,MAClC,OAAkB,mBAAQ,GAAG,KAAK;AAAA;AAAA,IAGpC,OAAO,CAAC,MAAsB;AAAA,MAC5B,OAAkB,mBAAQ,IAAI;AAAA;AAAA,IAGhC,QAAQ,CAAC,MAAsB;AAAA,MAC7B,OAAkB,oBAAS,IAAI;AAAA;AAAA,SAG3B,KAAI,CAAC,SAAiB,MAA4C;AAAA,MACtE,MAAM,MAAM,MAAM,OAAO;AAAA,MACzB,OAAO,WAAW,OAAO,SAAS,GAAG;AAAA;AAAA,EAEzC;AAAA;AAGF,eAAe,UAAU,CAAC,OAAY,SAAiB,KAAgC;AAAA,EACrF,QAAQ,UAAU,OAAO;AAAA,EAGzB,MAAM,WAAW,aAAa,OAAO;AAAA,EACrC,MAAM,aAAuB,CAAC;AAAA,EAE9B,WAAW,OAAO,UAAU;AAAA,IAC1B,MAAM,UAAU,MAAM,aAAa,IAAI,KAAK,GAAG;AAAA,IAC/C,WAAW,KAAK,GAAG,OAAO;AAAA,EAC5B;AAAA,EAGA,OAAO,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC,EAAE,KAAK;AAAA;AAGvC,SAAS,YAAY,CAAC,SAA2B;AAAA,EAC/C,MAAM,aAAa,QAAQ,MAAM,cAAc;AAAA,EAC/C,IAAI,CAAC;AAAA,IAAY,OAAO,CAAC,OAAO;AAAA,EAEhC,MAAM,SAAS,QAAQ,MAAM,GAAG,WAAW,KAAK;AAAA,EAChD,MAAM,QAAQ,QAAQ,MAAM,WAAW,QAAS,WAAW,GAAG,MAAM;AAAA,EACpE,MAAM,UAAU,WAAW,GAAI,MAAM,GAAG;AAAA,EAExC,MAAM,UAAoB,CAAC;AAAA,EAC3B,WAAW,OAAO,SAAS;AAAA,IACzB,MAAM,WAAW,aAAa,SAAS,MAAM,KAAK;AAAA,IAClD,QAAQ,KAAK,GAAG,QAAQ;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,YAAY,CACzB,IACA,SACA,KACmB;AAAA,EACnB,MAAM,QAAQ,QAAQ,MAAM,GAAG,EAAE,OAAO,CAAC,MAAM,MAAM,EAAE;AAAA,EACvD,MAAM,aAAa,QAAQ,WAAW,GAAG;AAAA,EACzC,MAAM,WAAW,aAAa,MAAM;AAAA,EAEpC,OAAO,WAAW,IAAI,OAAO,UAAU,UAAU;AAAA;AAGnD,eAAe,UAAU,CACvB,IACA,OACA,aACA,YACmB;AAAA,EACnB,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,OAAO,CAAC,WAAW;AAAA,EACrB;AAAA,EAEA,OAAO,SAAS,QAAQ;AAAA,EAGxB,IAAI,SAAS,MAAM;AAAA,IACjB,MAAM,UAAoB,CAAC;AAAA,IAG3B,MAAM,cAAc,MAAM,WAAW,IAAI,MAAM,aAAa,UAAU;AAAA,IACtE,QAAQ,KAAK,GAAG,WAAW;AAAA,IAG3B,IAAI;AAAA,MACF,MAAM,UAAU,MAAM,GAAG,QAAQ,WAAW;AAAA,MAC5C,WAAW,SAAS,SAAS;AAAA,QAC3B,MAAM,YAAuB,gBAAK,aAAa,OAAO,KAAK,CAAC;AAAA,QAC5D,IAAI;AAAA,UACF,MAAM,OAAO,MAAM,GAAG,KAAK,SAAS;AAAA,UACpC,IAAI,KAAK,YAAY,GAAG;AAAA,YACtB,MAAM,aAAa,MAAM,WAAW,IAAI,OAAO,WAAW,UAAU;AAAA,YACpE,QAAQ,KAAK,GAAG,UAAU;AAAA,UAC5B;AAAA,UACA,MAAM;AAAA,MAGV;AAAA,MACA,MAAM;AAAA,IAIR,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,QAAQ,YAAY,IAAK;AAAA,EAE/B,IAAI;AAAA,IACF,MAAM,UAAU,MAAM,GAAG,QAAQ,WAAW;AAAA,IAC5C,MAAM,UAAoB,CAAC;AAAA,IAE3B,WAAW,SAAS,SAAS;AAAA,MAC3B,MAAM,YAAY,OAAO,KAAK;AAAA,MAC9B,IAAI,MAAM,KAAK,SAAS,GAAG;AAAA,QACzB,MAAM,YAAuB,gBAAK,aAAa,SAAS;AAAA,QACxD,IAAI,KAAK,WAAW,GAAG;AAAA,UACrB,QAAQ,KAAK,SAAS;AAAA,QACxB,EAAO;AAAA,UACL,IAAI;AAAA,YACF,MAAM,OAAO,MAAM,GAAG,KAAK,SAAS;AAAA,YACpC,IAAI,KAAK,YAAY,GAAG;AAAA,cACtB,MAAM,aAAa,MAAM,WAAW,IAAI,MAAM,WAAW,UAAU;AAAA,cACnE,QAAQ,KAAK,GAAG,UAAU;AAAA,YAC5B;AAAA,YACA,MAAM;AAAA;AAAA,MAIZ;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA;AAIZ,SAAS,WAAW,CAAC,SAAyB;AAAA,EAC5C,IAAI,QAAQ;AAAA,EACZ,SAAS,IAAI,EAAG,IAAI,QAAQ,QAAQ,KAAK;AAAA,IACvC,MAAM,OAAO,QAAQ;AAAA,IACrB,IAAI,SAAS,KAAK;AAAA,MAChB,SAAS;AAAA,IACX,EAAO,SAAI,SAAS,KAAK;AAAA,MACvB,SAAS;AAAA,IACX,EAAO,SAAI,SAAS,KAAK;AAAA,MAEvB,IAAI,IAAI,IAAI;AAAA,MACZ,IAAI,eAAe;AAAA,MACnB,OAAO,IAAI,QAAQ,UAAU,QAAQ,OAAO,KAAK;AAAA,QAC/C,gBAAgB,QAAQ;AAAA,QACxB;AAAA,MACF;AAAA,MACA,SAAS,IAAI;AAAA,MACb,IAAI;AAAA,IACN,EAAO,SAAI,cAAc,SAAS,IAAI,GAAG;AAAA,MACvC,SAAS,OAAO;AAAA,IAClB,EAAO;AAAA,MACL,SAAS;AAAA;AAAA,EAEb;AAAA,EACA,SAAS;AAAA,EACT,OAAO,IAAI,OAAO,KAAK;AAAA;",
|
|
8
|
+
"debugId": "141567D3FA5282DB64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/index.ts
|
|
30
|
+
var exports_src = {};
|
|
31
|
+
__export(exports_src, {
|
|
32
|
+
tokenToString: () => import_lexer.tokenToString,
|
|
33
|
+
parse: () => import_parser.parse,
|
|
34
|
+
lex: () => import_lexer.lex,
|
|
35
|
+
isVariableNode: () => import_parser2.isVariableNode,
|
|
36
|
+
isSubstitutionNode: () => import_parser2.isSubstitutionNode,
|
|
37
|
+
isSequenceNode: () => import_parser2.isSequenceNode,
|
|
38
|
+
isRawValue: () => import_types.isRawValue,
|
|
39
|
+
isPipelineNode: () => import_parser2.isPipelineNode,
|
|
40
|
+
isOrNode: () => import_parser2.isOrNode,
|
|
41
|
+
isLiteralNode: () => import_parser2.isLiteralNode,
|
|
42
|
+
isGlobNode: () => import_parser2.isGlobNode,
|
|
43
|
+
isConcatNode: () => import_parser2.isConcatNode,
|
|
44
|
+
isCommandNode: () => import_parser2.isCommandNode,
|
|
45
|
+
isAndNode: () => import_parser2.isAndNode,
|
|
46
|
+
escapeForInterpolation: () => import_utils.escapeForInterpolation,
|
|
47
|
+
escape: () => import_utils.escape,
|
|
48
|
+
createVirtualFS: () => import_fs.createVirtualFS,
|
|
49
|
+
createStdout: () => import_io2.createStdout,
|
|
50
|
+
createStdin: () => import_io.createStdin,
|
|
51
|
+
createStderr: () => import_io2.createStderr,
|
|
52
|
+
createShellDSL: () => import_shell_dsl.createShellDSL,
|
|
53
|
+
createPipe: () => import_io2.createPipe,
|
|
54
|
+
StdinImpl: () => import_io.StdinImpl,
|
|
55
|
+
ShellPromise: () => import_shell_promise.ShellPromise,
|
|
56
|
+
ShellError: () => import_errors.ShellError,
|
|
57
|
+
ShellDSL: () => import_shell_dsl.ShellDSL,
|
|
58
|
+
PipeBuffer: () => import_io2.PipeBuffer,
|
|
59
|
+
Parser: () => import_parser.Parser,
|
|
60
|
+
ParseError: () => import_errors.ParseError,
|
|
61
|
+
OutputCollectorImpl: () => import_io2.OutputCollectorImpl,
|
|
62
|
+
Lexer: () => import_lexer.Lexer,
|
|
63
|
+
LexError: () => import_errors.LexError,
|
|
64
|
+
Interpreter: () => import_interpreter.Interpreter
|
|
65
|
+
});
|
|
66
|
+
module.exports = __toCommonJS(exports_src);
|
|
67
|
+
var import_shell_dsl = require("./shell-dsl.cjs");
|
|
68
|
+
var import_shell_promise = require("./shell-promise.cjs");
|
|
69
|
+
var import_types = require("./types.cjs");
|
|
70
|
+
var import_errors = require("./errors.cjs");
|
|
71
|
+
var import_lexer = require("./lexer/index.cjs");
|
|
72
|
+
var import_parser = require("./parser/index.cjs");
|
|
73
|
+
var import_parser2 = require("./parser/index.cjs");
|
|
74
|
+
var import_interpreter = require("./interpreter/index.cjs");
|
|
75
|
+
var import_fs = require("./fs/index.cjs");
|
|
76
|
+
var import_io = require("./io/index.cjs");
|
|
77
|
+
var import_io2 = require("./io/index.cjs");
|
|
78
|
+
var import_utils = require("./utils/index.cjs");
|
|
79
|
+
|
|
80
|
+
//# debugId=CA28B33C8C95E9F064756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"// Main class exports\nexport { ShellDSL, createShellDSL, type Program } from \"./shell-dsl.cjs\";\nexport { ShellPromise, type ShellPromiseOptions } from \"./shell-promise.cjs\";\n\n// Types\nexport type {\n VirtualFS,\n FileStat,\n Command,\n CommandContext,\n Stdin,\n Stdout,\n Stderr,\n OutputCollector,\n ExecResult,\n ShellConfig,\n RawValue,\n} from \"./types.cjs\";\nexport { isRawValue } from \"./types.cjs\";\n\n// Errors\nexport { ShellError, LexError, ParseError } from \"./errors.cjs\";\n\n// Lexer\nexport { Lexer, lex, tokenToString } from \"./lexer/index.cjs\";\nexport type { Token, RedirectMode } from \"./lexer/index.cjs\";\n\n// Parser\nexport { Parser, parse } from \"./parser/index.cjs\";\nexport type {\n ASTNode,\n Redirect,\n CommandNode,\n PipelineNode,\n AndNode,\n OrNode,\n SequenceNode,\n LiteralNode,\n VariableNode,\n SubstitutionNode,\n GlobNode,\n ConcatNode,\n} from \"./parser/index.cjs\";\nexport {\n isCommandNode,\n isPipelineNode,\n isAndNode,\n isOrNode,\n isSequenceNode,\n isLiteralNode,\n isVariableNode,\n isSubstitutionNode,\n isGlobNode,\n isConcatNode,\n} from \"./parser/index.cjs\";\n\n// Interpreter\nexport { Interpreter, type InterpreterOptions } from \"./interpreter/index.cjs\";\n\n// Filesystem\nexport { createVirtualFS } from \"./fs/index.cjs\";\n\n// I/O\nexport { createStdin, StdinImpl } from \"./io/index.cjs\";\nexport { createStdout, createStderr, createPipe, OutputCollectorImpl, PipeBuffer } from \"./io/index.cjs\";\n\n// Utilities\nexport { escape, escapeForInterpolation } from \"./utils/index.cjs\";\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACuD,IAAvD;AACuD,IAAvD;AAgB2B,IAA3B;AAGiD,IAAjD;AAG0C,IAA1C;AAI8B,IAA9B;AA0BO,IAXP;AAcqD,IAArD;AAGgC,IAAhC;AAGuC,IAAvC;AACwF,IAAxF;AAG+C,IAA/C;",
|
|
8
|
+
"debugId": "CA28B33C8C95E9F064756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/interpreter/context.ts
|
|
30
|
+
var exports_context = {};
|
|
31
|
+
__export(exports_context, {
|
|
32
|
+
createCommandContext: () => createCommandContext
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(exports_context);
|
|
35
|
+
function createCommandContext(options) {
|
|
36
|
+
return {
|
|
37
|
+
args: options.args,
|
|
38
|
+
stdin: options.stdin,
|
|
39
|
+
stdout: options.stdout,
|
|
40
|
+
stderr: options.stderr,
|
|
41
|
+
fs: options.fs,
|
|
42
|
+
cwd: options.cwd,
|
|
43
|
+
env: options.env
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
//# debugId=8518566EF287DE6364756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/interpreter/context.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { CommandContext, VirtualFS, Stdin, Stdout, Stderr } from \"../types.cjs\";\n\nexport interface ContextOptions {\n args: string[];\n stdin: Stdin;\n stdout: Stdout;\n stderr: Stderr;\n fs: VirtualFS;\n cwd: string;\n env: Record<string, string>;\n}\n\nexport function createCommandContext(options: ContextOptions): CommandContext {\n return {\n args: options.args,\n stdin: options.stdin,\n stdout: options.stdout,\n stderr: options.stderr,\n fs: options.fs,\n cwd: options.cwd,\n env: options.env,\n };\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,oBAAoB,CAAC,SAAyC;AAAA,EAC5E,OAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,QAAQ,QAAQ;AAAA,IAChB,IAAI,QAAQ;AAAA,IACZ,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA,EACf;AAAA;",
|
|
8
|
+
"debugId": "8518566EF287DE6364756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/interpreter/index.ts
|
|
30
|
+
var exports_interpreter = {};
|
|
31
|
+
__export(exports_interpreter, {
|
|
32
|
+
createCommandContext: () => import_context.createCommandContext,
|
|
33
|
+
Interpreter: () => import_interpreter.Interpreter
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(exports_interpreter);
|
|
36
|
+
var import_interpreter = require("./interpreter.cjs");
|
|
37
|
+
var import_context = require("./context.cjs");
|
|
38
|
+
|
|
39
|
+
//# debugId=1DFD5D0BB70402B864756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/interpreter/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export { Interpreter, type InterpreterOptions } from \"./interpreter.cjs\";\nexport { createCommandContext, type ContextOptions } from \"./context.cjs\";\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAqD,IAArD;AAC0D,IAA1D;",
|
|
8
|
+
"debugId": "1DFD5D0BB70402B864756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|